From 955c0ddbac8674aeaa99c9fba714248f4c2639ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Wed, 13 Sep 2023 15:08:15 +0200 Subject: [PATCH] build(babel): use browserslist explicitly (#9207) --- .browserslistrc | 23 ++- babel.config.js | 233 +++++++++--------------- flavors/swagger-ui-react/release/run.sh | 4 +- package-lock.json | 64 ++----- package.json | 32 ++-- 5 files changed, 140 insertions(+), 216 deletions(-) diff --git a/.browserslistrc b/.browserslistrc index 89a3d87c..7894c03b 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -1,10 +1,29 @@ -[production] +[node-production] +maintained node versions + +[node-development] +node 20.3.0 + +[browser-production] > 1% last 2 versions Firefox ESR not dead -[development] +[browser-development] last 1 chrome version last 1 firefox version last 1 safari version + +[isomorphic-production] +> 1% +last 2 versions +Firefox ESR +not dead +maintained node versions + +[isomorphic-development] +last 1 chrome version +last 1 firefox version +last 1 safari version +node 20.3.0 diff --git a/babel.config.js b/babel.config.js index b8c0bb66..d071bdec 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,60 +1,80 @@ +const browser = { + presets: [ + [ + "@babel/preset-env", + { + debug: false, + modules: "auto", + useBuiltIns: false, + forceAllTransforms: false, + ignoreBrowserslistConfig: false, + } + ], + "@babel/preset-react", + ], + plugins: [ + [ + "@babel/plugin-transform-runtime", + { + corejs: { version: 3, proposals: false }, + absoluteRuntime: false, + helpers: true, + regenerator: false, + version: "^7.22.11", + } + ], + [ + "transform-react-remove-prop-types", + { + additionalLibraries: [ + "react-immutable-proptypes" + ] + } + ], + [ + "babel-plugin-module-resolver", + { + alias: { + root: ".", + core: "./src/core", + } + } + ] + ], +} + module.exports = { - "env": { - "commonjs": { - "presets": [ + env: { + commonjs: { + presets: [ [ "@babel/preset-env", { - "debug": false, - "modules": "commonjs", - "loose": true, - "targets": "maintained node versions", - "forceAllTransforms": false, - "ignoreBrowserslistConfig": true, + debug: false, + modules: "commonjs", + loose: true, + useBuiltIns: false, + forceAllTransforms: false, + ignoreBrowserslistConfig: false, } ], "@babel/preset-react", ], - "plugins": [ - [ - "transform-react-remove-prop-types", - { - "additionalLibraries": [ - "react-immutable-proptypes" - ] - } - ], - ], - }, - "esm": { - "presets": [ - [ - "@babel/env", - { - "debug": false, - "modules": false, - "ignoreBrowserslistConfig": false, - "useBuiltIns": false, - "include": [ - "@babel/plugin-proposal-logical-assignment-operators" - ] - } - ], - "@babel/preset-react" - ], - "plugins": [ + plugins: [ [ "@babel/plugin-transform-runtime", { - "corejs": 3, - "absoluteRuntime": false, - "version": "^7.11.2" + corejs: { version: 3, proposals: false }, + absoluteRuntime: false, + helpers: true, + regenerator: false, + version: "^7.22.11", } ], [ "transform-react-remove-prop-types", { - "additionalLibraries": [ + additionalLibraries: [ "react-immutable-proptypes" ] } @@ -62,41 +82,42 @@ module.exports = { [ "babel-plugin-module-resolver", { - "alias": { - "root": ".", - "core": "./src/core", + alias: { + root: ".", + core: "./src/core", } } ] - ] + ], }, - "test": { - "presets": [ + esm: { + presets: [ [ "@babel/env", { - "targets": { - "node": "20.3.0" - }, - "ignoreBrowserslistConfig": true, - "useBuiltIns": false, + debug: false, + modules: false, + ignoreBrowserslistConfig: false, + useBuiltIns: false, } ], "@babel/preset-react" ], - "plugins": [ + plugins: [ [ "@babel/plugin-transform-runtime", { - "corejs": 3, - "absoluteRuntime": false, - "version": "^7.11.2" + corejs: { version: 3, proposals: false }, + absoluteRuntime: false, + helpers: true, + regenerator: false, + version: "^7.22.11", } ], [ "transform-react-remove-prop-types", { - "additionalLibraries": [ + additionalLibraries: [ "react-immutable-proptypes" ] } @@ -104,102 +125,16 @@ module.exports = { [ "babel-plugin-module-resolver", { - "alias": { - "root": ".", - "core": "./src/core", + alias: { + root: ".", + core: "./src/core", } } ] ] }, - "development": { - "presets": [ - [ - "@babel/env", - { - "ignoreBrowserslistConfig": false, - "useBuiltIns": false, - "include": [ - "@babel/plugin-proposal-logical-assignment-operators" - ] - } - ], - "@babel/preset-react" - ], - "plugins": [ - [ - "@babel/plugin-transform-runtime", - { - "corejs": 3, - "absoluteRuntime": false, - "version": "^7.11.2" - } - ], - [ - "transform-react-remove-prop-types", - { - "additionalLibraries": [ - "react-immutable-proptypes" - ] - } - ], - [ - "babel-plugin-module-resolver", - { - "alias": { - "root": ".", - "core": "./src/core", - } - } - ] - ] - }, - "production": { - "presets": [ - [ - "@babel/env", - { - "ignoreBrowserslistConfig": false, - "useBuiltIns": false, - "include": [ - "@babel/plugin-proposal-logical-assignment-operators" - ] - } - ], - "@babel/preset-react" - ], - "plugins": [ - "@babel/plugin-transform-class-properties", - "@babel/plugin-transform-nullish-coalescing-operator", - "@babel/plugin-transform-object-rest-spread", - "@babel/plugin-transform-optional-chaining", - [ - "@babel/plugin-transform-runtime", - { - "corejs": 3, - "absoluteRuntime": false, - "version": "^7.11.2" - } - ], - [ - "transform-react-remove-prop-types", - { - "additionalLibraries": [ - "react-immutable-proptypes" - ] - } - ], - [ - "babel-plugin-module-resolver", - { - "alias": { - "root": ".", - "core": "./src/core", - } - } - ] - ] - }, - } + development: browser, + production: browser, + }, } diff --git a/flavors/swagger-ui-react/release/run.sh b/flavors/swagger-ui-react/release/run.sh index deeb1e20..701fb165 100755 --- a/flavors/swagger-ui-react/release/run.sh +++ b/flavors/swagger-ui-react/release/run.sh @@ -24,8 +24,8 @@ cp ../../../dist/swagger-ui.css.map ../dist node create-manifest.js > ../dist/package.json # Transpile our top-level component -../../../node_modules/.bin/cross-env BABEL_ENV=commonjs ../../../node_modules/.bin/babel --config-file ../../../babel.config.js ../index.jsx > ../dist/index.cjs -../../../node_modules/.bin/cross-env BABEL_ENV=esm ../../../node_modules/.bin/babel --config-file ../../../babel.config.js ../index.jsx > ../dist/index.mjs +../../../node_modules/.bin/cross-env NODE_ENV=production BABEL_ENV=commonjs BROWSERSLIST_ENV=isomorphic-production ../../../node_modules/.bin/babel --config-file ../../../babel.config.js ../index.jsx > ../dist/index.cjs +../../../node_modules/.bin/cross-env NODE_ENV=production BABEL_ENV=esm BROWSERSLIST_ENV=browser-production ../../../node_modules/.bin/babel --config-file ../../../babel.config.js ../index.jsx > ../dist/index.mjs # Copy our README into the dist folder for npm cp ../README.md ../dist diff --git a/package-lock.json b/package-lock.json index 04235a3b..56a64fa1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "reselect": "^4.1.8", "serialize-error": "^8.1.0", "sha.js": "^2.4.11", - "swagger-client": "^3.22.0", + "swagger-client": "^3.22.1", "url-parse": "^1.5.10", "xml": "=1.0.1", "xml-but-prettier": "^1.0.1", @@ -51,10 +51,6 @@ "@babel/cli": "=7.22.10", "@babel/core": "=7.22.11", "@babel/eslint-parser": "=7.22.11", - "@babel/plugin-transform-class-properties": "=7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "=7.22.11", - "@babel/plugin-transform-object-rest-spread": "=7.22.15", - "@babel/plugin-transform-optional-chaining": "=7.22.15", "@babel/plugin-transform-runtime": "=7.22.10", "@babel/preset-env": "=7.22.14", "@babel/preset-react": "=7.22.5", @@ -6515,17 +6511,6 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -12136,14 +12121,6 @@ "through": "^2.3.8" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", @@ -21002,6 +20979,11 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "optional": true }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -27535,21 +27517,21 @@ } }, "node_modules/swagger-client": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.22.0.tgz", - "integrity": "sha512-fIQnrRwjEz5uQyDnQRYFX+4S4gBv3n+9oSUsPF3axBoM/FIgDImdpach4U/T2cv2IckPoSg1qFylHMiLmNNloA==", + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.22.1.tgz", + "integrity": "sha512-WWcPjLcl+jCL9PuYwjp2dNGP5KjuhY7YAQncWB3IoazomckK91c2EL69NCHEjMl6bH5FzONYepFUWN5Ldxe2Rg==", "dependencies": { "@babel/runtime-corejs3": "^7.22.15", "@swagger-api/apidom-core": ">=0.76.2 <1.0.0", "@swagger-api/apidom-json-pointer": ">=0.76.2 <1.0.0", "@swagger-api/apidom-ns-openapi-3-1": ">=0.76.2 <1.0.0", "@swagger-api/apidom-reference": ">=0.76.2 <1.0.0", - "abort-controller": "^3.0.0", "cookie": "~0.5.0", "deepmerge": "~4.3.0", "fast-json-patch": "^3.0.0-1", "is-plain-object": "^5.0.0", "js-yaml": "^4.1.0", + "node-abort-controller": "^3.1.1", "node-fetch-commonjs": "^3.3.1", "qs": "^6.10.2", "traverse": "~0.6.6", @@ -34569,14 +34551,6 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { - "event-target-shim": "^5.0.0" - } - }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -38628,11 +38602,6 @@ "through": "^2.3.8" } }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, "eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", @@ -45272,6 +45241,11 @@ } } }, + "node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" + }, "node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -49862,21 +49836,21 @@ } }, "swagger-client": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.22.0.tgz", - "integrity": "sha512-fIQnrRwjEz5uQyDnQRYFX+4S4gBv3n+9oSUsPF3axBoM/FIgDImdpach4U/T2cv2IckPoSg1qFylHMiLmNNloA==", + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.22.1.tgz", + "integrity": "sha512-WWcPjLcl+jCL9PuYwjp2dNGP5KjuhY7YAQncWB3IoazomckK91c2EL69NCHEjMl6bH5FzONYepFUWN5Ldxe2Rg==", "requires": { "@babel/runtime-corejs3": "^7.22.15", "@swagger-api/apidom-core": ">=0.76.2 <1.0.0", "@swagger-api/apidom-json-pointer": ">=0.76.2 <1.0.0", "@swagger-api/apidom-ns-openapi-3-1": ">=0.76.2 <1.0.0", "@swagger-api/apidom-reference": ">=0.76.2 <1.0.0", - "abort-controller": "^3.0.0", "cookie": "~0.5.0", "deepmerge": "~4.3.0", "fast-json-patch": "^3.0.0-1", "is-plain-object": "^5.0.0", "js-yaml": "^4.1.0", + "node-abort-controller": "^3.1.1", "node-fetch-commonjs": "^3.3.1", "qs": "^6.10.2", "traverse": "~0.6.6", diff --git a/package.json b/package.json index b80ca205..49b7c71a 100644 --- a/package.json +++ b/package.json @@ -39,15 +39,15 @@ "automated-release": "release-it -VV --config ./release/.release-it.json", "build": "npm run build-stylesheets && rimraf ./dist/swagger-ui.js ./dist/swagger-ui.js.map && npm run build-all-bundles", "build-all-bundles": "run-p --aggregate-output build:core build:bundle build:standalone build:es:bundle build:es:bundle:core", - "build-stylesheets": "cross-env NODE_ENV=production webpack --color --config webpack/stylesheets.js", - "build:bundle": "cross-env NODE_ENV=production webpack --color --config webpack/bundle.js", - "build:core": "cross-env NODE_ENV=production webpack --color --config webpack/core.js", - "build:standalone": "cross-env NODE_ENV=production webpack --color --config webpack/standalone.js", - "build:es:bundle": "cross-env NODE_ENV=production webpack --color --config webpack/es-bundle.js", - "build:es:bundle:core": "cross-env NODE_ENV=production BABEL_ENV=esm webpack --color --config webpack/es-bundle-core.js", + "build-stylesheets": "cross-env NODE_ENV=production BABEL_ENV=production BROWSERSLIST_ENV=browser-production webpack --color --config webpack/stylesheets.js", + "build:bundle": "cross-env NODE_ENV=production BABEL_ENV=production BROWSERSLIST_ENV=isomorphic-production webpack --color --config webpack/bundle.js", + "build:core": "cross-env NODE_ENV=production BABEL_ENV=production BROWSERSLIST_ENV=browser-production webpack --color --config webpack/core.js", + "build:standalone": "cross-env NODE_ENV=production BABEL_ENV=production BROWSERSLIST_ENV=browser-production webpack --color --config webpack/standalone.js", + "build:es:bundle": "cross-env NODE_ENV=production BABEL_ENV=production BROWSERSLIST_ENV=isomorphic-production webpack --color --config webpack/es-bundle.js", + "build:es:bundle:core": "cross-env NODE_ENV=production BABEL_ENV=esm BROWSERSLIST_ENV=browser-production webpack --color --config webpack/es-bundle-core.js", "clean": "rimraf ./dist", "postinstall": "patch-package", - "dev": "cross-env NODE_ENV=development webpack serve --config webpack/dev.js", + "dev": "cross-env NODE_ENV=development BABEL_ENV=development BROWSERSLIST_ENV=browser-development webpack serve --config webpack/dev.js", "deps-license": "license-checker --production --csv --out $npm_package_config_deps_check_dir/licenses.csv && license-checker --development --csv --out $npm_package_config_deps_check_dir/licenses-dev.csv", "deps-size": "cross-env NODE_ENV=development webpack -p --config webpack/bundle.js --json | webpack-bundle-size-analyzer >| $npm_package_config_deps_check_dir/sizes.txt", "deps-check": "run-s deps-license deps-size", @@ -56,14 +56,14 @@ "lint-fix": "eslint --ext \".js,.jsx\" src test dev-helpers flavors --fix", "test": "run-s lint-errors just-test-in-node test:unit-jest cy:ci", "test-in-node": "run-s lint-errors just-test-in-node", - "just-test-in-node": "cross-env NODE_ENV=test mocha \"test/mocha/**/*.{js,jsx}\"", - "test:artifact": "cross-env NODE_ENV=production jest --config ./config/jest/jest.artifact.config.js", - "test:unit-jest": "cross-env NODE_ENV=test jest --config ./config/jest/jest.unit.config.js", + "just-test-in-node": "cross-env NODE_ENV=test BABEL_ENV=commonjs BROWSERSLIST_ENV=node-development mocha \"test/mocha/**/*.{js,jsx}\"", + "test:artifact": "cross-env NODE_ENV=production BABEL_ENV=commonjs BROWSERSLIST_ENV=node-development jest --config ./config/jest/jest.artifact.config.js", + "test:unit-jest": "cross-env NODE_ENV=test BABEL_ENV=commonjs BROWSERSLIST_ENV=node-development jest --config ./config/jest/jest.unit.config.js", "cy:mock-api": "json-server --watch test/e2e-selenium/db.json --port 3204", - "cy:server": "cross-env NODE_ENV=production webpack serve --config webpack/dev-e2e.js", + "cy:server": "cross-env NODE_ENV=production BABEL_ENV=production BROWSERSLIST_ENV=browser-production webpack serve --config webpack/dev-e2e.js", "cy:start": "run-p -r cy:server cy:mock-api", - "cy:open": "cypress open", - "cy:run": "cypress run", + "cy:open": "cross-env BROWSERSLIST_ENV=browser-production cypress open", + "cy:run": "cross-env BROWSERSLIST_ENV=browser-production cypress run", "cy:ci": "start-server-and-test cy:start http://localhost:3204 cy:run", "cy:dev": "start-server-and-test cy:start http://localhost:3204 cy:open", "open-static": "node -e \"require('open')('http://localhost:3002')\"", @@ -105,7 +105,7 @@ "reselect": "^4.1.8", "serialize-error": "^8.1.0", "sha.js": "^2.4.11", - "swagger-client": "^3.22.0", + "swagger-client": "^3.22.1", "url-parse": "^1.5.10", "xml": "=1.0.1", "xml-but-prettier": "^1.0.1", @@ -115,10 +115,6 @@ "@babel/cli": "=7.22.10", "@babel/core": "=7.22.11", "@babel/eslint-parser": "=7.22.11", - "@babel/plugin-transform-class-properties": "=7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "=7.22.11", - "@babel/plugin-transform-object-rest-spread": "=7.22.15", - "@babel/plugin-transform-optional-chaining": "=7.22.15", "@babel/plugin-transform-runtime": "=7.22.10", "@babel/preset-env": "=7.22.14", "@babel/preset-react": "=7.22.5",