123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = loadCodeDefault;
- exports.supportsESM = void 0;
- var _async = require("../../gensync-utils/async.js");
- function _path() {
- const data = require("path");
- _path = function () {
- return data;
- };
- return data;
- }
- function _url() {
- const data = require("url");
- _url = function () {
- return data;
- };
- return data;
- }
- require("module");
- function _semver() {
- const data = require("semver");
- _semver = function () {
- return data;
- };
- return data;
- }
- function _debug() {
- const data = require("debug");
- _debug = function () {
- return data;
- };
- return data;
- }
- var _rewriteStackTrace = require("../../errors/rewrite-stack-trace.js");
- var _configError = require("../../errors/config-error.js");
- var _transformFile = require("../../transform-file.js");
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
- const debug = _debug()("babel:config:loading:files:module-types");
- {
- try {
- var import_ = require("./import.cjs");
- } catch (_unused) {}
- }
- const supportsESM = exports.supportsESM = _semver().satisfies(process.versions.node, "^12.17 || >=13.2");
- const LOADING_CJS_FILES = new Set();
- function loadCjsDefault(filepath) {
- if (LOADING_CJS_FILES.has(filepath)) {
- debug("Auto-ignoring usage of config %o.", filepath);
- return {};
- }
- let module;
- try {
- LOADING_CJS_FILES.add(filepath);
- module = (0, _rewriteStackTrace.endHiddenCallStack)(require)(filepath);
- } finally {
- LOADING_CJS_FILES.delete(filepath);
- }
- {
- return module != null && (module.__esModule || module[Symbol.toStringTag] === "Module") ? module.default || (arguments[1] ? module : undefined) : module;
- }
- }
- const loadMjsFromPath = (0, _rewriteStackTrace.endHiddenCallStack)(function () {
- var _loadMjsFromPath = _asyncToGenerator(function* (filepath) {
- const url = (0, _url().pathToFileURL)(filepath).toString() + "?import";
- {
- if (!import_) {
- throw new _configError.default("Internal error: Native ECMAScript modules aren't supported by this platform.\n", filepath);
- }
- return yield import_(url);
- }
- });
- function loadMjsFromPath(_x) {
- return _loadMjsFromPath.apply(this, arguments);
- }
- return loadMjsFromPath;
- }());
- const SUPPORTED_EXTENSIONS = {
- ".js": "unknown",
- ".mjs": "esm",
- ".cjs": "cjs",
- ".ts": "unknown",
- ".mts": "esm",
- ".cts": "cjs"
- };
- const asyncModules = new Set();
- function* loadCodeDefault(filepath, loader, esmError, tlaError) {
- let async;
- const ext = _path().extname(filepath);
- const isTS = ext === ".ts" || ext === ".cts" || ext === ".mts";
- const type = SUPPORTED_EXTENSIONS[hasOwnProperty.call(SUPPORTED_EXTENSIONS, ext) ? ext : ".js"];
- const pattern = `${loader} ${type}`;
- switch (pattern) {
- case "require cjs":
- case "auto cjs":
- if (isTS) {
- return ensureTsSupport(filepath, ext, () => loadCjsDefault(filepath));
- } else {
- return loadCjsDefault(filepath, arguments[2]);
- }
- case "auto unknown":
- case "require unknown":
- case "require esm":
- try {
- if (isTS) {
- return ensureTsSupport(filepath, ext, () => loadCjsDefault(filepath));
- } else {
- return loadCjsDefault(filepath, arguments[2]);
- }
- } catch (e) {
- if (e.code === "ERR_REQUIRE_ASYNC_MODULE" || e.code === "ERR_REQUIRE_CYCLE_MODULE" && asyncModules.has(filepath)) {
- asyncModules.add(filepath);
- if (!(async != null ? async : async = yield* (0, _async.isAsync)())) {
- throw new _configError.default(tlaError, filepath);
- }
- } else if (e.code === "ERR_REQUIRE_ESM" || type === "esm") {} else {
- throw e;
- }
- }
- case "auto esm":
- if (async != null ? async : async = yield* (0, _async.isAsync)()) {
- const promise = isTS ? ensureTsSupport(filepath, ext, () => loadMjsFromPath(filepath)) : loadMjsFromPath(filepath);
- return (yield* (0, _async.waitFor)(promise)).default;
- }
- throw new _configError.default(esmError, filepath);
- default:
- throw new Error("Internal Babel error: unreachable code.");
- }
- }
- function ensureTsSupport(filepath, ext, callback) {
- if (require.extensions[".ts"] || require.extensions[".cts"] || require.extensions[".mts"]) {
- return callback();
- }
- if (ext !== ".cts") {
- throw new _configError.default(`\
- You are using a ${ext} config file, but Babel only supports transpiling .cts configs. Either:
- - Use a .cts config file
- - Update to Node.js 23.6.0, which has native TypeScript support
- - Install ts-node to transpile ${ext} files on the fly\
- `, filepath);
- }
- const opts = {
- babelrc: false,
- configFile: false,
- sourceType: "unambiguous",
- sourceMaps: "inline",
- sourceFileName: _path().basename(filepath),
- presets: [[getTSPreset(filepath), Object.assign({
- onlyRemoveTypeImports: true,
- optimizeConstEnums: true
- }, {
- allowDeclareFields: true
- })]]
- };
- let handler = function (m, filename) {
- if (handler && filename.endsWith(".cts")) {
- try {
- return m._compile((0, _transformFile.transformFileSync)(filename, Object.assign({}, opts, {
- filename
- })).code, filename);
- } catch (error) {
- const packageJson = require("@babel/preset-typescript/package.json");
- if (_semver().lt(packageJson.version, "7.21.4")) {
- console.error("`.cts` configuration file failed to load, please try to update `@babel/preset-typescript`.");
- }
- throw error;
- }
- }
- return require.extensions[".js"](m, filename);
- };
- require.extensions[ext] = handler;
- try {
- return callback();
- } finally {
- if (require.extensions[ext] === handler) delete require.extensions[ext];
- handler = undefined;
- }
- }
- function getTSPreset(filepath) {
- try {
- return require("@babel/preset-typescript");
- } catch (error) {
- if (error.code !== "MODULE_NOT_FOUND") throw error;
- let message = "You appear to be using a .cts file as Babel configuration, but the `@babel/preset-typescript` package was not found: please install it!";
- {
- if (process.versions.pnp) {
- message += `
- If you are using Yarn Plug'n'Play, you may also need to add the following configuration to your .yarnrc.yml file:
- packageExtensions:
- \t"@babel/core@*":
- \t\tpeerDependencies:
- \t\t\t"@babel/preset-typescript": "*"
- `;
- }
- }
- throw new _configError.default(message, filepath);
- }
- }
- 0 && 0;
- //# sourceMappingURL=module-types.js.map
|