{"version":3,"names":["debug","buildDebug","ROOT_CONFIG_FILENAMES","RELATIVE_CONFIG_FILENAMES","BABELIGNORE_FILENAME","LOADING_CONFIGS","Set","readConfigJS","makeStrongCache","filepath","cache","nodeFs","existsSync","never","has","dirname","path","options","add","loadCjsOrMjsDefault","delete","assertCache","endHiddenCallStack","makeConfigAPI","Array","isArray","ConfigError","then","configured","throwConfigError","packageToBabelConfig","makeWeakCacheSync","file","babel","readConfigJSON5","makeStaticFileCache","content","json5","parse","err","message","readIgnoreConfig","ignoreDir","ignorePatterns","split","map","line","replace","trim","filter","pattern","ignore","pathPatternToRegex","findConfigUpwards","rootDir","filename","join","nextDir","findRelativeConfig","packageData","envName","caller","config","loc","directories","loadOneConfig","pkg","ignoreLoc","findRootConfig","names","previousConfig","configs","gensync","all","readConfig","reduce","basename","loadConfig","name","paths","conf","ext","extname","resolveShowConfigPath","targetPath","process","env","BABEL_SHOW_CONFIG_FOR","absolutePath","resolve","stats","fs","stat","isFile","Error"],"sources":["../../../src/config/files/configuration.ts"],"sourcesContent":["import buildDebug from \"debug\";\nimport nodeFs from \"fs\";\nimport path from \"path\";\nimport json5 from \"json5\";\nimport gensync from \"gensync\";\nimport type { Handler } from \"gensync\";\nimport { makeStrongCache, makeWeakCacheSync } from \"../caching\";\nimport type { CacheConfigurator } from \"../caching\";\nimport { makeConfigAPI } from \"../helpers/config-api\";\nimport type { ConfigAPI } from \"../helpers/config-api\";\nimport { makeStaticFileCache } from \"./utils\";\nimport loadCjsOrMjsDefault from \"./module-types\";\nimport pathPatternToRegex from \"../pattern-to-regex\";\nimport type { FilePackageData, RelativeConfig, ConfigFile } from \"./types\";\nimport type { CallerMetadata } from \"../validation/options\";\nimport ConfigError from \"../../errors/config-error\";\n\nimport * as fs from \"../../gensync-utils/fs\";\n\nimport { createRequire } from \"module\";\nimport { endHiddenCallStack } from \"../../errors/rewrite-stack-trace\";\nconst require = createRequire(import.meta.url);\n\nconst debug = buildDebug(\"babel:config:loading:files:configuration\");\n\nexport const ROOT_CONFIG_FILENAMES = [\n \"babel.config.js\",\n \"babel.config.cjs\",\n \"babel.config.mjs\",\n \"babel.config.json\",\n];\nconst RELATIVE_CONFIG_FILENAMES = [\n \".babelrc\",\n \".babelrc.js\",\n \".babelrc.cjs\",\n \".babelrc.mjs\",\n \".babelrc.json\",\n];\n\nconst BABELIGNORE_FILENAME = \".babelignore\";\n\nconst LOADING_CONFIGS = new Set();\n\nconst readConfigJS = makeStrongCache(function* readConfigJS(\n filepath: string,\n cache: CacheConfigurator<{\n envName: string;\n caller: CallerMetadata | undefined;\n }>,\n): Handler<ConfigFile | null> {\n if (!nodeFs.existsSync(filepath)) {\n cache.never();\n return null;\n }\n\n // The `require()` call below can make this code reentrant if a require hook like @babel/register has been\n // loaded into the system. That would cause Babel to attempt to compile the `.babelrc.js` file as it loads\n // below. To cover this case, we auto-ignore re-entrant config processing.\n if (LOADING_CONFIGS.has(filepath)) {\n cache.never();\n\n debug(\"Auto-ignoring usage of config %o.\", filepath);\n return {\n filepath,\n dirname: path.dirname(filepath),\n options: {},\n };\n }\n\n let options: unknown;\n try {\n LOADING_CONFIGS.add(filepath);\n options = yield* loadCjsOrMjsDefault(\n filepath,\n \"You appear to be using a native ECMAScript module configuration \" +\n \"file, which is only supported when running Babel asynchronously.\",\n );\n } finally {\n LOADING_CONFIGS.delete(filepath);\n }\n\n let assertCache = false;\n if (typeof options === \"function\") {\n // @ts-expect-error - if we want to make it possible to use async configs\n yield* [];\n\n options = endHiddenCallStack(options as any as (api: ConfigAPI) => {})(\n makeConfigAPI(cache),\n );\n\n assertCache = true;\n }\n\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new ConfigError(\n `Configuration should be an exported JavaScript object.`,\n filepath,\n );\n }\n\n // @ts-expect-error todo(flow->ts)\n if (typeof options.then === \"function\") {\n throw new ConfigError(\n `You appear to be using an async configuration, ` +\n `which your current version of Babel does not support. ` +\n `We may add support for this in the future, ` +\n `but if you're on the most recent version of @babel/core and still ` +\n `seeing this error, then you'll need to synchronously return your config.`,\n filepath,\n );\n }\n\n if (assertCache && !cache.configured()) throwConfigError(filepath);\n\n return {\n filepath,\n dirname: path.dirname(filepath),\n options,\n };\n});\n\nconst packageToBabelConfig = makeWeakCacheSync(\n (file: ConfigFile): ConfigFile | null => {\n const babel: unknown = file.options[\"babel\"];\n\n if (typeof babel === \"undefined\") return null;\n\n if (typeof babel !== \"object\" || Array.isArray(babel) || babel === null) {\n throw new ConfigError(`.babel property must be an object`, file.filepath);\n }\n\n return {\n filepath: file.filepath,\n dirname: file.dirname,\n options: babel,\n };\n },\n);\n\nconst readConfigJSON5 = makeStaticFileCache((filepath, content): ConfigFile => {\n let options;\n try {\n options = json5.parse(content);\n } catch (err) {\n throw new ConfigError(\n `Error while parsing config - ${err.message}`,\n filepath,\n );\n }\n\n if (!options) throw new ConfigError(`No config detected`, filepath);\n\n if (typeof options !== \"object\") {\n throw new ConfigError(`Config returned typeof ${typeof options}`, filepath);\n }\n if (Array.isArray(options)) {\n throw new ConfigError(`Expected config object but found array`, filepath);\n }\n\n delete options[\"$schema\"];\n\n return {\n filepath,\n dirname: path.dirname(filepath),\n options,\n };\n});\n\nconst readIgnoreConfig = makeStaticFileCache((filepath, content) => {\n const ignoreDir = path.dirname(filepath);\n const ignorePatterns = content\n .split(\"\\n\")\n .map<string>(line => line.replace(/#(.*?)$/, \"\").trim())\n .filter(line => !!line);\n\n for (const pattern of ignorePatterns) {\n if (pattern[0] === \"!\") {\n throw new ConfigError(\n `Negation of file paths is not supported.`,\n filepath,\n );\n }\n }\n\n return {\n filepath,\n dirname: path.dirname(filepath),\n ignore: ignorePatterns.map(pattern =>\n pathPatternToRegex(pattern, ignoreDir),\n ),\n };\n});\n\nexport function findConfigUpwards(rootDir: string): string | null {\n let dirname = rootDir;\n for (;;) {\n for (const filename of ROOT_CONFIG_FILENAMES) {\n if (nodeFs.existsSync(path.join(dirname, filename))) {\n return dirname;\n }\n }\n\n const nextDir = path.dirname(dirname);\n if (dirname === nextDir) break;\n dirname = nextDir;\n }\n\n return null;\n}\n\nexport function* findRelativeConfig(\n packageData: FilePackageData,\n envName: string,\n caller: CallerMetadata | undefined,\n): Handler<RelativeConfig> {\n let config = null;\n let ignore = null;\n\n const dirname = path.dirname(packageData.filepath);\n\n for (const loc of packageData.directories) {\n if (!config) {\n config = yield* loadOneConfig(\n RELATIVE_CONFIG_FILENAMES,\n loc,\n envName,\n caller,\n packageData.pkg?.dirname === loc\n ? packageToBabelConfig(packageData.pkg)\n : null,\n );\n }\n\n if (!ignore) {\n const ignoreLoc = path.join(loc, BABELIGNORE_FILENAME);\n ignore = yield* readIgnoreConfig(ignoreLoc);\n\n if (ignore) {\n debug(\"Found ignore %o from %o.\", ignore.filepath, dirname);\n }\n }\n }\n\n return { config, ignore };\n}\n\nexport function findRootConfig(\n dirname: string,\n envName: string,\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile | null> {\n return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller);\n}\n\nfunction* loadOneConfig(\n names: string[],\n dirname: string,\n envName: string,\n caller: CallerMetadata | undefined,\n previousConfig: ConfigFile | null = null,\n): Handler<ConfigFile | null> {\n const configs = yield* gensync.all(\n names.map(filename =>\n readConfig(path.join(dirname, filename), envName, caller),\n ),\n );\n const config = configs.reduce((previousConfig: ConfigFile | null, config) => {\n if (config && previousConfig) {\n throw new ConfigError(\n `Multiple configuration files found. Please remove one:\\n` +\n ` - ${path.basename(previousConfig.filepath)}\\n` +\n ` - ${config.filepath}\\n` +\n `from ${dirname}`,\n );\n }\n\n return config || previousConfig;\n }, previousConfig);\n\n if (config) {\n debug(\"Found configuration %o from %o.\", config.filepath, dirname);\n }\n return config;\n}\n\nexport function* loadConfig(\n name: string,\n dirname: string,\n envName: string,\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile> {\n const filepath = require.resolve(name, { paths: [dirname] });\n\n const conf = yield* readConfig(filepath, envName, caller);\n if (!conf) {\n throw new ConfigError(\n `Config file contains no configuration data`,\n filepath,\n );\n }\n\n debug(\"Loaded config %o from %o.\", name, dirname);\n return conf;\n}\n\n/**\n * Read the given config file, returning the result. Returns null if no config was found, but will\n * throw if there are parsing errors while loading a config.\n */\nfunction readConfig(\n filepath: string,\n envName: string,\n caller: CallerMetadata | undefined,\n): Handler<ConfigFile | null> {\n const ext = path.extname(filepath);\n return ext === \".js\" || ext === \".cjs\" || ext === \".mjs\"\n ? readConfigJS(filepath, { envName, caller })\n : readConfigJSON5(filepath);\n}\n\nexport function* resolveShowConfigPath(\n dirname: string,\n): Handler<string | null> {\n const targetPath = process.env.BABEL_SHOW_CONFIG_FOR;\n if (targetPath != null) {\n const absolutePath = path.resolve(dirname, targetPath);\n const stats = yield* fs.stat(absolutePath);\n if (!stats.isFile()) {\n throw new Error(\n `${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`,\n );\n }\n return absolutePath;\n }\n return null;\n}\n\nfunction throwConfigError(filepath: string): never {\n throw new ConfigError(\n `\\\nCaching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured\nfor various types of caching, using the first param of their handler functions:\n\nmodule.exports = function(api) {\n // The API exposes the following:\n\n // Cache the returned value forever and don't call this function again.\n api.cache(true);\n\n // Don't cache at all. Not recommended because it will be very slow.\n api.cache(false);\n\n // Cached based on the value of some function. If this function returns a value different from\n // a previously-encountered value, the plugins will re-evaluate.\n var env = api.cache(() => process.env.NODE_ENV);\n\n // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for\n // any possible NODE_ENV value that might come up during plugin execution.\n var isProd = api.cache(() => process.env.NODE_ENV === \"production\");\n\n // .cache(fn) will perform a linear search though instances to find the matching plugin based\n // based on previous instantiated plugins. If you want to recreate the plugin and discard the\n // previous instance whenever something changes, you may use:\n var isProd = api.cache.invalidate(() => process.env.NODE_ENV === \"production\");\n\n // Note, we also expose the following more-verbose versions of the above examples:\n api.cache.forever(); // api.cache(true)\n api.cache.never(); // api.cache(false)\n api.cache.using(fn); // api.cache(fn)\n\n // Return the value that will be cached.\n return { };\n};`,\n filepath,\n );\n}\n"],"mappings":"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"}