module.exports = function (api) {
  api.cache(true)
  const presets = []
  const plugins = []
  if (process.env.BABEL_ENV === 'browser') {
    presets.push([
      // https://babeljs.io/docs/en/babel-preset-env
      '@babel/preset-env',
      {
        /**
         * Target Browserslist’s default browsers.
         * https://github.com/browserslist/browserslist
         */
        targets: 'defaults',
        useBuiltIns: 'usage',
        corejs: { version: 3, proposals: true }
      }
    ])
    presets.push('@babel/preset-react')
    plugins.push('@babel/plugin-transform-runtime')
  }
  if (process.env.BABEL_ENV === 'node') {
    presets.push([
      '@babel/preset-env',
      {
        targets: {
          node: '16'
        }
      }
    ])
  }
  // for JavaScript Standard Style library to support JSX syntax
  if (process.env.BABEL_ENV === undefined) {
    presets.push('@babel/preset-react')
  }

  return {
    presets,
    plugins
  }
}