/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ const packageConfig = require('./package'); module.exports = { sourceMaps: true, sourceType: 'module', retainLines: true, presets: [ [ '@babel/preset-env', { useBuiltIns: 'usage', corejs: 3, loose: true, modules: false, shippedProposals: true, targets: packageConfig.browserslist, }, ], [ '@babel/preset-react', { development: process.env.BABEL_ENV === 'development' }, ], '@babel/preset-typescript', [ '@emotion/babel-preset-css-prop', { autoLabel: 'dev-only', labelFormat: '[local]', }, ], ], plugins: [ 'lodash', '@babel/plugin-syntax-dynamic-import', ['@babel/plugin-proposal-class-properties', { loose: true }], ['@babel/plugin-proposal-optional-chaining', { loose: true }], ['@babel/plugin-proposal-private-methods', { loose: true }], ['@babel/plugin-proposal-nullish-coalescing-operator', { loose: true }], ['@babel/plugin-transform-runtime', { corejs: 3 }], // only used in packages/superset-ui-core/src/chart/components/reactify.tsx ['babel-plugin-typescript-to-proptypes', { loose: true }], 'react-hot-loader/babel', ], env: { // Setup a different config for tests as they run in node instead of a browser test: { presets: [ [ '@babel/preset-env', { useBuiltIns: 'usage', corejs: 3, loose: true, shippedProposals: true, modules: 'commonjs', targets: { node: 'current' }, }, ], ['@emotion/babel-preset-css-prop'], ], plugins: ['babel-plugin-dynamic-import-node'], }, // build instrumented code for testing code coverage with Cypress instrumented: { plugins: [ [ 'istanbul', { exclude: ['plugins/**/*', 'packages/**/*'], }, ], ], }, production: { plugins: [ [ 'babel-plugin-jsx-remove-data-test-id', { attributes: 'data-test', }, ], ], }, testableProduction: { plugins: [], }, }, overrides: [ { test: './plugins/plugin-chart-handlebars/node_modules/just-handlebars-helpers/*', sourceType: 'unambiguous', }, ], };