UNPKG

casterly

Version:
89 lines (88 loc) 3.77 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); // @ts-ignore const babel_loader_1 = require("babel-loader"); const Log = __importStar(require("../../../output/log")); const babelPreset_1 = __importDefault(require("../../babelPreset")); exports.default = babel_loader_1.custom((babel) => { const presetItem = babel.createConfigItem(babelPreset_1.default, { type: 'preset', }); const configs = new Set(); return { customOptions(opts) { const custom = { isServer: opts.isServer, dev: opts.dev, hasReactRefresh: opts.hasReactRefresh, hasJsxRuntime: opts.hasJsxRuntime, }; const loader = Object.assign({ cacheDirectory: false, }, opts); delete loader.isServer; delete loader.dev; delete loader.hasReactRefresh; delete loader.hasJsxRuntime; return { loader, custom }; }, config(cfg, { _, customOptions: { isServer, dev, hasReactRefresh, hasJsxRuntime }, }) { const options = Object.assign({}, cfg.options); 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 no "babelrc" is found. options.presets = [...options.presets, presetItem]; } options.caller.isServer = isServer; options.caller.isDev = dev; options.caller.hasJsxRuntime = hasJsxRuntime; 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); } return options; }, }; });