UNPKG

next

Version:

The React Framework

9 lines 5.36 kB
"use strict";exports.__esModule=true;exports.default=void 0;var _path=require("path");var Log=_interopRequireWildcard(require("../../output/log"));var _index=_interopRequireDefault(require("./babel-loader/src/index"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _getRequireWildcardCache(){if(typeof WeakMap!=="function")return null;var cache=new WeakMap();_getRequireWildcardCache=function(){return cache;};return cache;}function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache();if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}// increment 'p' to invalidate cache // eslint-disable-next-line no-useless-concat const cacheKey='babel-cache-'+'p'+'-';const nextBabelPreset=require('../../babel/preset');const customBabelLoader=(0,_index.default)(babel=>{const presetItem=babel.createConfigItem(nextBabelPreset,{type:'preset'});const applyCommonJs=babel.createConfigItem(require('../../babel/plugins/commonjs'),{type:'plugin'});const commonJsItem=babel.createConfigItem(require('next/dist/compiled/babel/plugin-transform-modules-commonjs'),{type:'plugin'});const configs=new Set();return{customOptions(opts){const custom={isServer:opts.isServer,pagesDir:opts.pagesDir,development:opts.development,hasReactRefresh:opts.hasReactRefresh,hasJsxRuntime:opts.hasJsxRuntime};const filename=(0,_path.join)(opts.cwd,'noop.js');const loader=Object.assign(opts.cache?{cacheDirectory:(0,_path.join)(opts.distDir,'cache','next-babel-loader'),cacheIdentifier:cacheKey+(opts.isServer?'-server':'')+'-new-polyfills'+(opts.development?'-development':'-production')+(opts.hasReactRefresh?'-react-refresh':'')+(opts.hasJsxRuntime?'-jsx-runtime':'')+JSON.stringify(babel.loadPartialConfig({filename,cwd:opts.cwd,sourceFileName:filename}).options)}:{cacheDirectory:false},opts);delete loader.isServer;delete loader.cache;delete loader.distDir;delete loader.pagesDir;delete loader.development;delete loader.hasReactRefresh;delete loader.hasJsxRuntime;return{loader,custom};},config(cfg,{source,customOptions:{isServer,pagesDir,development,hasReactRefresh,hasJsxRuntime}}){const filename=this.resourcePath;const options=Object.assign({},cfg.options);const isPageFile=filename.startsWith(pagesDir);if(cfg.hasFilesystemConfig()){for(const file of[cfg.babelrc,cfg.config]){// We only log for client compilation otherwise there will be double output if(file&&!isServer&&!configs.has(file)){configs.add(file);Log.info(`Using external babel configuration from ${file}`);}}}else{// Add our default preset if the no "babelrc" found. options.presets=[...options.presets,presetItem];}options.caller.isServer=isServer;options.caller.isDev=development;options.caller.hasJsxRuntime=hasJsxRuntime;options.caller.pagesDir=pagesDir;const emitWarning=this.emitWarning.bind(this);Object.defineProperty(options.caller,'onWarning',{enumerable:false,writable:false,value:options.caller.onWarning=function(reason){if(!(reason instanceof Error)){reason=new Error(reason);}emitWarning(reason);}});options.plugins=options.plugins||[];if(hasReactRefresh){const reactRefreshPlugin=babel.createConfigItem([require('react-refresh/babel'),{skipEnvCheck:true}],{type:'plugin'});options.plugins.unshift(reactRefreshPlugin);if(!isServer){const noAnonymousDefaultExportPlugin=babel.createConfigItem([require('../../babel/plugins/no-anonymous-default-export'),{}],{type:'plugin'});options.plugins.unshift(noAnonymousDefaultExportPlugin);}}if(!isServer&&isPageFile){const pageConfigPlugin=babel.createConfigItem([require('../../babel/plugins/next-page-config')],{type:'plugin'});options.plugins.push(pageConfigPlugin);const diallowExportAll=babel.createConfigItem([require('../../babel/plugins/next-page-disallow-re-export-all-exports')],{type:'plugin'});options.plugins.push(diallowExportAll);}// If the file has `module.exports` we have to transpile commonjs because Babel adds `import` statements // That break webpack, since webpack doesn't support combining commonjs and esmodules if(source.indexOf('module.exports')!==-1){options.plugins.push(applyCommonJs);}options.plugins.push([require.resolve('next/dist/compiled/babel/plugin-transform-define'),{'process.env.NODE_ENV':development?'development':'production','typeof window':isServer?'undefined':'object','process.browser':isServer?false:true},'next-js-transform-define-instance']);if(isPageFile){if(!isServer){options.plugins.push([require.resolve('../../babel/plugins/next-ssg-transform'),{}]);}}// As next-server/lib has stateful modules we have to transpile commonjs options.overrides=[...(options.overrides||[]),{test:[/next[\\/]dist[\\/]next-server[\\/]lib/,/next[\\/]dist[\\/]client/,/next[\\/]dist[\\/]pages/],plugins:[commonJsItem]}];return options;}};});var _default=customBabelLoader;exports.default=_default; //# sourceMappingURL=next-babel-loader.js.map