module.exports = (api) => {
  api.cache(true);

  return {
    presets: [
      [
        "@babel/env",
        {
          useBuiltIns: "usage",
        },
      ],
    ],

    plugins: [
      "@babel/proposal-class-properties",
      "@babel/syntax-object-rest-spread",
      process.env.BABEL_ENV !== "module" && "add-module-exports",
      [
        "transform-inline-environment-variables",
        { include: ["BABEL_ENV", "ENV"] },
      ],
    ].filter(Boolean),

    env: {
      test: {
        plugins: ["istanbul"],
      },
      development: {
        plugins: [process.env.ENV !== "browser" && "source-map-support"].filter(
          Boolean
        ),
      },
      module: {
        presets: [["@babel/env", { modules: false }]],
      },
    },
  };
};
