-
Dalton authored
* Update babel dependencies to latest * Remove some old babel dependencies The dependencies in this commit include dependencies that have been renamed, such as babel-cli which is now @babel/cli. It also includes dependencies that have been replaced, such as babel-preset-stage-0 and its ilk, which have been replaced with @babel/preset-env. * Remove babel-register dependency This is referenced in our webpack.config.js file. I don't think we need Babel in our Node envionment, but I could be wrong, so leaving this as a separate commit. * Remove @babel/standalone and dependent code We're using @babel/standalone to support the writing of JSX in our internal-only ScratchApp editor. Unfortunately, this dependency is large--1.5mb not gzipped--and our current build does not intelligently split bundles, meaning our users our burdened by the size of this dependency whenever they must redownload the Metabase JS bundle. I'm removing it. We should still be able to write JS in the ScratchApp, but JSX no longer. * Add @babel/node to dev deps Needed by a cypress command * Add browserslist config Babel's preset-env dep needs this config to determine how to transform our JavaScript. By default I believe it ends up defaulting to "defaults." "defaults" is equivalent to the following rules: > 0.5%, last 2 versions, Firefox ESR, not dead A comma between rules represents a UNION operator. Per https://www.metabase.com/docs/latest/faq/general/supported-browsers.html we have deprecated IE 11 so I am including that explicitly in our browserslist. * Update babelrc plugins and presets - Replaced presets with preset-env and preset-react - Updated the names of some plugins, like transform-decorators-legacy, which is now @babel/plugin-proposal-decorators with an explicit "legacy: true" passed in the config. - Removed add-react-displayname because it is included in preset-react - Removed transform-builtin-extend because it is included in preset-env* - Removed syntax-trailing-function-commas because it is supported by all browsers we support * note: There is a "loose" config option for handling the extension of builtin classes. We may need it, but I am not sure. * Update babel cli args Replace -q with --quiet because -q no longer exists * Fix circular dep in auth.js by making it async Our app unfortunately contains MANY circular dependencies. Some, like this one, caused problems when the app instantiates because the "refreshCurrentUser" method is undefined when auth.js is initially run. While we should in the future avoid having circular deps in the first place, making them run async by requiring the dep and function run-time fixes this particular issue. * Fix circular dependency in metabase/redux/requests.js The handleActions and createAction methods imported from "metabase/lib/redux" are actually just methods from the "redux-actions" dependency... so importing those methods directly from that dep fixes this circular dependency problem. * Remove references to global.services and exports in metabase/services This line breaks the build. Git blame says the line is 5 years old, and I wouldn't expect such code to be used with how our app now requires deps. * Fix MBQLArrayClause problem caused by Array extension * Explicitly pass args from flatMap to function via anonymous cb I think the old Array.prototype.flatMap prototype must've had different args. They are now "currentValue, index, array" so when we passed it "enumeratePaths" as a callback, the second arg of enumeratePaths gets set to a number. This breaks the logic of enumeratePaths because it is a recursive function that depends on that second arg getting initialized as an empty array by default. * Remove code that spreads non-iterable value in array New Babel is stricter about handling this sort of code that doesn't match the JS spec. You can't spread an undefined value inside of an iterator. * Update jest and babel-jest to latest Updating Babel breaks our unit tests. Updating nothing causes every test to fail due to a Babel version mismatch. Updating only babel-jest causes the following error: TypeError: Jest: a transform must export a `process` function There may be a way around updating Jest, but updating it does not appear to be too difficult. * Set the testEnvironment to jsdom This was the default testEnvironment in our old version of jest. At some point the default was changed to node. * Remove unfinished "pending" unit tests I'm unfamiliar with this pending function, but the function no longer exists, causing the tests to fail. * don't pass async callback to describe * Update name of runTimersToTime to advanceTimersByTime * Fix incorrectly nested unit test * mock SVGElement.prototype.getBBox method * Don't return values in describe callback * Move variable declaration to above usage * Fix prettier error * Upgrade `documentation` library to the latest version (13.x.x) This library was the only one left that was still using Babel 6. * Return an MBQLClause instance after using Array methods * remove 'not IE 11' from browserslist * Remove mock that breaks unit test Co-authored-by:
Nemanja <31325167+nemanjaglumac@users.noreply.github.com>
Dalton authored* Update babel dependencies to latest * Remove some old babel dependencies The dependencies in this commit include dependencies that have been renamed, such as babel-cli which is now @babel/cli. It also includes dependencies that have been replaced, such as babel-preset-stage-0 and its ilk, which have been replaced with @babel/preset-env. * Remove babel-register dependency This is referenced in our webpack.config.js file. I don't think we need Babel in our Node envionment, but I could be wrong, so leaving this as a separate commit. * Remove @babel/standalone and dependent code We're using @babel/standalone to support the writing of JSX in our internal-only ScratchApp editor. Unfortunately, this dependency is large--1.5mb not gzipped--and our current build does not intelligently split bundles, meaning our users our burdened by the size of this dependency whenever they must redownload the Metabase JS bundle. I'm removing it. We should still be able to write JS in the ScratchApp, but JSX no longer. * Add @babel/node to dev deps Needed by a cypress command * Add browserslist config Babel's preset-env dep needs this config to determine how to transform our JavaScript. By default I believe it ends up defaulting to "defaults." "defaults" is equivalent to the following rules: > 0.5%, last 2 versions, Firefox ESR, not dead A comma between rules represents a UNION operator. Per https://www.metabase.com/docs/latest/faq/general/supported-browsers.html we have deprecated IE 11 so I am including that explicitly in our browserslist. * Update babelrc plugins and presets - Replaced presets with preset-env and preset-react - Updated the names of some plugins, like transform-decorators-legacy, which is now @babel/plugin-proposal-decorators with an explicit "legacy: true" passed in the config. - Removed add-react-displayname because it is included in preset-react - Removed transform-builtin-extend because it is included in preset-env* - Removed syntax-trailing-function-commas because it is supported by all browsers we support * note: There is a "loose" config option for handling the extension of builtin classes. We may need it, but I am not sure. * Update babel cli args Replace -q with --quiet because -q no longer exists * Fix circular dep in auth.js by making it async Our app unfortunately contains MANY circular dependencies. Some, like this one, caused problems when the app instantiates because the "refreshCurrentUser" method is undefined when auth.js is initially run. While we should in the future avoid having circular deps in the first place, making them run async by requiring the dep and function run-time fixes this particular issue. * Fix circular dependency in metabase/redux/requests.js The handleActions and createAction methods imported from "metabase/lib/redux" are actually just methods from the "redux-actions" dependency... so importing those methods directly from that dep fixes this circular dependency problem. * Remove references to global.services and exports in metabase/services This line breaks the build. Git blame says the line is 5 years old, and I wouldn't expect such code to be used with how our app now requires deps. * Fix MBQLArrayClause problem caused by Array extension * Explicitly pass args from flatMap to function via anonymous cb I think the old Array.prototype.flatMap prototype must've had different args. They are now "currentValue, index, array" so when we passed it "enumeratePaths" as a callback, the second arg of enumeratePaths gets set to a number. This breaks the logic of enumeratePaths because it is a recursive function that depends on that second arg getting initialized as an empty array by default. * Remove code that spreads non-iterable value in array New Babel is stricter about handling this sort of code that doesn't match the JS spec. You can't spread an undefined value inside of an iterator. * Update jest and babel-jest to latest Updating Babel breaks our unit tests. Updating nothing causes every test to fail due to a Babel version mismatch. Updating only babel-jest causes the following error: TypeError: Jest: a transform must export a `process` function There may be a way around updating Jest, but updating it does not appear to be too difficult. * Set the testEnvironment to jsdom This was the default testEnvironment in our old version of jest. At some point the default was changed to node. * Remove unfinished "pending" unit tests I'm unfamiliar with this pending function, but the function no longer exists, causing the tests to fail. * don't pass async callback to describe * Update name of runTimersToTime to advanceTimersByTime * Fix incorrectly nested unit test * mock SVGElement.prototype.getBBox method * Don't return values in describe callback * Move variable declaration to above usage * Fix prettier error * Upgrade `documentation` library to the latest version (13.x.x) This library was the only one left that was still using Babel 6. * Return an MBQLClause instance after using Array methods * remove 'not IE 11' from browserslist * Remove mock that breaks unit test Co-authored-by:
Nemanja <31325167+nemanjaglumac@users.noreply.github.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.babelrc 629 B
{
"plugins": [
"babel-plugin-styled-components",
"@babel/plugin-transform-flow-strip-types",
"@babel/plugin-proposal-export-default-from",
["@babel/plugin-proposal-decorators", { "legacy": true }]
],
"presets": ["@babel/preset-env", "@babel/preset-react"],
"env": {
"development": {
"presets": []
},
"extract": {
"plugins": [
[
"ttag",
{
"extract": {
"output": "locales/metabase-frontend.pot"
},
"discover": ["t", "jt"],
"numberedExpressions": true
}
]
]
}
}
}