UNPKG

4.94 kBJavaScriptView Raw
1"use strict";exports.__esModule=true;exports.default=void 0;var _path=require("path");const isLoadIntentTest=process.env.NODE_ENV==='test';const isLoadIntentDevelopment=process.env.NODE_ENV==='development';// Resolve styled-jsx plugins
2function styledJsxOptions(options){if(!options){return{};}if(!Array.isArray(options.plugins)){return options;}options.plugins=options.plugins.map(plugin=>{if(Array.isArray(plugin)){const[name,pluginOptions]=plugin;return[require.resolve(name),pluginOptions];}return require.resolve(plugin);});return options;}// Taken from https://github.com/babel/babel/commit/d60c5e1736543a6eac4b549553e107a9ba967051#diff-b4beead8ad9195361b4537601cc22532R158
3function supportsStaticESM(caller){return!!(caller!=null&&caller.supportsStaticESM);}var _default=(api,options={})=>{var _options$presetReact,_options$presetReact2;const supportsESM=api.caller(supportsStaticESM);const isServer=api.caller(caller=>!!caller&&caller.isServer);const isCallerDevelopment=api.caller(caller=>caller==null?void 0:caller.isDev);// Look at external intent if used without a caller (e.g. via Jest):
4const isTest=isCallerDevelopment==null&&isLoadIntentTest;// Look at external intent if used without a caller (e.g. Storybook):
5const isDevelopment=isCallerDevelopment===true||isCallerDevelopment==null&&isLoadIntentDevelopment;// Default to production mode if not `test` nor `development`:
6const isProduction=!(isTest||isDevelopment);const isBabelLoader=api.caller(caller=>!!caller&&(caller.name==='babel-loader'||caller.name==='next-babel-turbo-loader'));const useJsxRuntime=((_options$presetReact=options['preset-react'])==null?void 0:_options$presetReact.runtime)==='automatic'||Boolean(api.caller(caller=>!!caller&&caller.hasJsxRuntime))&&((_options$presetReact2=options['preset-react'])==null?void 0:_options$presetReact2.runtime)!=='classic';const presetEnvConfig={// In the test environment `modules` is often needed to be set to true, babel figures that out by itself using the `'auto'` option
7// In production/development this option is set to `false` so that webpack can handle import/export with tree-shaking
8modules:'auto',exclude:['transform-typeof-symbol'],include:['@babel/plugin-proposal-optional-chaining','@babel/plugin-proposal-nullish-coalescing-operator'],...options['preset-env']};// When transpiling for the server or tests, target the current Node version
9// if not explicitly specified:
10if((isServer||isTest)&&(!presetEnvConfig.targets||!(typeof presetEnvConfig.targets==='object'&&'node'in presetEnvConfig.targets))){presetEnvConfig.targets={// Targets the current process' version of Node. This requires apps be
11// built and deployed on the same version of Node.
12node:'current'};}return{sourceType:'unambiguous',presets:[[require('next/dist/compiled/babel/preset-env'),presetEnvConfig],[require('next/dist/compiled/babel/preset-react'),{// This adds @babel/plugin-transform-react-jsx-source and
13// @babel/plugin-transform-react-jsx-self automatically in development
14development:isDevelopment||isTest,...(useJsxRuntime?{runtime:'automatic'}:{pragma:'__jsx'}),...options['preset-react']}],[require('next/dist/compiled/babel/preset-typescript'),{allowNamespaces:true,...options['preset-typescript']}]],plugins:[!useJsxRuntime&&[require('./plugins/jsx-pragma'),{// This produces the following injected import for modules containing JSX:
15// import React from 'react';
16// var __jsx = React.createElement;
17module:'react',importAs:'React',pragma:'__jsx',property:'createElement'}],[require('./plugins/optimize-hook-destructuring'),{// only optimize hook functions imported from React/Preact
18lib:true}],require('next/dist/compiled/babel/plugin-syntax-dynamic-import'),require('./plugins/react-loadable-plugin'),[require('next/dist/compiled/babel/plugin-proposal-class-properties'),options['class-properties']||{}],[require('next/dist/compiled/babel/plugin-proposal-object-rest-spread'),{useBuiltIns:true}],!isServer&&[require('next/dist/compiled/babel/plugin-transform-runtime'),{corejs:false,helpers:true,regenerator:true,useESModules:supportsESM&&presetEnvConfig.modules!=='commonjs',absoluteRuntime:isBabelLoader?(0,_path.dirname)(require.resolve('@babel/runtime/package.json')):undefined,...options['transform-runtime']}],[isTest&&options['styled-jsx']&&options['styled-jsx']['babel-test']?require('styled-jsx/babel-test'):require('styled-jsx/babel'),styledJsxOptions(options['styled-jsx'])],require('./plugins/amp-attributes'),isProduction&&[require('next/dist/compiled/babel/plugin-transform-react-remove-prop-types'),{removeImport:true}],isServer&&require('next/dist/compiled/babel/plugin-syntax-bigint'),// Always compile numeric separator because the resulting number is
19// smaller.
20require('next/dist/compiled/babel/plugin-proposal-numeric-separator'),require('next/dist/compiled/babel/plugin-proposal-export-namespace-from')].filter(Boolean)};};exports.default=_default;
21//# sourceMappingURL=preset.js.map
\No newline at end of file