{"version":3,"file":"tailwind-class-sorter.cjs","names":["fs","util","path","fileURLToPath","fileURLToPath","exports","CachedInputFileSystem","fs","ResolverFactory","url","pathToFileURL","jiti","createJiti","fs","postcssImport","escalade"],"sources":["../src/expiring-map.ts","../../../../node_modules/enhanced-resolve/lib/util/memoize.js","../../../../node_modules/enhanced-resolve/lib/CachedInputFileSystem.js","../../../../node_modules/graceful-fs/polyfills.js","../../../../node_modules/graceful-fs/legacy-streams.js","../../../../node_modules/graceful-fs/clone.js","../../../../node_modules/graceful-fs/graceful-fs.js","../../../../node_modules/enhanced-resolve/lib/forEachBail.js","../../../../node_modules/enhanced-resolve/lib/util/strip-json-comments.js","../../../../node_modules/enhanced-resolve/lib/util/fs.js","../../../../node_modules/enhanced-resolve/lib/DescriptionFileUtils.js","../../../../node_modules/enhanced-resolve/lib/util/path.js","../../../../node_modules/enhanced-resolve/lib/getInnerRequest.js","../../../../node_modules/enhanced-resolve/lib/AliasFieldPlugin.js","../../../../node_modules/enhanced-resolve/lib/AliasUtils.js","../../../../node_modules/enhanced-resolve/lib/AliasPlugin.js","../../../../node_modules/enhanced-resolve/lib/AppendPlugin.js","../../../../node_modules/enhanced-resolve/lib/ConditionalPlugin.js","../../../../node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js","../../../../node_modules/enhanced-resolve/lib/DirectoryExistsPlugin.js","../../../../node_modules/enhanced-resolve/lib/util/identifier.js","../../../../node_modules/enhanced-resolve/lib/util/entrypoints.js","../../../../node_modules/enhanced-resolve/lib/ExportsFieldPlugin.js","../../../../node_modules/enhanced-resolve/lib/ExtensionAliasPlugin.js","../../../../node_modules/enhanced-resolve/lib/FileExistsPlugin.js","../../../../node_modules/enhanced-resolve/lib/ImportsFieldPlugin.js","../../../../node_modules/enhanced-resolve/lib/JoinRequestPartPlugin.js","../../../../node_modules/enhanced-resolve/lib/JoinRequestPlugin.js","../../../../node_modules/enhanced-resolve/lib/MainFieldPlugin.js","../../../../node_modules/enhanced-resolve/lib/getPaths.js","../../../../node_modules/enhanced-resolve/lib/ModulesUtils.js","../../../../node_modules/enhanced-resolve/lib/ModulesInHierarchicalDirectoriesPlugin.js","../../../../node_modules/enhanced-resolve/lib/ModulesInRootPlugin.js","../../../../node_modules/enhanced-resolve/lib/NextPlugin.js","../../../../node_modules/enhanced-resolve/lib/ParsePlugin.js","../../../../node_modules/enhanced-resolve/lib/PnpPlugin.js","../../../../node_modules/tapable/lib/Hook.js","../../../../node_modules/tapable/lib/HookCodeFactory.js","../../../../node_modules/tapable/lib/AsyncParallelBailHook.js","../../../../node_modules/tapable/lib/AsyncParallelHook.js","../../../../node_modules/tapable/lib/AsyncSeriesBailHook.js","../../../../node_modules/tapable/lib/AsyncSeriesHook.js","../../../../node_modules/tapable/lib/AsyncSeriesLoopHook.js","../../../../node_modules/tapable/lib/AsyncSeriesWaterfallHook.js","../../../../node_modules/tapable/lib/HookMap.js","../../../../node_modules/tapable/lib/MultiHook.js","../../../../node_modules/tapable/lib/SyncBailHook.js","../../../../node_modules/tapable/lib/SyncHook.js","../../../../node_modules/tapable/lib/SyncLoopHook.js","../../../../node_modules/tapable/lib/SyncWaterfallHook.js","../../../../node_modules/tapable/lib/index.js","../../../../node_modules/enhanced-resolve/lib/createInnerContext.js","../../../../node_modules/enhanced-resolve/lib/Resolver.js","../../../../node_modules/enhanced-resolve/lib/RestrictionsPlugin.js","../../../../node_modules/enhanced-resolve/lib/ResultPlugin.js","../../../../node_modules/enhanced-resolve/lib/RootsPlugin.js","../../../../node_modules/enhanced-resolve/lib/SelfReferencePlugin.js","../../../../node_modules/enhanced-resolve/lib/SymlinkPlugin.js","../../../../node_modules/enhanced-resolve/lib/SyncAsyncFileSystemDecorator.js","../../../../node_modules/enhanced-resolve/lib/TryNextPlugin.js","../../../../node_modules/enhanced-resolve/lib/TsconfigPathsPlugin.js","../../../../node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js","../../../../node_modules/enhanced-resolve/lib/UseFilePlugin.js","../../../../node_modules/enhanced-resolve/lib/ResolverFactory.js","../../../../node_modules/enhanced-resolve/lib/CloneBasenamePlugin.js","../../../../node_modules/enhanced-resolve/lib/LogInfoPlugin.js","../../../../node_modules/enhanced-resolve/lib/index.js","../src/resolve.ts","../src/config.ts","../src/sorting.ts","../src/sorter.ts","../src/index.ts"],"sourcesContent":["interface ExpiringMap<K, V> {\n  get(key: K): V | undefined\n  set(key: K, value: V): void\n}\n\nexport function expiringMap<K, V>(duration: number): ExpiringMap<K, V> {\n  const map = new Map<K, { value: V; expiration: Date }>()\n\n  return {\n    get(key: K) {\n      const result = map.get(key)\n      if (!result) return undefined\n      if (result.expiration <= new Date()) {\n        map.delete(key)\n        return undefined\n      }\n\n      return result.value\n    },\n\n    set(key: K, value: V) {\n      const expiration = new Date()\n      expiration.setMilliseconds(expiration.getMilliseconds() + duration)\n\n      map.set(key, {\n        value,\n        expiration,\n      })\n    },\n  }\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/**\n * @template T\n * @typedef {() => T} FunctionReturning\n */\n\n/**\n * @template T\n * @param {FunctionReturning<T>} fn memorized function\n * @returns {FunctionReturning<T>} new function\n */\nconst memoize = (fn) => {\n\tlet cache = false;\n\t/** @type {T | undefined} */\n\tlet result;\n\treturn () => {\n\t\tif (cache) {\n\t\t\treturn /** @type {T} */ (result);\n\t\t}\n\n\t\tresult = fn();\n\t\tcache = true;\n\t\t// Allow to clean up memory for fn\n\t\t// and all dependent resources\n\t\t/** @type {FunctionReturning<T> | undefined} */\n\t\t(fn) = undefined;\n\t\treturn /** @type {T} */ (result);\n\t};\n};\n\nmodule.exports = memoize;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n// eslint-disable-next-line n/prefer-global/process\nconst { nextTick } = require(\"process\");\n\n/** @typedef {import(\"./Resolver\").FileSystem} FileSystem */\n/** @typedef {import(\"./Resolver\").PathLike} PathLike */\n/** @typedef {import(\"./Resolver\").PathOrFileDescriptor} PathOrFileDescriptor */\n/** @typedef {import(\"./Resolver\").SyncFileSystem} SyncFileSystem */\n/** @typedef {FileSystem & SyncFileSystem} BaseFileSystem */\n\n/**\n * @template T\n * @typedef {import(\"./Resolver\").FileSystemCallback<T>} FileSystemCallback<T>\n */\n\n/**\n * @param {string} path path\n * @returns {string} dirname\n */\nconst dirname = (path) => {\n\tlet idx = path.length - 1;\n\twhile (idx >= 0) {\n\t\tconst char = path.charCodeAt(idx);\n\t\t// slash or backslash\n\t\tif (char === 47 || char === 92) break;\n\t\tidx--;\n\t}\n\tif (idx < 0) return \"\";\n\treturn path.slice(0, idx);\n};\n\n/**\n * @template T\n * @param {FileSystemCallback<T>[]} callbacks callbacks\n * @param {Error | null} err error\n * @param {T} result result\n */\nconst runCallbacks = (callbacks, err, result) => {\n\tif (callbacks.length === 1) {\n\t\tcallbacks[0](err, result);\n\t\tcallbacks.length = 0;\n\t\treturn;\n\t}\n\tlet error;\n\tfor (const callback of callbacks) {\n\t\ttry {\n\t\t\tcallback(err, result);\n\t\t} catch (err) {\n\t\t\tif (!error) error = err;\n\t\t}\n\t}\n\tcallbacks.length = 0;\n\tif (error) throw error;\n};\n\n// eslint-disable-next-line jsdoc/reject-function-type\n/** @typedef {Function} EXPECTED_FUNCTION */\n// eslint-disable-next-line jsdoc/reject-any-type\n/** @typedef {any} EXPECTED_ANY */\n\n/**\n * The first pending cache hit is held in these slots (a scheduled tick is\n * pending iff `firstCallback` is set); later hits from the same synchronous\n * burst spill into `dispatchQueue` as flat [callback, err, result] triples\n * and are drained by the same tick. This keeps the common single-hit case\n * as cheap as a plain `nextTick` while bursts share one tick.\n * @type {FileSystemCallback<EXPECTED_ANY> | undefined}\n */\nlet firstCallback;\n/** @type {Error | null} */\nlet firstErr = null;\n/** @type {EXPECTED_ANY} */\nlet firstResult;\n/** @type {EXPECTED_ANY[]} */\nlet dispatchQueue = [];\nlet dispatchQueueLength = 0;\n/** @type {EXPECTED_ANY[]} */\nlet spareQueue = [];\n// upper bound on the spill-array capacity kept alive between bursts\nconst MAX_RETAINED_QUEUE_LENGTH = 1024;\n\nconst runDispatch = () => {\n\tconst callback = /** @type {FileSystemCallback<EXPECTED_ANY>} */ (\n\t\tfirstCallback\n\t);\n\tconst err = firstErr;\n\tconst result = firstResult;\n\t// clear before calling: hits made from inside a callback start a new tick\n\tfirstCallback = undefined;\n\tfirstErr = null;\n\tfirstResult = undefined;\n\tif (dispatchQueueLength === 0) {\n\t\t// single hit: no queue bookkeeping, a throw affects nobody else\n\t\tcallback(err, result);\n\t\treturn;\n\t}\n\tconst queue = dispatchQueue;\n\tconst length = dispatchQueueLength;\n\t// ping-pong the two arrays so draining never allocates\n\tdispatchQueue = spareQueue;\n\tdispatchQueueLength = 0;\n\tlet i = -3;\n\ttry {\n\t\tcallback(err, result);\n\t\tfor (i = 0; i < length; i += 3) {\n\t\t\tqueue[i](queue[i + 1], queue[i + 2]);\n\t\t}\n\t} finally {\n\t\t// a throwing callback must not starve the rest: re-schedule the\n\t\t// remainder ahead of anything scheduled during this drain (matching\n\t\t// the old per-tick FIFO order) and rethrow\n\t\ti += 3;\n\t\tif (i < length) {\n\t\t\tif (firstCallback === undefined) {\n\t\t\t\t// no reentrant hit took the slot, so `dispatchQueue` is empty\n\t\t\t\tfirstCallback = queue[i];\n\t\t\t\tfirstErr = queue[i + 1];\n\t\t\t\tfirstResult = queue[i + 2];\n\t\t\t\tnextTick(runDispatch);\n\t\t\t\tfor (let j = i + 3; j < length; j++) {\n\t\t\t\t\tdispatchQueue[dispatchQueueLength++] = queue[j];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// a reentrant hit claimed the slot (and scheduled the tick);\n\t\t\t\t// displace it behind the remainder to keep FIFO order\n\t\t\t\tconst rest = queue.slice(i, length);\n\t\t\t\trest.push(firstCallback, firstErr, firstResult);\n\t\t\t\tfor (let j = 0; j < dispatchQueueLength; j++) {\n\t\t\t\t\trest.push(dispatchQueue[j]);\n\t\t\t\t}\n\t\t\t\t[firstCallback, firstErr, firstResult] = rest;\n\t\t\t\tdispatchQueue = rest.slice(3);\n\t\t\t\tdispatchQueueLength = dispatchQueue.length;\n\t\t\t}\n\t\t}\n\t\t// release references but keep the backing store, so the next burst\n\t\t// does not have to re-grow the array from scratch\n\t\tfor (let j = 0; j < length; j++) queue[j] = undefined;\n\t\t// bound the permanently retained capacity after a rare giant burst\n\t\tif (queue.length > MAX_RETAINED_QUEUE_LENGTH) {\n\t\t\tqueue.length = MAX_RETAINED_QUEUE_LENGTH;\n\t\t}\n\t\tspareQueue = queue;\n\t}\n};\n\n/**\n * Cache hits stay asynchronous, but all hits from the same synchronous\n * execution share a single `nextTick` instead of scheduling one each.\n * @param {FileSystemCallback<EXPECTED_ANY>} callback callback\n * @param {Error | null} err error\n * @param {EXPECTED_ANY} result result\n */\nconst scheduleDispatch = (callback, err, result) => {\n\tif (firstCallback === undefined) {\n\t\tfirstCallback = callback;\n\t\tfirstErr = err;\n\t\tfirstResult = result;\n\t\tnextTick(runDispatch);\n\t} else {\n\t\tconst queue = dispatchQueue;\n\t\tqueue[dispatchQueueLength] = callback;\n\t\tqueue[dispatchQueueLength + 1] = err;\n\t\tqueue[dispatchQueueLength + 2] = result;\n\t\tdispatchQueueLength += 3;\n\t}\n};\n\nclass OperationMergerBackend {\n\t/**\n\t * @param {EXPECTED_FUNCTION | undefined} provider async method in filesystem\n\t * @param {EXPECTED_FUNCTION | undefined} syncProvider sync method in filesystem\n\t * @param {BaseFileSystem} providerContext call context for the provider methods\n\t */\n\tconstructor(provider, syncProvider, providerContext) {\n\t\tthis._provider = provider;\n\t\tthis._syncProvider = syncProvider;\n\t\tthis._providerContext = providerContext;\n\t\tthis._activeAsyncOperations = new Map();\n\n\t\tthis.provide = this._provider\n\t\t\t? // Comment to align jsdoc\n\t\t\t\t/**\n\t\t\t\t * @param {PathLike | PathOrFileDescriptor} path path\n\t\t\t\t * @param {object | FileSystemCallback<EXPECTED_ANY> | undefined} options options\n\t\t\t\t * @param {FileSystemCallback<EXPECTED_ANY>=} callback callback\n\t\t\t\t * @returns {EXPECTED_ANY} result\n\t\t\t\t */\n\t\t\t\t(path, options, callback) => {\n\t\t\t\t\tif (typeof options === \"function\") {\n\t\t\t\t\t\tcallback =\n\t\t\t\t\t\t\t/** @type {FileSystemCallback<EXPECTED_ANY>} */\n\t\t\t\t\t\t\t(options);\n\t\t\t\t\t\toptions = undefined;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof path !== \"string\" &&\n\t\t\t\t\t\t!Buffer.isBuffer(path) &&\n\t\t\t\t\t\t!(path instanceof URL) &&\n\t\t\t\t\t\ttypeof path !== \"number\"\n\t\t\t\t\t) {\n\t\t\t\t\t\t/** @type {EXPECTED_FUNCTION} */\n\t\t\t\t\t\t(callback)(\n\t\t\t\t\t\t\tnew TypeError(\"path must be a string, Buffer, URL or number\"),\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (options) {\n\t\t\t\t\t\treturn /** @type {EXPECTED_FUNCTION} */ (this._provider).call(\n\t\t\t\t\t\t\tthis._providerContext,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tcallback,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tlet callbacks = this._activeAsyncOperations.get(path);\n\t\t\t\t\tif (callbacks) {\n\t\t\t\t\t\tcallbacks.push(callback);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._activeAsyncOperations.set(path, (callbacks = [callback]));\n\t\t\t\t\t/** @type {EXPECTED_FUNCTION} */\n\t\t\t\t\t(provider)(\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {Error} err error\n\t\t\t\t\t\t * @param {EXPECTED_ANY} result result\n\t\t\t\t\t\t */\n\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\tthis._activeAsyncOperations.delete(path);\n\t\t\t\t\t\t\trunCallbacks(callbacks, err, result);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t: null;\n\t\tthis.provideSync = this._syncProvider\n\t\t\t? // Comment to align jsdoc\n\t\t\t\t/**\n\t\t\t\t * @param {PathLike | PathOrFileDescriptor} path path\n\t\t\t\t * @param {object=} options options\n\t\t\t\t * @returns {EXPECTED_ANY} result\n\t\t\t\t */\n\t\t\t\t(path, options) =>\n\t\t\t\t\t/** @type {EXPECTED_FUNCTION} */ (this._syncProvider).call(\n\t\t\t\t\t\tthis._providerContext,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t)\n\t\t\t: null;\n\t}\n\n\tpurge() {}\n\n\tpurgeParent() {}\n}\n\n/*\n\nIDLE:\n\tinsert data: goto SYNC\n\nSYNC:\n\tbefore provide: run ticks\n\tevent loop tick: goto ASYNC_ACTIVE\n\nASYNC:\n\ttimeout: run tick, goto ASYNC_PASSIVE\n\nASYNC_PASSIVE:\n\tbefore provide: run ticks\n\nIDLE --[insert data]--> SYNC --[event loop tick]--> ASYNC_ACTIVE --[interval tick]-> ASYNC_PASSIVE\n                                                          ^                             |\n                                                          +---------[insert data]-------+\n*/\n\nconst STORAGE_MODE_IDLE = 0;\nconst STORAGE_MODE_SYNC = 1;\nconst STORAGE_MODE_ASYNC = 2;\n\n/**\n * @callback Provide\n * @param {PathLike | PathOrFileDescriptor} path path\n * @param {EXPECTED_ANY} options options\n * @param {FileSystemCallback<EXPECTED_ANY>} callback callback\n * @returns {void}\n */\n\nclass CacheBackend {\n\t/**\n\t * @param {number} duration max cache duration of items\n\t * @param {EXPECTED_FUNCTION | undefined} provider async method\n\t * @param {EXPECTED_FUNCTION | undefined} syncProvider sync method\n\t * @param {BaseFileSystem} providerContext call context for the provider methods\n\t */\n\tconstructor(duration, provider, syncProvider, providerContext) {\n\t\tthis._duration = duration;\n\t\tthis._provider = provider;\n\t\tthis._syncProvider = syncProvider;\n\t\tthis._providerContext = providerContext;\n\t\t/** @type {Map<string, FileSystemCallback<EXPECTED_ANY>[]>} */\n\t\tthis._activeAsyncOperations = new Map();\n\t\t/** @type {Map<string, { err: Error | null, result?: EXPECTED_ANY, level: Set<string> }>} */\n\t\tthis._data = new Map();\n\t\t/** @type {Set<string>[]} */\n\t\tthis._levels = [];\n\t\tfor (let i = 0; i < 10; i++) this._levels.push(new Set());\n\t\tif (duration !== Infinity) {\n\t\t\tfor (let i = 5000; i < duration; i += 500) {\n\t\t\t\tthis._levels.push(new Set());\n\t\t\t}\n\t\t}\n\t\tthis._currentLevel = 0;\n\t\tthis._tickInterval = Math.floor(duration / this._levels.length);\n\t\t/** @type {STORAGE_MODE_IDLE | STORAGE_MODE_SYNC | STORAGE_MODE_ASYNC} */\n\t\tthis._mode = STORAGE_MODE_IDLE;\n\n\t\t/** @type {NodeJS.Timeout | undefined} */\n\t\tthis._timeout = undefined;\n\t\t/** @type {number | undefined} */\n\t\tthis._nextDecay = undefined;\n\n\t\t// eslint-disable-next-line no-warning-comments\n\t\t// @ts-ignore\n\t\tthis.provide = provider ? this.provide.bind(this) : null;\n\t\t// eslint-disable-next-line no-warning-comments\n\t\t// @ts-ignore\n\t\tthis.provideSync = syncProvider ? this.provideSync.bind(this) : null;\n\t}\n\n\t/**\n\t * @param {PathLike | PathOrFileDescriptor} path path\n\t * @param {EXPECTED_ANY} options options\n\t * @param {FileSystemCallback<EXPECTED_ANY>} callback callback\n\t * @returns {void}\n\t */\n\tprovide(path, options, callback) {\n\t\tif (typeof options === \"function\") {\n\t\t\tcallback = options;\n\t\t\toptions = undefined;\n\t\t}\n\t\tif (\n\t\t\ttypeof path !== \"string\" &&\n\t\t\t!Buffer.isBuffer(path) &&\n\t\t\t!(path instanceof URL) &&\n\t\t\ttypeof path !== \"number\"\n\t\t) {\n\t\t\tcallback(new TypeError(\"path must be a string, Buffer, URL or number\"));\n\t\t\treturn;\n\t\t}\n\t\tconst strPath = typeof path !== \"string\" ? path.toString() : path;\n\t\tif (options) {\n\t\t\treturn /** @type {EXPECTED_FUNCTION} */ (this._provider).call(\n\t\t\t\tthis._providerContext,\n\t\t\t\tpath,\n\t\t\t\toptions,\n\t\t\t\tcallback,\n\t\t\t);\n\t\t}\n\n\t\t// When in sync mode we can move to async mode\n\t\tif (this._mode === STORAGE_MODE_SYNC) {\n\t\t\tthis._enterAsyncMode();\n\t\t}\n\n\t\t// Check in cache\n\t\tconst cacheEntry = this._data.get(strPath);\n\t\tif (cacheEntry !== undefined) {\n\t\t\tif (cacheEntry.err) {\n\t\t\t\treturn scheduleDispatch(callback, cacheEntry.err, undefined);\n\t\t\t}\n\t\t\treturn scheduleDispatch(callback, null, cacheEntry.result);\n\t\t}\n\n\t\t// Check if there is already the same operation running\n\t\tlet callbacks = this._activeAsyncOperations.get(strPath);\n\t\tif (callbacks !== undefined) {\n\t\t\tcallbacks.push(callback);\n\t\t\treturn;\n\t\t}\n\t\tthis._activeAsyncOperations.set(strPath, (callbacks = [callback]));\n\n\t\t// Run the operation\n\t\t/** @type {EXPECTED_FUNCTION} */\n\t\t(this._provider).call(\n\t\t\tthis._providerContext,\n\t\t\tpath,\n\t\t\t/**\n\t\t\t * @param {Error | null} err error\n\t\t\t * @param {EXPECTED_ANY=} result result\n\t\t\t */\n\t\t\t(err, result) => {\n\t\t\t\tthis._activeAsyncOperations.delete(strPath);\n\t\t\t\tthis._storeResult(strPath, err, result);\n\n\t\t\t\t// Enter async mode if not yet done\n\t\t\t\tthis._enterAsyncMode();\n\n\t\t\t\trunCallbacks(\n\t\t\t\t\t/** @type {FileSystemCallback<EXPECTED_ANY>[]} */ (callbacks),\n\t\t\t\t\terr,\n\t\t\t\t\tresult,\n\t\t\t\t);\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @param {PathLike | PathOrFileDescriptor} path path\n\t * @param {EXPECTED_ANY} options options\n\t * @returns {EXPECTED_ANY} result\n\t */\n\tprovideSync(path, options) {\n\t\tif (\n\t\t\ttypeof path !== \"string\" &&\n\t\t\t!Buffer.isBuffer(path) &&\n\t\t\t!(path instanceof URL) &&\n\t\t\ttypeof path !== \"number\"\n\t\t) {\n\t\t\tthrow new TypeError(\"path must be a string\");\n\t\t}\n\t\tconst strPath = typeof path !== \"string\" ? path.toString() : path;\n\t\tif (options) {\n\t\t\treturn /** @type {EXPECTED_FUNCTION} */ (this._syncProvider).call(\n\t\t\t\tthis._providerContext,\n\t\t\t\tpath,\n\t\t\t\toptions,\n\t\t\t);\n\t\t}\n\n\t\t// In sync mode we may have to decay some cache items\n\t\tif (this._mode === STORAGE_MODE_SYNC) {\n\t\t\tthis._runDecays();\n\t\t}\n\n\t\t// Check in cache\n\t\tconst cacheEntry = this._data.get(strPath);\n\t\tif (cacheEntry !== undefined) {\n\t\t\tif (cacheEntry.err) throw cacheEntry.err;\n\t\t\treturn cacheEntry.result;\n\t\t}\n\n\t\t// Get all active async operations\n\t\t// This sync operation will also complete them\n\t\tconst callbacks = this._activeAsyncOperations.get(strPath);\n\t\tthis._activeAsyncOperations.delete(strPath);\n\n\t\t// Run the operation\n\t\t// When in idle mode, we will enter sync mode\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = /** @type {EXPECTED_FUNCTION} */ (this._syncProvider).call(\n\t\t\t\tthis._providerContext,\n\t\t\t\tpath,\n\t\t\t);\n\t\t} catch (err) {\n\t\t\tthis._storeResult(strPath, /** @type {Error} */ (err), undefined);\n\t\t\tthis._enterSyncModeWhenIdle();\n\t\t\tif (callbacks) {\n\t\t\t\trunCallbacks(callbacks, /** @type {Error} */ (err), undefined);\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t\tthis._storeResult(strPath, null, result);\n\t\tthis._enterSyncModeWhenIdle();\n\t\tif (callbacks) {\n\t\t\trunCallbacks(callbacks, null, result);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * @param {(string | Buffer | URL | number | (string | URL | Buffer | number)[] | Set<string | URL | Buffer | number>)=} what what to purge\n\t * @param {{ exact?: boolean }=} options options; `exact: true` removes only entries whose key matches `what` exactly instead of any entry whose key starts with `what`\n\t */\n\tpurge(what, options) {\n\t\tif (what === undefined || what === null) {\n\t\t\tif (this._mode !== STORAGE_MODE_IDLE) {\n\t\t\t\tthis._data.clear();\n\t\t\t\tfor (const level of this._levels) {\n\t\t\t\t\tlevel.clear();\n\t\t\t\t}\n\t\t\t\tthis._enterIdleMode();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst exact =\n\t\t\toptions !== undefined && options !== null && options.exact === true;\n\t\tif (exact) {\n\t\t\tif (\n\t\t\t\ttypeof what === \"string\" ||\n\t\t\t\tBuffer.isBuffer(what) ||\n\t\t\t\twhat instanceof URL ||\n\t\t\t\ttypeof what === \"number\"\n\t\t\t) {\n\t\t\t\tconst strWhat = typeof what !== \"string\" ? what.toString() : what;\n\t\t\t\tconst data = this._data.get(strWhat);\n\t\t\t\tif (data !== undefined) {\n\t\t\t\t\tthis._data.delete(strWhat);\n\t\t\t\t\tdata.level.delete(strWhat);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const item of what) {\n\t\t\t\t\tconst strItem = typeof item !== \"string\" ? item.toString() : item;\n\t\t\t\t\tconst data = this._data.get(strItem);\n\t\t\t\t\tif (data !== undefined) {\n\t\t\t\t\t\tthis._data.delete(strItem);\n\t\t\t\t\t\tdata.level.delete(strItem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._data.size === 0) {\n\t\t\t\tthis._enterIdleMode();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (\n\t\t\ttypeof what === \"string\" ||\n\t\t\tBuffer.isBuffer(what) ||\n\t\t\twhat instanceof URL ||\n\t\t\ttypeof what === \"number\"\n\t\t) {\n\t\t\tconst strWhat = typeof what !== \"string\" ? what.toString() : what;\n\t\t\tif (strWhat === \"\") {\n\t\t\t\t// empty string is a prefix of every key — short-circuit the O(n) scan\n\t\t\t\tif (this._mode !== STORAGE_MODE_IDLE) {\n\t\t\t\t\tthis._data.clear();\n\t\t\t\t\tfor (const level of this._levels) {\n\t\t\t\t\t\tlevel.clear();\n\t\t\t\t\t}\n\t\t\t\t\tthis._enterIdleMode();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const [key, data] of this._data) {\n\t\t\t\tif (key.startsWith(strWhat)) {\n\t\t\t\t\tthis._data.delete(key);\n\t\t\t\t\tdata.level.delete(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._data.size === 0) {\n\t\t\t\tthis._enterIdleMode();\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const [key, data] of this._data) {\n\t\t\t\tfor (const item of what) {\n\t\t\t\t\tconst strItem = typeof item !== \"string\" ? item.toString() : item;\n\t\t\t\t\tif (key.startsWith(strItem)) {\n\t\t\t\t\t\tthis._data.delete(key);\n\t\t\t\t\t\tdata.level.delete(key);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._data.size === 0) {\n\t\t\t\tthis._enterIdleMode();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {(string | Buffer | URL | number | (string | URL | Buffer | number)[] | Set<string | URL | Buffer | number>)=} what what to purge\n\t */\n\tpurgeParent(what) {\n\t\tif (what === undefined || what === null) {\n\t\t\tthis.purge();\n\t\t} else if (\n\t\t\ttypeof what === \"string\" ||\n\t\t\tBuffer.isBuffer(what) ||\n\t\t\twhat instanceof URL ||\n\t\t\ttypeof what === \"number\"\n\t\t) {\n\t\t\tconst strWhat = typeof what !== \"string\" ? what.toString() : what;\n\t\t\tthis.purge(dirname(strWhat));\n\t\t} else {\n\t\t\tconst set = new Set();\n\t\t\tfor (const item of what) {\n\t\t\t\tconst strItem = typeof item !== \"string\" ? item.toString() : item;\n\t\t\t\tset.add(dirname(strItem));\n\t\t\t}\n\t\t\tthis.purge(set);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} path path\n\t * @param {Error | null} err error\n\t * @param {EXPECTED_ANY} result result\n\t */\n\t_storeResult(path, err, result) {\n\t\tif (this._data.has(path)) return;\n\t\tconst level = this._levels[this._currentLevel];\n\t\tthis._data.set(path, { err, result, level });\n\t\tlevel.add(path);\n\t}\n\n\t_decayLevel() {\n\t\tconst nextLevel = (this._currentLevel + 1) % this._levels.length;\n\t\tconst decay = this._levels[nextLevel];\n\t\tthis._currentLevel = nextLevel;\n\t\tfor (const item of decay) {\n\t\t\tthis._data.delete(item);\n\t\t}\n\t\tdecay.clear();\n\t\tif (this._data.size === 0) {\n\t\t\tthis._enterIdleMode();\n\t\t} else {\n\t\t\t/** @type {number} */\n\t\t\t(this._nextDecay) += this._tickInterval;\n\t\t}\n\t}\n\n\t_runDecays() {\n\t\twhile (\n\t\t\t/** @type {number} */ (this._nextDecay) <= Date.now() &&\n\t\t\tthis._mode !== STORAGE_MODE_IDLE\n\t\t) {\n\t\t\tthis._decayLevel();\n\t\t}\n\t}\n\n\t_enterAsyncMode() {\n\t\tlet timeout = 0;\n\t\tswitch (this._mode) {\n\t\t\tcase STORAGE_MODE_ASYNC:\n\t\t\t\treturn;\n\t\t\tcase STORAGE_MODE_IDLE:\n\t\t\t\tthis._nextDecay = Date.now() + this._tickInterval;\n\t\t\t\ttimeout = this._tickInterval;\n\t\t\t\tbreak;\n\t\t\tcase STORAGE_MODE_SYNC:\n\t\t\t\tthis._runDecays();\n\t\t\t\t// _runDecays may change the mode\n\t\t\t\tif (\n\t\t\t\t\t/** @type {STORAGE_MODE_IDLE | STORAGE_MODE_SYNC | STORAGE_MODE_ASYNC} */\n\t\t\t\t\t(this._mode) === STORAGE_MODE_IDLE\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttimeout = Math.max(\n\t\t\t\t\t0,\n\t\t\t\t\t/** @type {number} */ (this._nextDecay) - Date.now(),\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t\tthis._mode = STORAGE_MODE_ASYNC;\n\t\t// When duration is Infinity, cache entries never expire, so there\n\t\t// is no need to schedule a decay timer.\n\t\tif (this._duration === Infinity) {\n\t\t\treturn;\n\t\t}\n\t\tconst ref = setTimeout(() => {\n\t\t\tthis._mode = STORAGE_MODE_SYNC;\n\t\t\tthis._runDecays();\n\t\t}, timeout);\n\t\tif (ref.unref) ref.unref();\n\t\tthis._timeout = ref;\n\t}\n\n\t_enterSyncModeWhenIdle() {\n\t\tif (this._mode === STORAGE_MODE_IDLE) {\n\t\t\tthis._mode = STORAGE_MODE_SYNC;\n\t\t\tthis._nextDecay = Date.now() + this._tickInterval;\n\t\t}\n\t}\n\n\t_enterIdleMode() {\n\t\tthis._mode = STORAGE_MODE_IDLE;\n\t\tthis._nextDecay = undefined;\n\t\tif (this._timeout) clearTimeout(this._timeout);\n\t}\n}\n\n/**\n * @template {EXPECTED_FUNCTION} Provider\n * @template {EXPECTED_FUNCTION} AsyncProvider\n * @template FileSystem\n * @param {number} duration duration in ms files are cached\n * @param {Provider | undefined} provider provider\n * @param {AsyncProvider | undefined} syncProvider sync provider\n * @param {BaseFileSystem} providerContext provider context\n * @returns {OperationMergerBackend | CacheBackend} backend\n */\nconst createBackend = (duration, provider, syncProvider, providerContext) => {\n\tif (duration > 0) {\n\t\treturn new CacheBackend(duration, provider, syncProvider, providerContext);\n\t}\n\treturn new OperationMergerBackend(provider, syncProvider, providerContext);\n};\n\nmodule.exports = class CachedInputFileSystem {\n\t/**\n\t * @param {BaseFileSystem} fileSystem file system\n\t * @param {number} duration duration in ms files are cached\n\t */\n\tconstructor(fileSystem, duration) {\n\t\tthis.fileSystem = fileSystem;\n\n\t\tthis._lstatBackend = createBackend(\n\t\t\tduration,\n\t\t\tthis.fileSystem.lstat,\n\t\t\tthis.fileSystem.lstatSync,\n\t\t\tthis.fileSystem,\n\t\t);\n\t\tconst lstat = this._lstatBackend.provide;\n\t\tthis.lstat = /** @type {FileSystem[\"lstat\"]} */ (lstat);\n\t\tconst lstatSync = this._lstatBackend.provideSync;\n\t\tthis.lstatSync = /** @type {SyncFileSystem[\"lstatSync\"]} */ (lstatSync);\n\n\t\tthis._statBackend = createBackend(\n\t\t\tduration,\n\t\t\tthis.fileSystem.stat,\n\t\t\tthis.fileSystem.statSync,\n\t\t\tthis.fileSystem,\n\t\t);\n\t\tconst stat = this._statBackend.provide;\n\t\tthis.stat = /** @type {FileSystem[\"stat\"]} */ (stat);\n\t\tconst statSync = this._statBackend.provideSync;\n\t\tthis.statSync = /** @type {SyncFileSystem[\"statSync\"]} */ (statSync);\n\n\t\tthis._readdirBackend = createBackend(\n\t\t\tduration,\n\t\t\tthis.fileSystem.readdir,\n\t\t\tthis.fileSystem.readdirSync,\n\t\t\tthis.fileSystem,\n\t\t);\n\t\tconst readdir = this._readdirBackend.provide;\n\t\tthis.readdir = /** @type {FileSystem[\"readdir\"]} */ (readdir);\n\t\tconst readdirSync = this._readdirBackend.provideSync;\n\t\tthis.readdirSync = /** @type {SyncFileSystem[\"readdirSync\"]} */ (\n\t\t\treaddirSync\n\t\t);\n\n\t\tthis._readFileBackend = createBackend(\n\t\t\tduration,\n\t\t\tthis.fileSystem.readFile,\n\t\t\tthis.fileSystem.readFileSync,\n\t\t\tthis.fileSystem,\n\t\t);\n\t\tconst readFile = this._readFileBackend.provide;\n\t\tthis.readFile = /** @type {FileSystem[\"readFile\"]} */ (readFile);\n\t\tconst readFileSync = this._readFileBackend.provideSync;\n\t\tthis.readFileSync = /** @type {SyncFileSystem[\"readFileSync\"]} */ (\n\t\t\treadFileSync\n\t\t);\n\n\t\tthis._readJsonBackend = createBackend(\n\t\t\tduration,\n\t\t\t// prettier-ignore\n\t\t\tthis.fileSystem.readJson ||\n\t\t\t\t(this.readFile &&\n\t\t\t\t\t(\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {string} path path\n\t\t\t\t\t\t * @param {FileSystemCallback<EXPECTED_ANY>} callback callback\n\t\t\t\t\t\t */\n\t\t\t\t\t\t(path, callback) => {\n\t\t\t\t\t\t\tthis.readFile(path, (err, buffer) => {\n\t\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\t\tif (!buffer || buffer.length === 0)\n\t\t\t\t\t\t\t\t\t{return callback(new Error(\"No file content\"));}\n\t\t\t\t\t\t\t\tlet data;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tdata = JSON.parse(buffer.toString(\"utf8\"));\n\t\t\t\t\t\t\t\t} catch (err_) {\n\t\t\t\t\t\t\t\t\treturn callback(/** @type {Error} */ (err_));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback(null, data);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t// prettier-ignore\n\t\t\tthis.fileSystem.readJsonSync ||\n\t\t\t\t(this.readFileSync &&\n\t\t\t\t\t(\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {string} path path\n\t\t\t\t\t\t * @returns {EXPECTED_ANY} result\n\t\t\t\t\t\t */\n\t\t\t\t\t\t(path) => {\n\t\t\t\t\t\t\tconst buffer = this.readFileSync(path);\n\t\t\t\t\t\t\tconst data = JSON.parse(buffer.toString(\"utf8\"));\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t}\n\t\t\t\t )),\n\t\t\tthis.fileSystem,\n\t\t);\n\t\tconst readJson = this._readJsonBackend.provide;\n\t\tthis.readJson = /** @type {FileSystem[\"readJson\"]} */ (readJson);\n\t\tconst readJsonSync = this._readJsonBackend.provideSync;\n\t\tthis.readJsonSync = /** @type {SyncFileSystem[\"readJsonSync\"]} */ (\n\t\t\treadJsonSync\n\t\t);\n\n\t\tthis._readlinkBackend = createBackend(\n\t\t\tduration,\n\t\t\tthis.fileSystem.readlink,\n\t\t\tthis.fileSystem.readlinkSync,\n\t\t\tthis.fileSystem,\n\t\t);\n\t\tconst readlink = this._readlinkBackend.provide;\n\t\tthis.readlink = /** @type {FileSystem[\"readlink\"]} */ (readlink);\n\t\tconst readlinkSync = this._readlinkBackend.provideSync;\n\t\tthis.readlinkSync = /** @type {SyncFileSystem[\"readlinkSync\"]} */ (\n\t\t\treadlinkSync\n\t\t);\n\n\t\tthis._realpathBackend = createBackend(\n\t\t\tduration,\n\t\t\tthis.fileSystem.realpath,\n\t\t\tthis.fileSystem.realpathSync,\n\t\t\tthis.fileSystem,\n\t\t);\n\t\tconst realpath = this._realpathBackend.provide;\n\t\tthis.realpath = /** @type {FileSystem[\"realpath\"]} */ (realpath);\n\t\tconst realpathSync = this._realpathBackend.provideSync;\n\t\tthis.realpathSync = /** @type {SyncFileSystem[\"realpathSync\"]} */ (\n\t\t\trealpathSync\n\t\t);\n\t}\n\n\t/**\n\t * @param {(string | Buffer | URL | number | (string | URL | Buffer | number)[] | Set<string | URL | Buffer | number>)=} what what to purge\n\t * @param {{ exact?: boolean }=} options options; `exact: true` removes only cache entries whose key matches `what` exactly instead of any entry whose key starts with `what`\n\t */\n\tpurge(what, options) {\n\t\tthis._statBackend.purge(what, options);\n\t\tthis._lstatBackend.purge(what, options);\n\t\tif (options !== undefined && options !== null && options.exact === true) {\n\t\t\tthis._readdirBackend.purge(what, options);\n\t\t} else {\n\t\t\tthis._readdirBackend.purgeParent(what);\n\t\t}\n\t\tthis._readFileBackend.purge(what, options);\n\t\tthis._readlinkBackend.purge(what, options);\n\t\tthis._readJsonBackend.purge(what, options);\n\t\tthis._realpathBackend.purge(what, options);\n\t}\n};\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n  if (!cwd)\n    cwd = origCwd.call(process)\n  return cwd\n}\ntry {\n  process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n  var chdir = process.chdir\n  process.chdir = function (d) {\n    cwd = null\n    chdir.call(process, d)\n  }\n  if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n  // (re-)implement some things that are known busted or missing.\n\n  // lchmod, broken prior to 0.6.2\n  // back-port the fix here.\n  if (constants.hasOwnProperty('O_SYMLINK') &&\n      process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n    patchLchmod(fs)\n  }\n\n  // lutimes implementation, or no-op\n  if (!fs.lutimes) {\n    patchLutimes(fs)\n  }\n\n  // https://github.com/isaacs/node-graceful-fs/issues/4\n  // Chown should not fail on einval or eperm if non-root.\n  // It should not fail on enosys ever, as this just indicates\n  // that a fs doesn't support the intended operation.\n\n  fs.chown = chownFix(fs.chown)\n  fs.fchown = chownFix(fs.fchown)\n  fs.lchown = chownFix(fs.lchown)\n\n  fs.chmod = chmodFix(fs.chmod)\n  fs.fchmod = chmodFix(fs.fchmod)\n  fs.lchmod = chmodFix(fs.lchmod)\n\n  fs.chownSync = chownFixSync(fs.chownSync)\n  fs.fchownSync = chownFixSync(fs.fchownSync)\n  fs.lchownSync = chownFixSync(fs.lchownSync)\n\n  fs.chmodSync = chmodFixSync(fs.chmodSync)\n  fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n  fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n  fs.stat = statFix(fs.stat)\n  fs.fstat = statFix(fs.fstat)\n  fs.lstat = statFix(fs.lstat)\n\n  fs.statSync = statFixSync(fs.statSync)\n  fs.fstatSync = statFixSync(fs.fstatSync)\n  fs.lstatSync = statFixSync(fs.lstatSync)\n\n  // if lchmod/lchown do not exist, then make them no-ops\n  if (fs.chmod && !fs.lchmod) {\n    fs.lchmod = function (path, mode, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchmodSync = function () {}\n  }\n  if (fs.chown && !fs.lchown) {\n    fs.lchown = function (path, uid, gid, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchownSync = function () {}\n  }\n\n  // on Windows, A/V software can lock the directory, causing this\n  // to fail with an EACCES or EPERM if the directory contains newly\n  // created files.  Try again on failure, for up to 60 seconds.\n\n  // Set the timeout this long because some Windows Anti-Virus, such as Parity\n  // bit9, may lock files for up to a minute, causing npm package install\n  // failures. Also, take care to yield the scheduler. Windows scheduling gives\n  // CPU to a busy looping process, which can cause the program causing the lock\n  // contention to be starved of CPU by node, so the contention doesn't resolve.\n  if (platform === \"win32\") {\n    fs.rename = typeof fs.rename !== 'function' ? fs.rename\n    : (function (fs$rename) {\n      function rename (from, to, cb) {\n        var start = Date.now()\n        var backoff = 0;\n        fs$rename(from, to, function CB (er) {\n          if (er\n              && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n              && Date.now() - start < 60000) {\n            setTimeout(function() {\n              fs.stat(to, function (stater, st) {\n                if (stater && stater.code === \"ENOENT\")\n                  fs$rename(from, to, CB);\n                else\n                  cb(er)\n              })\n            }, backoff)\n            if (backoff < 100)\n              backoff += 10;\n            return;\n          }\n          if (cb) cb(er)\n        })\n      }\n      if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n      return rename\n    })(fs.rename)\n  }\n\n  // if read() returns EAGAIN, then just try it again.\n  fs.read = typeof fs.read !== 'function' ? fs.read\n  : (function (fs$read) {\n    function read (fd, buffer, offset, length, position, callback_) {\n      var callback\n      if (callback_ && typeof callback_ === 'function') {\n        var eagCounter = 0\n        callback = function (er, _, __) {\n          if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n            eagCounter ++\n            return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n          }\n          callback_.apply(this, arguments)\n        }\n      }\n      return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n    }\n\n    // This ensures `util.promisify` works as it does for native `fs.read`.\n    if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n    return read\n  })(fs.read)\n\n  fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n  : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n    var eagCounter = 0\n    while (true) {\n      try {\n        return fs$readSync.call(fs, fd, buffer, offset, length, position)\n      } catch (er) {\n        if (er.code === 'EAGAIN' && eagCounter < 10) {\n          eagCounter ++\n          continue\n        }\n        throw er\n      }\n    }\n  }})(fs.readSync)\n\n  function patchLchmod (fs) {\n    fs.lchmod = function (path, mode, callback) {\n      fs.open( path\n             , constants.O_WRONLY | constants.O_SYMLINK\n             , mode\n             , function (err, fd) {\n        if (err) {\n          if (callback) callback(err)\n          return\n        }\n        // prefer to return the chmod error, if one occurs,\n        // but still try to close, and report closing errors if they occur.\n        fs.fchmod(fd, mode, function (err) {\n          fs.close(fd, function(err2) {\n            if (callback) callback(err || err2)\n          })\n        })\n      })\n    }\n\n    fs.lchmodSync = function (path, mode) {\n      var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n      // prefer to return the chmod error, if one occurs,\n      // but still try to close, and report closing errors if they occur.\n      var threw = true\n      var ret\n      try {\n        ret = fs.fchmodSync(fd, mode)\n        threw = false\n      } finally {\n        if (threw) {\n          try {\n            fs.closeSync(fd)\n          } catch (er) {}\n        } else {\n          fs.closeSync(fd)\n        }\n      }\n      return ret\n    }\n  }\n\n  function patchLutimes (fs) {\n    if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n      fs.lutimes = function (path, at, mt, cb) {\n        fs.open(path, constants.O_SYMLINK, function (er, fd) {\n          if (er) {\n            if (cb) cb(er)\n            return\n          }\n          fs.futimes(fd, at, mt, function (er) {\n            fs.close(fd, function (er2) {\n              if (cb) cb(er || er2)\n            })\n          })\n        })\n      }\n\n      fs.lutimesSync = function (path, at, mt) {\n        var fd = fs.openSync(path, constants.O_SYMLINK)\n        var ret\n        var threw = true\n        try {\n          ret = fs.futimesSync(fd, at, mt)\n          threw = false\n        } finally {\n          if (threw) {\n            try {\n              fs.closeSync(fd)\n            } catch (er) {}\n          } else {\n            fs.closeSync(fd)\n          }\n        }\n        return ret\n      }\n\n    } else if (fs.futimes) {\n      fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n      fs.lutimesSync = function () {}\n    }\n  }\n\n  function chmodFix (orig) {\n    if (!orig) return orig\n    return function (target, mode, cb) {\n      return orig.call(fs, target, mode, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chmodFixSync (orig) {\n    if (!orig) return orig\n    return function (target, mode) {\n      try {\n        return orig.call(fs, target, mode)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n\n  function chownFix (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid, cb) {\n      return orig.call(fs, target, uid, gid, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chownFixSync (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid) {\n      try {\n        return orig.call(fs, target, uid, gid)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n  function statFix (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options, cb) {\n      if (typeof options === 'function') {\n        cb = options\n        options = null\n      }\n      function callback (er, stats) {\n        if (stats) {\n          if (stats.uid < 0) stats.uid += 0x100000000\n          if (stats.gid < 0) stats.gid += 0x100000000\n        }\n        if (cb) cb.apply(this, arguments)\n      }\n      return options ? orig.call(fs, target, options, callback)\n        : orig.call(fs, target, callback)\n    }\n  }\n\n  function statFixSync (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options) {\n      var stats = options ? orig.call(fs, target, options)\n        : orig.call(fs, target)\n      if (stats) {\n        if (stats.uid < 0) stats.uid += 0x100000000\n        if (stats.gid < 0) stats.gid += 0x100000000\n      }\n      return stats;\n    }\n  }\n\n  // ENOSYS means that the fs doesn't support the op. Just ignore\n  // that, because it doesn't matter.\n  //\n  // if there's no getuid, or if getuid() is something other\n  // than 0, and the error is EINVAL or EPERM, then just ignore\n  // it.\n  //\n  // This specific case is a silent failure in cp, install, tar,\n  // and most other unix tools that manage permissions.\n  //\n  // When running as root, or if other types of errors are\n  // encountered, then it's strict.\n  function chownErOk (er) {\n    if (!er)\n      return true\n\n    if (er.code === \"ENOSYS\")\n      return true\n\n    var nonroot = !process.getuid || process.getuid() !== 0\n    if (nonroot) {\n      if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n        return true\n    }\n\n    return false\n  }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n  return {\n    ReadStream: ReadStream,\n    WriteStream: WriteStream\n  }\n\n  function ReadStream (path, options) {\n    if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n    Stream.call(this);\n\n    var self = this;\n\n    this.path = path;\n    this.fd = null;\n    this.readable = true;\n    this.paused = false;\n\n    this.flags = 'r';\n    this.mode = 438; /*=0666*/\n    this.bufferSize = 64 * 1024;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.encoding) this.setEncoding(this.encoding);\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.end === undefined) {\n        this.end = Infinity;\n      } else if ('number' !== typeof this.end) {\n        throw TypeError('end must be a Number');\n      }\n\n      if (this.start > this.end) {\n        throw new Error('start must be <= end');\n      }\n\n      this.pos = this.start;\n    }\n\n    if (this.fd !== null) {\n      process.nextTick(function() {\n        self._read();\n      });\n      return;\n    }\n\n    fs.open(this.path, this.flags, this.mode, function (err, fd) {\n      if (err) {\n        self.emit('error', err);\n        self.readable = false;\n        return;\n      }\n\n      self.fd = fd;\n      self.emit('open', fd);\n      self._read();\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n    Stream.call(this);\n\n    this.path = path;\n    this.fd = null;\n    this.writable = true;\n\n    this.flags = 'w';\n    this.encoding = 'binary';\n    this.mode = 438; /*=0666*/\n    this.bytesWritten = 0;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.start < 0) {\n        throw new Error('start must be >= zero');\n      }\n\n      this.pos = this.start;\n    }\n\n    this.busy = false;\n    this._queue = [];\n\n    if (this.fd === null) {\n      this._open = fs.open;\n      this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n      this.flush();\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n  return obj.__proto__\n}\n\nfunction clone (obj) {\n  if (obj === null || typeof obj !== 'object')\n    return obj\n\n  if (obj instanceof Object)\n    var copy = { __proto__: getPrototypeOf(obj) }\n  else\n    var copy = Object.create(null)\n\n  Object.getOwnPropertyNames(obj).forEach(function (key) {\n    Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n  })\n\n  return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n  gracefulQueue = Symbol.for('graceful-fs.queue')\n  // This is used in testing by future versions\n  previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n  gracefulQueue = '___graceful-fs.queue'\n  previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n  Object.defineProperty(context, gracefulQueue, {\n    get: function() {\n      return queue\n    }\n  })\n}\n\nvar debug = noop\nif (util.debuglog)\n  debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n  debug = function() {\n    var m = util.format.apply(util, arguments)\n    m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n    console.error(m)\n  }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n  // This queue can be shared by multiple loaded instances\n  var queue = global[gracefulQueue] || []\n  publishQueue(fs, queue)\n\n  // Patch fs.close/closeSync to shared queue version, because we need\n  // to retry() whenever a close happens *anywhere* in the program.\n  // This is essential when multiple graceful-fs instances are\n  // in play at the same time.\n  fs.close = (function (fs$close) {\n    function close (fd, cb) {\n      return fs$close.call(fs, fd, function (err) {\n        // This function uses the graceful-fs shared queue\n        if (!err) {\n          resetQueue()\n        }\n\n        if (typeof cb === 'function')\n          cb.apply(this, arguments)\n      })\n    }\n\n    Object.defineProperty(close, previousSymbol, {\n      value: fs$close\n    })\n    return close\n  })(fs.close)\n\n  fs.closeSync = (function (fs$closeSync) {\n    function closeSync (fd) {\n      // This function uses the graceful-fs shared queue\n      fs$closeSync.apply(fs, arguments)\n      resetQueue()\n    }\n\n    Object.defineProperty(closeSync, previousSymbol, {\n      value: fs$closeSync\n    })\n    return closeSync\n  })(fs.closeSync)\n\n  if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n    process.on('exit', function() {\n      debug(fs[gracefulQueue])\n      require('assert').equal(fs[gracefulQueue].length, 0)\n    })\n  }\n}\n\nif (!global[gracefulQueue]) {\n  publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n    module.exports = patch(fs)\n    fs.__patched = true;\n}\n\nfunction patch (fs) {\n  // Everything that references the open() function needs to be in here\n  polyfills(fs)\n  fs.gracefulify = patch\n\n  fs.createReadStream = createReadStream\n  fs.createWriteStream = createWriteStream\n  var fs$readFile = fs.readFile\n  fs.readFile = readFile\n  function readFile (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$readFile(path, options, cb)\n\n    function go$readFile (path, options, cb, startTime) {\n      return fs$readFile(path, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$writeFile = fs.writeFile\n  fs.writeFile = writeFile\n  function writeFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$writeFile(path, data, options, cb)\n\n    function go$writeFile (path, data, options, cb, startTime) {\n      return fs$writeFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$appendFile = fs.appendFile\n  if (fs$appendFile)\n    fs.appendFile = appendFile\n  function appendFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$appendFile(path, data, options, cb)\n\n    function go$appendFile (path, data, options, cb, startTime) {\n      return fs$appendFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$copyFile = fs.copyFile\n  if (fs$copyFile)\n    fs.copyFile = copyFile\n  function copyFile (src, dest, flags, cb) {\n    if (typeof flags === 'function') {\n      cb = flags\n      flags = 0\n    }\n    return go$copyFile(src, dest, flags, cb)\n\n    function go$copyFile (src, dest, flags, cb, startTime) {\n      return fs$copyFile(src, dest, flags, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$readdir = fs.readdir\n  fs.readdir = readdir\n  var noReaddirOptionVersions = /^v[0-5]\\./\n  function readdir (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    var go$readdir = noReaddirOptionVersions.test(process.version)\n      ? function go$readdir (path, options, cb, startTime) {\n        return fs$readdir(path, fs$readdirCallback(\n          path, options, cb, startTime\n        ))\n      }\n      : function go$readdir (path, options, cb, startTime) {\n        return fs$readdir(path, options, fs$readdirCallback(\n          path, options, cb, startTime\n        ))\n      }\n\n    return go$readdir(path, options, cb)\n\n    function fs$readdirCallback (path, options, cb, startTime) {\n      return function (err, files) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([\n            go$readdir,\n            [path, options, cb],\n            err,\n            startTime || Date.now(),\n            Date.now()\n          ])\n        else {\n          if (files && files.sort)\n            files.sort()\n\n          if (typeof cb === 'function')\n            cb.call(this, err, files)\n        }\n      }\n    }\n  }\n\n  if (process.version.substr(0, 4) === 'v0.8') {\n    var legStreams = legacy(fs)\n    ReadStream = legStreams.ReadStream\n    WriteStream = legStreams.WriteStream\n  }\n\n  var fs$ReadStream = fs.ReadStream\n  if (fs$ReadStream) {\n    ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n    ReadStream.prototype.open = ReadStream$open\n  }\n\n  var fs$WriteStream = fs.WriteStream\n  if (fs$WriteStream) {\n    WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n    WriteStream.prototype.open = WriteStream$open\n  }\n\n  Object.defineProperty(fs, 'ReadStream', {\n    get: function () {\n      return ReadStream\n    },\n    set: function (val) {\n      ReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  Object.defineProperty(fs, 'WriteStream', {\n    get: function () {\n      return WriteStream\n    },\n    set: function (val) {\n      WriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  // legacy names\n  var FileReadStream = ReadStream\n  Object.defineProperty(fs, 'FileReadStream', {\n    get: function () {\n      return FileReadStream\n    },\n    set: function (val) {\n      FileReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  var FileWriteStream = WriteStream\n  Object.defineProperty(fs, 'FileWriteStream', {\n    get: function () {\n      return FileWriteStream\n    },\n    set: function (val) {\n      FileWriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  function ReadStream (path, options) {\n    if (this instanceof ReadStream)\n      return fs$ReadStream.apply(this, arguments), this\n    else\n      return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n  }\n\n  function ReadStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        if (that.autoClose)\n          that.destroy()\n\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n        that.read()\n      }\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (this instanceof WriteStream)\n      return fs$WriteStream.apply(this, arguments), this\n    else\n      return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n  }\n\n  function WriteStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        that.destroy()\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n      }\n    })\n  }\n\n  function createReadStream (path, options) {\n    return new fs.ReadStream(path, options)\n  }\n\n  function createWriteStream (path, options) {\n    return new fs.WriteStream(path, options)\n  }\n\n  var fs$open = fs.open\n  fs.open = open\n  function open (path, flags, mode, cb) {\n    if (typeof mode === 'function')\n      cb = mode, mode = null\n\n    return go$open(path, flags, mode, cb)\n\n    function go$open (path, flags, mode, cb, startTime) {\n      return fs$open(path, flags, mode, function (err, fd) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  return fs\n}\n\nfunction enqueue (elem) {\n  debug('ENQUEUE', elem[0].name, elem[1])\n  fs[gracefulQueue].push(elem)\n  retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n  var now = Date.now()\n  for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n    // entries that are only a length of 2 are from an older version, don't\n    // bother modifying those since they'll be retried anyway.\n    if (fs[gracefulQueue][i].length > 2) {\n      fs[gracefulQueue][i][3] = now // startTime\n      fs[gracefulQueue][i][4] = now // lastTime\n    }\n  }\n  // call retry to make sure we're actively processing the queue\n  retry()\n}\n\nfunction retry () {\n  // clear the timer and remove it to help prevent unintended concurrency\n  clearTimeout(retryTimer)\n  retryTimer = undefined\n\n  if (fs[gracefulQueue].length === 0)\n    return\n\n  var elem = fs[gracefulQueue].shift()\n  var fn = elem[0]\n  var args = elem[1]\n  // these items may be unset if they were added by an older graceful-fs\n  var err = elem[2]\n  var startTime = elem[3]\n  var lastTime = elem[4]\n\n  // if we don't have a startTime we have no way of knowing if we've waited\n  // long enough, so go ahead and retry this item now\n  if (startTime === undefined) {\n    debug('RETRY', fn.name, args)\n    fn.apply(null, args)\n  } else if (Date.now() - startTime >= 60000) {\n    // it's been more than 60 seconds total, bail now\n    debug('TIMEOUT', fn.name, args)\n    var cb = args.pop()\n    if (typeof cb === 'function')\n      cb.call(null, err)\n  } else {\n    // the amount of time between the last attempt and right now\n    var sinceAttempt = Date.now() - lastTime\n    // the amount of time between when we first tried, and when we last tried\n    // rounded up to at least 1\n    var sinceStart = Math.max(lastTime - startTime, 1)\n    // backoff. wait longer than the total time we've been retrying, but only\n    // up to a maximum of 100ms\n    var desiredDelay = Math.min(sinceStart * 1.2, 100)\n    // it's been long enough since the last retry, do it again\n    if (sinceAttempt >= desiredDelay) {\n      debug('RETRY', fn.name, args)\n      fn.apply(null, args.concat([startTime]))\n    } else {\n      // if we can't do this job yet, push it to the end of the queue\n      // and let the next iteration check again\n      fs[gracefulQueue].push(elem)\n    }\n  }\n\n  // schedule our next run if one isn't already scheduled\n  if (retryTimer === undefined) {\n    retryTimer = setTimeout(retry, 0)\n  }\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n\n/**\n * @template T\n * @template Z\n * @callback Iterator\n * @param {T} item item\n * @param {(err?: null | Error, result?: null | Z) => void} callback callback\n * @param {number} i index\n * @returns {void}\n */\n\n/**\n * @template T\n * @template Z\n * @param {T[]} array array\n * @param {Iterator<T, Z>} iterator iterator\n * @param {(err?: null | Error, result?: null | Z, i?: number) => void} callback callback after all items are iterated\n * @returns {void}\n */\nmodule.exports = function forEachBail(array, iterator, callback) {\n\tif (array.length === 0) return callback();\n\n\tlet i = 0;\n\tconst next = () => {\n\t\t/** @type {boolean | undefined} */\n\t\tlet loop;\n\t\titerator(\n\t\t\tarray[i++],\n\t\t\t(err, result) => {\n\t\t\t\tif (err || result !== undefined || i >= array.length) {\n\t\t\t\t\treturn callback(err, result, i);\n\t\t\t\t}\n\t\t\t\tif (loop === false) while (next());\n\t\t\t\tloop = true;\n\t\t\t},\n\t\t\ti,\n\t\t);\n\t\tif (!loop) loop = false;\n\t\treturn loop;\n\t};\n\twhile (next());\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Natsu @xiaoxiaojx\n\n\tThis file contains code ported from strip-json-comments:\n\thttps://github.com/sindresorhus/strip-json-comments\n\tOriginal license: MIT\n\tOriginal author: Sindre Sorhus\n*/\n\n\"use strict\";\n\n/**\n * @typedef {object} StripJsonCommentsOptions\n * @property {boolean=} whitespace Replace comments with whitespace\n * @property {boolean=} trailingCommas Strip trailing commas\n */\n\nconst singleComment = Symbol(\"singleComment\");\nconst multiComment = Symbol(\"multiComment\");\n\n/**\n * Strip without whitespace (returns empty string)\n * @param {string} _string Unused\n * @param {number} _start Unused\n * @param {number} _end Unused\n * @returns {string} Empty string for all input\n */\nconst stripWithoutWhitespace = (_string, _start, _end) => \"\";\n\n/**\n * Replace all characters except ASCII spaces, tabs and line endings with regular spaces to ensure valid JSON output.\n * @param {string} string String to process\n * @param {number} start Start index\n * @param {number} end End index\n * @returns {string} Processed string with comments replaced by whitespace\n */\nconst stripWithWhitespace = (string, start, end) =>\n\tstring.slice(start, end).replace(/[^ \\t\\r\\n]/g, \" \");\n\n/**\n * Check if a quote is escaped\n * @param {string} jsonString JSON string\n * @param {number} quotePosition Position of the quote\n * @returns {boolean} True if the quote at the given position is escaped\n */\nconst isEscaped = (jsonString, quotePosition) => {\n\tlet index = quotePosition - 1;\n\tlet backslashCount = 0;\n\n\twhile (jsonString[index] === \"\\\\\") {\n\t\tindex -= 1;\n\t\tbackslashCount += 1;\n\t}\n\n\treturn Boolean(backslashCount % 2);\n};\n\n/**\n * Strip comments from JSON string\n * @param {string} jsonString JSON string with potential comments\n * @param {StripJsonCommentsOptions} options Options\n * @returns {string} JSON string without comments\n */\nfunction stripJsonComments(\n\tjsonString,\n\t{ whitespace = true, trailingCommas = false } = {},\n) {\n\tif (typeof jsonString !== \"string\") {\n\t\tthrow new TypeError(\n\t\t\t`Expected argument \\`jsonString\\` to be a \\`string\\`, got \\`${typeof jsonString}\\``,\n\t\t);\n\t}\n\n\tconst strip = whitespace ? stripWithWhitespace : stripWithoutWhitespace;\n\n\tlet isInsideString = false;\n\t/** @type {false | typeof singleComment | typeof multiComment} */\n\tlet isInsideComment = false;\n\tlet offset = 0;\n\tlet buffer = \"\";\n\tlet result = \"\";\n\tlet commaIndex = -1;\n\n\tfor (let index = 0; index < jsonString.length; index++) {\n\t\tconst currentCharacter = jsonString[index];\n\t\tconst nextCharacter = jsonString[index + 1];\n\n\t\tif (!isInsideComment && currentCharacter === '\"') {\n\t\t\t// Enter or exit string\n\t\t\tconst escaped = isEscaped(jsonString, index);\n\t\t\tif (!escaped) {\n\t\t\t\tisInsideString = !isInsideString;\n\t\t\t}\n\t\t}\n\n\t\tif (isInsideString) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!isInsideComment && currentCharacter + nextCharacter === \"//\") {\n\t\t\t// Enter single-line comment\n\t\t\tbuffer += jsonString.slice(offset, index);\n\t\t\toffset = index;\n\t\t\tisInsideComment = singleComment;\n\t\t\tindex++;\n\t\t} else if (\n\t\t\tisInsideComment === singleComment &&\n\t\t\tcurrentCharacter + nextCharacter === \"\\r\\n\"\n\t\t) {\n\t\t\t// Exit single-line comment via \\r\\n\n\t\t\tindex++;\n\t\t\tisInsideComment = false;\n\t\t\tbuffer += strip(jsonString, offset, index);\n\t\t\toffset = index;\n\t\t\tcontinue;\n\t\t} else if (isInsideComment === singleComment && currentCharacter === \"\\n\") {\n\t\t\t// Exit single-line comment via \\n\n\t\t\tisInsideComment = false;\n\t\t\tbuffer += strip(jsonString, offset, index);\n\t\t\toffset = index;\n\t\t} else if (!isInsideComment && currentCharacter + nextCharacter === \"/*\") {\n\t\t\t// Enter multiline comment\n\t\t\tbuffer += jsonString.slice(offset, index);\n\t\t\toffset = index;\n\t\t\tisInsideComment = multiComment;\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t} else if (\n\t\t\tisInsideComment === multiComment &&\n\t\t\tcurrentCharacter + nextCharacter === \"*/\"\n\t\t) {\n\t\t\t// Exit multiline comment\n\t\t\tindex++;\n\t\t\tisInsideComment = false;\n\t\t\tbuffer += strip(jsonString, offset, index + 1);\n\t\t\toffset = index + 1;\n\t\t\tcontinue;\n\t\t} else if (trailingCommas && !isInsideComment) {\n\t\t\tif (commaIndex !== -1) {\n\t\t\t\tif (currentCharacter === \"}\" || currentCharacter === \"]\") {\n\t\t\t\t\t// Strip trailing comma\n\t\t\t\t\tbuffer += jsonString.slice(offset, index);\n\t\t\t\t\tresult += strip(buffer, 0, 1) + buffer.slice(1);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\toffset = index;\n\t\t\t\t\tcommaIndex = -1;\n\t\t\t\t} else if (\n\t\t\t\t\tcurrentCharacter !== \" \" &&\n\t\t\t\t\tcurrentCharacter !== \"\\t\" &&\n\t\t\t\t\tcurrentCharacter !== \"\\r\" &&\n\t\t\t\t\tcurrentCharacter !== \"\\n\"\n\t\t\t\t) {\n\t\t\t\t\t// Hit non-whitespace following a comma; comma is not trailing\n\t\t\t\t\tbuffer += jsonString.slice(offset, index);\n\t\t\t\t\toffset = index;\n\t\t\t\t\tcommaIndex = -1;\n\t\t\t\t}\n\t\t\t} else if (currentCharacter === \",\") {\n\t\t\t\t// Flush buffer prior to this point, and save new comma index\n\t\t\t\tresult += buffer + jsonString.slice(offset, index);\n\t\t\t\tbuffer = \"\";\n\t\t\t\toffset = index;\n\t\t\t\tcommaIndex = index;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst remaining =\n\t\tisInsideComment === singleComment\n\t\t\t? strip(jsonString, offset, jsonString.length)\n\t\t\t: jsonString.slice(offset);\n\n\treturn result + buffer + remaining;\n}\n\nmodule.exports = stripJsonComments;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Natsu @xiaoxiaojx\n*/\n\n\"use strict\";\n\nconst memoize = require(\"./memoize\");\nconst stripJsonComments = require(\"./strip-json-comments\");\n\n/** @typedef {import(\"../Resolver\").FileSystem} FileSystem */\n/** @typedef {import(\"../Resolver\").JsonObject} JsonObject */\n\n/**\n * @typedef {object} ReadJsonOptions\n * @property {boolean=} stripComments Whether to strip JSONC comments\n */\n\n/** @type {WeakMap<Buffer | Uint8Array, JsonObject>} */\nconst _stripCommentsCache = new WeakMap();\n\n// Only constructed for non-Buffer input: on Node the `Buffer.isBuffer` branch\n// in `decodeText` handles decoding, so the global `TextDecoder` (Node 11+,\n// always present in browsers/Deno/Bun) is only reached off the Buffer path.\n// `ignoreBOM: true` keeps a leading BOM in the output, matching\n// `Buffer.toString(\"utf8\")` so both decode paths behave identically.\n// eslint-disable-next-line n/no-unsupported-features/node-builtins\nconst getDecoder = memoize(() => new TextDecoder(\"utf-8\", { ignoreBOM: true }));\n\n/**\n * Decode a file's raw contents to text without assuming a Node runtime. A\n * `Buffer` (Node) uses its fast native `toString`; any other binary input\n * (`Uint8Array` from a browser/Deno/Bun file system) goes through\n * `TextDecoder`, and strings are returned as-is.\n * @param {string | Buffer | Uint8Array} data raw file contents\n * @returns {string} decoded text\n */\nconst decodeText = (data) => {\n\tif (typeof data === \"string\") return data;\n\tif (typeof Buffer !== \"undefined\" && Buffer.isBuffer(data)) {\n\t\treturn data.toString(\"utf8\");\n\t}\n\treturn getDecoder().decode(data);\n};\n\n/**\n * Read and parse JSON file (supports JSONC with comments).\n * Callback-based so a synchronous `fileSystem` stays synchronous all the\n * way through — Promise wrapping would defer resolution by a Promise tick\n * and break `resolveSync` when `tsconfig` is used together with\n * `useSyncFileSystemCalls: true`.\n * @param {FileSystem} fileSystem the file system\n * @param {string} jsonFilePath absolute path to JSON file\n * @param {ReadJsonOptions} options Options\n * @param {(err: NodeJS.ErrnoException | Error | null, content?: JsonObject) => void} callback callback\n * @returns {void}\n */\nfunction readJson(fileSystem, jsonFilePath, options, callback) {\n\tconst { stripComments = false } = options;\n\tconst { readJson: fsReadJson } = fileSystem;\n\tif (fsReadJson && !stripComments) {\n\t\tfsReadJson(jsonFilePath, (err, content) => {\n\t\t\tif (err) return callback(err);\n\t\t\tcallback(null, /** @type {JsonObject} */ (content));\n\t\t});\n\t\treturn;\n\t}\n\n\tfileSystem.readFile(jsonFilePath, (err, data) => {\n\t\tif (err) return callback(err);\n\t\tconst buf = /** @type {Buffer | Uint8Array | string} */ (data);\n\n\t\t// The strip-comments cache is keyed by the file-contents object; a file\n\t\t// system may hand back a plain string, which cannot be a WeakMap key, so\n\t\t// only cache when the contents are an object.\n\t\tconst cacheable = stripComments && typeof buf === \"object\";\n\n\t\tif (cacheable) {\n\t\t\tconst cached = _stripCommentsCache.get(buf);\n\t\t\tif (cached !== undefined) return callback(null, cached);\n\t\t}\n\n\t\tlet result;\n\t\ttry {\n\t\t\tconst jsonText = decodeText(buf);\n\t\t\tconst jsonWithoutComments = stripComments\n\t\t\t\t? stripJsonComments(jsonText, {\n\t\t\t\t\t\ttrailingCommas: true,\n\t\t\t\t\t\twhitespace: true,\n\t\t\t\t\t})\n\t\t\t\t: jsonText;\n\t\t\tresult = JSON.parse(jsonWithoutComments);\n\t\t} catch (parseErr) {\n\t\t\treturn callback(/** @type {Error} */ (parseErr));\n\t\t}\n\n\t\tif (cacheable) {\n\t\t\t_stripCommentsCache.set(buf, result);\n\t\t}\n\n\t\tcallback(null, result);\n\t});\n}\n\nmodule.exports.decodeText = decodeText;\nmodule.exports.readJson = readJson;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst forEachBail = require(\"./forEachBail\");\nconst { decodeText } = require(\"./util/fs\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").JsonObject} JsonObject */\n/** @typedef {import(\"./Resolver\").JsonValue} JsonValue */\n/** @typedef {import(\"./Resolver\").ResolveContext} ResolveContext */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n\n/**\n * @typedef {object} DescriptionFileInfo\n * @property {JsonObject=} content content\n * @property {string} path path\n * @property {string} directory directory\n */\n\n/**\n * @callback ErrorFirstCallback\n * @param {Error | null=} error\n * @param {DescriptionFileInfo=} result\n */\n\n/**\n * @typedef {object} Result\n * @property {string} path path to description file\n * @property {string} directory directory of description file\n * @property {JsonObject} content content of description file\n */\n\nconst CHAR_SLASH = 47;\nconst CHAR_BACKSLASH = 92;\n\n/**\n * Walk up one directory. Called once per package-root candidate and once per\n * `described-resolve` (to find the enclosing description file), so it's on\n * the resolver's hot path.\n *\n * Previous implementation called `lastIndexOf(\"/\")` and `lastIndexOf(\"\\\\\")`\n * separately and then picked the larger. For any non-trivial directory\n * string on POSIX, `lastIndexOf(\"\\\\\")` scans the full string just to return\n * -1. A single reverse char-code scan does the same work in one pass.\n *\n * Any single-character directory is treated as a root — `directory.length\n * <= 1` collapses the `\"/\"`, `\"\\\\\"` and `\"\"` branches into one compare.\n * Without the `\"\\\\\"` case, `cdUp(\"\\\\\")` (reached from a UNC root or a DOS\n * device path like `\\\\?\\…`) would return itself via `slice(0, i || 1)`\n * and trap `loadDescriptionFile` in an infinite loop. Once single-char\n * roots are filtered up front, the reverse scan always produces a\n * strictly shorter string.\n * @param {string} directory directory\n * @returns {string | null} parent directory or null\n */\nfunction cdUp(directory) {\n\tif (directory.length <= 1) return null;\n\tfor (let i = directory.length - 1; i >= 0; i--) {\n\t\tconst code = directory.charCodeAt(i);\n\t\tif (code === CHAR_SLASH || code === CHAR_BACKSLASH) {\n\t\t\treturn directory.slice(0, i || 1);\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * @param {Resolver} resolver resolver\n * @param {string} directory directory\n * @param {string[]} filenames filenames\n * @param {DescriptionFileInfo | undefined} oldInfo oldInfo\n * @param {ResolveContext} resolveContext resolveContext\n * @param {ErrorFirstCallback} callback callback\n */\nfunction loadDescriptionFile(\n\tresolver,\n\tdirectory,\n\tfilenames,\n\toldInfo,\n\tresolveContext,\n\tcallback,\n) {\n\t// Hoist the per-filename iterator and the per-level done callback out\n\t// of `findDescriptionFile`. They both close over `directory`, which we\n\t// reassign as we walk up the tree, so the same closures keep working\n\t// across every level — the previous implementation re-allocated both\n\t// arrows on every recursion step, which adds up on deep walks (multiple\n\t// `DescriptionFilePlugin` taps per resolve, each climbing several\n\t// directories looking for `package.json`).\n\t/**\n\t * @param {string} filename filename\n\t * @param {(err?: null | Error, result?: null | Result) => void} iterCallback callback\n\t * @returns {void}\n\t */\n\tconst iterFilename = (filename, iterCallback) => {\n\t\tconst descriptionFilePath = resolver.join(directory, filename);\n\n\t\t/**\n\t\t * @param {(null | Error)=} err error\n\t\t * @param {JsonObject=} resolvedContent content\n\t\t * @returns {void}\n\t\t */\n\t\tfunction onJson(err, resolvedContent) {\n\t\t\tif (err) {\n\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t`${descriptionFilePath} (directory description file): ${err}`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\terr.message = `${descriptionFilePath} (directory description file): ${err}`;\n\t\t\t\t}\n\t\t\t\treturn iterCallback(err);\n\t\t\t}\n\t\t\titerCallback(null, {\n\t\t\t\tcontent: /** @type {JsonObject} */ (resolvedContent),\n\t\t\t\tdirectory,\n\t\t\t\tpath: descriptionFilePath,\n\t\t\t});\n\t\t}\n\n\t\tif (resolver.fileSystem.readJson) {\n\t\t\tresolver.fileSystem.readJson(descriptionFilePath, (err, content) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof (/** @type {NodeJS.ErrnoException} */ (err).code) !==\n\t\t\t\t\t\t\"undefined\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (resolveContext.missingDependencies) {\n\t\t\t\t\t\t\tresolveContext.missingDependencies.add(descriptionFilePath);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn iterCallback();\n\t\t\t\t\t}\n\t\t\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\t\t\tresolveContext.fileDependencies.add(descriptionFilePath);\n\t\t\t\t\t}\n\t\t\t\t\treturn onJson(err);\n\t\t\t\t}\n\t\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\t\tresolveContext.fileDependencies.add(descriptionFilePath);\n\t\t\t\t}\n\t\t\t\tonJson(null, content);\n\t\t\t});\n\t\t} else {\n\t\t\tresolver.fileSystem.readFile(descriptionFilePath, (err, content) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tif (resolveContext.missingDependencies) {\n\t\t\t\t\t\tresolveContext.missingDependencies.add(descriptionFilePath);\n\t\t\t\t\t}\n\t\t\t\t\treturn iterCallback();\n\t\t\t\t}\n\t\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\t\tresolveContext.fileDependencies.add(descriptionFilePath);\n\t\t\t\t}\n\n\t\t\t\t/** @type {JsonObject | undefined} */\n\t\t\t\tlet json;\n\n\t\t\t\tif (content) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tjson = JSON.parse(decodeText(content));\n\t\t\t\t\t} catch (/** @type {unknown} */ err_) {\n\t\t\t\t\t\treturn onJson(/** @type {Error} */ (err_));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn onJson(new Error(\"No content in file\"));\n\t\t\t\t}\n\n\t\t\t\tonJson(null, json);\n\t\t\t});\n\t\t}\n\t};\n\t// Forward-declared so the helpers below can reference each other\n\t// without falling foul of `no-use-before-define`.\n\t/** @type {() => void} */\n\tlet findDescriptionFile;\n\t/**\n\t * @param {(null | Error)=} err error\n\t * @param {(null | Result)=} result result\n\t * @returns {void}\n\t */\n\tconst onLevelDone = (err, result) => {\n\t\tif (err) return callback(err);\n\t\tif (result) return callback(null, result);\n\t\tconst dir = cdUp(directory);\n\t\tif (!dir) {\n\t\t\treturn callback();\n\t\t}\n\t\tdirectory = dir;\n\t\treturn findDescriptionFile();\n\t};\n\tfindDescriptionFile = () => {\n\t\tif (oldInfo && oldInfo.directory === directory) {\n\t\t\t// We already have info for this directory and can reuse it\n\t\t\treturn callback(null, oldInfo);\n\t\t}\n\t\tforEachBail(filenames, iterFilename, onLevelDone);\n\t};\n\tfindDescriptionFile();\n}\n\n/**\n * @param {JsonObject} content content\n * @param {string | string[]} field field\n * @returns {JsonValue | undefined} field data\n */\nfunction getField(content, field) {\n\tif (!content) return undefined;\n\tif (Array.isArray(field)) {\n\t\t/** @type {JsonValue} */\n\t\tlet current = content;\n\t\tfor (let j = 0; j < field.length; j++) {\n\t\t\tif (current === null || typeof current !== \"object\") {\n\t\t\t\tcurrent = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent = /** @type {JsonValue} */ (\n\t\t\t\t/** @type {JsonObject} */\n\t\t\t\t(current)[field[j]]\n\t\t\t);\n\t\t}\n\t\treturn current;\n\t}\n\treturn content[field];\n}\n\nmodule.exports.cdUp = cdUp;\nmodule.exports.getField = getField;\nmodule.exports.loadDescriptionFile = loadDescriptionFile;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst path = require(\"path\");\nconst { fileURLToPath } = require(\"url\");\n\nconst CHAR_HASH = \"#\".charCodeAt(0);\nconst CHAR_SLASH = \"/\".charCodeAt(0);\nconst CHAR_BACKSLASH = \"\\\\\".charCodeAt(0);\nconst CHAR_A = \"A\".charCodeAt(0);\nconst CHAR_Z = \"Z\".charCodeAt(0);\nconst CHAR_LOWER_A = \"a\".charCodeAt(0);\nconst CHAR_LOWER_Z = \"z\".charCodeAt(0);\nconst CHAR_DOT = \".\".charCodeAt(0);\nconst CHAR_COLON = \":\".charCodeAt(0);\nconst CHAR_QUESTION = \"?\".charCodeAt(0);\n\nconst posixNormalize = path.posix.normalize;\nconst winNormalize = path.win32.normalize;\n\n/**\n * @enum {number}\n */\nconst PathType = Object.freeze({\n\tEmpty: 0,\n\tNormal: 1,\n\tRelative: 2,\n\tAbsoluteWin: 3,\n\tAbsolutePosix: 4,\n\tInternal: 5,\n});\n\nconst deprecatedInvalidSegmentRegEx =\n\t/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\\\|\\/|$)/i;\n\nconst invalidSegmentRegEx =\n\t/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))?(\\\\|\\/|$)/i;\n\n/**\n * @param {string} maybePath a path known to start with `\\\\`\n * @returns {PathType} AbsoluteWin for `\\\\?\\…` / `\\\\.\\…`, otherwise Normal\n */\nconst getDosDeviceType = (maybePath) => {\n\tif (maybePath.length >= 4 && maybePath.charCodeAt(3) === CHAR_BACKSLASH) {\n\t\tconst c2 = maybePath.charCodeAt(2);\n\t\tif (c2 === CHAR_QUESTION || c2 === CHAR_DOT) {\n\t\t\treturn PathType.AbsoluteWin;\n\t\t}\n\t}\n\treturn PathType.Normal;\n};\n\n/**\n * @param {string} maybePath a path\n * @returns {PathType} type of path\n */\nconst getType = (maybePath) => {\n\tswitch (maybePath.length) {\n\t\tcase 0:\n\t\t\treturn PathType.Empty;\n\t\tcase 1: {\n\t\t\tconst c0 = maybePath.charCodeAt(0);\n\t\t\tswitch (c0) {\n\t\t\t\tcase CHAR_DOT:\n\t\t\t\t\treturn PathType.Relative;\n\t\t\t\tcase CHAR_SLASH:\n\t\t\t\t\treturn PathType.AbsolutePosix;\n\t\t\t\tcase CHAR_HASH:\n\t\t\t\t\treturn PathType.Internal;\n\t\t\t}\n\t\t\treturn PathType.Normal;\n\t\t}\n\t\tcase 2: {\n\t\t\tconst c0 = maybePath.charCodeAt(0);\n\t\t\tswitch (c0) {\n\t\t\t\tcase CHAR_DOT: {\n\t\t\t\t\tconst c1 = maybePath.charCodeAt(1);\n\t\t\t\t\tswitch (c1) {\n\t\t\t\t\t\tcase CHAR_DOT:\n\t\t\t\t\t\tcase CHAR_SLASH:\n\t\t\t\t\t\t\treturn PathType.Relative;\n\t\t\t\t\t}\n\t\t\t\t\treturn PathType.Normal;\n\t\t\t\t}\n\t\t\t\tcase CHAR_SLASH:\n\t\t\t\t\treturn PathType.AbsolutePosix;\n\t\t\t\tcase CHAR_HASH:\n\t\t\t\t\treturn PathType.Internal;\n\t\t\t}\n\t\t\tconst c1 = maybePath.charCodeAt(1);\n\t\t\tif (\n\t\t\t\tc1 === CHAR_COLON &&\n\t\t\t\t((c0 >= CHAR_A && c0 <= CHAR_Z) ||\n\t\t\t\t\t(c0 >= CHAR_LOWER_A && c0 <= CHAR_LOWER_Z))\n\t\t\t) {\n\t\t\t\treturn PathType.AbsoluteWin;\n\t\t\t}\n\t\t\treturn PathType.Normal;\n\t\t}\n\t}\n\tconst c0 = maybePath.charCodeAt(0);\n\tswitch (c0) {\n\t\tcase CHAR_DOT: {\n\t\t\tconst c1 = maybePath.charCodeAt(1);\n\t\t\tswitch (c1) {\n\t\t\t\tcase CHAR_SLASH:\n\t\t\t\t\treturn PathType.Relative;\n\t\t\t\tcase CHAR_DOT: {\n\t\t\t\t\tconst c2 = maybePath.charCodeAt(2);\n\t\t\t\t\tif (c2 === CHAR_SLASH) return PathType.Relative;\n\t\t\t\t\treturn PathType.Normal;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn PathType.Normal;\n\t\t}\n\t\tcase CHAR_SLASH:\n\t\t\treturn PathType.AbsolutePosix;\n\t\tcase CHAR_HASH:\n\t\t\treturn PathType.Internal;\n\t}\n\tconst c1 = maybePath.charCodeAt(1);\n\tif (c1 === CHAR_COLON) {\n\t\tconst c2 = maybePath.charCodeAt(2);\n\t\tif (\n\t\t\t(c2 === CHAR_BACKSLASH || c2 === CHAR_SLASH) &&\n\t\t\t((c0 >= CHAR_A && c0 <= CHAR_Z) ||\n\t\t\t\t(c0 >= CHAR_LOWER_A && c0 <= CHAR_LOWER_Z))\n\t\t) {\n\t\t\treturn PathType.AbsoluteWin;\n\t\t}\n\t}\n\t// DOS device paths (`\\\\?\\…`, `\\\\.\\…`) are handled in a cold helper so\n\t// this function stays small — inlining the full check here regressed\n\t// `description-files-multi` under `--no-opt` interpretation. Here we\n\t// only pay the two-byte gate for non-DOS inputs.\n\tif (c0 === CHAR_BACKSLASH && c1 === CHAR_BACKSLASH) {\n\t\treturn getDosDeviceType(maybePath);\n\t}\n\treturn PathType.Normal;\n};\n\n/**\n * @param {string} maybePath a path\n * @returns {string} the normalized path\n */\nconst normalize = (maybePath) => {\n\tswitch (getType(maybePath)) {\n\t\tcase PathType.Empty:\n\t\t\treturn maybePath;\n\t\tcase PathType.AbsoluteWin:\n\t\t\treturn winNormalize(maybePath);\n\t\tcase PathType.Relative: {\n\t\t\tconst r = posixNormalize(maybePath);\n\t\t\treturn getType(r) === PathType.Relative ? r : `./${r}`;\n\t\t}\n\t}\n\treturn posixNormalize(maybePath);\n};\n\n/**\n * @param {string} rootPath the root path\n * @param {string | undefined} request the request path\n * @returns {string} the joined path\n */\nconst join = (rootPath, request) => {\n\tif (!request) return normalize(rootPath);\n\tconst requestType = getType(request);\n\tswitch (requestType) {\n\t\tcase PathType.AbsolutePosix:\n\t\t\treturn posixNormalize(request);\n\t\tcase PathType.AbsoluteWin:\n\t\t\treturn winNormalize(request);\n\t}\n\tswitch (getType(rootPath)) {\n\t\tcase PathType.Normal:\n\t\tcase PathType.Relative:\n\t\tcase PathType.AbsolutePosix:\n\t\t\treturn posixNormalize(`${rootPath}/${request}`);\n\t\tcase PathType.AbsoluteWin:\n\t\t\treturn winNormalize(`${rootPath}\\\\${request}`);\n\t}\n\tswitch (requestType) {\n\t\tcase PathType.Empty:\n\t\t\treturn rootPath;\n\t\tcase PathType.Relative: {\n\t\t\tconst r = posixNormalize(rootPath);\n\t\t\treturn getType(r) === PathType.Relative ? r : `./${r}`;\n\t\t}\n\t}\n\treturn posixNormalize(rootPath);\n};\n\n/**\n * @param {string} maybePath a path\n * @returns {string} the directory name\n */\nconst dirname = (maybePath) => {\n\tswitch (getType(maybePath)) {\n\t\tcase PathType.AbsoluteWin:\n\t\t\treturn path.win32.dirname(maybePath);\n\t}\n\treturn path.posix.dirname(maybePath);\n};\n\n/** @typedef {{ fn: (rootPath: string, request: string) => string, cache: Map<string, Map<string, string | undefined>> }} CachedJoin */\n\n/**\n * @returns {CachedJoin} cached join\n */\nconst createCachedJoin = () => {\n\t/** @type {CachedJoin[\"cache\"]} */\n\tconst cache = new Map();\n\t/** @type {CachedJoin[\"fn\"]} */\n\tconst fn = (rootPath, request) => {\n\t\t/** @type {string | undefined} */\n\t\tlet cacheEntry;\n\t\tlet inner = cache.get(rootPath);\n\t\tif (inner === undefined) {\n\t\t\tcache.set(rootPath, (inner = new Map()));\n\t\t} else {\n\t\t\tcacheEntry = inner.get(request);\n\t\t\tif (cacheEntry !== undefined) return cacheEntry;\n\t\t}\n\t\tcacheEntry = join(rootPath, request);\n\t\tinner.set(request, cacheEntry);\n\t\treturn cacheEntry;\n\t};\n\treturn { fn, cache };\n};\n\n/** @typedef {{ fn: (maybePath: string) => string, cache: Map<string, string> }} CachedDirname */\n\n/**\n * @returns {CachedDirname} cached dirname\n */\nconst createCachedDirname = () => {\n\t/** @type {CachedDirname[\"cache\"]} */\n\tconst cache = new Map();\n\t/** @type {CachedDirname[\"fn\"]} */\n\tconst fn = (maybePath) => {\n\t\tconst cacheEntry = cache.get(maybePath);\n\t\tif (cacheEntry !== undefined) return cacheEntry;\n\t\tconst result = dirname(maybePath);\n\t\tcache.set(maybePath, result);\n\t\treturn result;\n\t};\n\treturn { fn, cache };\n};\n\n/** @typedef {{ fn: (maybePath: string, suffix?: string) => string, cache: Map<string, Map<string | undefined, string | undefined>> }} CachedBasename */\n\n/**\n * @returns {CachedBasename} cached basename\n */\nconst createCachedBasename = () => {\n\t/** @type {CachedBasename[\"cache\"]} */\n\tconst cache = new Map();\n\t/** @type {CachedBasename[\"fn\"]} */\n\tconst fn = (maybePath, suffix) => {\n\t\t/** @type {string | undefined} */\n\t\tlet cacheEntry;\n\t\tlet inner = cache.get(maybePath);\n\t\tif (inner === undefined) {\n\t\t\tcache.set(maybePath, (inner = new Map()));\n\t\t} else {\n\t\t\tcacheEntry = inner.get(suffix);\n\t\t\tif (cacheEntry !== undefined) return cacheEntry;\n\t\t}\n\t\tcacheEntry = path.basename(maybePath, suffix);\n\t\tinner.set(suffix, cacheEntry);\n\t\treturn cacheEntry;\n\t};\n\treturn { fn, cache };\n};\n\n/**\n * Whether `request` is a relative request — i.e. matches `^\\.\\.?(?:\\/|$)`.\n *\n * This is called on every `doResolve` via `UnsafeCachePlugin` and\n * `getInnerRequest`, so the char-code form is meaningfully faster than the\n * equivalent regex test: no regex state machine, no string object churn.\n * @param {string} request request string\n * @returns {boolean} true if request is relative\n */\nconst isRelativeRequest = (request) => {\n\tconst len = request.length;\n\tif (len === 0 || request.charCodeAt(0) !== CHAR_DOT) return false;\n\tif (len === 1) return true; // \".\"\n\tconst c1 = request.charCodeAt(1);\n\tif (c1 === CHAR_SLASH) return true; // \"./...\"\n\tif (c1 !== CHAR_DOT) return false; // \".x...\"\n\tif (len === 2) return true; // \"..\"\n\treturn request.charCodeAt(2) === CHAR_SLASH; // \"../...\"\n};\n\n/**\n * Check if childPath is a subdirectory of parentPath.\n *\n * Called from `TsconfigPathsPlugin._selectPathsDataForContext` inside a loop\n * over every tsconfig-paths context on every resolve, so it's worth keeping\n * cheap. Compared to the previous `startsWith(normalize(parent + \"/\"))`\n * version, this: checks the last char with `charCodeAt` instead of two\n * `endsWith` calls; and skips `normalize()` entirely in the common case\n * (parent has no trailing separator), since all we really need is the same\n * anchoring effect — a cheap `startsWith` plus a separator char check on the\n * byte immediately after `parentPath.length`.\n * @param {string} parentPath parent directory path\n * @param {string} childPath child path to check\n * @returns {boolean} true if childPath is under parentPath\n */\nconst isSubPath = (parentPath, childPath) => {\n\tconst parentLen = parentPath.length;\n\tif (parentLen === 0) {\n\t\t// Match the old `normalize(\"\" + \"/\") === \"/\"` fallback: an empty\n\t\t// parent only \"contains\" a child that starts with a forward slash.\n\t\treturn childPath.length > 0 && childPath.charCodeAt(0) === CHAR_SLASH;\n\t}\n\tconst lastChar = parentPath.charCodeAt(parentLen - 1);\n\tif (lastChar === CHAR_SLASH || lastChar === CHAR_BACKSLASH) {\n\t\t// Parent already ends with a separator — a plain prefix test is enough.\n\t\treturn childPath.startsWith(parentPath);\n\t}\n\tif (childPath.length <= parentLen) return false;\n\tif (!childPath.startsWith(parentPath)) return false;\n\t// Must be followed by a separator so \"/app\" doesn't match \"/app-other\".\n\tconst nextChar = childPath.charCodeAt(parentLen);\n\treturn nextChar === CHAR_SLASH || nextChar === CHAR_BACKSLASH;\n};\n\n/**\n * Convert a `file:` `URL` instance to a filesystem path; any other input\n * (including plain strings) is returned unchanged. Mirrors Node's `fs`, which\n * treats strings as literal paths and only `URL` objects as URLs (see\n * nodejs/node#17658) — so a directory literally named `file:` is never\n * mistaken for a URL.\n * @param {string | URL} maybeURL a path string or a `file:` `URL` instance\n * @returns {string} a filesystem path\n */\nconst toPath = (maybeURL) =>\n\tmaybeURL instanceof URL ? fileURLToPath(maybeURL) : maybeURL;\n\nmodule.exports.PathType = PathType;\nmodule.exports.createCachedBasename = createCachedBasename;\nmodule.exports.createCachedDirname = createCachedDirname;\nmodule.exports.createCachedJoin = createCachedJoin;\nmodule.exports.deprecatedInvalidSegmentRegEx = deprecatedInvalidSegmentRegEx;\nmodule.exports.dirname = dirname;\nmodule.exports.getType = getType;\nmodule.exports.invalidSegmentRegEx = invalidSegmentRegEx;\nmodule.exports.isRelativeRequest = isRelativeRequest;\nmodule.exports.isSubPath = isSubPath;\nmodule.exports.join = join;\nmodule.exports.normalize = normalize;\nmodule.exports.toPath = toPath;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst { isRelativeRequest } = require(\"./util/path\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n\n/**\n * @param {Resolver} resolver resolver\n * @param {ResolveRequest} request string\n * @returns {string} inner request\n */\nmodule.exports = function getInnerRequest(resolver, request) {\n\tif (\n\t\ttypeof request.__innerRequest === \"string\" &&\n\t\trequest.__innerRequest_request === request.request &&\n\t\trequest.__innerRequest_relativePath === request.relativePath\n\t) {\n\t\treturn request.__innerRequest;\n\t}\n\t/** @type {string | undefined} */\n\tlet innerRequest;\n\tif (request.request) {\n\t\tinnerRequest = request.request;\n\t\tif (request.relativePath && isRelativeRequest(innerRequest)) {\n\t\t\tinnerRequest = resolver.join(request.relativePath, innerRequest);\n\t\t}\n\t} else {\n\t\tinnerRequest = request.relativePath;\n\t}\n\t// eslint-disable-next-line camelcase\n\trequest.__innerRequest_request = request.request;\n\t// eslint-disable-next-line camelcase\n\trequest.__innerRequest_relativePath = request.relativePath;\n\treturn (request.__innerRequest = /** @type {string} */ (innerRequest));\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst DescriptionFileUtils = require(\"./DescriptionFileUtils\");\nconst getInnerRequest = require(\"./getInnerRequest\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").JsonPrimitive} JsonPrimitive */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\n// Sentinel stored in `_fieldDataCache` when a description file does not\n// contain a usable alias field object. Lets us distinguish \"not cached yet\"\n// from \"no valid field\" without calling back into `getField`.\nconst NO_FIELD_OBJECT = Symbol(\"NoFieldObject\");\n\nmodule.exports = class AliasFieldPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | string[]} field field\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, field, target) {\n\t\tthis.source = source;\n\t\tthis.field = field;\n\t\tthis.target = target;\n\t\t// `this.field` is fixed for the plugin's lifetime, so caching\n\t\t// per description-file content is safe. The cached value is either\n\t\t// the resolved alias-map object or the `NO_FIELD_OBJECT` sentinel\n\t\t// meaning \"description file has no usable alias field\".\n\t\t/** @type {WeakMap<import(\"./Resolver\").JsonObject, { [k: string]: JsonPrimitive } | typeof NO_FIELD_OBJECT>} */\n\t\tthis._fieldDataCache = new WeakMap();\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"AliasFieldPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tif (!request.descriptionFileData) return callback();\n\t\t\t\tconst innerRequest = getInnerRequest(resolver, request);\n\t\t\t\tif (!innerRequest) return callback();\n\t\t\t\tconst { descriptionFileData } = request;\n\t\t\t\tlet fieldData = this._fieldDataCache.get(descriptionFileData);\n\t\t\t\tif (fieldData === undefined) {\n\t\t\t\t\tconst raw = DescriptionFileUtils.getField(\n\t\t\t\t\t\tdescriptionFileData,\n\t\t\t\t\t\tthis.field,\n\t\t\t\t\t);\n\t\t\t\t\tfieldData =\n\t\t\t\t\t\traw === null || typeof raw !== \"object\"\n\t\t\t\t\t\t\t? NO_FIELD_OBJECT\n\t\t\t\t\t\t\t: /** @type {{ [k: string]: JsonPrimitive }} */ (raw);\n\t\t\t\t\tthis._fieldDataCache.set(descriptionFileData, fieldData);\n\t\t\t\t}\n\t\t\t\tif (fieldData === NO_FIELD_OBJECT) {\n\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t`Field '${this.field}' doesn't contain a valid alias configuration`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\t\t\t\t/** @type {JsonPrimitive | undefined} */\n\t\t\t\tconst data = Object.prototype.hasOwnProperty.call(\n\t\t\t\t\tfieldData,\n\t\t\t\t\tinnerRequest,\n\t\t\t\t)\n\t\t\t\t\t? /** @type {{ [Key in string]: JsonPrimitive }} */ (fieldData)[\n\t\t\t\t\t\t\tinnerRequest\n\t\t\t\t\t\t]\n\t\t\t\t\t: innerRequest.startsWith(\"./\")\n\t\t\t\t\t\t? /** @type {{ [Key in string]: JsonPrimitive }} */ (fieldData)[\n\t\t\t\t\t\t\t\tinnerRequest.slice(2)\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: undefined;\n\t\t\t\tif (data === innerRequest) return callback();\n\t\t\t\tif (data === undefined) return callback();\n\t\t\t\tif (data === false) {\n\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\tconst ignoreObj = {\n\t\t\t\t\t\t...request,\n\t\t\t\t\t\tpath: false,\n\t\t\t\t\t};\n\t\t\t\t\tif (typeof resolveContext.yield === \"function\") {\n\t\t\t\t\t\tresolveContext.yield(ignoreObj);\n\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t}\n\t\t\t\t\treturn callback(null, ignoreObj);\n\t\t\t\t}\n\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\tconst obj = {\n\t\t\t\t\t...request,\n\t\t\t\t\tpath: /** @type {string} */ (request.descriptionFileRoot),\n\t\t\t\t\trequest: /** @type {string} */ (data),\n\t\t\t\t\tfullySpecified: false,\n\t\t\t\t};\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\tobj,\n\t\t\t\t\t`aliased from description file ${\n\t\t\t\t\t\trequest.descriptionFilePath\n\t\t\t\t\t} with mapping '${innerRequest}' to '${/** @type {string} */ data}'`,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\tif (err) return callback(err);\n\n\t\t\t\t\t\t// Don't allow other aliasing or raw request\n\t\t\t\t\t\tif (result === undefined) return callback(null, null);\n\t\t\t\t\t\tcallback(null, result);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst forEachBail = require(\"./forEachBail\");\nconst { PathType, getType } = require(\"./util/path\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveContext} ResolveContext */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {import(\"./Resolver\").ResolveCallback} ResolveCallback */\n/** @typedef {string | string[] | false} Alias */\n/** @typedef {{ alias: Alias, name: string, onlyModule?: boolean }} AliasOption */\n\n/**\n * @typedef {object} CompiledAliasOption\n * @property {string} name original alias name\n * @property {string} nameWithSlash name + \"/\" — precomputed to avoid per-resolve concat\n * @property {Alias} alias alias target(s)\n * @property {boolean} onlyModule normalized onlyModule flag\n * @property {string | null} absolutePath absolute form of `name` (with slash ending), null when not absolute\n * @property {string | null} wildcardPrefix substring before the single \"*\" in `name`, null when no wildcard\n * @property {string | null} wildcardSuffix substring after the single \"*\" in `name`, null when no wildcard\n * @property {number} firstCharCode first character code of `name` — used as a cheap screen on the hot path. `-1` indicates \"matches any first char\" (empty wildcard prefix).\n * @property {boolean} arrayAlias true when `alias` is an array — precomputed so the hot path skips `Array.isArray`\n */\n\n/**\n * Bucketed view of compiled options used by `aliasResolveHandler` to avoid\n * walking the full option list on every resolve. The `all` array preserves\n * the legacy linear order (declaration order) for the fallback path. The\n * `byFirstChar` map buckets options by the first char code of their `name`\n * — each bucket preserves declaration order among its members. The\n * `hasAnyFirstChar` flag is true when at least one option matches any\n * first char (`firstCharCode === -1`), in which case resolve-time scans\n * fall back to `all` to keep declaration-order semantics across buckets.\n * The `useBuckets` flag is true only when bucketing would actually help —\n * i.e. there are at least 2 distinct first chars AND no empty-prefix\n * wildcard. When false, the resolve hot path skips the `Map.get` and\n * iterates `all` directly with the per-option first-char-code screen\n * (matching the pre-bucketing behavior). This avoids paying for `Map.get`\n * on degenerate single-bucket lists like a long chain of aliases that\n * all share one first char — the bucket lookup adds overhead without\n * narrowing the candidate set, which showed up as a transient-memory\n * regression on `pathological-deep-stack`.\n * @typedef {object} CompiledAliasOptions\n * @property {CompiledAliasOption[]} all declaration-ordered list\n * @property {Map<number, CompiledAliasOption[]>} byFirstChar bucketed by first char code\n * @property {boolean} hasAnyFirstChar true when an empty-prefix wildcard is present\n * @property {boolean} useBuckets true when the bucket fast-path should be used at resolve time\n */\n\nconst EMPTY_LIST = /** @type {CompiledAliasOption[]} */ ([]);\nconst EMPTY_COMPILED_OPTIONS = /** @type {CompiledAliasOptions} */ ({\n\tall: EMPTY_LIST,\n\tbyFirstChar: new Map(),\n\thasAnyFirstChar: false,\n\tuseBuckets: false,\n});\n\n/**\n * Precompute per-option strings used on every resolve so the hot path in\n * `aliasResolveHandler` does no string concatenation / split work per entry.\n * Called once per plugin apply — the returned structure is stable for the\n * lifetime of the resolver.\n *\n * Beyond the per-option precompute step, this also partitions the list into\n * a `byFirstChar` map so that, when no \"empty-prefix\" wildcards are\n * present, the resolve-time scan only walks options whose `name` starts\n * with the same char as the current request. For large alias lists (300+\n * entries) this turns an O(N) screen into O(K) where K is the bucket size\n * for the request's first char.\n * @param {Resolver} resolver resolver\n * @param {AliasOption[]} options options\n * @returns {CompiledAliasOptions} compiled options\n */\nfunction compileAliasOptions(resolver, options) {\n\tif (options.length === 0) return EMPTY_COMPILED_OPTIONS;\n\tconst all = /** @type {CompiledAliasOption[]} */ (\n\t\tArray.from({ length: options.length })\n\t);\n\t/** @type {Map<number, CompiledAliasOption[]>} */\n\tconst byFirstChar = new Map();\n\tlet hasAnyFirstChar = false;\n\tfor (let i = 0; i < options.length; i++) {\n\t\tconst item = options[i];\n\t\tconst { name } = item;\n\t\tlet absolutePath = null;\n\t\tconst type = getType(name);\n\t\tif (type === PathType.AbsolutePosix || type === PathType.AbsoluteWin) {\n\t\t\tabsolutePath = resolver.join(name, \"_\").slice(0, -1);\n\t\t}\n\t\tconst firstStar = name.indexOf(\"*\");\n\t\tlet wildcardPrefix = null;\n\t\tlet wildcardSuffix = null;\n\t\tif (firstStar !== -1 && !name.includes(\"*\", firstStar + 1)) {\n\t\t\twildcardPrefix = name.slice(0, firstStar);\n\t\t\twildcardSuffix = name.slice(firstStar + 1);\n\t\t}\n\t\t// firstCharCode: used by `aliasResolveHandler` to quickly skip aliases\n\t\t// whose name can't possibly match the current innerRequest. For a plain\n\t\t// alias (no wildcard) the first char of the name is also the first char\n\t\t// of `nameWithSlash` and of `absolutePath` (since the latter is derived\n\t\t// from name via `resolver.join(name, \"_\")`, which only appends). For a\n\t\t// wildcard with a non-empty prefix, the first char of that prefix is\n\t\t// also the first char of name. Only the `name === \"*\"` case (empty\n\t\t// wildcard prefix) can match arbitrary first chars — encode that as -1.\n\t\tlet firstCharCode;\n\t\tif (wildcardPrefix !== null && wildcardPrefix.length === 0) {\n\t\t\tfirstCharCode = -1;\n\t\t} else {\n\t\t\tfirstCharCode = name.length > 0 ? name.charCodeAt(0) : -1;\n\t\t}\n\t\tconst compiled = {\n\t\t\tname,\n\t\t\tnameWithSlash: `${name}/`,\n\t\t\talias: item.alias,\n\t\t\tonlyModule: Boolean(item.onlyModule),\n\t\t\tabsolutePath,\n\t\t\twildcardPrefix,\n\t\t\twildcardSuffix,\n\t\t\tfirstCharCode,\n\t\t\tarrayAlias: Array.isArray(item.alias),\n\t\t};\n\t\tall[i] = compiled;\n\t\tif (firstCharCode === -1) {\n\t\t\thasAnyFirstChar = true;\n\t\t} else {\n\t\t\tlet bucket = byFirstChar.get(firstCharCode);\n\t\t\tif (bucket === undefined) {\n\t\t\t\tbucket = [];\n\t\t\t\tbyFirstChar.set(firstCharCode, bucket);\n\t\t\t}\n\t\t\tbucket.push(compiled);\n\t\t}\n\t}\n\t// Only enable the bucket fast-path when it would actually help. With\n\t// a single bucket (all aliases share one first char, e.g. a chain of\n\t// `chain-0 -> chain-1 -> …` rewrites), the resolve-time `Map.get`\n\t// does no discrimination — every request lands in that one bucket\n\t// or in nothing — and the lookup is overhead compared to walking\n\t// `all` with the per-option first-char-code screen. Requiring 2+\n\t// distinct first chars matches the cases where bucketing has\n\t// measurable benefit (huge-alias-* / large-alias-list / stack-churn).\n\tconst useBuckets = !hasAnyFirstChar && byFirstChar.size >= 2;\n\treturn { all, byFirstChar, hasAnyFirstChar, useBuckets };\n}\n\n/** @typedef {(err?: null | Error, result?: null | ResolveRequest) => void} InnerCallback */\n/**\n * @param {Resolver} resolver resolver\n * @param {CompiledAliasOptions} options compiled options\n * @param {ResolveStepHook} target target\n * @param {ResolveRequest} request request\n * @param {ResolveContext} resolveContext resolve context\n * @param {InnerCallback} callback callback\n * @returns {void}\n */\nfunction aliasResolveHandler(\n\tresolver,\n\toptions,\n\ttarget,\n\trequest,\n\tresolveContext,\n\tcallback,\n) {\n\tif (options.all.length === 0) return callback();\n\tconst innerRequest = request.request || request.path;\n\tif (!innerRequest) return callback();\n\n\t// Precompute values used in the inner scan loop so we don't recompute\n\t// them per option. This is meaningful when `options` has hundreds of\n\t// entries (e.g. monorepos with generated alias lists) — see the\n\t// `huge-alias-list` / `huge-alias-miss` benchmarks.\n\tconst innerFirstCharCode = innerRequest.charCodeAt(0);\n\tconst hasRequestString = Boolean(request.request);\n\n\t// Dispatch through the first-char-code bucket when it actually\n\t// narrows the candidate set (`useBuckets` requires 2+ distinct\n\t// first chars and no empty-prefix wildcard). When the field has\n\t// only one first-char bucket — e.g. a long chain of `chain-N`\n\t// aliases that all start with the same char — every request lands\n\t// in that one bucket or nothing, so `Map.get` is overhead vs. just\n\t// walking `all` with the per-option char-code screen. Walking\n\t// `all` also matches the pre-bucketing behavior and keeps the\n\t// `pathological-deep-stack` allocation profile flat.\n\tlet scan;\n\tif (options.useBuckets) {\n\t\tconst bucket = options.byFirstChar.get(innerFirstCharCode);\n\t\tif (bucket === undefined) return callback();\n\t\tscan = bucket;\n\t} else {\n\t\tscan = options.all;\n\t}\n\n\tforEachBail(\n\t\tscan,\n\t\t(item, callback) => {\n\t\t\t// Char-code screen left in for the fallback (`options.all`) path\n\t\t\t// where the bucket dispatch above wasn't usable. In the bucket\n\t\t\t// path this is always true and folds into a no-op.\n\t\t\tconst { firstCharCode } = item;\n\t\t\tif (firstCharCode !== -1 && firstCharCode !== innerFirstCharCode) {\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\t/** @type {boolean} */\n\t\t\tlet shouldStop = false;\n\n\t\t\t// For absolute-name aliases, accept the normalized\n\t\t\t// `absolutePath` form as well as the raw `nameWithSlash`.\n\t\t\t// `nameWithSlash` unconditionally appends `/`, so a raw\n\t\t\t// windows request with native backslashes\n\t\t\t// (e.g. `C:\\\\abs\\\\foo\\\\baz` against `name: \"C:\\\\abs\\\\foo\"`)\n\t\t\t// otherwise fails `startsWith(\"C:\\\\abs\\\\foo/\")` and is\n\t\t\t// silently skipped. Mirroring the `absolutePath` check in\n\t\t\t// both branches closes the gap without changing any\n\t\t\t// existing matches.\n\t\t\tconst { absolutePath } = item;\n\t\t\tconst matchRequest =\n\t\t\t\tinnerRequest === item.name ||\n\t\t\t\t(!item.onlyModule &&\n\t\t\t\t\t((hasRequestString && innerRequest.startsWith(item.nameWithSlash)) ||\n\t\t\t\t\t\t(absolutePath !== null && innerRequest.startsWith(absolutePath))));\n\n\t\t\tconst matchWildcard = !item.onlyModule && item.wildcardPrefix !== null;\n\n\t\t\tif (matchRequest || matchWildcard) {\n\t\t\t\t/**\n\t\t\t\t * @param {Alias} alias alias\n\t\t\t\t * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback\n\t\t\t\t * @returns {void}\n\t\t\t\t */\n\t\t\t\tconst resolveWithAlias = (alias, callback) => {\n\t\t\t\t\tif (alias === false) {\n\t\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\t\tconst ignoreObj = {\n\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\tpath: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (typeof resolveContext.yield === \"function\") {\n\t\t\t\t\t\t\tresolveContext.yield(ignoreObj);\n\t\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn callback(null, ignoreObj);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet newRequestStr;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tmatchWildcard &&\n\t\t\t\t\t\tinnerRequest.startsWith(\n\t\t\t\t\t\t\t/** @type {string} */ (item.wildcardPrefix),\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\tinnerRequest.endsWith(/** @type {string} */ (item.wildcardSuffix))\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst match = innerRequest.slice(\n\t\t\t\t\t\t\t/** @type {string} */ (item.wildcardPrefix).length,\n\t\t\t\t\t\t\tinnerRequest.length -\n\t\t\t\t\t\t\t\t/** @type {string} */ (item.wildcardSuffix).length,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tnewRequestStr = alias.toString().replace(\"*\", match);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tmatchRequest &&\n\t\t\t\t\t\tinnerRequest !== alias &&\n\t\t\t\t\t\t!innerRequest.startsWith(`${alias}/`)\n\t\t\t\t\t) {\n\t\t\t\t\t\t/** @type {string} */\n\t\t\t\t\t\tconst remainingRequest = innerRequest.slice(item.name.length);\n\t\t\t\t\t\tnewRequestStr = alias + remainingRequest;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newRequestStr !== undefined) {\n\t\t\t\t\t\tshouldStop = true;\n\t\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\trequest: newRequestStr,\n\t\t\t\t\t\t\tfullySpecified: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn resolver.doResolve(\n\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\t`aliased with mapping '${item.name}': '${alias}' to '${newRequestStr}'`,\n\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\t\tif (result) return callback(null, result);\n\t\t\t\t\t\t\t\treturn callback();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn callback();\n\t\t\t\t};\n\n\t\t\t\t/**\n\t\t\t\t * @param {(null | Error)=} err error\n\t\t\t\t * @param {(null | ResolveRequest)=} result result\n\t\t\t\t * @returns {void}\n\t\t\t\t */\n\t\t\t\tconst stoppingCallback = (err, result) => {\n\t\t\t\t\tif (err) return callback(err);\n\n\t\t\t\t\tif (result) return callback(null, result);\n\t\t\t\t\t// Don't allow other aliasing or raw request\n\t\t\t\t\tif (shouldStop) return callback(null, null);\n\t\t\t\t\treturn callback();\n\t\t\t\t};\n\n\t\t\t\tif (item.arrayAlias) {\n\t\t\t\t\treturn forEachBail(\n\t\t\t\t\t\t/** @type {string[]} */ (item.alias),\n\t\t\t\t\t\tresolveWithAlias,\n\t\t\t\t\t\tstoppingCallback,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn resolveWithAlias(item.alias, stoppingCallback);\n\t\t\t}\n\n\t\t\treturn callback();\n\t\t},\n\t\tcallback,\n\t);\n}\n\nmodule.exports.aliasResolveHandler = aliasResolveHandler;\nmodule.exports.compileAliasOptions = compileAliasOptions;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {string | string[] | false} Alias */\n/** @typedef {{ alias: Alias, name: string, onlyModule?: boolean }} AliasOption */\n\nconst { aliasResolveHandler, compileAliasOptions } = require(\"./AliasUtils\");\n\n/**\n * When `alias` is given as an array, the targets are tried in priority\n * order and the first matching one wins. Tried-and-failed higher-priority\n * targets are recorded on `resolveContext.missingDependencies` (via the\n * downstream `FileExistsPlugin`) so that a consumer's watcher can\n * invalidate the resolve once one of them appears. The winning target is\n * recorded on `resolveContext.fileDependencies`; its removal triggers\n * re-resolution, at which point the fallback target is returned.\n *\n * Callers that cache successful resolves (e.g. webpack's `unsafeCache`)\n * are responsible for invalidating those entries when the tracked\n * dependencies change -- otherwise a stale path may survive across\n * rebuilds even though this plugin itself would return the correct\n * fallback on a fresh resolve.\n */\nmodule.exports = class AliasPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {AliasOption | AliasOption[]} options options\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, options, target) {\n\t\tthis.source = source;\n\t\tthis.options = Array.isArray(options) ? options : [options];\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tconst compiled = compileAliasOptions(resolver, this.options);\n\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"AliasPlugin\", (request, resolveContext, callback) => {\n\t\t\t\taliasResolveHandler(\n\t\t\t\t\tresolver,\n\t\t\t\t\tcompiled,\n\t\t\t\t\ttarget,\n\t\t\t\t\trequest,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class AppendPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string} appending appending\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, appending, target) {\n\t\tthis.source = source;\n\t\tthis.appending = appending;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"AppendPlugin\", (request, resolveContext, callback) => {\n\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\tconst obj = {\n\t\t\t\t\t...request,\n\t\t\t\t\tpath: request.path + this.appending,\n\t\t\t\t\trelativePath:\n\t\t\t\t\t\trequest.relativePath && request.relativePath + this.appending,\n\t\t\t\t};\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\tobj,\n\t\t\t\t\tthis.appending,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class ConditionalPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {Partial<ResolveRequest>} test compare object\n\t * @param {string | null} message log message\n\t * @param {boolean} allowAlternatives when false, do not continue with the current step when \"test\" matches\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, test, message, allowAlternatives, target) {\n\t\tthis.source = source;\n\t\tthis.test = test;\n\t\tthis.message = message;\n\t\tthis.allowAlternatives = allowAlternatives;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tconst { test, message, allowAlternatives } = this;\n\t\tconst keys = /** @type {(keyof ResolveRequest)[]} */ (Object.keys(test));\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"ConditionalPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tfor (const prop of keys) {\n\t\t\t\t\tif (request[prop] !== test[prop]) return callback();\n\t\t\t\t}\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\trequest,\n\t\t\t\t\tmessage,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\tallowAlternatives\n\t\t\t\t\t\t? callback\n\t\t\t\t\t\t: (err, result) => {\n\t\t\t\t\t\t\t\tif (err) return callback(err);\n\n\t\t\t\t\t\t\t\t// Don't allow other alternatives\n\t\t\t\t\t\t\t\tif (result === undefined) return callback(null, null);\n\t\t\t\t\t\t\t\tcallback(null, result);\n\t\t\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst DescriptionFileUtils = require(\"./DescriptionFileUtils\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nconst BACKSLASH_G = /\\\\/g;\n\nmodule.exports = class DescriptionFilePlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string[]} filenames filenames\n\t * @param {boolean} pathIsFile pathIsFile\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, filenames, pathIsFile, target) {\n\t\tthis.source = source;\n\t\tthis.filenames = filenames;\n\t\tthis.pathIsFile = pathIsFile;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\n\t\t\t\t\"DescriptionFilePlugin\",\n\t\t\t\t(request, resolveContext, callback) => {\n\t\t\t\t\tconst { path } = request;\n\t\t\t\t\tif (!path) return callback();\n\t\t\t\t\tconst directory = this.pathIsFile\n\t\t\t\t\t\t? DescriptionFileUtils.cdUp(path)\n\t\t\t\t\t\t: path;\n\t\t\t\t\tif (!directory) return callback();\n\t\t\t\t\tDescriptionFileUtils.loadDescriptionFile(\n\t\t\t\t\t\tresolver,\n\t\t\t\t\t\tdirectory,\n\t\t\t\t\t\tthis.filenames,\n\t\t\t\t\t\trequest.descriptionFilePath\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tpath: request.descriptionFilePath,\n\t\t\t\t\t\t\t\t\tcontent: request.descriptionFileData,\n\t\t\t\t\t\t\t\t\tdirectory:\n\t\t\t\t\t\t\t\t\t\t/** @type {string} */\n\t\t\t\t\t\t\t\t\t\t(request.descriptionFileRoot),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\tif (!result) {\n\t\t\t\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t\t\t\t`No description file found in ${directory} or above`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn callback();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst rawRelative = path.slice(result.directory.length);\n\t\t\t\t\t\t\tconst relativePath = `.${\n\t\t\t\t\t\t\t\trawRelative.includes(\"\\\\\")\n\t\t\t\t\t\t\t\t\t? rawRelative.replace(BACKSLASH_G, \"/\")\n\t\t\t\t\t\t\t\t\t: rawRelative\n\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\t\tdescriptionFilePath: result.path,\n\t\t\t\t\t\t\t\tdescriptionFileData: result.content,\n\t\t\t\t\t\t\t\tdescriptionFileRoot: result.directory,\n\t\t\t\t\t\t\t\trelativePath,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\t\t`using description file: ${result.path} (relative path: ${relativePath})`,\n\t\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\t\t\tif (err) return callback(err);\n\n\t\t\t\t\t\t\t\t\t// Don't allow other processing\n\t\t\t\t\t\t\t\t\tif (result === undefined) return callback(null, null);\n\t\t\t\t\t\t\t\t\tcallback(null, result);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class DirectoryExistsPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, target) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\n\t\t\t\t\"DirectoryExistsPlugin\",\n\t\t\t\t(request, resolveContext, callback) => {\n\t\t\t\t\tconst fs = resolver.fileSystem;\n\t\t\t\t\tconst directory = request.path;\n\t\t\t\t\tif (!directory) return callback();\n\t\t\t\t\tfs.stat(directory, (err, stat) => {\n\t\t\t\t\t\t// Combine the two miss branches: a stat failure and a\n\t\t\t\t\t\t// \"not a directory\" result share the same handling — record\n\t\t\t\t\t\t// the path on `missingDependencies`, log the right reason,\n\t\t\t\t\t\t// then bail. The error-message ternary picks the wording\n\t\t\t\t\t\t// that matched the failing condition.\n\t\t\t\t\t\tif (err || !stat || !stat.isDirectory()) {\n\t\t\t\t\t\t\tif (resolveContext.missingDependencies) {\n\t\t\t\t\t\t\t\tresolveContext.missingDependencies.add(directory);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t\t\terr || !stat\n\t\t\t\t\t\t\t\t\t\t? `${directory} doesn't exist`\n\t\t\t\t\t\t\t\t\t\t: `${directory} is not a directory`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn callback();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\t\t\t\tresolveContext.fileDependencies.add(directory);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t\t`existing directory ${directory}`,\n\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\tcallback,\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t);\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Ivan Kopeykin @vankop\n*/\n\n\"use strict\";\n\nconst { fileURLToPath } = require(\"url\");\n\nconst PATH_QUERY_FRAGMENT_REGEXP =\n\t/^(#?(?:\\0.|[^?#\\0])*)(\\?(?:\\0.|[^#\\0])*)?(#.*)?$/;\nconst ZERO_ESCAPE_REGEXP = /\\0(.)/g;\nconst FILE_REG_EXP = /file:/i;\n\n/**\n * Index past a DOS device path prefix (`\\\\?\\…` or `\\\\.\\…`), or 0. Kept\n * out of `parseIdentifier` on purpose: inlining it back bloats the caller\n * beyond the size where V8's interpreter and JIT both handle it well\n * (the cause of the description-files-multi CodSpeed regression).\n * @param {string} identifier identifier known to start with `\\`\n * @returns {number} 4 if identifier starts with a DOS device prefix, else 0\n */\nfunction dosPrefixEnd(identifier) {\n\tif (\n\t\tidentifier.length >= 4 &&\n\t\tidentifier.charCodeAt(1) === 92 &&\n\t\tidentifier.charCodeAt(3) === 92\n\t) {\n\t\tconst c2 = identifier.charCodeAt(2);\n\t\tif (c2 === 63 || c2 === 46) return 4;\n\t}\n\treturn 0;\n}\n\n/**\n * @param {string} identifier identifier\n * @returns {[string, string, string] | null} parsed identifier\n */\nfunction parseIdentifier(identifier) {\n\tif (!identifier) {\n\t\treturn null;\n\t}\n\n\tif (FILE_REG_EXP.test(identifier)) {\n\t\tidentifier = fileURLToPath(identifier);\n\t}\n\n\tconst firstEscape = identifier.indexOf(\"\\0\");\n\n\t// Handle `\\0`\n\tif (firstEscape !== -1) {\n\t\tconst match = PATH_QUERY_FRAGMENT_REGEXP.exec(identifier);\n\n\t\tif (!match) return null;\n\n\t\treturn [\n\t\t\tmatch[1].replace(ZERO_ESCAPE_REGEXP, \"$1\"),\n\t\t\tmatch[2] ? match[2].replace(ZERO_ESCAPE_REGEXP, \"$1\") : \"\",\n\t\t\tmatch[3] || \"\",\n\t\t];\n\t}\n\n\t// Fast path for inputs that don't use \\0 escaping. DOS device paths\n\t// (`\\\\?\\…`, `\\\\.\\…`) embed a literal `?` / `.` that must not be read\n\t// as a query separator; skip past the prefix when the input actually\n\t// starts with `\\`. Gate is a single char-code compare so this function\n\t// stays inside V8's inline budget for its hot callers (resolver parse).\n\tconst scanStart =\n\t\tidentifier.charCodeAt(0) === 92 ? dosPrefixEnd(identifier) : 0;\n\tconst queryStart = identifier.indexOf(\"?\", scanStart);\n\t// Start at index 1 (or past a DOS prefix) to ignore a possible leading hash.\n\tconst fragmentStart = identifier.indexOf(\"#\", scanStart || 1);\n\n\tif (fragmentStart < 0) {\n\t\tif (queryStart < 0) {\n\t\t\t// No fragment, no query\n\t\t\treturn [identifier, \"\", \"\"];\n\t\t}\n\n\t\t// Query, no fragment\n\t\treturn [identifier.slice(0, queryStart), identifier.slice(queryStart), \"\"];\n\t}\n\n\tif (queryStart < 0 || fragmentStart < queryStart) {\n\t\t// Fragment, no query\n\t\treturn [\n\t\t\tidentifier.slice(0, fragmentStart),\n\t\t\t\"\",\n\t\t\tidentifier.slice(fragmentStart),\n\t\t];\n\t}\n\n\t// Query and fragment\n\treturn [\n\t\tidentifier.slice(0, queryStart),\n\t\tidentifier.slice(queryStart, fragmentStart),\n\t\tidentifier.slice(fragmentStart),\n\t];\n}\n\nmodule.exports.parseIdentifier = parseIdentifier;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Ivan Kopeykin @vankop\n*/\n\n\"use strict\";\n\nconst { parseIdentifier } = require(\"./identifier\");\n\n/** @typedef {string | (string | ConditionalMapping)[]} DirectMapping */\n/** @typedef {{ [k: string]: MappingValue }} ConditionalMapping */\n/** @typedef {ConditionalMapping | DirectMapping | null} MappingValue */\n/** @typedef {Record<string, MappingValue> | ConditionalMapping | DirectMapping} ExportsField */\n/** @typedef {Record<string, MappingValue>} ImportsField */\n\n/**\n * Processing exports/imports field\n * @callback FieldProcessor\n * @param {string} request request\n * @param {Set<string>} conditionNames condition names\n * @returns {[string[], string | null]} resolved paths with used field\n */\n\n/*\nExample exports field:\n{\n  \".\": \"./main.js\",\n  \"./feature\": {\n    \"browser\": \"./feature-browser.js\",\n    \"default\": \"./feature.js\"\n  }\n}\nTerminology:\n\nEnhanced-resolve name keys (\".\" and \"./feature\") as exports field keys.\n\nIf value is string or string[], mapping is called as a direct mapping\nand value called as a direct export.\n\nIf value is key-value object, mapping is called as a conditional mapping\nand value called as a conditional export.\n\nKey in conditional mapping is called condition name.\n\nConditional mapping nested in another conditional mapping is called nested mapping.\n\n----------\n\nExample imports field:\n{\n  \"#a\": \"./main.js\",\n  \"#moment\": {\n    \"browser\": \"./moment/index.js\",\n    \"default\": \"moment\"\n  },\n  \"#moment/\": {\n    \"browser\": \"./moment/\",\n    \"default\": \"moment/\"\n  }\n}\nTerminology:\n\nEnhanced-resolve name keys (\"#a\" and \"#moment/\", \"#moment\") as imports field keys.\n\nIf value is string or string[], mapping is called as a direct mapping\nand value called as a direct export.\n\nIf value is key-value object, mapping is called as a conditional mapping\nand value called as a conditional export.\n\nKey in conditional mapping is called condition name.\n\nConditional mapping nested in another conditional mapping is called nested mapping.\n\n*/\n\nconst slashCode = \"/\".charCodeAt(0);\nconst dotCode = \".\".charCodeAt(0);\nconst hashCode = \"#\".charCodeAt(0);\nconst patternRegEx = /\\*/g;\nconst DOLLAR_ESCAPE_RE = /\\$/g;\n\n/** @typedef {Record<string, MappingValue>} RecordMapping */\n\n/**\n * Cached `Object.keys()` for objects whose shape does not change after the\n * first observation — i.e. parsed `package.json` fields and the nested\n * conditional mappings inside them. `Object.keys` allocates a fresh array\n * on every call; since `findMatch` / `conditionalMapping` run on every\n * bare-specifier resolve, the allocation adds up quickly.\n * @type {WeakMap<RecordMapping, string[]>}\n */\nconst _keysCache = new WeakMap();\n\n/**\n * @param {RecordMapping} obj object to read keys from\n * @returns {string[]} cached keys array (DO NOT mutate)\n */\nfunction cachedKeys(obj) {\n\tlet keys = _keysCache.get(obj);\n\tif (keys === undefined) {\n\t\tkeys = Object.keys(obj);\n\t\t_keysCache.set(obj, keys);\n\t}\n\treturn keys;\n}\n\n/**\n * Per-key precomputed info used by `findMatch`. Equivalent to what the\n * previous implementation recomputed inline on every resolve.\n * @typedef {object} FieldKeyInfo\n * @property {string} key the original key\n * @property {number} patternIndex position of the single \"*\" in the key, or -1 when absent\n * @property {string} wildcardPrefix substring before \"*\" (empty when patternIndex === -1)\n * @property {string} wildcardSuffix substring after \"*\" (empty when patternIndex === -1)\n * @property {boolean} isLegacySubpath true when key is a legacy `./foo/`-style folder key with no \"*\"\n * @property {boolean} isPattern true when key contains \"*\"\n * @property {boolean} isSubpathMapping true when key ends with \"/\"\n * @property {boolean} isValidPattern true when key has at most one \"*\"\n */\n\n/**\n * Cached per-field key metadata, keyed by the exports/imports field\n * object. Computed lazily on first `findMatch` call and reused forever.\n * Safe because `package.json` fields are immutable JSON values.\n * @type {WeakMap<RecordMapping, FieldKeyInfo[]>}\n */\nconst _fieldKeyInfoCache = new WeakMap();\n\n/**\n * @param {ExportsField | ImportsField} field field object\n * @returns {FieldKeyInfo[]} precomputed per-key info\n */\nfunction getFieldKeyInfos(field) {\n\tconst fieldKey = /** @type {RecordMapping} */ (field);\n\tlet infos = _fieldKeyInfoCache.get(fieldKey);\n\tif (infos !== undefined) return infos;\n\tconst keys = Object.getOwnPropertyNames(field);\n\tinfos = Array.from({ length: keys.length });\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\t\tconst patternIndex = key.indexOf(\"*\");\n\t\t// `isValidPattern` is true when the key has at most one `*`. Searching\n\t\t// from `patternIndex + 1` stops as soon as a second `*` is found, so\n\t\t// we avoid the full-string scan that `lastIndexOf` would do — and the\n\t\t// single-star common case finishes in one pass.\n\t\tconst isValidPattern =\n\t\t\tpatternIndex === -1 || !key.includes(\"*\", patternIndex + 1);\n\t\tconst keyLen = key.length;\n\t\tconst endsWithSlash =\n\t\t\tkeyLen > 0 && key.charCodeAt(keyLen - 1) === slashCode;\n\t\tinfos[i] = {\n\t\t\tkey,\n\t\t\tpatternIndex,\n\t\t\twildcardPrefix: patternIndex === -1 ? \"\" : key.slice(0, patternIndex),\n\t\t\twildcardSuffix: patternIndex === -1 ? \"\" : key.slice(patternIndex + 1),\n\t\t\tisLegacySubpath: patternIndex === -1 && endsWithSlash,\n\t\t\tisPattern: patternIndex !== -1,\n\t\t\tisSubpathMapping: endsWithSlash,\n\t\t\tisValidPattern,\n\t\t};\n\t}\n\t_fieldKeyInfoCache.set(fieldKey, infos);\n\treturn infos;\n}\n\n/**\n * @param {string} a first string\n * @param {string} b second string\n * @returns {number} compare result\n */\nfunction patternKeyCompare(a, b) {\n\tconst aPatternIndex = a.indexOf(\"*\");\n\tconst bPatternIndex = b.indexOf(\"*\");\n\tconst baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1;\n\tconst baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1;\n\n\tif (baseLenA > baseLenB) return -1;\n\tif (baseLenB > baseLenA) return 1;\n\tif (aPatternIndex === -1) return 1;\n\tif (bPatternIndex === -1) return -1;\n\tif (a.length > b.length) return -1;\n\tif (b.length > a.length) return 1;\n\n\treturn 0;\n}\n\n/** @typedef {[MappingValue, string, boolean, boolean, string] | null} MatchTuple */\n\n/**\n * Per-field memoization of `findMatch(request, field)`. For a given field\n * the result depends only on the `request` string (it does NOT depend on\n * `conditionNames` — that's applied separately by `conditionalMapping`),\n * so we can cache the tuple keyed by request.\n *\n * Typical build traffic runs the same request through the resolver\n * repeatedly (same import re-resolved from different source files, module\n * graph traversals that revisit a package, etc.), and every one of those\n * hits walks the same key list and allocates the same tuple. Caching the\n * tuple turns the second-and-onward call into a single Map lookup.\n *\n * Keyed on the field object via a module-level `WeakMap`, so the cache\n * is freed automatically when the owning description file is GC'd.\n * @type {WeakMap<RecordMapping, Map<string, MatchTuple>>}\n */\nconst _findMatchCache = new WeakMap();\n\n/**\n * @param {string} request request\n * @param {ExportsField | ImportsField} field exports or import field\n * @returns {MatchTuple} match result (uncached)\n */\nfunction computeFindMatch(request, field) {\n\tconst requestLen = request.length;\n\tconst requestEndsWithSlash =\n\t\trequestLen > 0 && request.charCodeAt(requestLen - 1) === slashCode;\n\tconst requestHasStar = request.includes(\"*\");\n\n\tif (\n\t\t!requestHasStar &&\n\t\t!requestEndsWithSlash &&\n\t\tObject.prototype.hasOwnProperty.call(field, request)\n\t) {\n\t\tconst target = /** @type {{ [k: string]: MappingValue }} */ (field)[\n\t\t\trequest\n\t\t];\n\n\t\treturn [target, \"\", false, false, request];\n\t}\n\n\t/** @type {string} */\n\tlet bestMatch = \"\";\n\t/** @type {FieldKeyInfo | null} */\n\tlet bestMatchInfo = null;\n\t/** @type {string | undefined} */\n\tlet bestMatchSubpath;\n\n\tconst infos = getFieldKeyInfos(field);\n\n\tfor (let i = 0; i < infos.length; i++) {\n\t\tconst info = infos[i];\n\t\tconst { key, patternIndex } = info;\n\n\t\tif (patternIndex !== -1) {\n\t\t\tif (\n\t\t\t\t!info.isValidPattern ||\n\t\t\t\t!request.startsWith(info.wildcardPrefix) ||\n\t\t\t\trequestLen < key.length ||\n\t\t\t\t!request.endsWith(info.wildcardSuffix) ||\n\t\t\t\tpatternKeyCompare(bestMatch, key) !== 1\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbestMatch = key;\n\t\t\tbestMatchInfo = info;\n\t\t\tbestMatchSubpath = request.slice(\n\t\t\t\tpatternIndex,\n\t\t\t\trequestLen - info.wildcardSuffix.length,\n\t\t\t);\n\t\t} else if (\n\t\t\tinfo.isLegacySubpath &&\n\t\t\trequest.startsWith(key) &&\n\t\t\tpatternKeyCompare(bestMatch, key) === 1\n\t\t) {\n\t\t\tbestMatch = key;\n\t\t\tbestMatchInfo = info;\n\t\t\tbestMatchSubpath = request.slice(key.length);\n\t\t}\n\t}\n\n\tif (bestMatch === \"\") return null;\n\n\tconst target =\n\t\t/** @type {{ [k: string]: MappingValue }} */\n\t\t(field)[bestMatch];\n\n\treturn [\n\t\ttarget,\n\t\t/** @type {string} */ (bestMatchSubpath),\n\t\t/** @type {FieldKeyInfo} */ (bestMatchInfo).isSubpathMapping,\n\t\t/** @type {FieldKeyInfo} */ (bestMatchInfo).isPattern,\n\t\tbestMatch,\n\t];\n}\n\n/**\n * Trying to match request to field\n * @param {string} request request\n * @param {ExportsField | ImportsField} field exports or import field\n * @returns {MatchTuple} match or null, number is negative and one less when it's a folder mapping, number is request.length + 1 for direct mappings\n */\nfunction findMatch(request, field) {\n\tconst fieldKey = /** @type {RecordMapping} */ (field);\n\tlet perRequest = _findMatchCache.get(fieldKey);\n\tif (perRequest === undefined) {\n\t\tperRequest = new Map();\n\t\t_findMatchCache.set(fieldKey, perRequest);\n\t} else {\n\t\t// `computeFindMatch` only ever returns `MatchTuple | null` — never\n\t\t// `undefined` — and `Map.set(k, null)` then `Map.get(k)` returns\n\t\t// `null`, not `undefined`. So `get(...) === undefined` already\n\t\t// unambiguously means \"not cached yet\"; one Map lookup is enough,\n\t\t// no follow-up `has` needed to disambiguate \"cached null\".\n\t\tconst cached = perRequest.get(request);\n\t\tif (cached !== undefined) return cached;\n\t}\n\n\tconst result = computeFindMatch(request, field);\n\tperRequest.set(request, result);\n\treturn result;\n}\n\n/**\n * Sentinel stored in the conditional-mapping cache for inputs whose walk\n * returns `null` (\"no condition matched\"). Using a non-null marker lets the\n * cache-hit path be a single `WeakMap.get()` — we distinguish\n * \"cached null\" from \"not cached yet\" without a second `has` call.\n */\nconst NULL_RESULT = Symbol(\"NULL_RESULT\");\n\n/**\n * Memoization of `conditionalMapping(mapping, conditionNames)`. The result\n * depends only on the mapping object (immutable — owned by a parsed\n * `package.json`) and the `conditionNames` Set (owned by the resolver's\n * options and stable for its lifetime), so it is safe to cache per (mapping,\n * conditionNames) pair.\n *\n * A conditional `exports` entry that appears inside a `directMapping` array\n * (the common `\"browser\": [...fallback list...]` shape, plus nested\n * conditions) gets walked on every resolve that traverses the parent entry.\n * Without this cache each of those walks re-reads `Object.keys` on the\n * mapping and re-visits every condition until one matches, even though the\n * inputs are identical.\n *\n * Outer key is the conditional mapping itself; inner key is the condition\n * Set. Both are object references, so WeakMap-of-WeakMap lets both levels\n * be collected automatically when the description file or resolver go away.\n * @type {WeakMap<ConditionalMapping, WeakMap<Set<string>, DirectMapping | typeof NULL_RESULT>>}\n */\nconst _conditionalMappingCache = new WeakMap();\n\n/**\n * @param {ConditionalMapping} conditionalMapping_ conditional mapping\n * @param {Set<string>} conditionNames condition names\n * @returns {DirectMapping | null} direct mapping if found (uncached)\n */\nfunction computeConditionalMapping(conditionalMapping_, conditionNames) {\n\t/** @type {[ConditionalMapping, string[], number][]} */\n\tconst lookup = [[conditionalMapping_, cachedKeys(conditionalMapping_), 0]];\n\n\tloop: while (lookup.length > 0) {\n\t\tconst top = lookup[lookup.length - 1];\n\t\tconst [mapping, conditions, j] = top;\n\n\t\tfor (let i = j; i < conditions.length; i++) {\n\t\t\tconst condition = conditions[i];\n\n\t\t\tif (condition === \"default\" || conditionNames.has(condition)) {\n\t\t\t\tconst innerMapping = mapping[condition];\n\t\t\t\tif (\n\t\t\t\t\tinnerMapping !== null &&\n\t\t\t\t\ttypeof innerMapping === \"object\" &&\n\t\t\t\t\t!Array.isArray(innerMapping)\n\t\t\t\t) {\n\t\t\t\t\tconst nested = /** @type {ConditionalMapping} */ (innerMapping);\n\t\t\t\t\ttop[2] = i + 1;\n\t\t\t\t\tlookup.push([nested, cachedKeys(nested), 0]);\n\t\t\t\t\tcontinue loop;\n\t\t\t\t}\n\n\t\t\t\treturn /** @type {DirectMapping} */ (innerMapping);\n\t\t\t}\n\t\t}\n\n\t\tlookup.pop();\n\t}\n\n\treturn null;\n}\n\n/**\n * @param {ConditionalMapping} conditionalMapping_ conditional mapping\n * @param {Set<string>} conditionNames condition names\n * @returns {DirectMapping | null} direct mapping if found\n */\nfunction conditionalMapping(conditionalMapping_, conditionNames) {\n\tlet perSet = _conditionalMappingCache.get(conditionalMapping_);\n\tif (perSet !== undefined) {\n\t\tconst cached = perSet.get(conditionNames);\n\t\tif (cached !== undefined) {\n\t\t\treturn cached === NULL_RESULT\n\t\t\t\t? null\n\t\t\t\t: /** @type {DirectMapping} */ (cached);\n\t\t}\n\t} else {\n\t\tperSet = new WeakMap();\n\t\t_conditionalMappingCache.set(conditionalMapping_, perSet);\n\t}\n\tconst result = computeConditionalMapping(conditionalMapping_, conditionNames);\n\tperSet.set(conditionNames, result === null ? NULL_RESULT : result);\n\treturn result;\n}\n\n/**\n * @param {string | undefined} remainingRequest remaining request when folder mapping, undefined for file mappings\n * @param {boolean} isPattern true, if mapping is a pattern (contains \"*\")\n * @param {boolean} isSubpathMapping true, for subpath mappings\n * @param {string} mappingTarget direct export\n * @param {(d: string, f: boolean) => void} assert asserting direct value\n * @returns {string} mapping result\n */\nfunction targetMapping(\n\tremainingRequest,\n\tisPattern,\n\tisSubpathMapping,\n\tmappingTarget,\n\tassert,\n) {\n\tif (remainingRequest === undefined) {\n\t\tassert(mappingTarget, false);\n\n\t\treturn mappingTarget;\n\t}\n\n\tif (isSubpathMapping) {\n\t\tassert(mappingTarget, true);\n\n\t\treturn mappingTarget + remainingRequest;\n\t}\n\n\tassert(mappingTarget, false);\n\n\tlet result = mappingTarget;\n\n\tif (isPattern) {\n\t\tconst escapedRemainder = remainingRequest.includes(\"$\")\n\t\t\t? remainingRequest.replace(DOLLAR_ESCAPE_RE, \"$$\")\n\t\t\t: remainingRequest;\n\t\tresult = result.replace(patternRegEx, escapedRemainder);\n\t}\n\n\treturn result;\n}\n\n/**\n * @param {string | undefined} remainingRequest remaining request when folder mapping, undefined for file mappings\n * @param {boolean} isPattern true, if mapping is a pattern (contains \"*\")\n * @param {boolean} isSubpathMapping true, for subpath mappings\n * @param {DirectMapping | null} mappingTarget direct export\n * @param {Set<string>} conditionNames condition names\n * @param {(d: string, f: boolean) => void} assert asserting direct value\n * @returns {string[]} mapping result\n */\nfunction directMapping(\n\tremainingRequest,\n\tisPattern,\n\tisSubpathMapping,\n\tmappingTarget,\n\tconditionNames,\n\tassert,\n) {\n\tif (mappingTarget === null) return [];\n\n\tif (typeof mappingTarget === \"string\") {\n\t\treturn [\n\t\t\ttargetMapping(\n\t\t\t\tremainingRequest,\n\t\t\t\tisPattern,\n\t\t\t\tisSubpathMapping,\n\t\t\t\tmappingTarget,\n\t\t\t\tassert,\n\t\t\t),\n\t\t];\n\t}\n\n\t/** @type {string[]} */\n\tconst targets = [];\n\n\tfor (let i = 0, len = mappingTarget.length; i < len; i++) {\n\t\tconst exp = mappingTarget[i];\n\t\tif (typeof exp === \"string\") {\n\t\t\ttargets.push(\n\t\t\t\ttargetMapping(\n\t\t\t\t\tremainingRequest,\n\t\t\t\t\tisPattern,\n\t\t\t\t\tisSubpathMapping,\n\t\t\t\t\texp,\n\t\t\t\t\tassert,\n\t\t\t\t),\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst mapping = conditionalMapping(exp, conditionNames);\n\t\tif (!mapping) continue;\n\t\tconst innerExports = directMapping(\n\t\t\tremainingRequest,\n\t\t\tisPattern,\n\t\t\tisSubpathMapping,\n\t\t\tmapping,\n\t\t\tconditionNames,\n\t\t\tassert,\n\t\t);\n\t\tfor (let j = 0, innerLen = innerExports.length; j < innerLen; j++) {\n\t\t\ttargets.push(innerExports[j]);\n\t\t}\n\t}\n\n\treturn targets;\n}\n\n/** @type {[string[], null]} */\nconst EMPTY_NO_MATCH = /** @type {[string[], null]} */ ([[], null]);\n\n/**\n * @param {ExportsField | ImportsField} field root\n * @param {(s: string) => string} normalizeRequest Normalize request, for `imports` field it adds `#`, for `exports` field it adds `.` or `./`\n * @param {(s: string) => string} assertRequest assertRequest\n * @param {(s: string, f: boolean) => void} assertTarget assertTarget\n * @returns {FieldProcessor} field processor\n */\nfunction createFieldProcessor(\n\tfield,\n\tnormalizeRequest,\n\tassertRequest,\n\tassertTarget,\n) {\n\treturn function fieldProcessor(request, conditionNames) {\n\t\tconst match = findMatch(normalizeRequest(assertRequest(request)), field);\n\n\t\tif (match === null) return EMPTY_NO_MATCH;\n\n\t\tconst [mapping, remainingRequest, isSubpathMapping, isPattern, usedField] =\n\t\t\tmatch;\n\n\t\t/** @type {DirectMapping | null} */\n\t\tlet direct;\n\t\tif (\n\t\t\tmapping !== null &&\n\t\t\ttypeof mapping === \"object\" &&\n\t\t\t!Array.isArray(mapping)\n\t\t) {\n\t\t\tdirect = conditionalMapping(\n\t\t\t\t/** @type {ConditionalMapping} */ (mapping),\n\t\t\t\tconditionNames,\n\t\t\t);\n\t\t\tif (direct === null) return EMPTY_NO_MATCH;\n\t\t} else {\n\t\t\tdirect = /** @type {DirectMapping} */ (mapping);\n\t\t}\n\n\t\treturn [\n\t\t\tdirectMapping(\n\t\t\t\tremainingRequest,\n\t\t\t\tisPattern,\n\t\t\t\tisSubpathMapping,\n\t\t\t\tdirect,\n\t\t\t\tconditionNames,\n\t\t\t\tassertTarget,\n\t\t\t),\n\t\t\tusedField,\n\t\t];\n\t};\n}\n\n/**\n * @param {string} request request\n * @returns {string} updated request\n */\nfunction assertExportsFieldRequest(request) {\n\tif (request.charCodeAt(0) !== dotCode) {\n\t\tthrow new Error('Request should be relative path and start with \".\"');\n\t}\n\tif (request.length === 1) return \"\";\n\tif (request.charCodeAt(1) !== slashCode) {\n\t\tthrow new Error('Request should be relative path and start with \"./\"');\n\t}\n\tif (request.charCodeAt(request.length - 1) === slashCode) {\n\t\tthrow new Error(\"Only requesting file allowed\");\n\t}\n\n\treturn request.slice(2);\n}\n\n/**\n * @param {ExportsField} field exports field\n * @returns {ExportsField} normalized exports field\n */\nfunction buildExportsField(field) {\n\t// handle syntax sugar, if exports field is direct mapping for \".\"\n\tif (typeof field === \"string\" || Array.isArray(field)) {\n\t\treturn { \".\": field };\n\t}\n\n\tconst keys = Object.keys(field);\n\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\n\t\tif (key.charCodeAt(0) !== dotCode) {\n\t\t\t// handle syntax sugar, if exports field is conditional mapping for \".\"\n\t\t\tif (i === 0) {\n\t\t\t\twhile (i < keys.length) {\n\t\t\t\t\tconst charCode = keys[i].charCodeAt(0);\n\t\t\t\t\tif (charCode === dotCode || charCode === slashCode) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Exports field key should be relative path and start with \".\" (key: ${JSON.stringify(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t)})`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\treturn { \".\": field };\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t`Exports field key should be relative path and start with \".\" (key: ${JSON.stringify(\n\t\t\t\t\tkey,\n\t\t\t\t)})`,\n\t\t\t);\n\t\t}\n\n\t\tif (key.length === 1) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key.charCodeAt(1) !== slashCode) {\n\t\t\tthrow new Error(\n\t\t\t\t`Exports field key should be relative path and start with \"./\" (key: ${JSON.stringify(\n\t\t\t\t\tkey,\n\t\t\t\t)})`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn field;\n}\n\n/**\n * @param {string} exp export target\n * @param {boolean} expectFolder is folder expected\n */\nfunction assertExportTarget(exp, expectFolder) {\n\tconst parsedIdentifier = parseIdentifier(exp);\n\n\tif (!parsedIdentifier) {\n\t\treturn;\n\t}\n\n\tconst [relativePath] = parsedIdentifier;\n\tconst isFolder =\n\t\trelativePath.charCodeAt(relativePath.length - 1) === slashCode;\n\n\tif (isFolder !== expectFolder) {\n\t\tthrow new Error(\n\t\t\texpectFolder\n\t\t\t\t? `Expecting folder to folder mapping. ${JSON.stringify(\n\t\t\t\t\t\texp,\n\t\t\t\t\t)} should end with \"/\"`\n\t\t\t\t: `Expecting file to file mapping. ${JSON.stringify(\n\t\t\t\t\t\texp,\n\t\t\t\t\t)} should not end with \"/\"`,\n\t\t);\n\t}\n}\n\n/**\n * @param {ExportsField} exportsField the exports field\n * @returns {FieldProcessor} process callback\n */\nmodule.exports.processExportsField = function processExportsField(\n\texportsField,\n) {\n\treturn createFieldProcessor(\n\t\tbuildExportsField(exportsField),\n\t\t(request) => (request.length === 0 ? \".\" : `./${request}`),\n\t\tassertExportsFieldRequest,\n\t\tassertExportTarget,\n\t);\n};\n\n/**\n * @param {string} request request\n * @returns {string} updated request\n */\nfunction assertImportsFieldRequest(request) {\n\tif (request.charCodeAt(0) !== hashCode) {\n\t\tthrow new Error('Request should start with \"#\"');\n\t}\n\tif (request.length === 1) {\n\t\tthrow new Error(\"Request should have at least 2 characters\");\n\t}\n\t// Note: #/ patterns are now allowed per Node.js PR #60864\n\t// https://github.com/nodejs/node/pull/60864\n\tif (request.charCodeAt(request.length - 1) === slashCode) {\n\t\tthrow new Error(\"Only requesting file allowed\");\n\t}\n\n\treturn request.slice(1);\n}\n\n/**\n * @param {string} imp import target\n * @param {boolean} expectFolder is folder expected\n */\nfunction assertImportTarget(imp, expectFolder) {\n\tconst parsedIdentifier = parseIdentifier(imp);\n\n\tif (!parsedIdentifier) {\n\t\treturn;\n\t}\n\n\tconst [relativePath] = parsedIdentifier;\n\tconst isFolder =\n\t\trelativePath.charCodeAt(relativePath.length - 1) === slashCode;\n\n\tif (isFolder !== expectFolder) {\n\t\tthrow new Error(\n\t\t\texpectFolder\n\t\t\t\t? `Expecting folder to folder mapping. ${JSON.stringify(\n\t\t\t\t\t\timp,\n\t\t\t\t\t)} should end with \"/\"`\n\t\t\t\t: `Expecting file to file mapping. ${JSON.stringify(\n\t\t\t\t\t\timp,\n\t\t\t\t\t)} should not end with \"/\"`,\n\t\t);\n\t}\n}\n\n/**\n * @param {ImportsField} importsField the exports field\n * @returns {FieldProcessor} process callback\n */\nmodule.exports.processImportsField = function processImportsField(\n\timportsField,\n) {\n\treturn createFieldProcessor(\n\t\timportsField,\n\t\t(request) => `#${request}`,\n\t\tassertImportsFieldRequest,\n\t\tassertImportTarget,\n\t);\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Ivan Kopeykin @vankop\n*/\n\n\"use strict\";\n\nconst DescriptionFileUtils = require(\"./DescriptionFileUtils\");\nconst forEachBail = require(\"./forEachBail\");\nconst { processExportsField } = require(\"./util/entrypoints\");\nconst { parseIdentifier } = require(\"./util/identifier\");\nconst {\n\tdeprecatedInvalidSegmentRegEx,\n\tinvalidSegmentRegEx,\n} = require(\"./util/path\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").JsonObject} JsonObject */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {import(\"./util/entrypoints\").ExportsField} ExportsField */\n/** @typedef {import(\"./util/entrypoints\").FieldProcessor} FieldProcessor */\n\nmodule.exports = class ExportsFieldPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {Set<string>} conditionNames condition names\n\t * @param {string | string[]} fieldNamePath name path\n\t * @param {string | ResolveStepHook} target target\n\t * @param {boolean=} restrictions whether `restrictions` are configured (enables exports-target fallback when a target is filtered out)\n\t */\n\tconstructor(source, conditionNames, fieldNamePath, target, restrictions) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t\tthis.conditionNames = conditionNames;\n\t\tthis.fieldName = fieldNamePath;\n\t\tthis.restrictions = Boolean(restrictions);\n\t\t// `null` is cached for description files that have no exports field,\n\t\t// so subsequent resolves against the same package.json skip the\n\t\t// `DescriptionFileUtils.getField` walk entirely.\n\t\t/** @type {WeakMap<JsonObject, FieldProcessor | null>} */\n\t\tthis._fieldProcessorCache = new WeakMap();\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"ExportsFieldPlugin\", (request, resolveContext, callback) => {\n\t\t\t\t// When there is no description file, abort\n\t\t\t\tif (!request.descriptionFileData) return callback();\n\t\t\t\tif (\n\t\t\t\t\t// When the description file is inherited from parent, abort\n\t\t\t\t\t// (There is no description file inside of this package)\n\t\t\t\t\trequest.relativePath !== \".\" ||\n\t\t\t\t\trequest.request === undefined\n\t\t\t\t) {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\n\t\t\t\tconst { descriptionFileData } = request;\n\t\t\t\tconst remainingRequest =\n\t\t\t\t\trequest.query || request.fragment\n\t\t\t\t\t\t? (request.request === \".\" ? \"./\" : request.request) +\n\t\t\t\t\t\t\trequest.query +\n\t\t\t\t\t\t\trequest.fragment\n\t\t\t\t\t\t: request.request;\n\n\t\t\t\t/** @type {string[]} */\n\t\t\t\tlet paths;\n\t\t\t\t/** @type {string | null} */\n\t\t\t\tlet usedField;\n\n\t\t\t\ttry {\n\t\t\t\t\t// Look up the cached processor first. On a cache hit we\n\t\t\t\t\t// avoid re-walking the description file for the exports\n\t\t\t\t\t// field — and `null` is cached for description files that\n\t\t\t\t\t// have no exports field at all, so those skip the read\n\t\t\t\t\t// entirely. `processExportsField` can throw on a malformed\n\t\t\t\t\t// `exports` map (e.g. a key without a leading `.`), so\n\t\t\t\t\t// building the processor must stay inside this try/catch.\n\t\t\t\t\tlet fieldProcessor =\n\t\t\t\t\t\tthis._fieldProcessorCache.get(descriptionFileData);\n\t\t\t\t\tif (\n\t\t\t\t\t\tfieldProcessor === undefined &&\n\t\t\t\t\t\t!this._fieldProcessorCache.has(descriptionFileData)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst exportsField =\n\t\t\t\t\t\t\t/** @type {ExportsField | null | undefined} */\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tDescriptionFileUtils.getField(\n\t\t\t\t\t\t\t\t\tdescriptionFileData,\n\t\t\t\t\t\t\t\t\tthis.fieldName,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tfieldProcessor = exportsField\n\t\t\t\t\t\t\t? processExportsField(exportsField)\n\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\tthis._fieldProcessorCache.set(descriptionFileData, fieldProcessor);\n\t\t\t\t\t}\n\t\t\t\t\tif (!fieldProcessor) return callback();\n\n\t\t\t\t\tif (request.directory) {\n\t\t\t\t\t\treturn callback(\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t`Resolving to directories is not possible with the exports field (request was ${remainingRequest}/)`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t[paths, usedField] = fieldProcessor(\n\t\t\t\t\t\tremainingRequest,\n\t\t\t\t\t\tthis.conditionNames,\n\t\t\t\t\t);\n\t\t\t\t} catch (/** @type {unknown} */ err) {\n\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t`Exports field in ${request.descriptionFilePath} can't be processed: ${err}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn callback(/** @type {Error} */ (err));\n\t\t\t\t}\n\n\t\t\t\tif (paths.length === 0) {\n\t\t\t\t\tconst conditions = [...this.conditionNames];\n\t\t\t\t\tconst conditionsStr =\n\t\t\t\t\t\tconditions.length === 1\n\t\t\t\t\t\t\t? `the condition \"${conditions[0]}\"`\n\t\t\t\t\t\t\t: `the conditions ${JSON.stringify(conditions)}`;\n\t\t\t\t\treturn callback(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`\"${remainingRequest}\" is not exported under ${conditionsStr} from package ${request.descriptionFileRoot} (see exports field in ${request.descriptionFilePath})`,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// When `restrictions` are configured, share a marker down the\n\t\t\t\t// chain so RestrictionsPlugin can tell us it filtered out an\n\t\t\t\t// otherwise-valid target — then we fall back instead of erroring.\n\t\t\t\tconst restrictionsMarker = this.restrictions\n\t\t\t\t\t? { blocked: false }\n\t\t\t\t\t: undefined;\n\n\t\t\t\tforEachBail(\n\t\t\t\t\tpaths,\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {string} path path\n\t\t\t\t\t * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback\n\t\t\t\t\t * @param {number} i index\n\t\t\t\t\t * @returns {void}\n\t\t\t\t\t */\n\t\t\t\t\t(path, callback, i) => {\n\t\t\t\t\t\tconst parsedIdentifier = parseIdentifier(path);\n\n\t\t\t\t\t\tif (!parsedIdentifier) return callback();\n\n\t\t\t\t\t\tconst [relativePath, query, fragment] = parsedIdentifier;\n\n\t\t\t\t\t\tif (!relativePath.startsWith(\"./\")) {\n\t\t\t\t\t\t\tif (paths.length === i) {\n\t\t\t\t\t\t\t\treturn callback(\n\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t`Invalid \"exports\" target \"${path}\" defined for \"${usedField}\" in the package config ${request.descriptionFilePath}, targets must start with \"./\"`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn callback();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst withoutDotSlash = relativePath.slice(2);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tinvalidSegmentRegEx.test(withoutDotSlash) &&\n\t\t\t\t\t\t\tdeprecatedInvalidSegmentRegEx.test(withoutDotSlash)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (paths.length === i) {\n\t\t\t\t\t\t\t\treturn callback(\n\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t`Invalid \"exports\" target \"${path}\" defined for \"${usedField}\" in the package config ${request.descriptionFilePath}, targets must start with \"./\"`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn callback();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\trequest: undefined,\n\t\t\t\t\t\t\tpath: resolver.join(\n\t\t\t\t\t\t\t\t/** @type {string} */ (request.descriptionFileRoot),\n\t\t\t\t\t\t\t\trelativePath,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\trelativePath,\n\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\tfragment,\n\t\t\t\t\t\t};\n\t\t\t\t\t\t// Attach the marker only when restrictions are configured, so\n\t\t\t\t\t\t// resolves without restrictions keep their request shape and\n\t\t\t\t\t\t// never leak the property onto the result.\n\t\t\t\t\t\tif (restrictionsMarker) {\n\t\t\t\t\t\t\tobj.__restrictionsMarker = restrictionsMarker;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\t`using exports field: ${path}`,\n\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\t\t// Don't allow to continue - https://github.com/webpack/enhanced-resolve/issues/400\n\t\t\t\t\t\t\t\tif (result === undefined) return callback(null, null);\n\t\t\t\t\t\t\t\tcallback(null, result);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {(null | Error)=} err error\n\t\t\t\t\t * @param {(null | ResolveRequest)=} result result\n\t\t\t\t\t * @returns {void}\n\t\t\t\t\t */\n\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t// When an exports field match was found but the target file doesn't exist,\n\t\t\t\t\t\t// return an error to prevent fallback to parent node_modules directories.\n\t\t\t\t\t\t// Per the Node.js ESM spec, a matched exports entry that fails to resolve\n\t\t\t\t\t\t// is a hard error, not a signal to continue searching up the directory tree.\n\t\t\t\t\t\t// See: https://github.com/webpack/enhanced-resolve/issues/399\n\t\t\t\t\t\tif (!result) {\n\t\t\t\t\t\t\t// Exception: the target existed but `restrictions` filtered it\n\t\t\t\t\t\t\t// out — return no result so the next `modules` entry is tried.\n\t\t\t\t\t\t\tif (restrictionsMarker && restrictionsMarker.blocked) {\n\t\t\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn callback(\n\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t`Package path ${remainingRequest} is exported from package ${request.descriptionFileRoot}, but no valid target file was found (see exports field in ${request.descriptionFilePath})`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Drop the internal marker before it reaches the result.\n\t\t\t\t\t\tif (restrictionsMarker) delete result.__restrictionsMarker;\n\t\t\t\t\t\tcallback(null, result);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Ivan Kopeykin @vankop\n*/\n\n\"use strict\";\n\nconst forEachBail = require(\"./forEachBail\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {{ alias: string | string[], extension: string }} ExtensionAliasOption */\n\nmodule.exports = class ExtensionAliasPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {ExtensionAliasOption} options options\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, options, target) {\n\t\tthis.source = source;\n\t\tthis.options = options;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tconst { extension, alias } = this.options;\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"ExtensionAliasPlugin\", (request, resolveContext, callback) => {\n\t\t\t\t// Two modes of operation:\n\t\t\t\t// - \"request\" mode: original request specifier still carries the\n\t\t\t\t//   extension (e.g. user wrote `./foo.js`). We swap the extension\n\t\t\t\t//   on `request.request` and re-resolve.\n\t\t\t\t// - \"path\" mode: the specifier has already been joined into an\n\t\t\t\t//   absolute `request.path` (e.g. produced by the imports field).\n\t\t\t\t//   We swap the extension on `request.path` and `request.relativePath`.\n\t\t\t\tconst useRequest = request.request !== undefined;\n\t\t\t\tconst source = useRequest\n\t\t\t\t\t? /** @type {string} */ (request.request)\n\t\t\t\t\t: request.path;\n\t\t\t\tif (!source || !source.endsWith(extension)) return callback();\n\t\t\t\tconst isAliasString = typeof alias === \"string\";\n\t\t\t\t// Hoist the base (everything before the old extension) out of the\n\t\t\t\t// per-alias `resolve` callback. For an array `alias`, the callback\n\t\t\t\t// runs once per candidate extension; the base does not change\n\t\t\t\t// between iterations, so there's no reason to recompute it.\n\t\t\t\tconst sourceBase = source.slice(0, -extension.length);\n\t\t\t\tconst relativePathBase =\n\t\t\t\t\t!useRequest &&\n\t\t\t\t\trequest.relativePath &&\n\t\t\t\t\trequest.relativePath.endsWith(extension)\n\t\t\t\t\t\t? request.relativePath.slice(0, -extension.length)\n\t\t\t\t\t\t: null;\n\t\t\t\t/**\n\t\t\t\t * @param {string} alias extension alias\n\t\t\t\t * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback\n\t\t\t\t * @param {number=} index index\n\t\t\t\t * @returns {void}\n\t\t\t\t */\n\t\t\t\tconst resolve = (alias, callback, index) => {\n\t\t\t\t\tconst newValue = `${sourceBase}${alias}`;\n\t\t\t\t\tconst nextRequest = useRequest\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\t\trequest: newValue,\n\t\t\t\t\t\t\t\tfullySpecified: true,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\t\tpath: newValue,\n\t\t\t\t\t\t\t\trelativePath:\n\t\t\t\t\t\t\t\t\trelativePathBase !== null\n\t\t\t\t\t\t\t\t\t\t? `${relativePathBase}${alias}`\n\t\t\t\t\t\t\t\t\t\t: request.relativePath,\n\t\t\t\t\t\t\t\tfullySpecified: true,\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\treturn resolver.doResolve(\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\tnextRequest,\n\t\t\t\t\t\t`aliased from extension alias with mapping '${extension}' to '${alias}'`,\n\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\t// Throw error if we are on the last alias (for multiple aliases) and it failed, always throw if we are not an array or we have only one alias\n\t\t\t\t\t\t\tif (!isAliasString && index) {\n\t\t\t\t\t\t\t\tif (index !== this.options.alias.length) {\n\t\t\t\t\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t\t\t\t\t`Failed to alias from extension alias with mapping '${extension}' to '${alias}' for '${newValue}': ${err}`,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn callback(null, result);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn callback(err, result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcallback(err, result);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\t * @param {(null | Error)=} err error\n\t\t\t\t * @param {(null | ResolveRequest)=} result result\n\t\t\t\t * @returns {void}\n\t\t\t\t */\n\t\t\t\tconst stoppingCallback = (err, result) => {\n\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\tif (result) return callback(null, result);\n\t\t\t\t\t// Don't allow other aliasing or raw request\n\t\t\t\t\treturn callback(null, null);\n\t\t\t\t};\n\t\t\t\tif (isAliasString) {\n\t\t\t\t\tresolve(alias, stoppingCallback);\n\t\t\t\t} else if (alias.length > 1) {\n\t\t\t\t\tforEachBail(alias, resolve, stoppingCallback);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(alias[0], stoppingCallback);\n\t\t\t\t}\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class FileExistsPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, target) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tconst fs = resolver.fileSystem;\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"FileExistsPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tconst file = request.path;\n\t\t\t\tif (!file) return callback();\n\t\t\t\tfs.stat(file, (err, stat) => {\n\t\t\t\t\t// Combine the two miss branches: a stat failure and a\n\t\t\t\t\t// \"not a file\" result share the same handling — record the\n\t\t\t\t\t// path on `missingDependencies`, log the right reason, then\n\t\t\t\t\t// bail. The error-message ternary picks the wording that\n\t\t\t\t\t// matched the failing condition.\n\t\t\t\t\tif (err || !stat || !stat.isFile()) {\n\t\t\t\t\t\tif (resolveContext.missingDependencies) {\n\t\t\t\t\t\t\tresolveContext.missingDependencies.add(file);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t\terr || !stat\n\t\t\t\t\t\t\t\t\t? `${file} doesn't exist`\n\t\t\t\t\t\t\t\t\t: `${file} is not a file`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn callback();\n\t\t\t\t\t}\n\t\t\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\t\t\tresolveContext.fileDependencies.add(file);\n\t\t\t\t\t}\n\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\t`existing file: ${file}`,\n\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\tcallback,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Ivan Kopeykin @vankop\n*/\n\n\"use strict\";\n\nconst DescriptionFileUtils = require(\"./DescriptionFileUtils\");\nconst forEachBail = require(\"./forEachBail\");\nconst { processImportsField } = require(\"./util/entrypoints\");\nconst { parseIdentifier } = require(\"./util/identifier\");\nconst { invalidSegmentRegEx } = require(\"./util/path\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").JsonObject} JsonObject */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {import(\"./util/entrypoints\").FieldProcessor} FieldProcessor */\n/** @typedef {import(\"./util/entrypoints\").ImportsField} ImportsField */\n\nconst dotCode = \".\".charCodeAt(0);\n\nmodule.exports = class ImportsFieldPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {Set<string>} conditionNames condition names\n\t * @param {string | string[]} fieldNamePath name path\n\t * @param {string | ResolveStepHook} targetFile target file\n\t * @param {string | ResolveStepHook} targetPackage target package\n\t */\n\tconstructor(\n\t\tsource,\n\t\tconditionNames,\n\t\tfieldNamePath,\n\t\ttargetFile,\n\t\ttargetPackage,\n\t) {\n\t\tthis.source = source;\n\t\tthis.targetFile = targetFile;\n\t\tthis.targetPackage = targetPackage;\n\t\tthis.conditionNames = conditionNames;\n\t\tthis.fieldName = fieldNamePath;\n\t\t// `null` is cached for description files that have no imports field,\n\t\t// so subsequent resolves against the same package.json skip the\n\t\t// `DescriptionFileUtils.getField` walk entirely.\n\t\t/** @type {WeakMap<JsonObject, FieldProcessor | null>} */\n\t\tthis._fieldProcessorCache = new WeakMap();\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst targetFile = resolver.ensureHook(this.targetFile);\n\t\tconst targetPackage = resolver.ensureHook(this.targetPackage);\n\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"ImportsFieldPlugin\", (request, resolveContext, callback) => {\n\t\t\t\t// When there is no description file, abort\n\t\t\t\tif (!request.descriptionFileData || request.request === undefined) {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\n\t\t\t\tconst { descriptionFileData } = request;\n\t\t\t\t// Skip the concat when there's nothing to append — the common\n\t\t\t\t// case has empty query/fragment, so this avoids an allocation\n\t\t\t\t// per resolve. Mirrors the pattern in ExportsFieldPlugin.\n\t\t\t\tconst remainingRequest =\n\t\t\t\t\trequest.query || request.fragment\n\t\t\t\t\t\t? request.request + request.query + request.fragment\n\t\t\t\t\t\t: request.request;\n\n\t\t\t\t/** @type {string[]} */\n\t\t\t\tlet paths;\n\t\t\t\t/** @type {string | null} */\n\t\t\t\tlet usedField;\n\n\t\t\t\ttry {\n\t\t\t\t\t// Look up the cached processor first. On a cache hit we\n\t\t\t\t\t// avoid re-walking the description file for the imports\n\t\t\t\t\t// field — and `null` is cached for description files that\n\t\t\t\t\t// have no imports field at all, so those skip the read\n\t\t\t\t\t// entirely. `processImportsField` can throw on a\n\t\t\t\t\t// malformed `imports` map, so building the processor must\n\t\t\t\t\t// stay inside this try/catch.\n\t\t\t\t\tlet fieldProcessor =\n\t\t\t\t\t\tthis._fieldProcessorCache.get(descriptionFileData);\n\t\t\t\t\tif (\n\t\t\t\t\t\tfieldProcessor === undefined &&\n\t\t\t\t\t\t!this._fieldProcessorCache.has(descriptionFileData)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst importsField =\n\t\t\t\t\t\t\t/** @type {ImportsField | null | undefined} */\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tDescriptionFileUtils.getField(\n\t\t\t\t\t\t\t\t\tdescriptionFileData,\n\t\t\t\t\t\t\t\t\tthis.fieldName,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tfieldProcessor = importsField\n\t\t\t\t\t\t\t? processImportsField(importsField)\n\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\tthis._fieldProcessorCache.set(descriptionFileData, fieldProcessor);\n\t\t\t\t\t}\n\t\t\t\t\tif (!fieldProcessor) return callback();\n\n\t\t\t\t\tif (request.directory) {\n\t\t\t\t\t\treturn callback(\n\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t`Resolving to directories is not possible with the imports field (request was ${remainingRequest}/)`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t[paths, usedField] = fieldProcessor(\n\t\t\t\t\t\tremainingRequest,\n\t\t\t\t\t\tthis.conditionNames,\n\t\t\t\t\t);\n\t\t\t\t} catch (/** @type {unknown} */ err) {\n\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t`Imports field in ${request.descriptionFilePath} can't be processed: ${err}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn callback(/** @type {Error} */ (err));\n\t\t\t\t}\n\n\t\t\t\tif (paths.length === 0) {\n\t\t\t\t\treturn callback(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t`Package import ${remainingRequest} is not imported from package ${request.descriptionFileRoot} (see imports field in ${request.descriptionFilePath})`,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tforEachBail(\n\t\t\t\t\tpaths,\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {string} path path\n\t\t\t\t\t * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback\n\t\t\t\t\t * @param {number} i index\n\t\t\t\t\t * @returns {void}\n\t\t\t\t\t */\n\t\t\t\t\t(path, callback, i) => {\n\t\t\t\t\t\tconst parsedIdentifier = parseIdentifier(path);\n\n\t\t\t\t\t\tif (!parsedIdentifier) return callback();\n\n\t\t\t\t\t\tconst [path_, query, fragment] = parsedIdentifier;\n\n\t\t\t\t\t\tswitch (path_.charCodeAt(0)) {\n\t\t\t\t\t\t\t// should be relative\n\t\t\t\t\t\t\tcase dotCode: {\n\t\t\t\t\t\t\t\tconst withoutDotSlash = path_.slice(2);\n\t\t\t\t\t\t\t\tif (invalidSegmentRegEx.test(withoutDotSlash)) {\n\t\t\t\t\t\t\t\t\tif (paths.length === i) {\n\t\t\t\t\t\t\t\t\t\treturn callback(\n\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t`Invalid \"imports\" target \"${path}\" defined for \"${usedField}\" in the package config ${request.descriptionFilePath}, targets must start with \"./\"`,\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn callback();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\t\t\trequest: undefined,\n\t\t\t\t\t\t\t\t\tpath: resolver.join(\n\t\t\t\t\t\t\t\t\t\t/** @type {string} */ (request.descriptionFileRoot),\n\t\t\t\t\t\t\t\t\t\tpath_,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\trelativePath: path_,\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tfragment,\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\t\t\t\ttargetFile,\n\t\t\t\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\t\t\t`using imports field: ${path}`,\n\t\t\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\t\t\t\t// Don't allow to continue - https://github.com/webpack/enhanced-resolve/issues/400\n\t\t\t\t\t\t\t\t\t\tif (result === undefined) return callback(null, null);\n\t\t\t\t\t\t\t\t\t\tcallback(null, result);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// package resolving\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\t\t\trequest: path_,\n\t\t\t\t\t\t\t\t\trelativePath: path_,\n\t\t\t\t\t\t\t\t\tfullySpecified: true,\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tfragment,\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\t\t\t\ttargetPackage,\n\t\t\t\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\t\t\t`using imports field: ${path}`,\n\t\t\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\t\t\t\t// Don't allow to continue - https://github.com/webpack/enhanced-resolve/issues/400\n\t\t\t\t\t\t\t\t\t\tif (result === undefined) return callback(null, null);\n\t\t\t\t\t\t\t\t\t\tcallback(null, result);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {null | Error=} err error\n\t\t\t\t\t * @param {null | ResolveRequest=} result result\n\t\t\t\t\t * @returns {void}\n\t\t\t\t\t */\n\t\t\t\t\t(err, result) => callback(err, result || null),\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nconst namespaceStartCharCode = \"@\".charCodeAt(0);\n\nmodule.exports = class JoinRequestPartPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, target) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\n\t\t\t\t\"JoinRequestPartPlugin\",\n\t\t\t\t(request, resolveContext, callback) => {\n\t\t\t\t\tconst req = request.request || \"\";\n\t\t\t\t\tlet i = req.indexOf(\"/\", 3);\n\n\t\t\t\t\tif (i >= 0 && req.charCodeAt(2) === namespaceStartCharCode) {\n\t\t\t\t\t\ti = req.indexOf(\"/\", i + 1);\n\t\t\t\t\t}\n\n\t\t\t\t\t/** @type {string} */\n\t\t\t\t\tlet moduleName;\n\t\t\t\t\t/** @type {string} */\n\t\t\t\t\tlet remainingRequest;\n\t\t\t\t\t/** @type {boolean} */\n\t\t\t\t\tlet fullySpecified;\n\t\t\t\t\tif (i < 0) {\n\t\t\t\t\t\tmoduleName = req;\n\t\t\t\t\t\tremainingRequest = \".\";\n\t\t\t\t\t\tfullySpecified = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmoduleName = req.slice(0, i);\n\t\t\t\t\t\tremainingRequest = `.${req.slice(i)}`;\n\t\t\t\t\t\tfullySpecified = /** @type {boolean} */ (request.fullySpecified);\n\t\t\t\t\t}\n\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t...request,\n\t\t\t\t\t\tpath: resolver.join(\n\t\t\t\t\t\t\t/** @type {string} */\n\t\t\t\t\t\t\t(request.path),\n\t\t\t\t\t\t\tmoduleName,\n\t\t\t\t\t\t),\n\t\t\t\t\t\trelativePath:\n\t\t\t\t\t\t\trequest.relativePath &&\n\t\t\t\t\t\t\tresolver.join(request.relativePath, moduleName),\n\t\t\t\t\t\trequest: remainingRequest,\n\t\t\t\t\t\tfullySpecified,\n\t\t\t\t\t};\n\t\t\t\t\tresolver.doResolve(target, obj, null, resolveContext, callback);\n\t\t\t\t},\n\t\t\t);\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class JoinRequestPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, target) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"JoinRequestPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tconst requestPath = /** @type {string} */ (request.path);\n\t\t\t\tconst requestRequest = /** @type {string} */ (request.request);\n\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\tconst obj = {\n\t\t\t\t\t...request,\n\t\t\t\t\tpath: resolver.join(requestPath, requestRequest),\n\t\t\t\t\trelativePath:\n\t\t\t\t\t\trequest.relativePath &&\n\t\t\t\t\t\tresolver.join(request.relativePath, requestRequest),\n\t\t\t\t\trequest: undefined,\n\t\t\t\t};\n\t\t\t\tresolver.doResolve(target, obj, null, resolveContext, callback);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst DescriptionFileUtils = require(\"./DescriptionFileUtils\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").JsonObject} JsonObject */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\n/** @typedef {{ name: string | string[], forceRelative: boolean }} MainFieldOptions */\n\nconst alreadyTriedMainField = Symbol(\"alreadyTriedMainField\");\n\n// Sentinel cached for description files where the main field resolves to a\n// value we cannot use (missing, non-string, \".\", \"./\"). Cheaper to store and\n// check than to re-walk the description file on every resolve.\nconst NO_MAIN = Symbol(\"NoMain\");\n\nmodule.exports = class MainFieldPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {MainFieldOptions} options options\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, options, target) {\n\t\tthis.source = source;\n\t\tthis.options = options;\n\t\tthis.target = target;\n\t\t// Cache the resolved `mainModule` per description-file content. The\n\t\t// options (`name`, `forceRelative`) are fixed for this plugin\n\t\t// instance, so caching against content alone is safe. Stores either\n\t\t// the ready-to-use request string or the `NO_MAIN` sentinel.\n\t\t/** @type {WeakMap<JsonObject, string | typeof NO_MAIN>} */\n\t\tthis._mainModuleCache = new WeakMap();\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"MainFieldPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tif (\n\t\t\t\t\trequest.path !== request.descriptionFileRoot ||\n\t\t\t\t\t/** @type {ResolveRequest & { [alreadyTriedMainField]?: string }} */\n\t\t\t\t\t(request)[alreadyTriedMainField] === request.descriptionFilePath ||\n\t\t\t\t\t!request.descriptionFilePath\n\t\t\t\t) {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\t\t\t\tconst descFileData = /** @type {JsonObject} */ (\n\t\t\t\t\trequest.descriptionFileData\n\t\t\t\t);\n\t\t\t\tlet mainModule = this._mainModuleCache.get(descFileData);\n\t\t\t\tif (mainModule === undefined) {\n\t\t\t\t\tlet raw =\n\t\t\t\t\t\t/** @type {string | null | undefined} */\n\t\t\t\t\t\t(DescriptionFileUtils.getField(descFileData, this.options.name));\n\t\t\t\t\tif (!raw || typeof raw !== \"string\" || raw === \".\" || raw === \"./\") {\n\t\t\t\t\t\tthis._mainModuleCache.set(descFileData, NO_MAIN);\n\t\t\t\t\t\treturn callback();\n\t\t\t\t\t}\n\t\t\t\t\tif (this.options.forceRelative && !/^\\.\\.?\\//.test(raw)) {\n\t\t\t\t\t\traw = `./${raw}`;\n\t\t\t\t\t}\n\t\t\t\t\tmainModule = raw;\n\t\t\t\t\tthis._mainModuleCache.set(descFileData, mainModule);\n\t\t\t\t} else if (mainModule === NO_MAIN) {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\t\t\t\tconst filename = resolver.basename(request.descriptionFilePath);\n\t\t\t\t/** @type {ResolveRequest & { [alreadyTriedMainField]?: string }} */\n\t\t\t\tconst obj = {\n\t\t\t\t\t...request,\n\t\t\t\t\trequest: mainModule,\n\t\t\t\t\tmodule: false,\n\t\t\t\t\tdirectory: mainModule.endsWith(\"/\"),\n\t\t\t\t\t[alreadyTriedMainField]: request.descriptionFilePath,\n\t\t\t\t};\n\t\t\t\treturn resolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\tobj,\n\t\t\t\t\t`use ${mainModule} from ${this.options.name} in ${filename}`,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\").FileSystem} FileSystem */\n/** @typedef {{ paths: string[], segments: string[] }} GetPathsResult */\n\n/**\n * Walk `path` from tip to root, returning every ancestor directory (plus the\n * input itself) in `paths`, and each corresponding segment name in `segments`.\n *\n * The return value may be shared across callers via `getPathsCached` — treat\n * it as read-only. Callers that need to mutate (currently only\n * `SymlinkPlugin`) should `slice()` the arrays locally before writing.\n * @param {string} path path\n * @returns {GetPathsResult} paths and segments\n */\nfunction getPaths(path) {\n\tif (path === \"/\") return { paths: [\"/\"], segments: [\"\"] };\n\tconst parts = path.split(/(.*?[\\\\/]+)/);\n\tconst paths = [path];\n\tconst segments = [parts[parts.length - 1]];\n\tlet part = parts[parts.length - 1];\n\tpath = path.slice(0, Math.max(0, path.length - part.length - 1));\n\tfor (let i = parts.length - 2; i > 2; i -= 2) {\n\t\tpaths.push(path);\n\t\tpart = parts[i];\n\t\tpath = path.slice(0, Math.max(0, path.length - part.length)) || \"/\";\n\t\tsegments.push(part.slice(0, -1));\n\t}\n\t[, part] = parts;\n\tsegments.push(part);\n\tpaths.push(part);\n\treturn {\n\t\tpaths,\n\t\tsegments,\n\t};\n}\n\n/**\n * Per-filesystem memoization of `getPaths`. Kept in a standalone WeakMap\n * rather than being hung off `resolver.pathCache` so that adding this cache\n * does not change the hidden-class shape of `pathCache` — which is accessed\n * on the hot path of every resolve as `resolver.pathCache.{join,dirname,\n * basename}.fn(...)`. CodSpeed caught that shape change as a ~1–2%\n * instruction-count regression on `cache-predicate`, so we keep pathCache\n * shape-stable by owning this cache here instead.\n *\n * The cache lifetime is tied to the filesystem object (same invariant as\n * `_pathCacheByFs` in `Resolver.js`): when the user swaps filesystems the\n * entries become unreachable and get collected.\n * @type {WeakMap<FileSystem, Map<string, GetPathsResult>>}\n */\nconst _getPathsCacheByFs = new WeakMap();\n\n/**\n * Memoized `getPaths`. The returned object is shared across callers — do\n * not mutate the `paths` or `segments` arrays in-place; `slice()` first if\n * you need a mutable copy.\n * @param {FileSystem} fileSystem filesystem used as the cache namespace\n * @param {string} path path\n * @returns {GetPathsResult} paths and segments\n */\nfunction getPathsCached(fileSystem, path) {\n\tlet cache = _getPathsCacheByFs.get(fileSystem);\n\tif (cache === undefined) {\n\t\tcache = new Map();\n\t\t_getPathsCacheByFs.set(fileSystem, cache);\n\t} else {\n\t\tconst cached = cache.get(path);\n\t\tif (cached !== undefined) return cached;\n\t}\n\tconst result = getPaths(path);\n\tcache.set(path, result);\n\treturn result;\n}\n\nmodule.exports = getPaths;\nmodule.exports.getPathsCached = getPathsCached;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst forEachBail = require(\"./forEachBail\");\nconst { getPathsCached } = require(\"./getPaths\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {import(\"./Resolver\").ResolveContext} ResolveContext */\n/** @typedef {(err?: null | Error, result?: null | ResolveRequest) => void} InnerCallback */\n\n/**\n * Per-(directories-array) cache of the flat `addrs` list produced for a given\n * `request.path`. For a fixed directories configuration the fan-out of\n * `ancestor × directory` is deterministic per request.path, and many resolves\n * share the same starting directory (sibling files in one project, loops over\n * a batch of imports, etc.) — caching avoids the `getPaths` regex split plus\n * `len(paths) × len(directories)` join calls per resolve.\n *\n * The outer map is keyed on the directories array reference (plugin-owned,\n * stable for the lifetime of the resolver), and the inner map on the\n * starting `request.path`. Kept private to this module (rather than hung off\n * `resolver.pathCache`) so the pathCache's hidden-class shape is unchanged —\n * that avoids perturbing the interpreter-mode IC state for the\n * `resolver.pathCache.{join,dirname,basename}.fn(...)` accesses that run on\n * every resolve, which the CodSpeed instruction-count harness is sensitive to.\n * @type {WeakMap<string[], Map<string, string[]>>}\n */\nconst _addrsCacheByDirs = new WeakMap();\n\n/**\n * @param {Resolver} resolver resolver\n * @param {string[]} directories directories\n * @param {ResolveStepHook} target target\n * @param {ResolveRequest} request request\n * @param {ResolveContext} resolveContext resolve context\n * @param {InnerCallback} callback callback\n * @returns {void}\n */\nfunction modulesResolveHandler(\n\tresolver,\n\tdirectories,\n\ttarget,\n\trequest,\n\tresolveContext,\n\tcallback,\n) {\n\tconst fs = resolver.fileSystem;\n\tconst requestPath = /** @type {string} */ (request.path);\n\t// Compute-or-reuse the flat `addrs` list. Inlined (rather than a helper\n\t// function) so the cache-hit path — which is the vast majority of\n\t// invocations — stays a single WeakMap + Map lookup with no function-call\n\t// overhead. See `_addrsCacheByDirs` above for caching rationale.\n\tlet addrs;\n\tlet perPath = _addrsCacheByDirs.get(directories);\n\tif (perPath === undefined) {\n\t\tperPath = new Map();\n\t\t_addrsCacheByDirs.set(directories, perPath);\n\t} else {\n\t\taddrs = perPath.get(requestPath);\n\t}\n\tif (addrs === undefined) {\n\t\tconst { paths } = getPathsCached(fs, requestPath);\n\t\tconst pathsLen = paths.length;\n\t\tconst dirsLen = directories.length;\n\t\t// Pre-size the flat array rather than going through `map().reduce()`\n\t\t// with intermediate arrays + spreads.\n\t\t// eslint-disable-next-line unicorn/no-new-array\n\t\taddrs = new Array(pathsLen * dirsLen);\n\t\tlet idx = 0;\n\t\tconst joinFn = resolver.pathCache.join.fn;\n\t\tfor (let pi = 0; pi < pathsLen; pi++) {\n\t\t\tconst pathItem = paths[pi];\n\t\t\tfor (let di = 0; di < dirsLen; di++) {\n\t\t\t\taddrs[idx++] = joinFn(pathItem, directories[di]);\n\t\t\t}\n\t\t}\n\t\tperPath.set(requestPath, addrs);\n\t}\n\t// Hoist the dot-prefixed request out of the per-addr iterator. `addrs`\n\t// can have up to `paths.length × directories.length` entries (e.g. 36\n\t// for an 8-deep source dir × 4-module config), and concatenating the\n\t// same `./${request.request}` string on every iteration is wasted\n\t// work — it's constant for the whole fan-out.\n\tconst relRequest = `./${request.request}`;\n\tforEachBail(\n\t\taddrs,\n\t\t/**\n\t\t * @param {string} addr addr\n\t\t * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback\n\t\t * @returns {void}\n\t\t */\n\t\t(addr, callback) => {\n\t\t\tfs.stat(addr, (err, stat) => {\n\t\t\t\tif (!err && stat && stat.isDirectory()) {\n\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t...request,\n\t\t\t\t\t\tpath: addr,\n\t\t\t\t\t\trequest: relRequest,\n\t\t\t\t\t\tmodule: false,\n\t\t\t\t\t};\n\t\t\t\t\tconst message = `looking for modules in ${addr}`;\n\t\t\t\t\treturn resolver.doResolve(\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\tobj,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\tcallback,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\tresolveContext.log(`${addr} doesn't exist or is not a directory`);\n\t\t\t\t}\n\t\t\t\tif (resolveContext.missingDependencies) {\n\t\t\t\t\tresolveContext.missingDependencies.add(addr);\n\t\t\t\t}\n\t\t\t\treturn callback();\n\t\t\t});\n\t\t},\n\t\tcallback,\n\t);\n}\n\nmodule.exports = {\n\tmodulesResolveHandler,\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst { modulesResolveHandler } = require(\"./ModulesUtils\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class ModulesInHierarchicalDirectoriesPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | string[]} directories directories\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, directories, target) {\n\t\tthis.source = source;\n\t\tthis.directories = /** @type {string[]} */ [...directories];\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\n\t\t\t\t\"ModulesInHierarchicalDirectoriesPlugin\",\n\t\t\t\t(request, resolveContext, callback) => {\n\t\t\t\t\tmodulesResolveHandler(\n\t\t\t\t\t\tresolver,\n\t\t\t\t\t\tthis.directories,\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\tcallback,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class ModulesInRootPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string} path path\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, path, target) {\n\t\tthis.source = source;\n\t\tthis.path = path;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"ModulesInRootPlugin\", (request, resolveContext, callback) => {\n\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\tconst obj = {\n\t\t\t\t\t...request,\n\t\t\t\t\tpath: this.path,\n\t\t\t\t\trequest: `./${request.request}`,\n\t\t\t\t\tmodule: false,\n\t\t\t\t};\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\tobj,\n\t\t\t\t\t`looking for modules in ${this.path}`,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class NextPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, target) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"NextPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tresolver.doResolve(target, request, null, resolveContext, callback);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class ParsePlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {Partial<ResolveRequest>} requestOptions request options\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, requestOptions, target) {\n\t\tthis.source = source;\n\t\tthis.requestOptions = requestOptions;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tconst { requestOptions } = this;\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"ParsePlugin\", (request, resolveContext, callback) => {\n\t\t\t\tconst parsed = resolver.parse(/** @type {string} */ (request.request));\n\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t// Single spread + direct field assignment instead of\n\t\t\t\t// `{ ...request, ...parsed, ...requestOptions }` — avoids\n\t\t\t\t// two extra property enumerations on every resolve.\n\t\t\t\t// Keep in sync with Resolver.parse() output shape.\n\t\t\t\tconst obj = { ...request };\n\t\t\t\tobj.request = parsed.request;\n\t\t\t\tobj.query = parsed.query || request.query || \"\";\n\t\t\t\tobj.fragment = parsed.fragment || request.fragment || \"\";\n\t\t\t\tobj.module = parsed.module;\n\t\t\t\tobj.directory = parsed.directory;\n\t\t\t\tobj.file = parsed.file;\n\t\t\t\tobj.internal = parsed.internal;\n\t\t\t\tObject.assign(obj, requestOptions);\n\t\t\t\tif (parsed && resolveContext.log) {\n\t\t\t\t\tif (parsed.module) resolveContext.log(\"Parsed request is a module\");\n\t\t\t\t\tif (parsed.directory) {\n\t\t\t\t\t\tresolveContext.log(\"Parsed request is a directory\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// There is an edge-case where a request with # can be a path or a fragment -> try both\n\t\t\t\tif (obj.request && !obj.query && obj.fragment) {\n\t\t\t\t\tconst directory = obj.fragment.endsWith(\"/\");\n\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\tconst alternative = {\n\t\t\t\t\t\t...obj,\n\t\t\t\t\t\tdirectory,\n\t\t\t\t\t\trequest:\n\t\t\t\t\t\t\tobj.request +\n\t\t\t\t\t\t\t(obj.directory ? \"/\" : \"\") +\n\t\t\t\t\t\t\t(directory ? obj.fragment.slice(0, -1) : obj.fragment),\n\t\t\t\t\t\tfragment: \"\",\n\t\t\t\t\t};\n\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\talternative,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\tif (result) return callback(null, result);\n\t\t\t\t\t\t\tresolver.doResolve(target, obj, null, resolveContext, callback);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolver.doResolve(target, obj, null, resolveContext, callback);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Maël Nison @arcanis\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/**\n * @typedef {object} PnpApiImpl\n * @property {(packageName: string, issuer: string, options: { considerBuiltins: boolean }) => string | null} resolveToUnqualified resolve to unqualified\n */\n\nmodule.exports = class PnpPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {PnpApiImpl} pnpApi pnpApi\n\t * @param {string | ResolveStepHook} target target\n\t * @param {string | ResolveStepHook} alternateTarget alternateTarget\n\t */\n\tconstructor(source, pnpApi, target, alternateTarget) {\n\t\tthis.source = source;\n\t\tthis.pnpApi = pnpApi;\n\t\tthis.target = target;\n\t\tthis.alternateTarget = alternateTarget;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\t/** @type {ResolveStepHook} */\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tconst alternateTarget = resolver.ensureHook(this.alternateTarget);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"PnpPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tconst req = request.request;\n\t\t\t\tif (!req) return callback();\n\n\t\t\t\t// The trailing slash indicates to PnP that this value is a folder rather than a file\n\t\t\t\tconst issuer = `${request.path}/`;\n\n\t\t\t\tconst packageMatch = /^(@[^/]+\\/)?[^/]+/.exec(req);\n\t\t\t\tif (!packageMatch) return callback();\n\n\t\t\t\tconst [packageName] = packageMatch;\n\t\t\t\tconst innerRequest = `.${req.slice(packageName.length)}`;\n\n\t\t\t\t/** @type {string | undefined | null} */\n\t\t\t\tlet resolution;\n\t\t\t\t/** @type {string | undefined | null} */\n\t\t\t\tlet apiResolution;\n\t\t\t\ttry {\n\t\t\t\t\tresolution = this.pnpApi.resolveToUnqualified(packageName, issuer, {\n\t\t\t\t\t\tconsiderBuiltins: false,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (resolution === null) {\n\t\t\t\t\t\t// This is either not a PnP managed issuer or it's a Node builtin\n\t\t\t\t\t\t// Try to continue resolving with our alternatives\n\t\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\t\talternateTarget,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t\t\"issuer is not managed by a pnpapi\",\n\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\t\tif (result) return callback(null, result);\n\t\t\t\t\t\t\t\t// Skip alternatives\n\t\t\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\t\t\tapiResolution = this.pnpApi.resolveToUnqualified(\"pnpapi\", issuer, {\n\t\t\t\t\t\t\tconsiderBuiltins: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (/** @type {unknown} */ error) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t/** @type {Error & { code: string }} */\n\t\t\t\t\t\t(error).code === \"MODULE_NOT_FOUND\" &&\n\t\t\t\t\t\t/** @type {Error & { pnpCode: string }} */\n\t\t\t\t\t\t(error).pnpCode === \"UNDECLARED_DEPENDENCY\"\n\t\t\t\t\t) {\n\t\t\t\t\t\t// This is not a PnP managed dependency.\n\t\t\t\t\t\t// Try to continue resolving with our alternatives\n\t\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\t\tresolveContext.log(\"request is not managed by the pnpapi\");\n\t\t\t\t\t\t\tfor (const line of /** @type {Error} */ (error).message\n\t\t\t\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t\t\t\t.filter(Boolean)) {\n\t\t\t\t\t\t\t\tresolveContext.log(`  ${line}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn callback();\n\t\t\t\t\t}\n\t\t\t\t\treturn callback(/** @type {Error} */ (error));\n\t\t\t\t}\n\n\t\t\t\tif (resolution === packageName) return callback();\n\n\t\t\t\tif (apiResolution && resolveContext.fileDependencies) {\n\t\t\t\t\tresolveContext.fileDependencies.add(apiResolution);\n\t\t\t\t}\n\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\tconst obj = {\n\t\t\t\t\t...request,\n\t\t\t\t\tpath: resolution,\n\t\t\t\t\trequest: innerRequest,\n\t\t\t\t\tignoreSymlinks: true,\n\t\t\t\t\tfullySpecified: request.fullySpecified && innerRequest !== \".\",\n\t\t\t\t};\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\tobj,\n\t\t\t\t\t`resolved by pnp to ${resolution}`,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\tif (result) return callback(null, result);\n\t\t\t\t\t\t// Skip alternatives\n\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst util = require(\"util\");\n\nconst deprecateContext = util.deprecate(\n\t() => {},\n\t\"Hook.context is deprecated and will be removed\"\n);\n\nfunction CALL_DELEGATE(...args) {\n\tthis.call = this._createCall(\"sync\");\n\treturn this.call(...args);\n}\n\nfunction CALL_ASYNC_DELEGATE(...args) {\n\tthis.callAsync = this._createCall(\"async\");\n\treturn this.callAsync(...args);\n}\n\nfunction PROMISE_DELEGATE(...args) {\n\tthis.promise = this._createCall(\"promise\");\n\treturn this.promise(...args);\n}\n\nclass Hook {\n\tconstructor(args = [], name = undefined) {\n\t\tthis._args = args;\n\t\tthis.name = name;\n\t\tthis.taps = [];\n\t\tthis.interceptors = [];\n\t\tthis._call = CALL_DELEGATE;\n\t\tthis.call = CALL_DELEGATE;\n\t\tthis._callAsync = CALL_ASYNC_DELEGATE;\n\t\tthis.callAsync = CALL_ASYNC_DELEGATE;\n\t\tthis._promise = PROMISE_DELEGATE;\n\t\tthis.promise = PROMISE_DELEGATE;\n\t\tthis._x = undefined;\n\n\t\t// eslint-disable-next-line no-self-assign\n\t\tthis.compile = this.compile;\n\t\t// eslint-disable-next-line no-self-assign\n\t\tthis.tap = this.tap;\n\t\t// eslint-disable-next-line no-self-assign\n\t\tthis.tapAsync = this.tapAsync;\n\t\t// eslint-disable-next-line no-self-assign\n\t\tthis.tapPromise = this.tapPromise;\n\t}\n\n\tcompile(_options) {\n\t\tthrow new Error(\"Abstract: should be overridden\");\n\t}\n\n\t_createCall(type) {\n\t\treturn this.compile({\n\t\t\ttaps: this.taps,\n\t\t\tinterceptors: this.interceptors,\n\t\t\targs: this._args,\n\t\t\ttype\n\t\t});\n\t}\n\n\t_tap(type, options, fn) {\n\t\tif (typeof options === \"string\") {\n\t\t\t// Fast path: a string options (\"name\") is by far the most common\n\t\t\t// case. Build the final descriptor in a single allocation instead\n\t\t\t// of creating `{ name }` and then `Object.assign`ing it.\n\t\t\tconst name = options.trim();\n\t\t\tif (name === \"\") {\n\t\t\t\tthrow new Error(\"Missing name for tap\");\n\t\t\t}\n\t\t\toptions = { type, fn, name };\n\t\t} else {\n\t\t\tif (typeof options !== \"object\" || options === null) {\n\t\t\t\tthrow new Error(\"Invalid tap options\");\n\t\t\t}\n\t\t\tlet { name } = options;\n\t\t\tif (typeof name === \"string\") {\n\t\t\t\tname = name.trim();\n\t\t\t}\n\t\t\tif (typeof name !== \"string\" || name === \"\") {\n\t\t\t\tthrow new Error(\"Missing name for tap\");\n\t\t\t}\n\t\t\tif (typeof options.context !== \"undefined\") {\n\t\t\t\tdeprecateContext();\n\t\t\t}\n\t\t\t// Fast path: only `name` is set. Build the descriptor as a literal\n\t\t\t// so `_insert` and downstream consumers see the same hidden class\n\t\t\t// as the string-options path, avoiding a polymorphic call site.\n\t\t\t// Scan with `for...in` (cheaper than allocating `Object.keys`)\n\t\t\t// to verify no other user-provided properties exist - e.g.\n\t\t\t// webpack's `additionalAssets` - otherwise they'd be dropped.\n\t\t\tlet onlyName = true;\n\t\t\tfor (const key in options) {\n\t\t\t\tif (key !== \"name\") {\n\t\t\t\t\tonlyName = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (onlyName) {\n\t\t\t\toptions = { type, fn, name };\n\t\t\t} else {\n\t\t\t\toptions.name = name;\n\t\t\t\t// Preserve previous precedence: user-provided keys win over the internal `type`/`fn`.\n\t\t\t\toptions = Object.assign({ type, fn }, options);\n\t\t\t}\n\t\t}\n\t\toptions = this._runRegisterInterceptors(options);\n\t\tthis._insert(options);\n\t}\n\n\ttap(options, fn) {\n\t\tthis._tap(\"sync\", options, fn);\n\t}\n\n\ttapAsync(options, fn) {\n\t\tthis._tap(\"async\", options, fn);\n\t}\n\n\ttapPromise(options, fn) {\n\t\tthis._tap(\"promise\", options, fn);\n\t}\n\n\t_runRegisterInterceptors(options) {\n\t\tconst { interceptors } = this;\n\t\tconst { length } = interceptors;\n\t\t// Common case: no interceptors.\n\t\tif (length === 0) return options;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst interceptor = interceptors[i];\n\t\t\tif (interceptor.register) {\n\t\t\t\tconst newOptions = interceptor.register(options);\n\t\t\t\tif (newOptions !== undefined) {\n\t\t\t\t\toptions = newOptions;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn options;\n\t}\n\n\twithOptions(options) {\n\t\tconst mergeOptions = (opt) =>\n\t\t\tObject.assign({}, options, typeof opt === \"string\" ? { name: opt } : opt);\n\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\ttap: (opt, fn) => this.tap(mergeOptions(opt), fn),\n\t\t\ttapAsync: (opt, fn) => this.tapAsync(mergeOptions(opt), fn),\n\t\t\ttapPromise: (opt, fn) => this.tapPromise(mergeOptions(opt), fn),\n\t\t\tintercept: (interceptor) => this.intercept(interceptor),\n\t\t\tisUsed: () => this.isUsed(),\n\t\t\twithOptions: (opt) => this.withOptions(mergeOptions(opt))\n\t\t};\n\t}\n\n\tisUsed() {\n\t\treturn this.taps.length > 0 || this.interceptors.length > 0;\n\t}\n\n\tintercept(interceptor) {\n\t\tthis._resetCompilation();\n\t\tthis.interceptors.push(Object.assign({}, interceptor));\n\t\tif (interceptor.register) {\n\t\t\tfor (let i = 0; i < this.taps.length; i++) {\n\t\t\t\tthis.taps[i] = interceptor.register(this.taps[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\t_resetCompilation() {\n\t\tthis.call = this._call;\n\t\tthis.callAsync = this._callAsync;\n\t\tthis.promise = this._promise;\n\t}\n\n\t_insert(item) {\n\t\tthis._resetCompilation();\n\t\tconst { taps } = this;\n\t\tconst stage = typeof item.stage === \"number\" ? item.stage : 0;\n\n\t\t// Fast path: the overwhelmingly common `hook.tap(\"name\", fn)` case\n\t\t// has no `before` and default stage 0. If the list is empty or the\n\t\t// last tap's stage is <= the new item's stage the item belongs at\n\t\t// the end - append in O(1), skipping the Set allocation and the\n\t\t// shift loop.\n\t\tif (!(typeof item.before === \"string\" || Array.isArray(item.before))) {\n\t\t\tconst n = taps.length;\n\t\t\tif (n === 0 || (taps[n - 1].stage || 0) <= stage) {\n\t\t\t\ttaps[n] = item;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet before;\n\n\t\tif (typeof item.before === \"string\") {\n\t\t\tbefore = new Set([item.before]);\n\t\t} else if (Array.isArray(item.before)) {\n\t\t\tbefore = new Set(item.before);\n\t\t}\n\n\t\tlet i = taps.length;\n\n\t\twhile (i > 0) {\n\t\t\ti--;\n\t\t\tconst tap = taps[i];\n\t\t\ttaps[i + 1] = tap;\n\t\t\tconst xStage = tap.stage || 0;\n\t\t\tif (before) {\n\t\t\t\tif (before.has(tap.name)) {\n\t\t\t\t\tbefore.delete(tap.name);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (before.size > 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (xStage > stage) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ti++;\n\t\t\tbreak;\n\t\t}\n\t\ttaps[i] = item;\n\t}\n}\n\nObject.setPrototypeOf(Hook.prototype, null);\n\nmodule.exports = Hook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nclass HookCodeFactory {\n\tconstructor(config) {\n\t\tthis.config = config;\n\t\tthis.options = undefined;\n\t\tthis._args = undefined;\n\t}\n\n\tcreate(options) {\n\t\tthis.init(options);\n\t\tlet fn;\n\t\tswitch (options.type) {\n\t\t\tcase \"sync\":\n\t\t\t\tfn = new Function(\n\t\t\t\t\tthis.args(),\n\t\t\t\t\t`\"use strict\";\\n${this.header()}${this.contentWithInterceptors({\n\t\t\t\t\t\tonError: (err) => `throw ${err};\\n`,\n\t\t\t\t\t\tonResult: (result) => `return ${result};\\n`,\n\t\t\t\t\t\tresultReturns: true,\n\t\t\t\t\t\tonDone: () => \"\",\n\t\t\t\t\t\trethrowIfPossible: true\n\t\t\t\t\t})}`\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"async\":\n\t\t\t\tfn = new Function(\n\t\t\t\t\tthis.args({\n\t\t\t\t\t\tafter: \"_callback\"\n\t\t\t\t\t}),\n\t\t\t\t\t`\"use strict\";\\n${this.header()}${this.contentWithInterceptors({\n\t\t\t\t\t\tonError: (err) => `_callback(${err});\\n`,\n\t\t\t\t\t\tonResult: (result) => `_callback(null, ${result});\\n`,\n\t\t\t\t\t\tonDone: () => \"_callback();\\n\"\n\t\t\t\t\t})}`\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"promise\": {\n\t\t\t\tlet errorHelperUsed = false;\n\t\t\t\tconst content = this.contentWithInterceptors({\n\t\t\t\t\tonError: (err) => {\n\t\t\t\t\t\terrorHelperUsed = true;\n\t\t\t\t\t\treturn `_error(${err});\\n`;\n\t\t\t\t\t},\n\t\t\t\t\tonResult: (result) => `_resolve(${result});\\n`,\n\t\t\t\t\tonDone: () => \"_resolve();\\n\"\n\t\t\t\t});\n\t\t\t\tlet code = \"\";\n\t\t\t\tcode += '\"use strict\";\\n';\n\t\t\t\tcode += this.header();\n\t\t\t\tcode += \"return new Promise((function(_resolve, _reject) {\\n\";\n\t\t\t\tif (errorHelperUsed) {\n\t\t\t\t\tcode += \"var _sync = true;\\n\";\n\t\t\t\t\tcode += \"function _error(_err) {\\n\";\n\t\t\t\t\tcode += \"if(_sync)\\n\";\n\t\t\t\t\tcode +=\n\t\t\t\t\t\t\"_resolve(Promise.resolve().then((function() { throw _err; })));\\n\";\n\t\t\t\t\tcode += \"else\\n\";\n\t\t\t\t\tcode += \"_reject(_err);\\n\";\n\t\t\t\t\tcode += \"};\\n\";\n\t\t\t\t}\n\t\t\t\tcode += content;\n\t\t\t\tif (errorHelperUsed) {\n\t\t\t\t\tcode += \"_sync = false;\\n\";\n\t\t\t\t}\n\t\t\t\tcode += \"}));\\n\";\n\t\t\t\tfn = new Function(this.args(), code);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.deinit();\n\t\treturn fn;\n\t}\n\n\tsetup(instance, options) {\n\t\tconst { taps } = options;\n\t\tconst { length } = taps;\n\t\tconst fns = Array.from({ length });\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tfns[i] = taps[i].fn;\n\t\t}\n\t\tinstance._x = fns;\n\t}\n\n\t/**\n\t * @param {{ type: \"sync\" | \"promise\" | \"async\", taps: Array<Tap>, interceptors: Array<Interceptor> }} options\n\t */\n\tinit(options) {\n\t\tthis.options = options;\n\t\t// `_args` is only read (length / join / [0]) - never mutated - so we\n\t\t// can share the caller's array directly instead of paying for a copy\n\t\t// on every compile.\n\t\tthis._args = options.args;\n\t\tthis._joinedArgs = undefined;\n\t}\n\n\tdeinit() {\n\t\tthis.options = undefined;\n\t\tthis._args = undefined;\n\t\tthis._joinedArgs = undefined;\n\t}\n\n\tcontentWithInterceptors(options) {\n\t\tif (this.options.interceptors.length > 0) {\n\t\t\tconst { onError, onResult, onDone } = options;\n\t\t\tlet code = \"\";\n\t\t\tfor (let i = 0; i < this.options.interceptors.length; i++) {\n\t\t\t\tconst interceptor = this.options.interceptors[i];\n\t\t\t\tif (interceptor.call) {\n\t\t\t\t\tcode += `${this.getInterceptor(i)}.call(${this.args({\n\t\t\t\t\t\tbefore: interceptor.context ? \"_context\" : undefined\n\t\t\t\t\t})});\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcode += this.content(\n\t\t\t\tObject.assign(options, {\n\t\t\t\t\tonError:\n\t\t\t\t\t\tonError &&\n\t\t\t\t\t\t((err) => {\n\t\t\t\t\t\t\tlet code = \"\";\n\t\t\t\t\t\t\tfor (let i = 0; i < this.options.interceptors.length; i++) {\n\t\t\t\t\t\t\t\tconst interceptor = this.options.interceptors[i];\n\t\t\t\t\t\t\t\tif (interceptor.error) {\n\t\t\t\t\t\t\t\t\tcode += `${this.getInterceptor(i)}.error(${err});\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcode += onError(err);\n\t\t\t\t\t\t\treturn code;\n\t\t\t\t\t\t}),\n\t\t\t\t\tonResult:\n\t\t\t\t\t\tonResult &&\n\t\t\t\t\t\t((result) => {\n\t\t\t\t\t\t\tlet code = \"\";\n\t\t\t\t\t\t\tfor (let i = 0; i < this.options.interceptors.length; i++) {\n\t\t\t\t\t\t\t\tconst interceptor = this.options.interceptors[i];\n\t\t\t\t\t\t\t\tif (interceptor.result) {\n\t\t\t\t\t\t\t\t\tcode += `${this.getInterceptor(i)}.result(${result});\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcode += onResult(result);\n\t\t\t\t\t\t\treturn code;\n\t\t\t\t\t\t}),\n\t\t\t\t\tonDone:\n\t\t\t\t\t\tonDone &&\n\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\tlet code = \"\";\n\t\t\t\t\t\t\tfor (let i = 0; i < this.options.interceptors.length; i++) {\n\t\t\t\t\t\t\t\tconst interceptor = this.options.interceptors[i];\n\t\t\t\t\t\t\t\tif (interceptor.done) {\n\t\t\t\t\t\t\t\t\tcode += `${this.getInterceptor(i)}.done();\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcode += onDone();\n\t\t\t\t\t\t\treturn code;\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn code;\n\t\t}\n\t\treturn this.content(options);\n\t}\n\n\theader() {\n\t\tlet code = \"\";\n\t\tcode += this.needContext() ? \"var _context = {};\\n\" : \"var _context;\\n\";\n\t\tcode += \"var _x = this._x;\\n\";\n\t\tif (this.options.interceptors.length > 0) {\n\t\t\tcode += \"var _taps = this.taps;\\n\";\n\t\t\tcode += \"var _interceptors = this.interceptors;\\n\";\n\t\t}\n\t\treturn code;\n\t}\n\n\tneedContext() {\n\t\tconst { taps } = this.options;\n\t\tfor (let i = 0; i < taps.length; i++) {\n\t\t\tif (taps[i].context) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tcallTap(tapIndex, { onError, onResult, onDone, rethrowIfPossible }) {\n\t\tlet code = \"\";\n\t\tlet hasTapCached = false;\n\t\tfor (let i = 0; i < this.options.interceptors.length; i++) {\n\t\t\tconst interceptor = this.options.interceptors[i];\n\t\t\tif (interceptor.tap) {\n\t\t\t\tif (!hasTapCached) {\n\t\t\t\t\tcode += `var _tap${tapIndex} = ${this.getTap(tapIndex)};\\n`;\n\t\t\t\t\thasTapCached = true;\n\t\t\t\t}\n\t\t\t\tcode += `${this.getInterceptor(i)}.tap(${\n\t\t\t\t\tinterceptor.context ? \"_context, \" : \"\"\n\t\t\t\t}_tap${tapIndex});\\n`;\n\t\t\t}\n\t\t}\n\t\tcode += `var _fn${tapIndex} = ${this.getTapFn(tapIndex)};\\n`;\n\t\tconst tap = this.options.taps[tapIndex];\n\t\tswitch (tap.type) {\n\t\t\tcase \"sync\":\n\t\t\t\tif (!rethrowIfPossible) {\n\t\t\t\t\tcode += `var _hasError${tapIndex} = false;\\n`;\n\t\t\t\t\tcode += \"try {\\n\";\n\t\t\t\t}\n\t\t\t\tif (onResult) {\n\t\t\t\t\tcode += `var _result${tapIndex} = _fn${tapIndex}(${this.args({\n\t\t\t\t\t\tbefore: tap.context ? \"_context\" : undefined\n\t\t\t\t\t})});\\n`;\n\t\t\t\t} else {\n\t\t\t\t\tcode += `_fn${tapIndex}(${this.args({\n\t\t\t\t\t\tbefore: tap.context ? \"_context\" : undefined\n\t\t\t\t\t})});\\n`;\n\t\t\t\t}\n\t\t\t\tif (!rethrowIfPossible) {\n\t\t\t\t\tcode += \"} catch(_err) {\\n\";\n\t\t\t\t\tcode += `_hasError${tapIndex} = true;\\n`;\n\t\t\t\t\tcode += onError(\"_err\");\n\t\t\t\t\tcode += \"}\\n\";\n\t\t\t\t\tcode += `if(!_hasError${tapIndex}) {\\n`;\n\t\t\t\t}\n\t\t\t\tif (onResult) {\n\t\t\t\t\tcode += onResult(`_result${tapIndex}`);\n\t\t\t\t}\n\t\t\t\tif (onDone) {\n\t\t\t\t\tcode += onDone();\n\t\t\t\t}\n\t\t\t\tif (!rethrowIfPossible) {\n\t\t\t\t\tcode += \"}\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"async\": {\n\t\t\t\tlet cbCode = \"\";\n\t\t\t\tcbCode += onResult\n\t\t\t\t\t? `(function(_err${tapIndex}, _result${tapIndex}) {\\n`\n\t\t\t\t\t: `(function(_err${tapIndex}) {\\n`;\n\t\t\t\tcbCode += `if(_err${tapIndex}) {\\n`;\n\t\t\t\tcbCode += onError(`_err${tapIndex}`);\n\t\t\t\tcbCode += \"} else {\\n\";\n\t\t\t\tif (onResult) {\n\t\t\t\t\tcbCode += onResult(`_result${tapIndex}`);\n\t\t\t\t}\n\t\t\t\tif (onDone) {\n\t\t\t\t\tcbCode += onDone();\n\t\t\t\t}\n\t\t\t\tcbCode += \"}\\n\";\n\t\t\t\tcbCode += \"})\";\n\t\t\t\tcode += `_fn${tapIndex}(${this.args({\n\t\t\t\t\tbefore: tap.context ? \"_context\" : undefined,\n\t\t\t\t\tafter: cbCode\n\t\t\t\t})});\\n`;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"promise\":\n\t\t\t\tcode += `var _hasResult${tapIndex} = false;\\n`;\n\t\t\t\tcode += `var _promise${tapIndex} = _fn${tapIndex}(${this.args({\n\t\t\t\t\tbefore: tap.context ? \"_context\" : undefined\n\t\t\t\t})});\\n`;\n\t\t\t\tcode += `if (!_promise${tapIndex} || !_promise${tapIndex}.then)\\n`;\n\t\t\t\tcode += `  throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise${tapIndex} + ')');\\n`;\n\t\t\t\tcode += `_promise${tapIndex}.then((function(_result${tapIndex}) {\\n`;\n\t\t\t\tcode += `_hasResult${tapIndex} = true;\\n`;\n\t\t\t\tif (onResult) {\n\t\t\t\t\tcode += onResult(`_result${tapIndex}`);\n\t\t\t\t}\n\t\t\t\tif (onDone) {\n\t\t\t\t\tcode += onDone();\n\t\t\t\t}\n\t\t\t\tcode += `}), function(_err${tapIndex}) {\\n`;\n\t\t\t\tcode += `if(_hasResult${tapIndex}) throw _err${tapIndex};\\n`;\n\t\t\t\tcode += onError(\n\t\t\t\t\t`!_err${tapIndex} ? new Error('Tap function (tapPromise) rejects \"' + _err${tapIndex} + '\" value') : _err${tapIndex}`\n\t\t\t\t);\n\t\t\t\tcode += \"});\\n\";\n\t\t\t\tbreak;\n\t\t}\n\t\treturn code;\n\t}\n\n\tcallTapsSeries({\n\t\tonError,\n\t\tonResult,\n\t\tresultReturns,\n\t\tonDone,\n\t\tdoneReturns,\n\t\trethrowIfPossible\n\t}) {\n\t\tconst { taps } = this.options;\n\t\tconst tapsLength = taps.length;\n\t\tif (tapsLength === 0) return onDone();\n\t\t// Inlined findIndex to avoid the callback allocation.\n\t\tlet firstAsync = -1;\n\t\tfor (let i = 0; i < tapsLength; i++) {\n\t\t\tif (taps[i].type !== \"sync\") {\n\t\t\t\tfirstAsync = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tconst somethingReturns = resultReturns || doneReturns;\n\t\t// doneBreak doesn't depend on the loop variable - hoist to allocate once.\n\t\tconst doneBreak = (skipDone) => {\n\t\t\tif (skipDone) return \"\";\n\t\t\treturn onDone();\n\t\t};\n\t\tlet code = \"\";\n\t\tlet current = onDone;\n\t\tlet unrollCounter = 0;\n\t\tfor (let j = tapsLength - 1; j >= 0; j--) {\n\t\t\tconst i = j;\n\t\t\tconst unroll =\n\t\t\t\tcurrent !== onDone && (taps[i].type !== \"sync\" || unrollCounter++ > 20);\n\t\t\tif (unroll) {\n\t\t\t\tunrollCounter = 0;\n\t\t\t\tcode += `function _next${i}() {\\n`;\n\t\t\t\tcode += current();\n\t\t\t\tcode += \"}\\n\";\n\t\t\t\tcurrent = () => `${somethingReturns ? \"return \" : \"\"}_next${i}();\\n`;\n\t\t\t}\n\t\t\tconst done = current;\n\t\t\tconst content = this.callTap(i, {\n\t\t\t\tonError: (error) => onError(i, error, done, doneBreak),\n\t\t\t\tonResult:\n\t\t\t\t\tonResult && ((result) => onResult(i, result, done, doneBreak)),\n\t\t\t\tonDone: !onResult && done,\n\t\t\t\trethrowIfPossible:\n\t\t\t\t\trethrowIfPossible && (firstAsync < 0 || i < firstAsync)\n\t\t\t});\n\t\t\tcurrent = () => content;\n\t\t}\n\t\tcode += current();\n\t\treturn code;\n\t}\n\n\tcallTapsLooping({ onError, onDone, rethrowIfPossible }) {\n\t\tif (this.options.taps.length === 0) return onDone();\n\t\tconst syncOnly = this.options.taps.every((t) => t.type === \"sync\");\n\t\tlet code = \"\";\n\t\tif (!syncOnly) {\n\t\t\tcode += \"var _looper = (function() {\\n\";\n\t\t\tcode += \"var _loopAsync = false;\\n\";\n\t\t}\n\t\tcode += \"var _loop;\\n\";\n\t\tcode += \"do {\\n\";\n\t\tcode += \"_loop = false;\\n\";\n\t\tfor (let i = 0; i < this.options.interceptors.length; i++) {\n\t\t\tconst interceptor = this.options.interceptors[i];\n\t\t\tif (interceptor.loop) {\n\t\t\t\tcode += `${this.getInterceptor(i)}.loop(${this.args({\n\t\t\t\t\tbefore: interceptor.context ? \"_context\" : undefined\n\t\t\t\t})});\\n`;\n\t\t\t}\n\t\t}\n\t\tcode += this.callTapsSeries({\n\t\t\tonError,\n\t\t\tonResult: (i, result, next, doneBreak) => {\n\t\t\t\tlet code = \"\";\n\t\t\t\tcode += `if(${result} !== undefined) {\\n`;\n\t\t\t\tcode += \"_loop = true;\\n\";\n\t\t\t\tif (!syncOnly) code += \"if(_loopAsync) _looper();\\n\";\n\t\t\t\tcode += doneBreak(true);\n\t\t\t\tcode += \"} else {\\n\";\n\t\t\t\tcode += next();\n\t\t\t\tcode += \"}\\n\";\n\t\t\t\treturn code;\n\t\t\t},\n\t\t\tonDone:\n\t\t\t\tonDone &&\n\t\t\t\t(() => {\n\t\t\t\t\tlet code = \"\";\n\t\t\t\t\tcode += \"if(!_loop) {\\n\";\n\t\t\t\t\tcode += onDone();\n\t\t\t\t\tcode += \"}\\n\";\n\t\t\t\t\treturn code;\n\t\t\t\t}),\n\t\t\trethrowIfPossible: rethrowIfPossible && syncOnly\n\t\t});\n\t\tcode += \"} while(_loop);\\n\";\n\t\tif (!syncOnly) {\n\t\t\tcode += \"_loopAsync = true;\\n\";\n\t\t\tcode += \"});\\n\";\n\t\t\tcode += \"_looper();\\n\";\n\t\t}\n\t\treturn code;\n\t}\n\n\tcallTapsParallel({\n\t\tonError,\n\t\tonResult,\n\t\tonDone,\n\t\trethrowIfPossible,\n\t\tonTap = (i, run) => run()\n\t}) {\n\t\tconst { taps } = this.options;\n\t\tconst tapsLength = taps.length;\n\t\tif (tapsLength <= 1) {\n\t\t\treturn this.callTapsSeries({\n\t\t\t\tonError,\n\t\t\t\tonResult,\n\t\t\t\tonDone,\n\t\t\t\trethrowIfPossible\n\t\t\t});\n\t\t}\n\t\t// done and doneBreak don't depend on the loop variable - hoist them\n\t\t// so they're allocated once per compile instead of once per tap.\n\t\tconst done = () => {\n\t\t\tif (onDone) return \"if(--_counter === 0) _done();\\n\";\n\t\t\treturn \"--_counter;\";\n\t\t};\n\t\tconst doneBreak = (skipDone) => {\n\t\t\tif (skipDone || !onDone) return \"_counter = 0;\\n\";\n\t\t\treturn \"_counter = 0;\\n_done();\\n\";\n\t\t};\n\t\tlet code = \"\";\n\t\tcode += \"do {\\n\";\n\t\tcode += `var _counter = ${tapsLength};\\n`;\n\t\tif (onDone) {\n\t\t\tcode += \"var _done = (function() {\\n\";\n\t\t\tcode += onDone();\n\t\t\tcode += \"});\\n\";\n\t\t}\n\t\tfor (let i = 0; i < tapsLength; i++) {\n\t\t\tcode += \"if(_counter <= 0) break;\\n\";\n\t\t\tcode += onTap(\n\t\t\t\ti,\n\t\t\t\t() =>\n\t\t\t\t\tthis.callTap(i, {\n\t\t\t\t\t\tonError: (error) => {\n\t\t\t\t\t\t\tlet code = \"\";\n\t\t\t\t\t\t\tcode += \"if(_counter > 0) {\\n\";\n\t\t\t\t\t\t\tcode += onError(i, error, done, doneBreak);\n\t\t\t\t\t\t\tcode += \"}\\n\";\n\t\t\t\t\t\t\treturn code;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonResult:\n\t\t\t\t\t\t\tonResult &&\n\t\t\t\t\t\t\t((result) => {\n\t\t\t\t\t\t\t\tlet code = \"\";\n\t\t\t\t\t\t\t\tcode += \"if(_counter > 0) {\\n\";\n\t\t\t\t\t\t\t\tcode += onResult(i, result, done, doneBreak);\n\t\t\t\t\t\t\t\tcode += \"}\\n\";\n\t\t\t\t\t\t\t\treturn code;\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\tonDone: !onResult && (() => done()),\n\t\t\t\t\t\trethrowIfPossible\n\t\t\t\t\t}),\n\t\t\t\tdone,\n\t\t\t\tdoneBreak\n\t\t\t);\n\t\t}\n\t\tcode += \"} while(false);\\n\";\n\t\treturn code;\n\t}\n\n\targs({ before, after } = {}) {\n\t\t// Hot during code generation. Join `_args` once and cache the result,\n\t\t// then build the customized variants via string concat instead of\n\t\t// allocating temporary `[before, ...allArgs]` / `[...allArgs, after]`\n\t\t// arrays and re-joining.\n\t\tlet joined = this._joinedArgs;\n\t\tif (joined === undefined) {\n\t\t\tjoined = this._args.length === 0 ? \"\" : this._args.join(\", \");\n\t\t\tthis._joinedArgs = joined;\n\t\t}\n\t\tif (!before && !after) return joined;\n\t\tif (joined.length === 0) {\n\t\t\tif (before && after) return `${before}, ${after}`;\n\t\t\treturn before || after;\n\t\t}\n\t\tif (before && after) return `${before}, ${joined}, ${after}`;\n\t\tif (before) return `${before}, ${joined}`;\n\t\treturn `${joined}, ${after}`;\n\t}\n\n\tgetTapFn(idx) {\n\t\treturn `_x[${idx}]`;\n\t}\n\n\tgetTap(idx) {\n\t\treturn `_taps[${idx}]`;\n\t}\n\n\tgetInterceptor(idx) {\n\t\treturn `_interceptors[${idx}]`;\n\t}\n}\n\nmodule.exports = HookCodeFactory;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass AsyncParallelBailHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onResult, onDone }) {\n\t\tlet code = \"\";\n\t\tcode += `var _results = new Array(${this.options.taps.length});\\n`;\n\t\tcode += \"var _checkDone = function() {\\n\";\n\t\tcode += \"for(var i = 0; i < _results.length; i++) {\\n\";\n\t\tcode += \"var item = _results[i];\\n\";\n\t\tcode += \"if(item === undefined) return false;\\n\";\n\t\tcode += \"if(item.result !== undefined) {\\n\";\n\t\tcode += onResult(\"item.result\");\n\t\tcode += \"return true;\\n\";\n\t\tcode += \"}\\n\";\n\t\tcode += \"if(item.error) {\\n\";\n\t\tcode += onError(\"item.error\");\n\t\tcode += \"return true;\\n\";\n\t\tcode += \"}\\n\";\n\t\tcode += \"}\\n\";\n\t\tcode += \"return false;\\n\";\n\t\tcode += \"}\\n\";\n\t\tcode += this.callTapsParallel({\n\t\t\tonError: (i, err, done, doneBreak) => {\n\t\t\t\tlet code = \"\";\n\t\t\t\tcode += `if(${i} < _results.length && ((_results.length = ${\n\t\t\t\t\ti + 1\n\t\t\t\t}), (_results[${i}] = { error: ${err} }), _checkDone())) {\\n`;\n\t\t\t\tcode += doneBreak(true);\n\t\t\t\tcode += \"} else {\\n\";\n\t\t\t\tcode += done();\n\t\t\t\tcode += \"}\\n\";\n\t\t\t\treturn code;\n\t\t\t},\n\t\t\tonResult: (i, result, done, doneBreak) => {\n\t\t\t\tlet code = \"\";\n\t\t\t\tcode += `if(${i} < _results.length && (${result} !== undefined && (_results.length = ${\n\t\t\t\t\ti + 1\n\t\t\t\t}), (_results[${i}] = { result: ${result} }), _checkDone())) {\\n`;\n\t\t\t\tcode += doneBreak(true);\n\t\t\t\tcode += \"} else {\\n\";\n\t\t\t\tcode += done();\n\t\t\t\tcode += \"}\\n\";\n\t\t\t\treturn code;\n\t\t\t},\n\t\t\tonTap: (i, run, done, _doneBreak) => {\n\t\t\t\tlet code = \"\";\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tcode += `if(${i} >= _results.length) {\\n`;\n\t\t\t\t\tcode += done();\n\t\t\t\t\tcode += \"} else {\\n\";\n\t\t\t\t}\n\t\t\t\tcode += run();\n\t\t\t\tif (i > 0) code += \"}\\n\";\n\t\t\t\treturn code;\n\t\t\t},\n\t\t\tonDone\n\t\t});\n\t\treturn code;\n\t}\n}\n\nconst factory = new AsyncParallelBailHookCodeFactory();\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction AsyncParallelBailHook(args = [], name = undefined) {\n\tconst hook = new Hook(args, name);\n\thook.constructor = AsyncParallelBailHook;\n\thook.compile = COMPILE;\n\thook._call = undefined;\n\thook.call = undefined;\n\treturn hook;\n}\n\nAsyncParallelBailHook.prototype = null;\n\nmodule.exports = AsyncParallelBailHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass AsyncParallelHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onDone }) {\n\t\treturn this.callTapsParallel({\n\t\t\tonError: (i, err, done, doneBreak) => onError(err) + doneBreak(true),\n\t\t\tonDone\n\t\t});\n\t}\n}\n\nconst factory = new AsyncParallelHookCodeFactory();\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction AsyncParallelHook(args = [], name = undefined) {\n\tconst hook = new Hook(args, name);\n\thook.constructor = AsyncParallelHook;\n\thook.compile = COMPILE;\n\thook._call = undefined;\n\thook.call = undefined;\n\treturn hook;\n}\n\nAsyncParallelHook.prototype = null;\n\nmodule.exports = AsyncParallelHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass AsyncSeriesBailHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onResult, resultReturns, onDone }) {\n\t\treturn this.callTapsSeries({\n\t\t\tonError: (i, err, next, doneBreak) => onError(err) + doneBreak(true),\n\t\t\tonResult: (i, result, next) =>\n\t\t\t\t`if(${result} !== undefined) {\\n${onResult(\n\t\t\t\t\tresult\n\t\t\t\t)}\\n} else {\\n${next()}}\\n`,\n\t\t\tresultReturns,\n\t\t\tonDone\n\t\t});\n\t}\n}\n\nconst factory = new AsyncSeriesBailHookCodeFactory();\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction AsyncSeriesBailHook(args = [], name = undefined) {\n\tconst hook = new Hook(args, name);\n\thook.constructor = AsyncSeriesBailHook;\n\thook.compile = COMPILE;\n\thook._call = undefined;\n\thook.call = undefined;\n\treturn hook;\n}\n\nAsyncSeriesBailHook.prototype = null;\n\nmodule.exports = AsyncSeriesBailHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass AsyncSeriesHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onDone }) {\n\t\treturn this.callTapsSeries({\n\t\t\tonError: (i, err, next, doneBreak) => onError(err) + doneBreak(true),\n\t\t\tonDone\n\t\t});\n\t}\n}\n\nconst factory = new AsyncSeriesHookCodeFactory();\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction AsyncSeriesHook(args = [], name = undefined) {\n\tconst hook = new Hook(args, name);\n\thook.constructor = AsyncSeriesHook;\n\thook.compile = COMPILE;\n\thook._call = undefined;\n\thook.call = undefined;\n\treturn hook;\n}\n\nAsyncSeriesHook.prototype = null;\n\nmodule.exports = AsyncSeriesHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass AsyncSeriesLoopHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onDone }) {\n\t\treturn this.callTapsLooping({\n\t\t\tonError: (i, err, next, doneBreak) => onError(err) + doneBreak(true),\n\t\t\tonDone\n\t\t});\n\t}\n}\n\nconst factory = new AsyncSeriesLoopHookCodeFactory();\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction AsyncSeriesLoopHook(args = [], name = undefined) {\n\tconst hook = new Hook(args, name);\n\thook.constructor = AsyncSeriesLoopHook;\n\thook.compile = COMPILE;\n\thook._call = undefined;\n\thook.call = undefined;\n\treturn hook;\n}\n\nAsyncSeriesLoopHook.prototype = null;\n\nmodule.exports = AsyncSeriesLoopHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass AsyncSeriesWaterfallHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onResult, _onDone }) {\n\t\treturn this.callTapsSeries({\n\t\t\tonError: (i, err, next, doneBreak) => onError(err) + doneBreak(true),\n\t\t\tonResult: (i, result, next) => {\n\t\t\t\tlet code = \"\";\n\t\t\t\tcode += `if(${result} !== undefined) {\\n`;\n\t\t\t\tcode += `${this._args[0]} = ${result};\\n`;\n\t\t\t\tcode += \"}\\n\";\n\t\t\t\tcode += next();\n\t\t\t\treturn code;\n\t\t\t},\n\t\t\tonDone: () => onResult(this._args[0])\n\t\t});\n\t}\n}\n\nconst factory = new AsyncSeriesWaterfallHookCodeFactory();\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction AsyncSeriesWaterfallHook(args = [], name = undefined) {\n\tif (args.length < 1) {\n\t\tthrow new Error(\"Waterfall hooks must have at least one argument\");\n\t}\n\tconst hook = new Hook(args, name);\n\thook.constructor = AsyncSeriesWaterfallHook;\n\thook.compile = COMPILE;\n\thook._call = undefined;\n\thook.call = undefined;\n\treturn hook;\n}\n\nAsyncSeriesWaterfallHook.prototype = null;\n\nmodule.exports = AsyncSeriesWaterfallHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst util = require(\"util\");\n\nconst defaultFactory = (key, hook) => hook;\n\nclass HookMap {\n\tconstructor(factory, name = undefined) {\n\t\tthis._map = new Map();\n\t\tthis.name = name;\n\t\tthis._factory = factory;\n\t\tthis._interceptors = [];\n\t}\n\n\tget(key) {\n\t\treturn this._map.get(key);\n\t}\n\n\tfor(key) {\n\t\t// Hot path: inline the map lookup to skip the `this.get(key)`\n\t\t// indirection. This gets hit on every hook access in consumers\n\t\t// like webpack.\n\t\tconst map = this._map;\n\t\tconst hook = map.get(key);\n\t\tif (hook !== undefined) {\n\t\t\treturn hook;\n\t\t}\n\t\tlet newHook = this._factory(key);\n\t\tconst interceptors = this._interceptors;\n\t\tfor (let i = 0; i < interceptors.length; i++) {\n\t\t\tnewHook = interceptors[i].factory(key, newHook);\n\t\t}\n\t\tmap.set(key, newHook);\n\t\treturn newHook;\n\t}\n\n\tintercept(interceptor) {\n\t\tthis._interceptors.push(\n\t\t\tObject.assign(\n\t\t\t\t{\n\t\t\t\t\tfactory: defaultFactory\n\t\t\t\t},\n\t\t\t\tinterceptor\n\t\t\t)\n\t\t);\n\t}\n}\n\nHookMap.prototype.tap = util.deprecate(function tap(key, options, fn) {\n\treturn this.for(key).tap(options, fn);\n}, \"HookMap#tap(key,…) is deprecated. Use HookMap#for(key).tap(…) instead.\");\n\nHookMap.prototype.tapAsync = util.deprecate(function tapAsync(\n\tkey,\n\toptions,\n\tfn\n) {\n\treturn this.for(key).tapAsync(options, fn);\n}, \"HookMap#tapAsync(key,…) is deprecated. Use HookMap#for(key).tapAsync(…) instead.\");\n\nHookMap.prototype.tapPromise = util.deprecate(function tapPromise(\n\tkey,\n\toptions,\n\tfn\n) {\n\treturn this.for(key).tapPromise(options, fn);\n}, \"HookMap#tapPromise(key,…) is deprecated. Use HookMap#for(key).tapPromise(…) instead.\");\n\nmodule.exports = HookMap;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nclass MultiHook {\n\tconstructor(hooks, name = undefined) {\n\t\tthis.hooks = hooks;\n\t\tthis.name = name;\n\t}\n\n\ttap(options, fn) {\n\t\tconst { hooks } = this;\n\t\tfor (let i = 0; i < hooks.length; i++) {\n\t\t\thooks[i].tap(options, fn);\n\t\t}\n\t}\n\n\ttapAsync(options, fn) {\n\t\tconst { hooks } = this;\n\t\tfor (let i = 0; i < hooks.length; i++) {\n\t\t\thooks[i].tapAsync(options, fn);\n\t\t}\n\t}\n\n\ttapPromise(options, fn) {\n\t\tconst { hooks } = this;\n\t\tfor (let i = 0; i < hooks.length; i++) {\n\t\t\thooks[i].tapPromise(options, fn);\n\t\t}\n\t}\n\n\tisUsed() {\n\t\tconst { hooks } = this;\n\t\tfor (let i = 0; i < hooks.length; i++) {\n\t\t\tif (hooks[i].isUsed()) return true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tintercept(interceptor) {\n\t\tconst { hooks } = this;\n\t\tfor (let i = 0; i < hooks.length; i++) {\n\t\t\thooks[i].intercept(interceptor);\n\t\t}\n\t}\n\n\twithOptions(options) {\n\t\treturn new MultiHook(\n\t\t\tthis.hooks.map((hook) => hook.withOptions(options)),\n\t\t\tthis.name\n\t\t);\n\t}\n}\n\nmodule.exports = MultiHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass SyncBailHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onResult, resultReturns, onDone, rethrowIfPossible }) {\n\t\treturn this.callTapsSeries({\n\t\t\tonError: (i, err) => onError(err),\n\t\t\tonResult: (i, result, next) =>\n\t\t\t\t`if(${result} !== undefined) {\\n${onResult(\n\t\t\t\t\tresult\n\t\t\t\t)};\\n} else {\\n${next()}}\\n`,\n\t\t\tresultReturns,\n\t\t\tonDone,\n\t\t\trethrowIfPossible\n\t\t});\n\t}\n}\n\nconst factory = new SyncBailHookCodeFactory();\n\nconst TAP_ASYNC = () => {\n\tthrow new Error(\"tapAsync is not supported on a SyncBailHook\");\n};\n\nconst TAP_PROMISE = () => {\n\tthrow new Error(\"tapPromise is not supported on a SyncBailHook\");\n};\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction SyncBailHook(args = [], name = undefined) {\n\tconst hook = new Hook(args, name);\n\thook.constructor = SyncBailHook;\n\thook.tapAsync = TAP_ASYNC;\n\thook.tapPromise = TAP_PROMISE;\n\thook.compile = COMPILE;\n\treturn hook;\n}\n\nSyncBailHook.prototype = null;\n\nmodule.exports = SyncBailHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass SyncHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onDone, rethrowIfPossible }) {\n\t\treturn this.callTapsSeries({\n\t\t\tonError: (i, err) => onError(err),\n\t\t\tonDone,\n\t\t\trethrowIfPossible\n\t\t});\n\t}\n}\n\nconst factory = new SyncHookCodeFactory();\n\nconst TAP_ASYNC = () => {\n\tthrow new Error(\"tapAsync is not supported on a SyncHook\");\n};\n\nconst TAP_PROMISE = () => {\n\tthrow new Error(\"tapPromise is not supported on a SyncHook\");\n};\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction SyncHook(args = [], name = undefined) {\n\tconst hook = new Hook(args, name);\n\thook.constructor = SyncHook;\n\thook.tapAsync = TAP_ASYNC;\n\thook.tapPromise = TAP_PROMISE;\n\thook.compile = COMPILE;\n\treturn hook;\n}\n\nSyncHook.prototype = null;\n\nmodule.exports = SyncHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass SyncLoopHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onDone, rethrowIfPossible }) {\n\t\treturn this.callTapsLooping({\n\t\t\tonError: (i, err) => onError(err),\n\t\t\tonDone,\n\t\t\trethrowIfPossible\n\t\t});\n\t}\n}\n\nconst factory = new SyncLoopHookCodeFactory();\n\nconst TAP_ASYNC = () => {\n\tthrow new Error(\"tapAsync is not supported on a SyncLoopHook\");\n};\n\nconst TAP_PROMISE = () => {\n\tthrow new Error(\"tapPromise is not supported on a SyncLoopHook\");\n};\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction SyncLoopHook(args = [], name = undefined) {\n\tconst hook = new Hook(args, name);\n\thook.constructor = SyncLoopHook;\n\thook.tapAsync = TAP_ASYNC;\n\thook.tapPromise = TAP_PROMISE;\n\thook.compile = COMPILE;\n\treturn hook;\n}\n\nSyncLoopHook.prototype = null;\n\nmodule.exports = SyncLoopHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nconst Hook = require(\"./Hook\");\nconst HookCodeFactory = require(\"./HookCodeFactory\");\n\nclass SyncWaterfallHookCodeFactory extends HookCodeFactory {\n\tcontent({ onError, onResult, resultReturns, rethrowIfPossible }) {\n\t\treturn this.callTapsSeries({\n\t\t\tonError: (i, err) => onError(err),\n\t\t\tonResult: (i, result, next) => {\n\t\t\t\tlet code = \"\";\n\t\t\t\tcode += `if(${result} !== undefined) {\\n`;\n\t\t\t\tcode += `${this._args[0]} = ${result};\\n`;\n\t\t\t\tcode += \"}\\n\";\n\t\t\t\tcode += next();\n\t\t\t\treturn code;\n\t\t\t},\n\t\t\tonDone: () => onResult(this._args[0]),\n\t\t\tdoneReturns: resultReturns,\n\t\t\trethrowIfPossible\n\t\t});\n\t}\n}\n\nconst factory = new SyncWaterfallHookCodeFactory();\n\nconst TAP_ASYNC = () => {\n\tthrow new Error(\"tapAsync is not supported on a SyncWaterfallHook\");\n};\n\nconst TAP_PROMISE = () => {\n\tthrow new Error(\"tapPromise is not supported on a SyncWaterfallHook\");\n};\n\nfunction COMPILE(options) {\n\tfactory.setup(this, options);\n\treturn factory.create(options);\n}\n\nfunction SyncWaterfallHook(args = [], name = undefined) {\n\tif (args.length < 1) {\n\t\tthrow new Error(\"Waterfall hooks must have at least one argument\");\n\t}\n\tconst hook = new Hook(args, name);\n\thook.constructor = SyncWaterfallHook;\n\thook.tapAsync = TAP_ASYNC;\n\thook.tapPromise = TAP_PROMISE;\n\thook.compile = COMPILE;\n\treturn hook;\n}\n\nSyncWaterfallHook.prototype = null;\n\nmodule.exports = SyncWaterfallHook;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\"use strict\";\n\nmodule.exports.AsyncParallelBailHook = require(\"./AsyncParallelBailHook\");\nmodule.exports.AsyncParallelHook = require(\"./AsyncParallelHook\");\nmodule.exports.AsyncSeriesBailHook = require(\"./AsyncSeriesBailHook\");\nmodule.exports.AsyncSeriesHook = require(\"./AsyncSeriesHook\");\nmodule.exports.AsyncSeriesLoopHook = require(\"./AsyncSeriesLoopHook\");\nmodule.exports.AsyncSeriesWaterfallHook = require(\"./AsyncSeriesWaterfallHook\");\nmodule.exports.HookMap = require(\"./HookMap\");\nmodule.exports.MultiHook = require(\"./MultiHook\");\nmodule.exports.SyncBailHook = require(\"./SyncBailHook\");\nmodule.exports.SyncHook = require(\"./SyncHook\");\nmodule.exports.SyncLoopHook = require(\"./SyncLoopHook\");\nmodule.exports.SyncWaterfallHook = require(\"./SyncWaterfallHook\");\nmodule.exports.__esModule = true;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\").ResolveContext} ResolveContext */\n\n/**\n * Build the `ResolveContext` passed into the next hook in the chain.\n *\n * The caller — `Resolver.doResolve` — runs on every resolve step, so we\n * want to allocate as little as possible here. Previously the caller\n * constructed a temporary `{ log, yield, fileDependencies, ... }` literal\n * and handed it to this helper, which then copied those same fields into\n * a second fresh object. That's two allocations per step for what is\n * effectively a struct copy with one mutated field (`stack`) and one\n * optionally-wrapped field (`log`). Taking the parent context and the\n * two things we actually want to change (stack, message) as separate\n * arguments lets us allocate exactly one inner context.\n * @param {ResolveContext} parent parent resolve context to inherit dependency sets / yield from\n * @param {ResolveContext[\"stack\"]} stack new stack tip for the nested call\n * @param {null | string} message log message prefix for this step\n * @returns {ResolveContext} inner context\n */\nmodule.exports = function createInnerContext(parent, stack, message) {\n\tconst parentLog = parent.log;\n\tlet innerLog;\n\tif (parentLog) {\n\t\tif (message) {\n\t\t\tlet messageReported = false;\n\t\t\t/**\n\t\t\t * @param {string} msg message\n\t\t\t */\n\t\t\tinnerLog = (msg) => {\n\t\t\t\tif (!messageReported) {\n\t\t\t\t\tparentLog(message);\n\t\t\t\t\tmessageReported = true;\n\t\t\t\t}\n\t\t\t\tparentLog(`  ${msg}`);\n\t\t\t};\n\t\t} else {\n\t\t\tinnerLog = parentLog;\n\t\t}\n\t}\n\n\treturn {\n\t\tlog: innerLog,\n\t\tyield: parent.yield,\n\t\tfileDependencies: parent.fileDependencies,\n\t\tcontextDependencies: parent.contextDependencies,\n\t\tmissingDependencies: parent.missingDependencies,\n\t\tstack,\n\t};\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst { AsyncSeriesBailHook, AsyncSeriesHook, SyncHook } = require(\"tapable\");\nconst createInnerContext = require(\"./createInnerContext\");\nconst { parseIdentifier } = require(\"./util/identifier\");\nconst {\n\tPathType,\n\tcreateCachedBasename,\n\tcreateCachedDirname,\n\tcreateCachedJoin,\n\tgetType,\n\tnormalize,\n\ttoPath,\n} = require(\"./util/path\");\n\n/* eslint-disable jsdoc/check-alignment */\n// TODO in the next major release use only `Promise.withResolvers()`\nconst _withResolvers =\n\t// eslint-disable-next-line n/no-unsupported-features/es-syntax\n\tPromise.withResolvers\n\t\t? /**\n\t\t\t * @param {Resolver} self resolver\n\t\t\t * @param {Context} context context information object\n\t\t\t * @param {string | URL} path context path or a `file:` URL instance\n\t\t\t * @param {string | URL} request request string or a `file:` URL instance\n\t\t\t * @param {ResolveContext} resolveContext resolve context\n\t\t\t * @returns {Promise<string | false>} result\n\t\t\t */\n\t\t\t(self, context, path, request, resolveContext) => {\n\t\t\t\t// eslint-disable-next-line n/no-unsupported-features/es-syntax\n\t\t\t\tconst { promise, resolve, reject } = Promise.withResolvers();\n\t\t\t\tself.resolve(context, path, request, resolveContext, (err, res) => {\n\t\t\t\t\tif (err) reject(err);\n\t\t\t\t\telse resolve(/** @type {string | false} */ (res));\n\t\t\t\t});\n\t\t\t\treturn promise;\n\t\t\t}\n\t\t: /**\n\t\t\t * @param {Resolver} self resolver\n\t\t\t * @param {Context} context context information object\n\t\t\t * @param {string | URL} path context path or a `file:` URL instance\n\t\t\t * @param {string | URL} request request string or a `file:` URL instance\n\t\t\t * @param {ResolveContext} resolveContext resolve context\n\t\t\t * @returns {Promise<string | false>} result\n\t\t\t */\n\t\t\t(self, context, path, request, resolveContext) =>\n\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\tself.resolve(context, path, request, resolveContext, (err, res) => {\n\t\t\t\t\t\tif (err) reject(err);\n\t\t\t\t\t\telse resolve(/** @type {string | false} */ (res));\n\t\t\t\t\t});\n\t\t\t\t});\n/* eslint-enable jsdoc/check-alignment */\n\n/** @typedef {import(\"./AliasUtils\").AliasOption} AliasOption */\n/** @typedef {import(\"./util/path\").CachedJoin} CachedJoin */\n/** @typedef {import(\"./util/path\").CachedDirname} CachedDirname */\n/** @typedef {import(\"./util/path\").CachedBasename} CachedBasename */\n\n/**\n * @typedef {object} JoinCacheEntry\n * @property {CachedJoin[\"fn\"]} fn cached join function\n * @property {CachedJoin[\"cache\"]} cache the underlying cache map\n */\n\n/**\n * @typedef {object} DirnameCacheEntry\n * @property {CachedDirname[\"fn\"]} fn cached dirname function\n * @property {CachedDirname[\"cache\"]} cache the underlying cache map\n */\n\n/**\n * @typedef {object} BasenameCacheEntry\n * @property {CachedBasename[\"fn\"]} fn cached dirname function\n * @property {CachedBasename[\"cache\"]} cache the underlying cache map\n */\n\n/**\n * @typedef {object} PathCacheFunctions\n * @property {JoinCacheEntry} join cached join\n * @property {DirnameCacheEntry} dirname cached dirname\n * @property {BasenameCacheEntry} basename cached basename\n */\n\n/** @type {WeakMap<FileSystem, PathCacheFunctions>} */\nconst _pathCacheByFs = new WeakMap();\n\nconst HASH_ESCAPE_RE = /#/g;\n\n/** @typedef {import(\"./ResolverFactory\").ResolveOptions} ResolveOptions */\n\n/**\n * @typedef {object} KnownContext\n * @property {string[]=} environments environments\n */\n\n// eslint-disable-next-line jsdoc/reject-any-type\n/** @typedef {KnownContext & Record<any, any>} Context */\n\n/** @typedef {Error & { details?: string }} ErrorWithDetail */\n\n/** @typedef {(err: ErrorWithDetail | null, res?: string | false, req?: ResolveRequest) => void} ResolveCallback */\n\n/**\n * @typedef {object} PossibleFileSystemError\n * @property {string=} code code\n * @property {number=} errno number\n * @property {string=} path path\n * @property {string=} syscall syscall\n */\n\n/**\n * @template T\n * @callback FileSystemCallback\n * @param {PossibleFileSystemError & Error | null} err\n * @param {T=} result\n */\n\n/**\n * @typedef {string | Buffer | URL} PathLike\n */\n\n/**\n * @typedef {PathLike | number} PathOrFileDescriptor\n */\n\n/**\n * @typedef {object} ObjectEncodingOptions\n * @property {BufferEncoding | null | undefined=} encoding encoding\n */\n\n/**\n * @typedef {ObjectEncodingOptions | BufferEncoding | undefined | null} EncodingOption\n */\n\n/** @typedef {(err: NodeJS.ErrnoException | null, result?: string) => void} StringCallback */\n/** @typedef {(err: NodeJS.ErrnoException | null, result?: Buffer) => void} BufferCallback */\n/** @typedef {(err: NodeJS.ErrnoException | null, result?: (string | Buffer)) => void} StringOrBufferCallback */\n/** @typedef {(err: NodeJS.ErrnoException | null, result?: IStats) => void} StatsCallback */\n/** @typedef {(err: NodeJS.ErrnoException | null, result?: IBigIntStats) => void} BigIntStatsCallback */\n/** @typedef {(err: NodeJS.ErrnoException | null, result?: (IStats | IBigIntStats)) => void} StatsOrBigIntStatsCallback */\n/** @typedef {(err: NodeJS.ErrnoException | Error | null, result?: JsonObject) => void} ReadJsonCallback */\n\n/**\n * @template T\n * @typedef {object} IStatsBase\n * @property {() => boolean} isFile is file\n * @property {() => boolean} isDirectory is directory\n * @property {() => boolean} isBlockDevice is block device\n * @property {() => boolean} isCharacterDevice is character device\n * @property {() => boolean} isSymbolicLink is symbolic link\n * @property {() => boolean} isFIFO is FIFO\n * @property {() => boolean} isSocket is socket\n * @property {T} dev dev\n * @property {T} ino ino\n * @property {T} mode mode\n * @property {T} nlink nlink\n * @property {T} uid uid\n * @property {T} gid gid\n * @property {T} rdev rdev\n * @property {T} size size\n * @property {T} blksize blksize\n * @property {T} blocks blocks\n * @property {T} atimeMs atime ms\n * @property {T} mtimeMs mtime ms\n * @property {T} ctimeMs ctime ms\n * @property {T} birthtimeMs birthtime ms\n * @property {Date} atime atime\n * @property {Date} mtime mtime\n * @property {Date} ctime ctime\n * @property {Date} birthtime birthtime\n */\n\n/**\n * @typedef {IStatsBase<number>} IStats\n */\n\n/**\n * @typedef {IStatsBase<bigint> & { atimeNs: bigint, mtimeNs: bigint, ctimeNs: bigint, birthtimeNs: bigint }} IBigIntStats\n */\n\n/**\n * @template {string | Buffer} [T=string]\n * @typedef {object} Dirent\n * @property {() => boolean} isFile true when is file, otherwise false\n * @property {() => boolean} isDirectory true when is directory, otherwise false\n * @property {() => boolean} isBlockDevice true when is block device, otherwise false\n * @property {() => boolean} isCharacterDevice true when is character device, otherwise false\n * @property {() => boolean} isSymbolicLink true when is symbolic link, otherwise false\n * @property {() => boolean} isFIFO true when is FIFO, otherwise false\n * @property {() => boolean} isSocket true when is socket, otherwise false\n * @property {T} name name\n * @property {string} parentPath path\n * @property {string=} path path\n */\n\n/**\n * @typedef {object} StatOptions\n * @property {(boolean | undefined)=} bigint need bigint values\n */\n\n/**\n * @typedef {object} StatSyncOptions\n * @property {(boolean | undefined)=} bigint need bigint values\n * @property {(boolean | undefined)=} throwIfNoEntry throw if no entry\n */\n\n/**\n * @typedef {{\n * (path: PathOrFileDescriptor, options: ({ encoding?: null | undefined, flag?: string | undefined } & import(\"events\").Abortable) | undefined | null, callback: BufferCallback): void,\n * (path: PathOrFileDescriptor, options: ({ encoding: BufferEncoding, flag?: string | undefined } & import(\"events\").Abortable) | BufferEncoding, callback: StringCallback): void,\n * (path: PathOrFileDescriptor, options: (ObjectEncodingOptions & { flag?: string | undefined } & import(\"events\").Abortable) | BufferEncoding | undefined | null, callback: StringOrBufferCallback): void,\n * (path: PathOrFileDescriptor, callback: BufferCallback): void,\n * }} ReadFile\n */\n\n/**\n * @typedef {\"buffer\" | { encoding: \"buffer\" }} BufferEncodingOption\n */\n\n/**\n * @typedef {{\n * (path: PathOrFileDescriptor, options?: { encoding?: null | undefined, flag?: string | undefined } | null): Buffer,\n * (path: PathOrFileDescriptor, options: { encoding: BufferEncoding, flag?: string | undefined } | BufferEncoding): string,\n * (path: PathOrFileDescriptor, options?: (ObjectEncodingOptions & { flag?: string | undefined }) | BufferEncoding | null): string | Buffer,\n * }} ReadFileSync\n */\n\n/**\n * @typedef {{\n * (path: PathLike, options: { encoding: BufferEncoding | null, withFileTypes?: false | undefined, recursive?: boolean | undefined } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, files?: string[]) => void): void,\n * (path: PathLike, options: { encoding: \"buffer\", withFileTypes?: false | undefined, recursive?: boolean | undefined } | \"buffer\", callback: (err: NodeJS.ErrnoException | null, files?: Buffer[]) => void): void,\n * (path: PathLike, options: (ObjectEncodingOptions & { withFileTypes?: false | undefined, recursive?: boolean | undefined }) | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, files?: string[] | Buffer[]) => void): void,\n * (path: PathLike, callback: (err: NodeJS.ErrnoException | null, files?: string[]) => void): void,\n * (path: PathLike, options: ObjectEncodingOptions & { withFileTypes: true, recursive?: boolean | undefined }, callback: (err: NodeJS.ErrnoException | null, files?: Dirent<string>[]) => void): void,\n * (path: PathLike, options: { encoding: \"buffer\", withFileTypes: true, recursive?: boolean | undefined }, callback: (err: NodeJS.ErrnoException | null, files: Dirent<Buffer>[]) => void): void,\n * }} Readdir\n */\n\n/**\n * @typedef {{\n * (path: PathLike, options?: { encoding: BufferEncoding | null, withFileTypes?: false | undefined, recursive?: boolean | undefined } | BufferEncoding | null): string[],\n * (path: PathLike, options: { encoding: \"buffer\", withFileTypes?: false | undefined, recursive?: boolean | undefined } | \"buffer\"): Buffer[],\n * (path: PathLike, options?: (ObjectEncodingOptions & { withFileTypes?: false | undefined, recursive?: boolean | undefined }) | BufferEncoding | null): string[] | Buffer[],\n * (path: PathLike, options: ObjectEncodingOptions & { withFileTypes: true, recursive?: boolean | undefined }): Dirent[],\n * (path: PathLike, options: { encoding: \"buffer\", withFileTypes: true, recursive?: boolean | undefined }): Dirent<Buffer>[],\n * }} ReaddirSync\n */\n\n/**\n * @typedef {(pathOrFileDescription: PathOrFileDescriptor, callback: ReadJsonCallback) => void} ReadJson\n */\n\n/**\n * @typedef {(pathOrFileDescription: PathOrFileDescriptor) => JsonObject} ReadJsonSync\n */\n\n/**\n * @typedef {{\n * (path: PathLike, options: EncodingOption, callback: StringCallback): void,\n * (path: PathLike, options: BufferEncodingOption, callback: BufferCallback): void,\n * (path: PathLike, options: EncodingOption, callback: StringOrBufferCallback): void,\n * (path: PathLike, callback: StringCallback): void,\n * }} Readlink\n */\n\n/**\n * @typedef {{\n * (path: PathLike, options?: EncodingOption): string,\n * (path: PathLike, options: BufferEncodingOption): Buffer,\n * (path: PathLike, options?: EncodingOption): string | Buffer,\n * }} ReadlinkSync\n */\n\n/**\n * @typedef {{\n * (path: PathLike, callback: StatsCallback): void,\n * (path: PathLike, options: (StatOptions & { bigint?: false | undefined }) | undefined, callback: StatsCallback): void,\n * (path: PathLike, options: StatOptions & { bigint: true }, callback: BigIntStatsCallback): void,\n * (path: PathLike, options: StatOptions | undefined, callback: StatsOrBigIntStatsCallback): void,\n * }} LStat\n */\n\n/**\n * @typedef {{\n * (path: PathLike, options?: undefined): IStats,\n * (path: PathLike, options?: StatSyncOptions & { bigint?: false | undefined, throwIfNoEntry: false }): IStats | undefined,\n * (path: PathLike, options: StatSyncOptions & { bigint: true, throwIfNoEntry: false }): IBigIntStats | undefined,\n * (path: PathLike, options?: StatSyncOptions & { bigint?: false | undefined }): IStats,\n * (path: PathLike, options: StatSyncOptions & { bigint: true }): IBigIntStats,\n * (path: PathLike, options: StatSyncOptions & { bigint: boolean, throwIfNoEntry?: false | undefined }): IStats | IBigIntStats,\n * (path: PathLike, options?: StatSyncOptions): IStats | IBigIntStats | undefined,\n * }} LStatSync\n */\n\n/**\n * @typedef {{\n * (path: PathLike, callback: StatsCallback): void,\n * (path: PathLike, options: (StatOptions & { bigint?: false | undefined }) | undefined, callback: StatsCallback): void,\n * (path: PathLike, options: StatOptions & { bigint: true }, callback: BigIntStatsCallback): void,\n * (path: PathLike, options: StatOptions | undefined, callback: StatsOrBigIntStatsCallback): void,\n * }} Stat\n */\n\n/**\n * @typedef {{\n * (path: PathLike, options?: undefined): IStats,\n * (path: PathLike, options?: StatSyncOptions & { bigint?: false | undefined, throwIfNoEntry: false }): IStats | undefined,\n * (path: PathLike, options: StatSyncOptions & { bigint: true, throwIfNoEntry: false }): IBigIntStats | undefined,\n * (path: PathLike, options?: StatSyncOptions & { bigint?: false | undefined }): IStats,\n * (path: PathLike, options: StatSyncOptions & { bigint: true }): IBigIntStats,\n * (path: PathLike, options: StatSyncOptions & { bigint: boolean, throwIfNoEntry?: false | undefined }): IStats | IBigIntStats,\n * (path: PathLike, options?: StatSyncOptions): IStats | IBigIntStats | undefined,\n * }} StatSync\n */\n\n/**\n * @typedef {{\n * (path: PathLike, options: EncodingOption, callback: StringCallback): void,\n * (path: PathLike, options: BufferEncodingOption, callback: BufferCallback): void,\n * (path: PathLike, options: EncodingOption, callback: StringOrBufferCallback): void,\n * (path: PathLike, callback: StringCallback): void,\n * }} RealPath\n */\n\n/**\n * @typedef {{\n * (path: PathLike, options?: EncodingOption): string,\n * (path: PathLike, options: BufferEncodingOption): Buffer,\n * (path: PathLike, options?: EncodingOption): string | Buffer,\n * }} RealPathSync\n */\n\n/**\n * @typedef {object} FileSystem\n * @property {ReadFile} readFile read file method\n * @property {Readdir} readdir readdir method\n * @property {ReadJson=} readJson read json method\n * @property {Readlink} readlink read link method\n * @property {LStat=} lstat lstat method\n * @property {Stat} stat stat method\n * @property {RealPath=} realpath realpath method\n */\n\n/**\n * @typedef {object} SyncFileSystem\n * @property {ReadFileSync} readFileSync read file sync method\n * @property {ReaddirSync} readdirSync read dir sync method\n * @property {ReadJsonSync=} readJsonSync read json sync method\n * @property {ReadlinkSync} readlinkSync read link sync method\n * @property {LStatSync=} lstatSync lstat sync method\n * @property {StatSync} statSync stat sync method\n * @property {RealPathSync=} realpathSync real path sync method\n */\n\n/**\n * @typedef {object} ParsedIdentifier\n * @property {string} request request\n * @property {string} query query\n * @property {string} fragment fragment\n * @property {boolean} directory is directory\n * @property {boolean} module is module\n * @property {boolean} file is file\n * @property {boolean} internal is internal\n */\n\n/** @typedef {string | number | boolean | null} JsonPrimitive */\n/** @typedef {JsonValue[]} JsonArray */\n/** @typedef {JsonPrimitive | JsonObject | JsonArray} JsonValue */\n/** @typedef {{ [Key in string]?: JsonValue | undefined }} JsonObject */\n\n/**\n * @typedef {object} TsconfigPathsMap\n * @property {TsconfigPathsData} main main tsconfig paths data\n * @property {string} mainContext main tsconfig base URL (absolute path)\n * @property {{ [baseUrl: string]: TsconfigPathsData }} refs referenced tsconfig paths data mapped by baseUrl\n * @property {{ [context: string]: TsconfigPathsData }} allContexts all contexts (main + refs) for quick lookup\n * @property {string[]} contextList precomputed `Object.keys(allContexts)` — read-only; used on the `_selectPathsDataForContext` hot path\n * @property {Set<string>} fileDependencies file dependencies\n */\n\n/**\n * @typedef {object} TsconfigPathsData\n * @property {import(\"./AliasUtils\").CompiledAliasOptions} alias tsconfig file data\n * @property {string[]} modules tsconfig file data\n */\n\n/**\n * @typedef {object} BaseResolveRequest\n * @property {string | false} path path\n * @property {Context=} context content\n * @property {string=} descriptionFilePath description file path\n * @property {string=} descriptionFileRoot description file root\n * @property {JsonObject=} descriptionFileData description file data\n * @property {TsconfigPathsMap | null | undefined=} tsconfigPathsMap tsconfig paths map\n * @property {string=} relativePath relative path\n * @property {boolean=} ignoreSymlinks true when need to ignore symlinks, otherwise false\n * @property {boolean=} fullySpecified true when full specified, otherwise false\n * @property {string=} __innerRequest inner request for internal usage\n * @property {string=} __innerRequest_request inner request for internal usage\n * @property {string=} __innerRequest_relativePath inner relative path for internal usage\n * @property {{ blocked: boolean }=} __restrictionsMarker internal: shared marker `RestrictionsPlugin` flips when it filters out an existing target, letting `ExportsFieldPlugin` fall back instead of erroring\n */\n\n/** @typedef {BaseResolveRequest & Partial<ParsedIdentifier>} ResolveRequest */\n\n/**\n * @template T\n * @typedef {{ add: (item: T) => void }} WriteOnlySet\n */\n\n/** @typedef {(request: ResolveRequest) => void} ResolveContextYield */\n\n/**\n * Singly-linked stack entry that also exposes a Set-like API\n * (`has`, `size`, iteration). Each `doResolve` call prepends a new\n * `StackEntry` that points at the previous tip via `.parent`, so pushing\n * is O(1) in time and memory. Recursion detection walks the linked list\n * (O(n)) but the stack is typically shallow, so this is cheaper overall\n * than cloning a `Set` per call.\n */\nclass StackEntry {\n\t/**\n\t * @param {ResolveStepHook} hook hook\n\t * @param {ResolveRequest} request request\n\t * @param {StackEntry=} parent previous tip\n\t * @param {Set<string>=} preSeeded entries pre-seeded via the legacy `Set<string>` API\n\t */\n\tconstructor(hook, request, parent, preSeeded) {\n\t\tthis.name = hook.name;\n\t\tthis.path = request.path;\n\t\tthis.request = request.request || \"\";\n\t\tthis.query = request.query || \"\";\n\t\tthis.fragment = request.fragment || \"\";\n\t\tthis.directory = Boolean(request.directory);\n\t\tthis.module = Boolean(request.module);\n\t\t/** @type {StackEntry | undefined} */\n\t\tthis.parent = parent;\n\t\t/**\n\t\t * Strings seeded by callers that still pass `stack: new Set([...])`.\n\t\t * Propagated through the chain so deeper `doResolve` calls still see\n\t\t * them during recursion checks. `undefined` in the common case so\n\t\t * there is no extra work on the hot path.\n\t\t * @type {Set<string> | undefined}\n\t\t */\n\t\tthis.preSeeded = preSeeded;\n\t}\n\n\t/**\n\t * Walk the linked list looking for an entry with the same request shape.\n\t * Set-compatible: callers that used `stack.has(entry)` keep working.\n\t *\n\t * NOTE: kept monomorphic on purpose. An earlier draft accepted a string\n\t * query too (so pre-5.21 plugins keeping their own `Set<string>` of\n\t * seen entries could probe the live stack with the formatted form),\n\t * but adding the second shape regressed `doResolve`'s heap profile by\n\t * ~1 MiB / 200 resolves on stack-churn — V8 keeps a polymorphic\n\t * call-site state for `parent.has(stackEntry)` once `has` has two\n\t * argument shapes. Plugins that need string membership can reach for\n\t * `[...stack].find(e => e.includes(formattedString))` via the\n\t * `String`-method proxies on `StackEntry` instead.\n\t * @param {StackEntry} query entry to look for\n\t * @returns {boolean} whether the stack already contains an equivalent entry\n\t */\n\thas(query) {\n\t\t/** @type {StackEntry | undefined} */\n\t\tlet node = this;\n\t\twhile (node) {\n\t\t\tif (\n\t\t\t\tnode.name === query.name &&\n\t\t\t\tnode.path === query.path &&\n\t\t\t\tnode.request === query.request &&\n\t\t\t\tnode.query === query.query &&\n\t\t\t\tnode.fragment === query.fragment &&\n\t\t\t\tnode.directory === query.directory &&\n\t\t\t\tnode.module === query.module\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tnode = node.parent;\n\t\t}\n\t\treturn this.preSeeded !== undefined && this.preSeeded.has(query.toString());\n\t}\n\n\t/**\n\t * Number of entries on the stack (oldest-to-newest length).\n\t * @returns {number} size\n\t */\n\tget size() {\n\t\tlet count = this.preSeeded ? this.preSeeded.size : 0;\n\t\t/** @type {StackEntry | undefined} */\n\t\tlet node = this;\n\t\twhile (node) {\n\t\t\tcount++;\n\t\t\tnode = node.parent;\n\t\t}\n\t\treturn count;\n\t}\n\n\t/**\n\t * Iterate entries from oldest (root) to newest (tip), matching how a\n\t * `Set` that was populated in insertion order would iterate. Pre-seeded\n\t * legacy `Set<string>` entries come first so error-message output stays\n\t * ordered oldest-to-newest.\n\t *\n\t * Yields each entry as its formatted `toString()` form. Plugins written\n\t * against the pre-5.21 `Set<string>` shape — e.g.\n\t * `[...resolveContext.stack].find(a => a.includes(\"module:\"))` — keep\n\t * working unchanged because each yielded value is a plain string with\n\t * all of `String.prototype` available natively. Resolves that never\n\t * iterate the stack pay nothing; iteration costs one `toString()`\n\t * allocation per stack frame.\n\t * @returns {IterableIterator<string>} iterator\n\t */\n\t*[Symbol.iterator]() {\n\t\tif (this.preSeeded !== undefined) {\n\t\t\tfor (const entry of this.preSeeded) yield entry;\n\t\t}\n\t\t/** @type {StackEntry[]} */\n\t\tconst entries = [];\n\t\t/** @type {StackEntry | undefined} */\n\t\tlet node = this;\n\t\twhile (node) {\n\t\t\tentries.push(node);\n\t\t\tnode = node.parent;\n\t\t}\n\t\tfor (let i = entries.length - 1; i >= 0; i--) yield entries[i].toString();\n\t}\n\n\t/**\n\t * Human-readable form used in recursion error messages, logs, and the\n\t * iterator above. Not memoized: caching would require an extra slot on\n\t * every `StackEntry`, which costs heap even on resolves that never look\n\t * at the formatted form.\n\t * @returns {string} formatted entry\n\t */\n\ttoString() {\n\t\treturn `${this.name}: (${this.path}) ${this.request}${this.query}${\n\t\t\tthis.fragment\n\t\t}${this.directory ? \" directory\" : \"\"}${this.module ? \" module\" : \"\"}`;\n\t}\n}\n\n/**\n * Resolve context\n * @typedef {object} ResolveContext\n * @property {WriteOnlySet<string>=} contextDependencies directories that was found on file system\n * @property {WriteOnlySet<string>=} fileDependencies files that was found on file system\n * @property {WriteOnlySet<string>=} missingDependencies dependencies that was not found on file system\n * @property {StackEntry | Set<string>=} stack tip of the resolver call stack (a singly-linked list with Set-like API). For instance, `resolve → parsedResolve → describedResolve`. Accepts a legacy `Set<string>` for back-compat with older callers; it is normalized internally without a hot-path branch.\n * @property {((str: string) => void)=} log log function\n * @property {ResolveContextYield=} yield yield result, if provided plugins can return several results\n */\n\n/** @typedef {AsyncSeriesBailHook<[ResolveRequest, ResolveContext], ResolveRequest | null>} ResolveStepHook */\n\n/**\n * @typedef {object} KnownHooks\n * @property {SyncHook<[ResolveStepHook, ResolveRequest], void>} resolveStep resolve step hook\n * @property {SyncHook<[ResolveRequest, Error]>} noResolve no resolve hook\n * @property {ResolveStepHook} resolve resolve hook\n * @property {AsyncSeriesHook<[ResolveRequest, ResolveContext]>} result result hook\n */\n\n/**\n * @typedef {{ [key: string]: ResolveStepHook }} EnsuredHooks\n */\n\n/**\n * @param {string} str input string\n * @returns {string} in camel case\n */\nfunction toCamelCase(str) {\n\treturn str.replace(/-([a-z])/g, (str) => str.slice(1).toUpperCase());\n}\n\nclass Resolver {\n\t/**\n\t * @param {ResolveStepHook} hook hook\n\t * @param {ResolveRequest} request request\n\t * @param {StackEntry=} parent previous tip of the stack\n\t * @param {Set<string>=} preSeeded entries pre-seeded via the legacy `Set<string>` API\n\t * @returns {StackEntry} stack entry\n\t */\n\tstatic createStackEntry(hook, request, parent, preSeeded) {\n\t\treturn new StackEntry(hook, request, parent, preSeeded);\n\t}\n\n\t/**\n\t * @param {FileSystem} fileSystem a filesystem\n\t * @param {ResolveOptions} options options\n\t */\n\tconstructor(fileSystem, options) {\n\t\t/** @type {FileSystem} */\n\t\tthis.fileSystem = fileSystem;\n\t\t/** @type {ResolveOptions} */\n\t\tthis.options = options;\n\t\tlet pathCache = _pathCacheByFs.get(fileSystem);\n\t\tif (!pathCache) {\n\t\t\tpathCache = {\n\t\t\t\tjoin: createCachedJoin(),\n\t\t\t\tdirname: createCachedDirname(),\n\t\t\t\tbasename: createCachedBasename(),\n\t\t\t};\n\t\t\t_pathCacheByFs.set(fileSystem, pathCache);\n\t\t}\n\t\t/** @type {PathCacheFunctions} */\n\t\tthis.pathCache = pathCache;\n\t\t/** @type {KnownHooks} */\n\t\tthis.hooks = {\n\t\t\tresolveStep: new SyncHook([\"hook\", \"request\"], \"resolveStep\"),\n\t\t\tnoResolve: new SyncHook([\"request\", \"error\"], \"noResolve\"),\n\t\t\tresolve: new AsyncSeriesBailHook(\n\t\t\t\t[\"request\", \"resolveContext\"],\n\t\t\t\t\"resolve\",\n\t\t\t),\n\t\t\tresult: new AsyncSeriesHook([\"result\", \"resolveContext\"], \"result\"),\n\t\t};\n\t}\n\n\t/**\n\t * @param {string | ResolveStepHook} name hook name or hook itself\n\t * @returns {ResolveStepHook} the hook\n\t */\n\tensureHook(name) {\n\t\tif (typeof name !== \"string\") {\n\t\t\treturn name;\n\t\t}\n\t\tname = toCamelCase(name);\n\t\tif (name.startsWith(\"before\")) {\n\t\t\treturn /** @type {ResolveStepHook} */ (\n\t\t\t\tthis.ensureHook(name[6].toLowerCase() + name.slice(7)).withOptions({\n\t\t\t\t\tstage: -10,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tif (name.startsWith(\"after\")) {\n\t\t\treturn /** @type {ResolveStepHook} */ (\n\t\t\t\tthis.ensureHook(name[5].toLowerCase() + name.slice(6)).withOptions({\n\t\t\t\t\tstage: 10,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\t/** @type {ResolveStepHook} */\n\t\tconst hook = /** @type {KnownHooks & EnsuredHooks} */ (this.hooks)[name];\n\t\tif (!hook) {\n\t\t\t/** @type {KnownHooks & EnsuredHooks} */\n\t\t\t(this.hooks)[name] = new AsyncSeriesBailHook(\n\t\t\t\t[\"request\", \"resolveContext\"],\n\t\t\t\tname,\n\t\t\t);\n\n\t\t\treturn /** @type {KnownHooks & EnsuredHooks} */ (this.hooks)[name];\n\t\t}\n\t\treturn hook;\n\t}\n\n\t/**\n\t * @param {string | ResolveStepHook} name hook name or hook itself\n\t * @returns {ResolveStepHook} the hook\n\t */\n\tgetHook(name) {\n\t\tif (typeof name !== \"string\") {\n\t\t\treturn name;\n\t\t}\n\t\tname = toCamelCase(name);\n\t\tif (name.startsWith(\"before\")) {\n\t\t\treturn /** @type {ResolveStepHook} */ (\n\t\t\t\tthis.getHook(name[6].toLowerCase() + name.slice(7)).withOptions({\n\t\t\t\t\tstage: -10,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tif (name.startsWith(\"after\")) {\n\t\t\treturn /** @type {ResolveStepHook} */ (\n\t\t\t\tthis.getHook(name[5].toLowerCase() + name.slice(6)).withOptions({\n\t\t\t\t\tstage: 10,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\t/** @type {ResolveStepHook} */\n\t\tconst hook = /** @type {KnownHooks & EnsuredHooks} */ (this.hooks)[name];\n\t\tif (!hook) {\n\t\t\tthrow new Error(`Hook ${name} doesn't exist`);\n\t\t}\n\t\treturn hook;\n\t}\n\n\t/**\n\t * @overload\n\t * @param {string | URL} parent context path or a `file:` URL instance\n\t * @param {string | URL} specifier request string or a `file:` URL instance\n\t * @param {ResolveContext=} resolveContext resolve context\n\t * @returns {string | false} result\n\t */\n\t/**\n\t * @overload\n\t * @param {Context} context context information object\n\t * @param {string | URL} parent context path or a `file:` URL instance\n\t * @param {string | URL} specifier request string or a `file:` URL instance\n\t * @param {ResolveContext=} resolveContext resolve context\n\t * @returns {string | false} result\n\t */\n\t/**\n\t * @param {Context | string | URL} context context information object, or the context path (string or `file:` URL instance) when no context is provided\n\t * @param {string | URL | ResolveContext=} parent context path (string or `file:` URL instance) or resolve context when no context is provided\n\t * @param {string | URL | ResolveContext=} specifier request string (or `file:` URL instance) or resolve context when no context is provided\n\t * @param {ResolveContext=} resolveContext resolve context\n\t * @returns {string | false} result\n\t */\n\tresolveSync(context, parent, specifier, resolveContext) {\n\t\t/** @type {Error | null | undefined} */\n\t\tlet err;\n\t\t/** @type {string | false | undefined} */\n\t\tlet result;\n\t\tlet sync = false;\n\t\t// `|| {}` so the underlying `resolve()` hits its 5-arg fast path\n\t\t// (skips the overload-shifting prologue) regardless of whether the\n\t\t// caller supplied a resolveContext.\n\t\tthis.resolve(\n\t\t\t/** @type {Context} */ (context),\n\t\t\t/** @type {string} */ (parent),\n\t\t\t/** @type {string} */ (specifier),\n\t\t\t/** @type {ResolveContext} */ (resolveContext) || {},\n\t\t\t(_err, r) => {\n\t\t\t\terr = _err;\n\t\t\t\tresult = r;\n\t\t\t\tsync = true;\n\t\t\t},\n\t\t);\n\t\tif (!sync) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Cannot 'resolveSync' because the fileSystem is not sync. Use 'resolve'!\",\n\t\t\t);\n\t\t}\n\t\tif (err) throw err;\n\t\tif (result === undefined) throw new Error(\"No result\");\n\t\treturn result;\n\t}\n\n\t/**\n\t * @overload\n\t * @param {string | URL} parent context path or a `file:` URL instance\n\t * @param {string | URL} specifier request string or a `file:` URL instance\n\t * @param {ResolveContext=} resolveContext resolve context\n\t * @returns {Promise<string | false>} result\n\t */\n\t/**\n\t * @overload\n\t * @param {Context} context context information object\n\t * @param {string | URL} parent context path or a `file:` URL instance\n\t * @param {string | URL} specifier request string or a `file:` URL instance\n\t * @param {ResolveContext=} resolveContext resolve context\n\t * @returns {Promise<string | false>} result\n\t */\n\t/**\n\t * @param {Context | string | URL} context context information object, or the context path (string or `file:` URL instance) when no context is provided\n\t * @param {string | URL | ResolveContext=} parent context path (string or `file:` URL instance) or resolve context when no context is provided\n\t * @param {string | URL | ResolveContext=} specifier request string (or `file:` URL instance) or resolve context when no context is provided\n\t * @param {ResolveContext=} resolveContext resolve context\n\t * @returns {Promise<string | false>} result\n\t */\n\tresolvePromise(context, parent, specifier, resolveContext) {\n\t\t// `|| {}` ensures the 5-arg fast path inside `resolve()` is reached\n\t\t// even when the caller doesn't pass a resolveContext.\n\t\treturn _withResolvers(\n\t\t\tthis,\n\t\t\t/** @type {Context} */ (context),\n\t\t\t/** @type {string} */ (parent),\n\t\t\t/** @type {string} */ (specifier),\n\t\t\t/** @type {ResolveContext} */ (resolveContext) || {},\n\t\t);\n\t}\n\n\t/**\n\t * @overload\n\t * @param {string | URL} parent context path or a `file:` URL instance\n\t * @param {string | URL} specifier request string or a `file:` URL instance\n\t * @param {ResolveCallback} callback callback function\n\t * @returns {void}\n\t */\n\t/**\n\t * @overload\n\t * @param {string | URL} parent context path or a `file:` URL instance\n\t * @param {string | URL} specifier request string or a `file:` URL instance\n\t * @param {ResolveContext} resolveContext resolve context\n\t * @param {ResolveCallback} callback callback function\n\t * @returns {void}\n\t */\n\t/**\n\t * @overload\n\t * @param {Context} context context information object\n\t * @param {string | URL} parent context path or a `file:` URL instance\n\t * @param {string | URL} specifier request string or a `file:` URL instance\n\t * @param {ResolveCallback} callback callback function\n\t * @returns {void}\n\t */\n\t/**\n\t * @overload\n\t * @param {Context} context context information object\n\t * @param {string | URL} parent context path or a `file:` URL instance\n\t * @param {string | URL} specifier request string or a `file:` URL instance\n\t * @param {ResolveContext} resolveContext resolve context\n\t * @param {ResolveCallback} callback callback function\n\t * @returns {void}\n\t */\n\t/**\n\t * @param {Context | string | URL} context context information object, or the context path (string or `file:` URL instance) when no context is provided\n\t * @param {string | URL | ResolveContext | ResolveCallback=} parent context path (string or `file:` URL instance) or (when no context) resolve context or callback\n\t * @param {string | URL | ResolveContext | ResolveCallback=} specifier request string (or `file:` URL instance) or (when no context) resolve context or callback\n\t * @param {ResolveContext | ResolveCallback=} resolveContext resolve context or callback when no resolve context is provided\n\t * @param {ResolveCallback=} callback callback function\n\t * @returns {void}\n\t */\n\tresolve(context, parent, specifier, resolveContext, callback) {\n\t\t// Fast path for the common 5-arg call (`resolver.resolve(ctx, from,\n\t\t// req, resolveCtx, cb)`) — every call from `resolveSync` /\n\t\t// `resolvePromise` plus the vast majority of direct API callers.\n\t\t// PR #536 added runtime overload-shifting to support optional\n\t\t// `context` / `resolveContext`; that adds several `typeof` checks\n\t\t// per resolve which show up as a measurable instruction-count\n\t\t// regression on every benchmark that calls into this method. Skip\n\t\t// the shifting entirely when all 5 args are already well-typed.\n\t\tif (\n\t\t\ttypeof callback === \"function\" &&\n\t\t\ttypeof context === \"object\" &&\n\t\t\tcontext !== null &&\n\t\t\ttypeof resolveContext === \"object\" &&\n\t\t\tresolveContext !== null\n\t\t) {\n\t\t\t// proceed straight to per-arg validation below\n\t\t} else {\n\t\t\t// Slow path: shift positional args based on what was supplied.\n\t\t\t// Shift when context is omitted (first positional arg is the parent,\n\t\t\t// either a string or a `file:` URL instance).\n\t\t\tif (typeof context === \"string\" || context instanceof URL) {\n\t\t\t\t// Keep an already-supplied callback (resolveSync / resolvePromise\n\t\t\t\t// always pass one in the 5th position).\n\t\t\t\tif (typeof callback !== \"function\") {\n\t\t\t\t\tcallback = /** @type {ResolveCallback | undefined} */ (\n\t\t\t\t\t\tresolveContext\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tresolveContext =\n\t\t\t\t\t/** @type {ResolveContext | ResolveCallback | undefined} */ (\n\t\t\t\t\t\tspecifier\n\t\t\t\t\t);\n\t\t\t\tspecifier = /** @type {string} */ (parent);\n\t\t\t\tparent = context;\n\t\t\t\tcontext = {};\n\t\t\t}\n\t\t\t// 4-arg form: the resolveContext slot holds the callback.\n\t\t\tif (typeof resolveContext === \"function\") {\n\t\t\t\tcallback = resolveContext;\n\t\t\t\tresolveContext = {};\n\t\t\t} else if (!resolveContext || typeof resolveContext !== \"object\") {\n\t\t\t\tresolveContext = {};\n\t\t\t}\n\t\t\tif (typeof callback !== \"function\") {\n\t\t\t\tthrow new TypeError(\"callback argument is not a function\");\n\t\t\t}\n\t\t\tif (!context || typeof context !== \"object\") {\n\t\t\t\tcontext = {};\n\t\t\t}\n\t\t}\n\t\t// Accept `file:` URL instances for parent/specifier, converting to a\n\t\t// filesystem path (mirrors the URL support in resolve options). The\n\t\t// `instanceof` check sits on the error branch, so the common string\n\t\t// case keeps its single `typeof` check on this hot path.\n\t\tif (typeof parent !== \"string\") {\n\t\t\tif (parent instanceof URL) parent = toPath(parent);\n\t\t\telse return callback(new Error(\"path argument is not a string\"));\n\t\t}\n\t\tif (typeof specifier !== \"string\") {\n\t\t\tif (specifier instanceof URL) specifier = toPath(specifier);\n\t\t\telse return callback(new Error(\"request argument is not a string\"));\n\t\t}\n\n\t\t/** @type {ResolveRequest} */\n\t\tconst obj = {\n\t\t\tcontext,\n\t\t\tpath: parent,\n\t\t\trequest: specifier,\n\t\t};\n\n\t\t/** @type {ResolveContextYield | undefined} */\n\t\tlet yield_;\n\t\tlet yieldCalled = false;\n\t\t/** @type {ResolveContextYield | undefined} */\n\t\tlet finishYield;\n\t\tif (typeof resolveContext.yield === \"function\") {\n\t\t\tconst old = resolveContext.yield;\n\t\t\t/**\n\t\t\t * @param {ResolveRequest} obj object\n\t\t\t */\n\t\t\tyield_ = (obj) => {\n\t\t\t\told(obj);\n\t\t\t\tyieldCalled = true;\n\t\t\t};\n\t\t\t/**\n\t\t\t * @param {ResolveRequest} result result\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tfinishYield = (result) => {\n\t\t\t\tif (result) {\n\t\t\t\t\t/** @type {ResolveContextYield} */ (yield_)(result);\n\t\t\t\t}\n\t\t\t\tcallback(null);\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * @param {ResolveRequest} result result\n\t\t * @returns {void}\n\t\t */\n\t\tconst finishResolved = (result) => {\n\t\t\tconst resultPath = result.path;\n\t\t\tif (resultPath === false) return callback(null, false, result);\n\t\t\tconst escapedPath = resultPath.includes(\"#\")\n\t\t\t\t? resultPath.replace(HASH_ESCAPE_RE, \"\\0#\")\n\t\t\t\t: resultPath;\n\t\t\tconst resultQuery = result.query;\n\t\t\tlet escapedQuery;\n\t\t\tif (resultQuery) {\n\t\t\t\tescapedQuery = resultQuery.includes(\"#\")\n\t\t\t\t\t? resultQuery.replace(HASH_ESCAPE_RE, \"\\0#\")\n\t\t\t\t\t: resultQuery;\n\t\t\t} else {\n\t\t\t\tescapedQuery = \"\";\n\t\t\t}\n\t\t\treturn callback(\n\t\t\t\tnull,\n\t\t\t\t`${escapedPath}${escapedQuery}${result.fragment || \"\"}`,\n\t\t\t\tresult,\n\t\t\t);\n\t\t};\n\n\t\t/**\n\t\t * @param {string} message resolve message\n\t\t * @param {string[]} log logs\n\t\t * @returns {void}\n\t\t */\n\t\tconst finishWithoutResolve = (message, log) => {\n\t\t\t/**\n\t\t\t * @type {ErrorWithDetail}\n\t\t\t */\n\t\t\tconst error = new Error(`Can't ${message}`);\n\t\t\terror.details = log.join(\"\\n\");\n\t\t\tthis.hooks.noResolve.call(obj, error);\n\t\t\treturn callback(error);\n\t\t};\n\n\t\tif (resolveContext.log) {\n\t\t\tconst message = `resolve '${specifier}' in '${parent}'`;\n\t\t\t// We need log anyway to capture it in case of an error\n\t\t\tconst parentLog = resolveContext.log;\n\t\t\t/** @type {string[]} */\n\t\t\tconst log = [];\n\t\t\treturn this.doResolve(\n\t\t\t\tthis.hooks.resolve,\n\t\t\t\tobj,\n\t\t\t\tmessage,\n\t\t\t\t{\n\t\t\t\t\tlog: (msg) => {\n\t\t\t\t\t\tparentLog(msg);\n\t\t\t\t\t\tlog.push(msg);\n\t\t\t\t\t},\n\t\t\t\t\tyield: yield_,\n\t\t\t\t\tfileDependencies: resolveContext.fileDependencies,\n\t\t\t\t\tcontextDependencies: resolveContext.contextDependencies,\n\t\t\t\t\tmissingDependencies: resolveContext.missingDependencies,\n\t\t\t\t\tstack: resolveContext.stack,\n\t\t\t\t},\n\t\t\t\t(err, result) => {\n\t\t\t\t\tif (err) return callback(err);\n\n\t\t\t\t\tif (yieldCalled || (result && yield_)) {\n\t\t\t\t\t\treturn /** @type {ResolveContextYield} */ (finishYield)(\n\t\t\t\t\t\t\t/** @type {ResolveRequest} */ (result),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (result) return finishResolved(result);\n\n\t\t\t\t\treturn finishWithoutResolve(message, log);\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\t// Try to resolve assuming there is no error\n\t\t// We don't log stuff in this case\n\t\t// When there is no yield wrapper, the caller's resolveContext can\n\t\t// be passed directly — its `log` is already falsy (we are in the\n\t\t// !log branch) and `yield` is undefined, so a fresh wrapper would\n\t\t// be an identical copy.\n\t\tconst rc = yield_\n\t\t\t? {\n\t\t\t\t\tlog: undefined,\n\t\t\t\t\tyield: yield_,\n\t\t\t\t\tfileDependencies: resolveContext.fileDependencies,\n\t\t\t\t\tcontextDependencies: resolveContext.contextDependencies,\n\t\t\t\t\tmissingDependencies: resolveContext.missingDependencies,\n\t\t\t\t\tstack: resolveContext.stack,\n\t\t\t\t}\n\t\t\t: resolveContext;\n\t\treturn this.doResolve(this.hooks.resolve, obj, null, rc, (err, result) => {\n\t\t\tif (err) return callback(err);\n\n\t\t\tif (yieldCalled || (result && yield_)) {\n\t\t\t\treturn /** @type {ResolveContextYield} */ (finishYield)(\n\t\t\t\t\t/** @type {ResolveRequest} */ (result),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (result) return finishResolved(result);\n\n\t\t\t// log is missing for the error details\n\t\t\t// so we redo the resolving for the log info\n\t\t\t// this is more expensive to the success case\n\t\t\t// is assumed by default\n\t\t\tconst message = `resolve '${specifier}' in '${parent}'`;\n\t\t\t/** @type {string[]} */\n\t\t\tconst log = [];\n\n\t\t\treturn this.doResolve(\n\t\t\t\tthis.hooks.resolve,\n\t\t\t\tobj,\n\t\t\t\tmessage,\n\t\t\t\t{\n\t\t\t\t\tlog: (msg) => log.push(msg),\n\t\t\t\t\tyield: yield_,\n\t\t\t\t\tstack: resolveContext.stack,\n\t\t\t\t},\n\t\t\t\t(err, result) => {\n\t\t\t\t\tif (err) return callback(err);\n\n\t\t\t\t\t// In a case that there is a race condition and yield will be called\n\t\t\t\t\tif (yieldCalled || (result && yield_)) {\n\t\t\t\t\t\treturn /** @type {ResolveContextYield} */ (finishYield)(\n\t\t\t\t\t\t\t/** @type {ResolveRequest} */ (result),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn finishWithoutResolve(message, log);\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * @param {ResolveStepHook} hook hook\n\t * @param {ResolveRequest} request request\n\t * @param {null | string} message string\n\t * @param {ResolveContext} resolveContext resolver context\n\t * @param {(err?: null | Error, result?: ResolveRequest) => void} callback callback\n\t * @returns {void}\n\t */\n\tdoResolve(hook, request, message, resolveContext, callback) {\n\t\tconst rawStack = resolveContext.stack;\n\t\t/** @type {StackEntry | undefined} */\n\t\tlet parent;\n\t\t/** @type {Set<string> | undefined} */\n\t\tlet preSeeded;\n\t\tif (rawStack instanceof StackEntry) {\n\t\t\tparent = rawStack;\n\t\t\tpreSeeded = rawStack.preSeeded;\n\t\t} else if (rawStack) {\n\t\t\t// TODO in the next major remove `Set<string>` support in favor of `StackEntry`\n\t\t\t// Legacy `stack: new Set<string>()` API: don't link the Set into\n\t\t\t// the parent chain (it would pollute iteration and field-compare\n\t\t\t// walks). Carry the strings on the StackEntry itself instead so\n\t\t\t// deeper `doResolve` calls keep seeing pre-seeded entries.\n\t\t\tpreSeeded = /** @type {Set<string>} */ (rawStack);\n\t\t}\n\t\t// Prepend a new linked-list node. O(1) allocation, no Set clone.\n\t\tconst stackEntry = Resolver.createStackEntry(\n\t\t\thook,\n\t\t\trequest,\n\t\t\tparent,\n\t\t\tpreSeeded,\n\t\t);\n\n\t\t// When `parent` exists, its `has()` already consults `preSeeded`\n\t\t// (inherited from the same chain), so we only need the direct Set\n\t\t// lookup on the very first `doResolve` call (no parent yet).\n\t\tif (\n\t\t\tparent !== undefined\n\t\t\t\t? parent.has(stackEntry)\n\t\t\t\t: preSeeded !== undefined && preSeeded.has(stackEntry.toString())\n\t\t) {\n\t\t\t/**\n\t\t\t * Prevent recursion\n\t\t\t * @type {Error & { recursion?: boolean }}\n\t\t\t */\n\t\t\tconst recursionError = new Error(\n\t\t\t\t`Recursion in resolving\\nStack:\\n  ${[...stackEntry].join(\"\\n  \")}`,\n\t\t\t);\n\t\t\trecursionError.recursion = true;\n\t\t\tif (resolveContext.log) {\n\t\t\t\tresolveContext.log(\"abort resolving because of recursion\");\n\t\t\t}\n\t\t\treturn callback(recursionError);\n\t\t}\n\t\tthis.hooks.resolveStep.call(hook, request);\n\n\t\tif (hook.isUsed()) {\n\t\t\t// No-log fast path: when the context was created internally\n\t\t\t// (stack is already a StackEntry from a prior doResolve), we\n\t\t\t// can mutate stack in-place and restore it in the callback,\n\t\t\t// avoiding the createInnerContext allocation entirely.\n\t\t\tif (!resolveContext.log && rawStack instanceof StackEntry) {\n\t\t\t\tresolveContext.stack = stackEntry;\n\t\t\t\treturn hook.callAsync(request, resolveContext, (err, result) => {\n\t\t\t\t\tresolveContext.stack = rawStack;\n\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\tif (result) return callback(null, result);\n\t\t\t\t\tcallback();\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst innerContext = createInnerContext(\n\t\t\t\tresolveContext,\n\t\t\t\tstackEntry,\n\t\t\t\tmessage,\n\t\t\t);\n\t\t\treturn hook.callAsync(request, innerContext, (err, result) => {\n\t\t\t\tif (err) return callback(err);\n\t\t\t\tif (result) return callback(null, result);\n\t\t\t\tcallback();\n\t\t\t});\n\t\t}\n\t\tcallback();\n\t}\n\n\t/**\n\t * @param {string} identifier identifier\n\t * @returns {ParsedIdentifier} parsed identifier\n\t */\n\tparse(identifier) {\n\t\t/** @type {ParsedIdentifier} */\n\t\tconst part = {\n\t\t\trequest: \"\",\n\t\t\tquery: \"\",\n\t\t\tfragment: \"\",\n\t\t\tmodule: false,\n\t\t\tdirectory: false,\n\t\t\tfile: false,\n\t\t\tinternal: false,\n\t\t};\n\n\t\tconst parsedIdentifier = parseIdentifier(identifier);\n\n\t\tif (!parsedIdentifier) return part;\n\n\t\t[part.request, part.query, part.fragment] = parsedIdentifier;\n\n\t\tif (part.request.length > 0) {\n\t\t\t// `getType` looks at the prefix of its input and the prefix is\n\t\t\t// identical between `identifier` and `part.request` in every\n\t\t\t// non-`\\0`-escape case (slicing off `?query` / `#fragment` doesn't\n\t\t\t// touch the head). `parseIdentifier`'s common fast path returns\n\t\t\t// the same `identifier` reference as `parsedIdentifier[0]`, so a\n\t\t\t// pointer-equality check detects the case where we can compute\n\t\t\t// `getType` once and use it for both `module` and `internal`. The\n\t\t\t// `\\0#…` escape path produces a fresh `part.request` and falls\n\t\t\t// through to the second `getType(identifier)` call to preserve\n\t\t\t// the original `internal` flag.\n\t\t\tconst requestType = getType(part.request);\n\t\t\tpart.module = requestType === PathType.Normal;\n\t\t\tpart.internal =\n\t\t\t\tidentifier === part.request\n\t\t\t\t\t? requestType === PathType.Internal\n\t\t\t\t\t: getType(identifier) === PathType.Internal;\n\t\t\t// `isDirectory` is just `endsWith(\"/\")` — inline so `parse()`\n\t\t\t// doesn't pay for the extra method dispatch on every resolve.\n\t\t\tpart.directory = part.request.endsWith(\"/\");\n\t\t\tif (part.directory) {\n\t\t\t\tpart.request = part.request.slice(0, -1);\n\t\t\t}\n\t\t}\n\n\t\treturn part;\n\t}\n\n\t/**\n\t * @param {string} path path\n\t * @returns {boolean} true, if the path is a module\n\t */\n\tisModule(path) {\n\t\treturn getType(path) === PathType.Normal;\n\t}\n\n\t/**\n\t * @param {string} path path\n\t * @returns {boolean} true, if the path is private\n\t */\n\tisPrivate(path) {\n\t\treturn getType(path) === PathType.Internal;\n\t}\n\n\t/**\n\t * @param {string} path a path\n\t * @returns {boolean} true, if the path is a directory path\n\t */\n\tisDirectory(path) {\n\t\treturn path.endsWith(\"/\");\n\t}\n\n\t/**\n\t * @param {string} path path\n\t * @returns {string} normalized path\n\t */\n\tnormalize(path) {\n\t\treturn normalize(path);\n\t}\n\n\t/**\n\t * @param {string} path path\n\t * @param {string} request request\n\t * @returns {string} joined path\n\t */\n\tjoin(path, request) {\n\t\treturn this.pathCache.join.fn(path, request);\n\t}\n\n\t/**\n\t * @param {string} path path\n\t * @returns {string} parent directory\n\t */\n\tdirname(path) {\n\t\treturn this.pathCache.dirname.fn(path);\n\t}\n\n\t/**\n\t * @param {string} path the path to evaluate\n\t * @param {string=} suffix an extension to remove from the result\n\t * @returns {string} the last portion of a path\n\t */\n\tbasename(path, suffix) {\n\t\treturn this.pathCache.basename.fn(path, suffix);\n\t}\n}\n\nmodule.exports = Resolver;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Ivan Kopeykin @vankop\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nconst slashCode = \"/\".charCodeAt(0);\nconst backslashCode = \"\\\\\".charCodeAt(0);\n\n/**\n * @param {string} path path\n * @param {string} parent parent path\n * @returns {boolean} true, if path is inside of parent\n */\nconst isInside = (path, parent) => {\n\tif (!path.startsWith(parent)) return false;\n\tif (path.length === parent.length) return true;\n\tconst charCode = path.charCodeAt(parent.length);\n\treturn charCode === slashCode || charCode === backslashCode;\n};\n\nmodule.exports = class RestrictionsPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {Set<string | RegExp>} restrictions restrictions\n\t */\n\tconstructor(source, restrictions) {\n\t\tthis.source = source;\n\t\tthis.restrictions = restrictions;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"RestrictionsPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tif (typeof request.path === \"string\") {\n\t\t\t\t\tconst { path } = request;\n\t\t\t\t\tfor (const rule of this.restrictions) {\n\t\t\t\t\t\tif (typeof rule === \"string\") {\n\t\t\t\t\t\t\tif (!isInside(path, rule)) {\n\t\t\t\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t\t\t\t`${path} is not inside of the restriction ${rule}`,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Target existed (FileExistsPlugin already passed) but is\n\t\t\t\t\t\t\t\t// outside the jail; signal ExportsFieldPlugin to fall back.\n\t\t\t\t\t\t\t\tif (request.__restrictionsMarker) {\n\t\t\t\t\t\t\t\t\trequest.__restrictionsMarker.blocked = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!rule.test(path)) {\n\t\t\t\t\t\t\tif (resolveContext.log) {\n\t\t\t\t\t\t\t\tresolveContext.log(\n\t\t\t\t\t\t\t\t\t`${path} doesn't match the restriction ${rule}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (request.__restrictionsMarker) {\n\t\t\t\t\t\t\t\trequest.__restrictionsMarker.blocked = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback();\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class ResultPlugin {\n\t/**\n\t * @param {ResolveStepHook} source source\n\t */\n\tconstructor(source) {\n\t\tthis.source = source;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tthis.source.tapAsync(\n\t\t\t\"ResultPlugin\",\n\t\t\t(request, resolverContext, callback) => {\n\t\t\t\tconst obj = { ...request };\n\t\t\t\tif (resolverContext.log) {\n\t\t\t\t\tresolverContext.log(`reporting result ${obj.path}`);\n\t\t\t\t}\n\t\t\t\tresolver.hooks.result.callAsync(obj, resolverContext, (err) => {\n\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\tif (typeof resolverContext.yield === \"function\") {\n\t\t\t\t\t\tresolverContext.yield(obj);\n\t\t\t\t\t\tcallback(null, null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(null, obj);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t);\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Ivan Kopeykin @vankop\n*/\n\n\"use strict\";\n\nconst forEachBail = require(\"./forEachBail\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nclass RootsPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source hook\n\t * @param {Set<string>} roots roots\n\t * @param {string | ResolveStepHook} target target hook\n\t */\n\tconstructor(source, roots, target) {\n\t\tthis.roots = [...roots];\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"RootsPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tconst req = request.request;\n\t\t\t\tif (!req) return callback();\n\t\t\t\tif (!req.startsWith(\"/\")) return callback();\n\n\t\t\t\tforEachBail(\n\t\t\t\t\tthis.roots,\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {string} root root\n\t\t\t\t\t * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback\n\t\t\t\t\t * @returns {void}\n\t\t\t\t\t */\n\t\t\t\t\t(root, callback) => {\n\t\t\t\t\t\tconst path = resolver.join(root, req.slice(1));\n\t\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\trelativePath: request.relativePath && path,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\t`root path ${root}`,\n\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\tcallback,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t});\n\t}\n}\n\nmodule.exports = RootsPlugin;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst DescriptionFileUtils = require(\"./DescriptionFileUtils\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").JsonObject} JsonObject */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nconst slashCode = \"/\".charCodeAt(0);\n\n// Sentinel stored in `_nameCache` when the description file either has no\n// exports field (so self-reference can't apply) or no string `name`.\nconst NO_SELF_REF = Symbol(\"NoSelfRef\");\n\nmodule.exports = class SelfReferencePlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | string[]} fieldNamePath name path\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, fieldNamePath, target) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t\tthis.fieldName = fieldNamePath;\n\t\t// Self-reference needs both an exports field and a `\"name\"` string.\n\t\t// Both are stable per description-file content, so cache the decision\n\t\t// in one WeakMap: the resolved name when self-reference is possible,\n\t\t// or `NO_SELF_REF` when it isn't. This skips the two per-resolve\n\t\t// `DescriptionFileUtils.getField` walks for hot packages.\n\t\t/** @type {WeakMap<JsonObject, string | typeof NO_SELF_REF>} */\n\t\tthis._nameCache = new WeakMap();\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"SelfReferencePlugin\", (request, resolveContext, callback) => {\n\t\t\t\tif (!request.descriptionFileData) return callback();\n\n\t\t\t\tconst req = request.request;\n\t\t\t\tif (!req) return callback();\n\n\t\t\t\tconst { descriptionFileData } = request;\n\t\t\t\tlet name = this._nameCache.get(descriptionFileData);\n\t\t\t\tif (name === undefined) {\n\t\t\t\t\t// Feature is only enabled when an exports field is present\n\t\t\t\t\tconst exportsField = DescriptionFileUtils.getField(\n\t\t\t\t\t\tdescriptionFileData,\n\t\t\t\t\t\tthis.fieldName,\n\t\t\t\t\t);\n\t\t\t\t\tif (!exportsField) {\n\t\t\t\t\t\tthis._nameCache.set(descriptionFileData, NO_SELF_REF);\n\t\t\t\t\t\treturn callback();\n\t\t\t\t\t}\n\t\t\t\t\tconst rawName = DescriptionFileUtils.getField(\n\t\t\t\t\t\tdescriptionFileData,\n\t\t\t\t\t\t\"name\",\n\t\t\t\t\t);\n\t\t\t\t\tif (typeof rawName !== \"string\") {\n\t\t\t\t\t\tthis._nameCache.set(descriptionFileData, NO_SELF_REF);\n\t\t\t\t\t\treturn callback();\n\t\t\t\t\t}\n\t\t\t\t\tname = rawName;\n\t\t\t\t\tthis._nameCache.set(descriptionFileData, name);\n\t\t\t\t} else if (name === NO_SELF_REF) {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\treq.startsWith(name) &&\n\t\t\t\t\t(req.length === name.length ||\n\t\t\t\t\t\treq.charCodeAt(name.length) === slashCode)\n\t\t\t\t) {\n\t\t\t\t\tconst remainingRequest = `.${req.slice(name.length)}`;\n\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t...request,\n\t\t\t\t\t\trequest: remainingRequest,\n\t\t\t\t\t\tpath: /** @type {string} */ (request.descriptionFileRoot),\n\t\t\t\t\t\trelativePath: \".\",\n\t\t\t\t\t};\n\n\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\"self reference\",\n\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\tcallback,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst forEachBail = require(\"./forEachBail\");\nconst { getPathsCached } = require(\"./getPaths\");\nconst { PathType, getType } = require(\"./util/path\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class SymlinkPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, target) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tconst fs = resolver.fileSystem;\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"SymlinkPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tif (request.ignoreSymlinks) return callback();\n\t\t\t\tconst pathsResult = getPathsCached(\n\t\t\t\t\tfs,\n\t\t\t\t\t/** @type {string} */ (request.path),\n\t\t\t\t);\n\t\t\t\tconst { paths, segments } = pathsResult;\n\t\t\t\t// `pathsResult.segments` is shared across callers via the cache.\n\t\t\t\t// The only place we need to mutate is `pathSegments[idx] = result`\n\t\t\t\t// when `fs.readlink` succeeds — which is rare (the vast majority\n\t\t\t\t// of paths contain no symlinks, e.g. every resolve on\n\t\t\t\t// `cache-predicate`'s no-symlink fixture). Defer the copy until\n\t\t\t\t// we actually see a symlink so the common no-symlink path stays\n\t\t\t\t// allocation-free.\n\t\t\t\t/** @type {string[] | null} */\n\t\t\t\tlet pathSegments = null;\n\n\t\t\t\tlet containsSymlink = false;\n\t\t\t\tlet idx = -1;\n\t\t\t\tforEachBail(\n\t\t\t\t\tpaths,\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {string} path path\n\t\t\t\t\t * @param {(err?: null | Error, result?: null | number) => void} callback callback\n\t\t\t\t\t * @returns {void}\n\t\t\t\t\t */\n\t\t\t\t\t(path, callback) => {\n\t\t\t\t\t\tidx++;\n\t\t\t\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\t\t\t\tresolveContext.fileDependencies.add(path);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfs.readlink(path, (err, result) => {\n\t\t\t\t\t\t\tif (!err && result) {\n\t\t\t\t\t\t\t\t// First symlink seen — take our own copy now, so\n\t\t\t\t\t\t\t\t// the cached `segments` array stays pristine for\n\t\t\t\t\t\t\t\t// sibling resolves.\n\t\t\t\t\t\t\t\tif (pathSegments === null) {\n\t\t\t\t\t\t\t\t\tpathSegments = [...segments];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tpathSegments[idx] = /** @type {string} */ (result);\n\t\t\t\t\t\t\t\tcontainsSymlink = true;\n\t\t\t\t\t\t\t\t// Shortcut when absolute symlink found\n\t\t\t\t\t\t\t\tconst resultType = getType(result.toString());\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tresultType === PathType.AbsoluteWin ||\n\t\t\t\t\t\t\t\t\tresultType === PathType.AbsolutePosix\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn callback(null, idx);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {null | Error=} err error\n\t\t\t\t\t * @param {null | number=} idx result\n\t\t\t\t\t * @returns {void}\n\t\t\t\t\t */\n\t\t\t\t\t(err, idx) => {\n\t\t\t\t\t\tif (!containsSymlink) return callback();\n\t\t\t\t\t\t// `containsSymlink === true` implies we took a copy in\n\t\t\t\t\t\t// `pathSegments` already, so it's non-null. The copy is\n\t\t\t\t\t\t// our own, so `slice` to trim is fine and spreading to\n\t\t\t\t\t\t// \"unshare\" is no longer necessary.\n\t\t\t\t\t\tconst own = /** @type {string[]} */ (pathSegments);\n\t\t\t\t\t\tconst resultSegments =\n\t\t\t\t\t\t\ttypeof idx === \"number\" ? own.slice(0, idx + 1) : own;\n\t\t\t\t\t\tconst result = resultSegments.reduceRight((a, b) =>\n\t\t\t\t\t\t\tresolver.join(a, b),\n\t\t\t\t\t\t);\n\t\t\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\tpath: result,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tresolver.doResolve(\n\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\t`resolved symlink to ${result}`,\n\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\t(err, innerResult) => {\n\t\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\t\t// The symlink-resolved (real) path is authoritative. If\n\t\t\t\t\t\t\t\t// resolving it produced a result, use it. If it did not —\n\t\t\t\t\t\t\t\t// e.g. a `restrictions` rule rejected the real target —\n\t\t\t\t\t\t\t\t// stop here with no result instead of letting the next\n\t\t\t\t\t\t\t\t// plugin report the original in-root symlink path, which\n\t\t\t\t\t\t\t\t// would leave the symlink unresolved and bypass\n\t\t\t\t\t\t\t\t// `restrictions`.\n\t\t\t\t\t\t\t\tif (innerResult) return callback(null, innerResult);\n\t\t\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\").FileSystem} FileSystem */\n/** @typedef {import(\"./Resolver\").StringCallback} StringCallback */\n/** @typedef {import(\"./Resolver\").SyncFileSystem} SyncFileSystem */\n\n// eslint-disable-next-line jsdoc/reject-function-type\n/** @typedef {Function} SyncOrAsyncFunction */\n// eslint-disable-next-line jsdoc/reject-any-type\n/** @typedef {any} ResultOfSyncOrAsyncFunction */\n\n/**\n * @param {SyncFileSystem} fs file system implementation\n * @constructor\n */\nfunction SyncAsyncFileSystemDecorator(fs) {\n\tthis.fs = fs;\n\n\tthis.lstat = undefined;\n\tthis.lstatSync = undefined;\n\tconst { lstatSync } = fs;\n\tif (lstatSync) {\n\t\tthis.lstat =\n\t\t\t/** @type {FileSystem[\"lstat\"]} */\n\t\t\t(\n\t\t\t\t(arg, options, callback) => {\n\t\t\t\t\tlet result;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresult = /** @type {SyncOrAsyncFunction | undefined} */ (callback)\n\t\t\t\t\t\t\t? lstatSync.call(fs, arg, options)\n\t\t\t\t\t\t\t: lstatSync.call(fs, arg);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\treturn (callback || options)(\n\t\t\t\t\t\t\t/** @type {NodeJS.ErrnoException | null} */\n\t\t\t\t\t\t\t(err),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t(callback || options)(\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t/** @type {ResultOfSyncOrAsyncFunction} */\n\t\t\t\t\t\t(result),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\tthis.lstatSync =\n\t\t\t/** @type {SyncFileSystem[\"lstatSync\"]} */\n\t\t\t((arg, options) => lstatSync.call(fs, arg, options));\n\t}\n\n\tthis.stat =\n\t\t/** @type {FileSystem[\"stat\"]} */\n\t\t(\n\t\t\t(arg, options, callback) => {\n\t\t\t\tlet result;\n\t\t\t\ttry {\n\t\t\t\t\tresult = /** @type {SyncOrAsyncFunction | undefined} */ (callback)\n\t\t\t\t\t\t? fs.statSync(arg, options)\n\t\t\t\t\t\t: fs.statSync(arg);\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn (callback || options)(\n\t\t\t\t\t\t/** @type {NodeJS.ErrnoException | null} */\n\t\t\t\t\t\t(err),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t(callback || options)(\n\t\t\t\t\tnull,\n\t\t\t\t\t/** @type {ResultOfSyncOrAsyncFunction} */\n\t\t\t\t\t(result),\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\tthis.statSync =\n\t\t/** @type {SyncFileSystem[\"statSync\"]} */\n\t\t((arg, options) => fs.statSync(arg, options));\n\n\tthis.readdir =\n\t\t/** @type {FileSystem[\"readdir\"]} */\n\t\t(\n\t\t\t(arg, options, callback) => {\n\t\t\t\tlet result;\n\t\t\t\ttry {\n\t\t\t\t\tresult = /** @type {SyncOrAsyncFunction | undefined} */ (callback)\n\t\t\t\t\t\t? fs.readdirSync(\n\t\t\t\t\t\t\t\targ,\n\t\t\t\t\t\t\t\t/** @type {Exclude<Parameters<FileSystem[\"readdir\"]>[1], (err: NodeJS.ErrnoException | null, files: string[]) => void>} */\n\t\t\t\t\t\t\t\t(options),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: fs.readdirSync(arg);\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn (callback || options)(\n\t\t\t\t\t\t/** @type {NodeJS.ErrnoException | null} */\n\t\t\t\t\t\t(err),\n\t\t\t\t\t\t[],\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t(callback || options)(\n\t\t\t\t\tnull,\n\t\t\t\t\t/** @type {ResultOfSyncOrAsyncFunction} */\n\t\t\t\t\t(result),\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\tthis.readdirSync =\n\t\t/** @type {SyncFileSystem[\"readdirSync\"]} */\n\t\t(\n\t\t\t(arg, options) =>\n\t\t\t\tfs.readdirSync(\n\t\t\t\t\targ,\n\t\t\t\t\t/** @type {Parameters<SyncFileSystem[\"readdirSync\"]>[1]} */ (options),\n\t\t\t\t)\n\t\t);\n\n\tthis.readFile =\n\t\t/** @type {FileSystem[\"readFile\"]} */\n\t\t(\n\t\t\t(arg, options, callback) => {\n\t\t\t\tlet result;\n\t\t\t\ttry {\n\t\t\t\t\tresult = /** @type {SyncOrAsyncFunction | undefined} */ (callback)\n\t\t\t\t\t\t? fs.readFileSync(arg, options)\n\t\t\t\t\t\t: fs.readFileSync(arg);\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn (callback || options)(\n\t\t\t\t\t\t/** @type {NodeJS.ErrnoException | null} */\n\t\t\t\t\t\t(err),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t(callback || options)(\n\t\t\t\t\tnull,\n\t\t\t\t\t/** @type {ResultOfSyncOrAsyncFunction} */\n\t\t\t\t\t(result),\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\tthis.readFileSync =\n\t\t/** @type {SyncFileSystem[\"readFileSync\"]} */\n\t\t((arg, options) => fs.readFileSync(arg, options));\n\n\tthis.readlink =\n\t\t/** @type {FileSystem[\"readlink\"]} */\n\t\t(\n\t\t\t(arg, options, callback) => {\n\t\t\t\tlet result;\n\t\t\t\ttry {\n\t\t\t\t\tresult = /** @type {SyncOrAsyncFunction | undefined} */ (callback)\n\t\t\t\t\t\t? fs.readlinkSync(\n\t\t\t\t\t\t\t\targ,\n\t\t\t\t\t\t\t\t/** @type {Exclude<Parameters<FileSystem[\"readlink\"]>[1], StringCallback>} */\n\t\t\t\t\t\t\t\t(options),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: fs.readlinkSync(arg);\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn (callback || options)(\n\t\t\t\t\t\t/** @type {NodeJS.ErrnoException | null} */\n\t\t\t\t\t\t(err),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t(callback || options)(\n\t\t\t\t\tnull,\n\t\t\t\t\t/** @type {ResultOfSyncOrAsyncFunction} */\n\t\t\t\t\t(result),\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\tthis.readlinkSync =\n\t\t/** @type {SyncFileSystem[\"readlinkSync\"]} */\n\t\t(\n\t\t\t(arg, options) =>\n\t\t\t\tfs.readlinkSync(\n\t\t\t\t\targ,\n\t\t\t\t\t/** @type {Parameters<SyncFileSystem[\"readlinkSync\"]>[1]} */ (\n\t\t\t\t\t\toptions\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t);\n\n\tthis.readJson = undefined;\n\tthis.readJsonSync = undefined;\n\tconst { readJsonSync } = fs;\n\tif (readJsonSync) {\n\t\tthis.readJson =\n\t\t\t/** @type {FileSystem[\"readJson\"]} */\n\t\t\t(\n\t\t\t\t(arg, callback) => {\n\t\t\t\t\tlet result;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresult = readJsonSync.call(fs, arg);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\treturn callback(\n\t\t\t\t\t\t\t/** @type {NodeJS.ErrnoException | Error | null} */ (err),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback(null, result);\n\t\t\t\t}\n\t\t\t);\n\t\tthis.readJsonSync =\n\t\t\t/** @type {SyncFileSystem[\"readJsonSync\"]} */\n\t\t\t((arg) => readJsonSync.call(fs, arg));\n\t}\n\n\tthis.realpath = undefined;\n\tthis.realpathSync = undefined;\n\tconst { realpathSync } = fs;\n\tif (realpathSync) {\n\t\tthis.realpath =\n\t\t\t/** @type {FileSystem[\"realpath\"]} */\n\t\t\t(\n\t\t\t\t(arg, options, callback) => {\n\t\t\t\t\tlet result;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresult = /** @type {SyncOrAsyncFunction | undefined} */ (callback)\n\t\t\t\t\t\t\t? realpathSync.call(\n\t\t\t\t\t\t\t\t\tfs,\n\t\t\t\t\t\t\t\t\targ,\n\t\t\t\t\t\t\t\t\t/** @type {Exclude<Parameters<NonNullable<FileSystem[\"realpath\"]>>[1], StringCallback>} */\n\t\t\t\t\t\t\t\t\t(options),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: realpathSync.call(fs, arg);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\treturn (callback || options)(\n\t\t\t\t\t\t\t/** @type {NodeJS.ErrnoException | null} */\n\t\t\t\t\t\t\t(err),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t(callback || options)(\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t/** @type {ResultOfSyncOrAsyncFunction} */\n\t\t\t\t\t\t(result),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\tthis.realpathSync =\n\t\t\t/** @type {SyncFileSystem[\"realpathSync\"]} */\n\t\t\t(\n\t\t\t\t(arg, options) =>\n\t\t\t\t\trealpathSync.call(\n\t\t\t\t\t\tfs,\n\t\t\t\t\t\targ,\n\t\t\t\t\t\t/** @type {Parameters<NonNullable<SyncFileSystem[\"realpathSync\"]>>[1]} */\n\t\t\t\t\t\t(options),\n\t\t\t\t\t)\n\t\t\t);\n\t}\n}\n\nmodule.exports = SyncAsyncFileSystemDecorator;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class TryNextPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string} message message\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, message, target) {\n\t\tthis.source = source;\n\t\tthis.message = message;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"TryNextPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\trequest,\n\t\t\t\t\tthis.message,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Natsu @xiaoxiaojx\n*/\n\n\"use strict\";\n\nconst { aliasResolveHandler, compileAliasOptions } = require(\"./AliasUtils\");\nconst { modulesResolveHandler } = require(\"./ModulesUtils\");\nconst { readJson } = require(\"./util/fs\");\nconst { PathType: _PathType, isSubPath, normalize } = require(\"./util/path\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {import(\"./AliasUtils\").AliasOption} AliasOption */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveContext} ResolveContext */\n/** @typedef {import(\"./Resolver\").FileSystem} FileSystem */\n/** @typedef {import(\"./Resolver\").TsconfigPathsData} TsconfigPathsData */\n/** @typedef {import(\"./Resolver\").TsconfigPathsMap} TsconfigPathsMap */\n/** @typedef {import(\"./ResolverFactory\").TsconfigOptions} TsconfigOptions */\n\n// Sentinel stored in `_contextSelectionCache` for `requestPath`s whose\n// scan returned `null` (\"no context matched\"). Using a non-null marker\n// lets the cache-hit path be a single `Map.get()` — we distinguish\n// \"cached null\" from \"not cached yet\" without a second `has` lookup.\nconst NULL_CONTEXT = Symbol(\"NULL_CONTEXT\");\n\n/**\n * Per-`TsconfigPathsMap` memoization of `_selectPathsDataForContext`.\n *\n * Real-world builds resolve hundreds of requests per source file (every\n * import in the file), and webpack-style resolvers walk the same\n * `requestPath` (= source-file directory) for each one. Without this\n * cache every resolve re-scans the full `contextList` even though the\n * answer is invariant for a given `(map, requestPath)` pair.\n *\n * The outer key is the `TsconfigPathsMap` itself — rebuilt on every\n * tsconfig change — so a `WeakMap` lets the inner map be collected\n * automatically once the map goes away. The inner Map is keyed by\n * `requestPath` (string); a `Symbol` sentinel stands in for \"no\n * matching context\" so `Map.get` alone distinguishes the three states\n * (cached data / cached null / not cached).\n * @type {WeakMap<TsconfigPathsMap, Map<string, TsconfigPathsData | typeof NULL_CONTEXT>>}\n */\nconst _contextSelectionCache = new WeakMap();\n\n/**\n * @typedef {object} TsconfigCompilerOptions\n * @property {string=} baseUrl Base URL for resolving paths\n * @property {{ [key: string]: string[] }=} paths TypeScript paths mapping\n */\n\n/**\n * @typedef {object} TsconfigReference\n * @property {string} path Path to the referenced project\n */\n\n/**\n * @typedef {object} Tsconfig\n * @property {TsconfigCompilerOptions=} compilerOptions Compiler options\n * @property {string | string[]=} extends Extended configuration paths\n * @property {TsconfigReference[]=} references Project references\n */\n\nconst DEFAULT_CONFIG_FILE = \"tsconfig.json\";\n\nconst READ_JSON_OPTIONS = { stripComments: true };\n\n// Trailing `/*` or `\\*` segment of a tsconfig `paths` mapping (e.g.\n// `./src/*` → `./src`). Hoisted so we don't allocate a fresh regex per\n// path entry on every tsconfig load — and so the same regex object can be\n// reused for the matching `test` + `replace` pair below.\nconst WILDCARD_TAIL_RE = /[/\\\\]\\*$/;\n\n/**\n * @param {string} pattern Path pattern\n * @returns {number} Length of the prefix\n */\nfunction getPrefixLength(pattern) {\n\tconst prefixLength = pattern.indexOf(\"*\");\n\tif (prefixLength === -1) {\n\t\treturn pattern.length;\n\t}\n\treturn prefixLength;\n}\n\n/**\n * Sort path patterns.\n * If a module name can be matched with multiple patterns then pattern with the longest prefix will be picked.\n * @param {string[]} arr Array of path patterns\n * @returns {string[]} Array of path patterns sorted by longest prefix\n */\nfunction sortByLongestPrefix(arr) {\n\treturn [...arr].sort((a, b) => getPrefixLength(b) - getPrefixLength(a));\n}\n\n/**\n * Merge two tsconfig objects\n * @param {Tsconfig | null} base base config\n * @param {Tsconfig | null} config config to merge\n * @returns {Tsconfig} merged config\n */\nfunction mergeTsconfigs(base, config) {\n\tbase = base || {};\n\tconfig = config || {};\n\n\treturn {\n\t\t...base,\n\t\t...config,\n\t\tcompilerOptions: {\n\t\t\t.../** @type {TsconfigCompilerOptions} */ (base.compilerOptions),\n\t\t\t.../** @type {TsconfigCompilerOptions} */ (config.compilerOptions),\n\t\t},\n\t};\n}\n\n/**\n * Substitute ${configDir} template variable in path\n * @param {string} pathValue the path value\n * @param {string} configDir the config directory\n * @returns {string} the path with substituted template\n */\nfunction substituteConfigDir(pathValue, configDir) {\n\t// eslint-disable-next-line no-template-curly-in-string\n\tif (!pathValue.includes(\"${configDir}\")) return pathValue;\n\treturn pathValue.replace(/\\$\\{configDir\\}/g, configDir);\n}\n\n/**\n * Convert tsconfig paths to resolver options\n * @param {string} configDir Config file directory\n * @param {{ [key: string]: string[] }} paths TypeScript paths mapping\n * @param {Resolver} resolver resolver instance\n * @param {string=} baseUrl Base URL for resolving paths (relative to configDir)\n * @returns {TsconfigPathsData} the resolver options\n */\nfunction tsconfigPathsToResolveOptions(configDir, paths, resolver, baseUrl) {\n\t// Calculate absolute base URL\n\tconst absoluteBaseUrl = !baseUrl\n\t\t? configDir\n\t\t: resolver.join(configDir, baseUrl);\n\n\t/** @type {string[]} */\n\tconst sortedKeys = sortByLongestPrefix(Object.keys(paths));\n\t/** @type {AliasOption[]} */\n\tconst alias = [];\n\t/** @type {string[]} */\n\tconst modules = [];\n\n\tfor (const pattern of sortedKeys) {\n\t\tconst mappings = paths[pattern];\n\t\t// Substitute ${configDir} in path mappings\n\t\tconst absolutePaths = mappings.map((mapping) => {\n\t\t\tconst substituted = substituteConfigDir(mapping, configDir);\n\t\t\treturn resolver.join(absoluteBaseUrl, substituted);\n\t\t});\n\n\t\tif (absolutePaths.length > 0) {\n\t\t\tif (pattern === \"*\") {\n\t\t\t\t// Pull `dir/*` entries directly into `modules` with their\n\t\t\t\t// trailing wildcard stripped, skipping anything else. The\n\t\t\t\t// previous `.map(...).filter(Boolean)` form allocated two\n\t\t\t\t// throwaway arrays plus a spread iterator per `*` mapping.\n\t\t\t\tfor (let j = 0; j < absolutePaths.length; j++) {\n\t\t\t\t\tconst dir = absolutePaths[j];\n\t\t\t\t\tif (WILDCARD_TAIL_RE.test(dir)) {\n\t\t\t\t\t\tmodules.push(dir.replace(WILDCARD_TAIL_RE, \"\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\talias.push({ name: pattern, alias: absolutePaths });\n\t\t\t}\n\t\t}\n\t}\n\n\tif (baseUrl && absoluteBaseUrl && !modules.includes(absoluteBaseUrl)) {\n\t\tmodules.push(absoluteBaseUrl);\n\t}\n\n\treturn {\n\t\talias: compileAliasOptions(resolver, alias),\n\t\tmodules,\n\t};\n}\n\n/**\n * Get the base context for the current project\n * @param {string} context the context\n * @param {Resolver} resolver resolver instance\n * @param {string=} baseUrl base URL for resolving paths\n * @returns {string} the base context\n */\nfunction getAbsoluteBaseUrl(context, resolver, baseUrl) {\n\treturn !baseUrl ? context : resolver.join(context, baseUrl);\n}\n\n/**\n * @param {TsconfigPathsData} main main paths data\n * @param {string} mainContext main context\n * @param {{ [baseUrl: string]: TsconfigPathsData }} refs references map\n * @param {Set<string>} fileDependencies file dependencies\n * @returns {TsconfigPathsMap} the tsconfig paths map\n */\nfunction buildTsconfigPathsMap(main, mainContext, refs, fileDependencies) {\n\tconst allContexts = /** @type {{ [context: string]: TsconfigPathsData }} */ ({\n\t\t[mainContext]: main,\n\t\t...refs,\n\t});\n\t// Precompute the key list once per tsconfig load. `_selectPathsDataForContext`\n\t// runs per resolve and otherwise would call `Object.entries(allContexts)`\n\t// each time, allocating a fresh [key, value][] array.\n\tconst contextList = Object.keys(allContexts);\n\treturn {\n\t\tmain,\n\t\tmainContext,\n\t\trefs,\n\t\tallContexts,\n\t\tcontextList,\n\t\tfileDependencies,\n\t};\n}\n\nmodule.exports = class TsconfigPathsPlugin {\n\t/**\n\t * @param {true | string | TsconfigOptions} configFileOrOptions tsconfig file path or options object\n\t */\n\tconstructor(configFileOrOptions) {\n\t\tif (\n\t\t\ttypeof configFileOrOptions === \"object\" &&\n\t\t\tconfigFileOrOptions !== null\n\t\t) {\n\t\t\t// Options object format\n\t\t\tconst { configFile } = configFileOrOptions;\n\t\t\t/** @type {boolean} */\n\t\t\tthis.isAutoConfigFile = typeof configFile !== \"string\";\n\t\t\t/** @type {string} */\n\t\t\tthis.configFile = this.isAutoConfigFile\n\t\t\t\t? DEFAULT_CONFIG_FILE\n\t\t\t\t: /** @type {string} */ (configFile);\n\t\t\t/** @type {string[] | \"auto\"} */\n\t\t\tif (Array.isArray(configFileOrOptions.references)) {\n\t\t\t\t/** @type {TsconfigReference[] | \"auto\"} */\n\t\t\t\tthis.references = configFileOrOptions.references.map((ref) => ({\n\t\t\t\t\tpath: ref,\n\t\t\t\t}));\n\t\t\t} else if (configFileOrOptions.references === \"auto\") {\n\t\t\t\tthis.references = \"auto\";\n\t\t\t} else {\n\t\t\t\tthis.references = [];\n\t\t\t}\n\t\t\t/** @type {string | undefined} */\n\t\t\tthis.baseUrl = configFileOrOptions.baseUrl;\n\t\t} else {\n\t\t\t/** @type {boolean} */\n\t\t\tthis.isAutoConfigFile = configFileOrOptions === true;\n\t\t\t/** @type {string} */\n\t\t\tthis.configFile = this.isAutoConfigFile\n\t\t\t\t? DEFAULT_CONFIG_FILE\n\t\t\t\t: /** @type {string} */ (configFileOrOptions);\n\t\t\t/** @type {TsconfigReference[] | \"auto\"} */\n\t\t\tthis.references = [];\n\t\t\t/** @type {string | undefined} */\n\t\t\tthis.baseUrl = undefined;\n\t\t}\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst aliasTarget = resolver.ensureHook(\"internal-resolve\");\n\t\tconst moduleTarget = resolver.ensureHook(\"module\");\n\n\t\tresolver\n\t\t\t.getHook(\"raw-resolve\")\n\t\t\t.tapAsync(\"TsconfigPathsPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tthis._getTsconfigPathsMap(\n\t\t\t\t\tresolver,\n\t\t\t\t\trequest,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\t(err, tsconfigPathsMap) => {\n\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\tif (!tsconfigPathsMap) return callback();\n\n\t\t\t\t\t\tconst selectedData = this._selectPathsDataForContext(\n\t\t\t\t\t\t\trequest.path,\n\t\t\t\t\t\t\ttsconfigPathsMap,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!selectedData) return callback();\n\n\t\t\t\t\t\taliasResolveHandler(\n\t\t\t\t\t\t\tresolver,\n\t\t\t\t\t\t\tselectedData.alias,\n\t\t\t\t\t\t\taliasTarget,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\t\t\tif (result) return callback(null, result);\n\t\t\t\t\t\t\t\t// https://github.com/webpack/webpack/issues/20944\n\t\t\t\t\t\t\t\t// Unlike resolve.alias, tsconfig paths should fall through\n\t\t\t\t\t\t\t\t// when a pattern matches but the mapped path does not exist\n\t\t\t\t\t\t\t\t// (matching TypeScript's native resolution behavior).\n\t\t\t\t\t\t\t\treturn callback();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\n\t\tresolver\n\t\t\t.getHook(\"raw-module\")\n\t\t\t.tapAsync(\"TsconfigPathsPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tthis._getTsconfigPathsMap(\n\t\t\t\t\tresolver,\n\t\t\t\t\trequest,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\t(err, tsconfigPathsMap) => {\n\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\tif (!tsconfigPathsMap) return callback();\n\n\t\t\t\t\t\tconst selectedData = this._selectPathsDataForContext(\n\t\t\t\t\t\t\trequest.path,\n\t\t\t\t\t\t\ttsconfigPathsMap,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!selectedData) return callback();\n\n\t\t\t\t\t\tmodulesResolveHandler(\n\t\t\t\t\t\t\tresolver,\n\t\t\t\t\t\t\tselectedData.modules,\n\t\t\t\t\t\t\tmoduleTarget,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\t\tcallback,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\t/**\n\t * Get TsconfigPathsMap for the request (with caching)\n\t * @param {Resolver} resolver the resolver\n\t * @param {ResolveRequest} request the request\n\t * @param {ResolveContext} resolveContext the resolve context\n\t * @param {(err: Error | null, result?: TsconfigPathsMap | null) => void} callback the callback\n\t * @returns {void}\n\t */\n\t_getTsconfigPathsMap(resolver, request, resolveContext, callback) {\n\t\tif (typeof request.tsconfigPathsMap !== \"undefined\") {\n\t\t\tconst cached = request.tsconfigPathsMap;\n\t\t\tif (!cached) return callback(null, null);\n\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\tfor (const fileDependency of cached.fileDependencies) {\n\t\t\t\t\tresolveContext.fileDependencies.add(fileDependency);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn callback(null, cached);\n\t\t}\n\n\t\tif (this.isAutoConfigFile) {\n\t\t\tthis._findTsconfigUpward(\n\t\t\t\tresolver,\n\t\t\t\trequest.path || process.cwd(),\n\t\t\t\t(err, result) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\trequest.tsconfigPathsMap = null;\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tif (!result) {\n\t\t\t\t\t\trequest.tsconfigPathsMap = null;\n\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t}\n\t\t\t\t\tconst map = /** @type {TsconfigPathsMap} */ (result);\n\t\t\t\t\trequest.tsconfigPathsMap = map;\n\t\t\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\t\t\tfor (const fileDependency of map.fileDependencies) {\n\t\t\t\t\t\t\tresolveContext.fileDependencies.add(fileDependency);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(null, map);\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst absTsconfigPath = resolver.join(\n\t\t\trequest.path || process.cwd(),\n\t\t\tthis.configFile,\n\t\t);\n\t\tthis._loadTsconfigPathsMap(resolver, absTsconfigPath, (err, result) => {\n\t\t\tif (err) {\n\t\t\t\trequest.tsconfigPathsMap = null;\n\t\t\t\treturn callback(err);\n\t\t\t}\n\n\t\t\tconst map = /** @type {TsconfigPathsMap} */ (result);\n\t\t\trequest.tsconfigPathsMap = map;\n\t\t\tif (resolveContext.fileDependencies) {\n\t\t\t\tfor (const fileDependency of map.fileDependencies) {\n\t\t\t\t\tresolveContext.fileDependencies.add(fileDependency);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcallback(null, map);\n\t\t});\n\t}\n\n\t/**\n\t * Walk up from startDir to the filesystem root looking for tsconfig.json.\n\t * Like TypeScript's own `findConfigFile` / `forEachAncestorDirectory`.\n\t * @param {Resolver} resolver the resolver\n\t * @param {string} startDir the directory to start searching from\n\t * @param {(err: Error | null, result?: TsconfigPathsMap | null) => void} callback the callback\n\t * @returns {void}\n\t */\n\t_findTsconfigUpward(resolver, startDir, callback) {\n\t\tconst { fileSystem } = resolver;\n\t\tconst configFileName = this.configFile;\n\n\t\t/**\n\t\t * @param {string} dir current directory\n\t\t */\n\t\tconst check = (dir) => {\n\t\t\tconst candidate = resolver.join(dir, configFileName);\n\t\t\tfileSystem.stat(candidate, (statErr) => {\n\t\t\t\tif (!statErr) {\n\t\t\t\t\t// Found — load it\n\t\t\t\t\tthis._loadTsconfigPathsMap(resolver, candidate, (loadErr, result) => {\n\t\t\t\t\t\tif (loadErr) return callback(loadErr);\n\t\t\t\t\t\tcallback(null, result);\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Not found — move to parent\n\t\t\t\tconst parentDir = resolver.dirname(dir);\n\t\t\t\tif (parentDir === dir) {\n\t\t\t\t\t// Reached filesystem root, no tsconfig.json found\n\t\t\t\t\treturn callback(null, null);\n\t\t\t\t}\n\t\t\t\tcheck(parentDir);\n\t\t\t});\n\t\t};\n\n\t\tcheck(startDir);\n\t}\n\n\t/**\n\t * Load tsconfig.json and build complete TsconfigPathsMap\n\t * Includes main project paths and all referenced projects\n\t * @param {Resolver} resolver the resolver\n\t * @param {string} absTsconfigPath absolute path to tsconfig.json\n\t * @param {(err: Error | null, result?: TsconfigPathsMap) => void} callback the callback\n\t * @returns {void}\n\t */\n\t_loadTsconfigPathsMap(resolver, absTsconfigPath, callback) {\n\t\t/** @type {Set<string>} */\n\t\tconst fileDependencies = new Set();\n\n\t\tthis._loadTsconfig(\n\t\t\tresolver,\n\t\t\tabsTsconfigPath,\n\t\t\tfileDependencies,\n\t\t\tundefined,\n\t\t\t(err, config) => {\n\t\t\t\tif (err) return callback(err);\n\n\t\t\t\tconst cfg = /** @type {Tsconfig} */ (config);\n\t\t\t\tconst compilerOptions = cfg.compilerOptions || {};\n\t\t\t\tconst mainContext = resolver.dirname(absTsconfigPath);\n\n\t\t\t\tconst baseUrl =\n\t\t\t\t\tthis.baseUrl !== undefined ? this.baseUrl : compilerOptions.baseUrl;\n\n\t\t\t\tconst main = tsconfigPathsToResolveOptions(\n\t\t\t\t\tmainContext,\n\t\t\t\t\tcompilerOptions.paths || {},\n\t\t\t\t\tresolver,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t);\n\t\t\t\t/** @type {{ [baseUrl: string]: TsconfigPathsData }} */\n\t\t\t\tconst refs = {};\n\n\t\t\t\tlet referencesToUse = null;\n\t\t\t\tif (this.references === \"auto\") {\n\t\t\t\t\treferencesToUse = cfg.references;\n\t\t\t\t} else if (Array.isArray(this.references)) {\n\t\t\t\t\treferencesToUse = this.references;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(referencesToUse)) {\n\t\t\t\t\treturn callback(\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tbuildTsconfigPathsMap(main, mainContext, refs, fileDependencies),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis._loadTsconfigReferences(\n\t\t\t\t\tresolver,\n\t\t\t\t\tmainContext,\n\t\t\t\t\treferencesToUse,\n\t\t\t\t\tfileDependencies,\n\t\t\t\t\trefs,\n\t\t\t\t\t(refErr) => {\n\t\t\t\t\t\tif (refErr) return callback(refErr);\n\t\t\t\t\t\tcallback(\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tbuildTsconfigPathsMap(main, mainContext, refs, fileDependencies),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * Select the correct TsconfigPathsData based on request.path (context-aware)\n\t * Matches the behavior of tsconfig-paths-webpack-plugin\n\t * @param {string | false} requestPath the request path\n\t * @param {TsconfigPathsMap} tsconfigPathsMap the tsconfig paths map\n\t * @returns {TsconfigPathsData | null} the selected paths data\n\t */\n\t_selectPathsDataForContext(requestPath, tsconfigPathsMap) {\n\t\tconst { main, allContexts, contextList } = tsconfigPathsMap;\n\t\tif (!requestPath) {\n\t\t\treturn main;\n\t\t}\n\t\t// Single-context tsconfigs (no project references) hit the loop\n\t\t// below at most once; in that case the cache lookup costs more\n\t\t// than the loop itself. Only memoize when there are 2+ contexts\n\t\t// — that's the monorepo / project-references shape where the\n\t\t// scan actually walks multiple entries per resolve and the\n\t\t// `(map, requestPath)` answer can be reused.\n\t\t/** @type {Map<string, TsconfigPathsData | typeof NULL_CONTEXT> | undefined} */\n\t\tlet perMap;\n\t\tif (contextList.length >= 2) {\n\t\t\tperMap = _contextSelectionCache.get(tsconfigPathsMap);\n\t\t\tif (perMap !== undefined) {\n\t\t\t\tconst cached = perMap.get(requestPath);\n\t\t\t\tif (cached !== undefined) {\n\t\t\t\t\treturn cached === NULL_CONTEXT\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: /** @type {TsconfigPathsData} */ (cached);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tperMap = new Map();\n\t\t\t\t_contextSelectionCache.set(tsconfigPathsMap, perMap);\n\t\t\t}\n\t\t}\n\t\tlet longestMatchContext = null;\n\t\tlet longestMatchLength = 0;\n\t\t// Iterate the pre-computed key list (the previous\n\t\t// `Object.entries(allContexts)` form allocated a fresh\n\t\t// `[key, value][]` per resolve). Defer the `allContexts[context]`\n\t\t// lookup to after we know the context actually matches — non-matches\n\t\t// are the common case and don't need the property access.\n\t\tfor (let i = 0; i < contextList.length; i++) {\n\t\t\tconst context = contextList[i];\n\t\t\tif (context === requestPath) {\n\t\t\t\tconst exact = allContexts[context];\n\t\t\t\tif (perMap !== undefined) perMap.set(requestPath, exact);\n\t\t\t\treturn exact;\n\t\t\t}\n\t\t\t// Cheap integer-compare gate first: a context can only beat the\n\t\t\t// current longest match if its own length is strictly greater.\n\t\t\t// Skipping `isSubPath` (a `startsWith` + char-code probe) when the\n\t\t\t// length already disqualifies the candidate avoids the per-resolve\n\t\t\t// scan over every shorter context.\n\t\t\tif (\n\t\t\t\tcontext.length > longestMatchLength &&\n\t\t\t\tisSubPath(context, requestPath)\n\t\t\t) {\n\t\t\t\tlongestMatchContext = context;\n\t\t\t\tlongestMatchLength = context.length;\n\t\t\t}\n\t\t}\n\t\tconst result =\n\t\t\tlongestMatchContext === null ? null : allContexts[longestMatchContext];\n\t\tif (perMap !== undefined) {\n\t\t\tperMap.set(requestPath, result === null ? NULL_CONTEXT : result);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Load tsconfig from extends path\n\t * @param {Resolver} resolver the resolver\n\t * @param {string} configFilePath current config file path\n\t * @param {string} extendedConfigValue extends value\n\t * @param {Set<string>} fileDependencies the file dependencies\n\t * @param {Set<string>} visitedConfigPaths config paths being loaded (for circular extends detection)\n\t * @param {(err: Error | null, result?: Tsconfig) => void} callback callback\n\t * @returns {void}\n\t */\n\t_loadTsconfigFromExtends(\n\t\tresolver,\n\t\tconfigFilePath,\n\t\textendedConfigValue,\n\t\tfileDependencies,\n\t\tvisitedConfigPaths,\n\t\tcallback,\n\t) {\n\t\tconst { fileSystem } = resolver;\n\t\tconst currentDir = resolver.dirname(configFilePath);\n\n\t\t// Substitute ${configDir} in extends path\n\t\textendedConfigValue = substituteConfigDir(extendedConfigValue, currentDir);\n\n\t\t// Remember the original value before potentially appending .json\n\t\tconst originalExtendedConfigValue = extendedConfigValue;\n\n\t\tif (\n\t\t\ttypeof extendedConfigValue === \"string\" &&\n\t\t\t!extendedConfigValue.includes(\".json\")\n\t\t) {\n\t\t\textendedConfigValue += \".json\";\n\t\t}\n\n\t\tconst initialExtendedConfigPath = resolver.join(\n\t\t\tcurrentDir,\n\t\t\textendedConfigValue,\n\t\t);\n\n\t\tfileSystem.stat(initialExtendedConfigPath, (existsErr) => {\n\t\t\tlet extendedConfigPath = initialExtendedConfigPath;\n\t\t\tif (existsErr) {\n\t\t\t\t// Handle scoped package extends like \"@scope/name\" (no sub-path):\n\t\t\t\t// \"@scope/name\" should resolve to node_modules/@scope/name/tsconfig.json,\n\t\t\t\t// not node_modules/@scope/name.json\n\t\t\t\t// See: test/fixtures/tsconfig-paths/extends-pkg-entry/\n\t\t\t\tif (\n\t\t\t\t\ttypeof originalExtendedConfigValue === \"string\" &&\n\t\t\t\t\toriginalExtendedConfigValue.startsWith(\"@\") &&\n\t\t\t\t\toriginalExtendedConfigValue.split(\"/\").length === 2\n\t\t\t\t) {\n\t\t\t\t\textendedConfigPath = resolver.join(\n\t\t\t\t\t\tcurrentDir,\n\t\t\t\t\t\tnormalize(\n\t\t\t\t\t\t\t`node_modules/${originalExtendedConfigValue}/${DEFAULT_CONFIG_FILE}`,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t} else if (extendedConfigValue.includes(\"/\")) {\n\t\t\t\t\t// Handle package sub-path extends like \"react/tsconfig\":\n\t\t\t\t\t// \"react/tsconfig\" resolves to node_modules/react/tsconfig.json\n\t\t\t\t\t// See: test/fixtures/tsconfig-paths/extends-npm/\n\t\t\t\t\textendedConfigPath = resolver.join(\n\t\t\t\t\t\tcurrentDir,\n\t\t\t\t\t\tnormalize(`node_modules/${extendedConfigValue}`),\n\t\t\t\t\t);\n\t\t\t\t} else if (\n\t\t\t\t\t!originalExtendedConfigValue.startsWith(\".\") &&\n\t\t\t\t\t!originalExtendedConfigValue.startsWith(\"/\")\n\t\t\t\t) {\n\t\t\t\t\t// Handle unscoped package extends like \"my-base-config\" (no sub-path):\n\t\t\t\t\t// \"my-base-config\" should resolve to node_modules/my-base-config/tsconfig.json\n\t\t\t\t\textendedConfigPath = resolver.join(\n\t\t\t\t\t\tcurrentDir,\n\t\t\t\t\t\tnormalize(\n\t\t\t\t\t\t\t`node_modules/${originalExtendedConfigValue}/${DEFAULT_CONFIG_FILE}`,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._loadTsconfig(\n\t\t\t\tresolver,\n\t\t\t\textendedConfigPath,\n\t\t\t\tfileDependencies,\n\t\t\t\tvisitedConfigPaths,\n\t\t\t\t(err, config) => {\n\t\t\t\t\tif (err) return callback(err);\n\n\t\t\t\t\tconst cfg = /** @type {Tsconfig} */ (config);\n\t\t\t\t\tconst compilerOptions = cfg.compilerOptions || {\n\t\t\t\t\t\tbaseUrl: undefined,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (compilerOptions.baseUrl) {\n\t\t\t\t\t\tconst extendedConfigDir = resolver.dirname(extendedConfigPath);\n\t\t\t\t\t\tcompilerOptions.baseUrl = getAbsoluteBaseUrl(\n\t\t\t\t\t\t\textendedConfigDir,\n\t\t\t\t\t\t\tresolver,\n\t\t\t\t\t\t\tcompilerOptions.baseUrl,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete cfg.references;\n\n\t\t\t\t\tcallback(null, cfg);\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Load referenced tsconfig projects and store in referenceMatchMap\n\t * Simple implementation matching tsconfig-paths-webpack-plugin:\n\t * Just load each reference and store independently\n\t * @param {Resolver} resolver the resolver\n\t * @param {string} context the context\n\t * @param {TsconfigReference[]} references array of references\n\t * @param {Set<string>} fileDependencies the file dependencies\n\t * @param {{ [baseUrl: string]: TsconfigPathsData }} referenceMatchMap the map to populate\n\t * @param {(err: Error | null) => void} callback callback\n\t * @param {Set<string>=} visitedRefPaths visited reference config paths (for circular reference detection)\n\t * @returns {void}\n\t */\n\t_loadTsconfigReferences(\n\t\tresolver,\n\t\tcontext,\n\t\treferences,\n\t\tfileDependencies,\n\t\treferenceMatchMap,\n\t\tcallback,\n\t\tvisitedRefPaths,\n\t) {\n\t\tif (references.length === 0) return callback(null);\n\n\t\tconst visited = visitedRefPaths || new Set();\n\t\tlet pending = references.length;\n\t\tconst finishOne = () => {\n\t\t\tif (--pending === 0) callback(null);\n\t\t};\n\n\t\tfor (const ref of references) {\n\t\t\tconst refPath = substituteConfigDir(ref.path, context);\n\t\t\tconst refConfigPath = resolver.join(\n\t\t\t\tresolver.join(context, refPath),\n\t\t\t\tDEFAULT_CONFIG_FILE,\n\t\t\t);\n\n\t\t\tif (visited.has(refConfigPath)) {\n\t\t\t\tfinishOne();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvisited.add(refConfigPath);\n\n\t\t\tthis._loadTsconfig(\n\t\t\t\tresolver,\n\t\t\t\trefConfigPath,\n\t\t\t\tfileDependencies,\n\t\t\t\tundefined,\n\t\t\t\t(err, refConfig) => {\n\t\t\t\t\t// Failures are swallowed to match tsconfig-paths-webpack-plugin:\n\t\t\t\t\t// a broken reference must not abort the main project's resolution.\n\t\t\t\t\tif (err) return finishOne();\n\n\t\t\t\t\tconst cfg = /** @type {Tsconfig} */ (refConfig);\n\t\t\t\t\tif (cfg.compilerOptions && cfg.compilerOptions.paths) {\n\t\t\t\t\t\tconst refContext = resolver.dirname(refConfigPath);\n\n\t\t\t\t\t\treferenceMatchMap[refContext] = tsconfigPathsToResolveOptions(\n\t\t\t\t\t\t\trefContext,\n\t\t\t\t\t\t\tcfg.compilerOptions.paths || {},\n\t\t\t\t\t\t\tresolver,\n\t\t\t\t\t\t\tcfg.compilerOptions.baseUrl,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.references === \"auto\" && Array.isArray(cfg.references)) {\n\t\t\t\t\t\tthis._loadTsconfigReferences(\n\t\t\t\t\t\t\tresolver,\n\t\t\t\t\t\t\tresolver.dirname(refConfigPath),\n\t\t\t\t\t\t\tcfg.references,\n\t\t\t\t\t\t\tfileDependencies,\n\t\t\t\t\t\t\treferenceMatchMap,\n\t\t\t\t\t\t\tfinishOne,\n\t\t\t\t\t\t\tvisited,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfinishOne();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Load tsconfig.json with extends support\n\t * @param {Resolver} resolver the resolver\n\t * @param {string} configFilePath absolute path to tsconfig.json\n\t * @param {Set<string>} fileDependencies the file dependencies\n\t * @param {Set<string> | undefined} visitedConfigPaths config paths being loaded (for circular extends detection)\n\t * @param {(err: Error | null, result?: Tsconfig) => void} callback callback\n\t * @returns {void}\n\t */\n\t_loadTsconfig(\n\t\tresolver,\n\t\tconfigFilePath,\n\t\tfileDependencies,\n\t\tvisitedConfigPaths,\n\t\tcallback,\n\t) {\n\t\tconst visited = visitedConfigPaths || new Set();\n\n\t\tif (visited.has(configFilePath)) {\n\t\t\treturn callback(null, /** @type {Tsconfig} */ ({}));\n\t\t}\n\t\tvisited.add(configFilePath);\n\n\t\treadJson(\n\t\t\tresolver.fileSystem,\n\t\t\tconfigFilePath,\n\t\t\tREAD_JSON_OPTIONS,\n\t\t\t(err, parsed) => {\n\t\t\t\tif (err) return callback(/** @type {Error} */ (err));\n\n\t\t\t\tconst config = /** @type {Tsconfig} */ (parsed);\n\t\t\t\tfileDependencies.add(configFilePath);\n\n\t\t\t\tconst extendedConfig = config.extends;\n\t\t\t\tif (!extendedConfig) return callback(null, config);\n\n\t\t\t\tif (!Array.isArray(extendedConfig)) {\n\t\t\t\t\tthis._loadTsconfigFromExtends(\n\t\t\t\t\t\tresolver,\n\t\t\t\t\t\tconfigFilePath,\n\t\t\t\t\t\textendedConfig,\n\t\t\t\t\t\tfileDependencies,\n\t\t\t\t\t\tvisited,\n\t\t\t\t\t\t(extErr, extendedTsconfig) => {\n\t\t\t\t\t\t\tif (extErr) return callback(extErr);\n\t\t\t\t\t\t\tcallback(\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tmergeTsconfigs(\n\t\t\t\t\t\t\t\t\t/** @type {Tsconfig} */ (extendedTsconfig),\n\t\t\t\t\t\t\t\t\tconfig,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/** @type {Tsconfig} */\n\t\t\t\tlet base = {};\n\t\t\t\tlet i = 0;\n\t\t\t\tconst next = () => {\n\t\t\t\t\tif (i >= extendedConfig.length) {\n\t\t\t\t\t\treturn callback(null, mergeTsconfigs(base, config));\n\t\t\t\t\t}\n\t\t\t\t\tthis._loadTsconfigFromExtends(\n\t\t\t\t\t\tresolver,\n\t\t\t\t\t\tconfigFilePath,\n\t\t\t\t\t\textendedConfig[i++],\n\t\t\t\t\t\tfileDependencies,\n\t\t\t\t\t\tvisited,\n\t\t\t\t\t\t(extErr, extendedTsconfig) => {\n\t\t\t\t\t\t\tif (extErr) return callback(extErr);\n\t\t\t\t\t\t\tbase = mergeTsconfigs(\n\t\t\t\t\t\t\t\tbase,\n\t\t\t\t\t\t\t\t/** @type {Tsconfig} */ (extendedTsconfig),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\tnext();\n\t\t\t},\n\t\t);\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst { isRelativeRequest } = require(\"./util/path\");\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n/** @typedef {import(\"./Resolver\").ResolveContextYield} ResolveContextYield */\n/** @typedef {{ [k: string]: undefined | ResolveRequest | ResolveRequest[] }} Cache */\n\n/**\n * @param {string} relativePath relative path from package root\n * @param {string} request relative request\n * @param {Resolver} resolver resolver instance\n * @returns {string} normalized request with a preserved leading dot\n */\nfunction joinRelativePreservingLeadingDot(relativePath, request, resolver) {\n\tconst normalized = resolver.join(relativePath, request);\n\treturn isRelativeRequest(normalized) ? normalized : `./${normalized}`;\n}\n\n/**\n * @param {ResolveRequest} request request\n * @returns {string | false | undefined} normalized path\n */\nfunction getCachePath(request) {\n\tif (request.descriptionFileRoot && !request.module) {\n\t\treturn request.descriptionFileRoot;\n\t}\n\treturn request.path;\n}\n\n/**\n * @param {ResolveRequest} request request\n * @param {Resolver} resolver resolver instance\n * @returns {string | undefined} normalized request string\n */\nfunction getCacheRequest(request, resolver) {\n\tconst requestString = request.request;\n\tif (\n\t\t!requestString ||\n\t\t!request.relativePath ||\n\t\t!isRelativeRequest(requestString)\n\t) {\n\t\treturn requestString;\n\t}\n\treturn joinRelativePreservingLeadingDot(\n\t\trequest.relativePath,\n\t\trequestString,\n\t\tresolver,\n\t);\n}\n\n// Cache-key separator: `\\0` is safe because paths, requests, queries and\n// fragments produced by `parseIdentifier` never contain a raw NUL (the\n// \\0-escape in identifier.js is decoded back to the original char), and the\n// context, when included, is passed through `JSON.stringify`, which escapes\n// any NUL to \\u0000.\n// const SEP = \"\\0\";\n\n/**\n * Build the cache id for a request. Called on every `described-resolve`\n * invocation when `unsafeCache` is on, so it's a hot path.\n *\n * Equivalent in meaning to the previous `JSON.stringify({ ... })` form, but\n * ~3–5× faster since we avoid the object allocation and JSON serializer for\n * the fields that are already plain strings.\n * @param {string} type type of cache\n * @param {ResolveRequest} request request\n * @param {boolean} withContext cache with context?\n * @param {Resolver} resolver resolver instance\n * @returns {string} cache id\n */\nfunction getCacheId(type, request, withContext, resolver) {\n\t// TODO use it in the next major release, it is faster\n\t// const contextPart = withContext ? JSON.stringify(request.context) : \"\";\n\t// const path = getCachePath(request);\n\t// const cacheRequest = getCacheRequest(request, resolver);\n\t// return (\n\t// \ttype +\n\t// \tSEP +\n\t// \tcontextPart +\n\t// \tSEP +\n\t// \t(path || \"\") +\n\t// \tSEP +\n\t// \t(request.query || \"\") +\n\t// \tSEP +\n\t// \t(request.fragment || \"\") +\n\t// \tSEP +\n\t// \t(cacheRequest || \"\")\n\t// );\n\n\treturn JSON.stringify({\n\t\ttype,\n\t\tcontext: withContext ? request.context : \"\",\n\t\tpath: getCachePath(request),\n\t\tquery: request.query,\n\t\tfragment: request.fragment,\n\t\trequest: getCacheRequest(request, resolver),\n\t});\n}\n\nmodule.exports = class UnsafeCachePlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {(request: ResolveRequest) => boolean} filterPredicate filterPredicate\n\t * @param {Cache} cache cache\n\t * @param {boolean} withContext withContext\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, filterPredicate, cache, withContext, target) {\n\t\tthis.source = source;\n\t\tthis.filterPredicate = filterPredicate;\n\t\tthis.withContext = withContext;\n\t\tthis.cache = cache;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"UnsafeCachePlugin\", (request, resolveContext, callback) => {\n\t\t\t\tif (!this.filterPredicate(request)) {\n\t\t\t\t\treturn resolver.doResolve(\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tresolveContext,\n\t\t\t\t\t\tcallback,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst isYield = typeof resolveContext.yield === \"function\";\n\t\t\t\tconst cacheId = getCacheId(\n\t\t\t\t\tisYield ? \"yield\" : \"default\",\n\t\t\t\t\trequest,\n\t\t\t\t\tthis.withContext,\n\t\t\t\t\tresolver,\n\t\t\t\t);\n\t\t\t\tconst cacheEntry = this.cache[cacheId];\n\t\t\t\tif (cacheEntry) {\n\t\t\t\t\tif (isYield) {\n\t\t\t\t\t\tconst yield_ =\n\t\t\t\t\t\t\t/** @type {ResolveContextYield} */\n\t\t\t\t\t\t\t(resolveContext.yield);\n\t\t\t\t\t\tif (Array.isArray(cacheEntry)) {\n\t\t\t\t\t\t\tfor (const result of cacheEntry) yield_(result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tyield_(cacheEntry);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t}\n\t\t\t\t\treturn callback(null, /** @type {ResolveRequest} */ (cacheEntry));\n\t\t\t\t}\n\n\t\t\t\t/** @type {ResolveContextYield | undefined} */\n\t\t\t\tlet yieldFn;\n\t\t\t\t/** @type {ResolveContextYield | undefined} */\n\t\t\t\tlet yield_;\n\t\t\t\t/** @type {ResolveRequest[]} */\n\t\t\t\tconst yieldResult = [];\n\t\t\t\tif (isYield) {\n\t\t\t\t\tyieldFn = resolveContext.yield;\n\t\t\t\t\tyield_ = (result) => {\n\t\t\t\t\t\tyieldResult.push(result);\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\trequest,\n\t\t\t\t\tnull,\n\t\t\t\t\tyield_ ? { ...resolveContext, yield: yield_ } : resolveContext,\n\t\t\t\t\t(err, result) => {\n\t\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\t\tif (isYield) {\n\t\t\t\t\t\t\tif (result) yieldResult.push(result);\n\t\t\t\t\t\t\tfor (const result of yieldResult) {\n\t\t\t\t\t\t\t\t/** @type {ResolveContextYield} */\n\t\t\t\t\t\t\t\t(yieldFn)(result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.cache[cacheId] = yieldResult;\n\t\t\t\t\t\t\treturn callback(null, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result) return callback(null, (this.cache[cacheId] = result));\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class UseFilePlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string} filename filename\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, filename, target) {\n\t\tthis.source = source;\n\t\tthis.filename = filename;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"UseFilePlugin\", (request, resolveContext, callback) => {\n\t\t\t\tconst filePath = resolver.join(\n\t\t\t\t\t/** @type {string} */ (request.path),\n\t\t\t\t\tthis.filename,\n\t\t\t\t);\n\n\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\tconst obj = {\n\t\t\t\t\t...request,\n\t\t\t\t\tpath: filePath,\n\t\t\t\t\trelativePath:\n\t\t\t\t\t\trequest.relativePath &&\n\t\t\t\t\t\tresolver.join(request.relativePath, this.filename),\n\t\t\t\t};\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\tobj,\n\t\t\t\t\t`using path: ${filePath}`,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n// eslint-disable-next-line n/prefer-global/process\nconst { versions } = require(\"process\");\n\nconst AliasFieldPlugin = require(\"./AliasFieldPlugin\");\nconst AliasPlugin = require(\"./AliasPlugin\");\nconst AppendPlugin = require(\"./AppendPlugin\");\nconst ConditionalPlugin = require(\"./ConditionalPlugin\");\nconst DescriptionFilePlugin = require(\"./DescriptionFilePlugin\");\nconst DirectoryExistsPlugin = require(\"./DirectoryExistsPlugin\");\nconst ExportsFieldPlugin = require(\"./ExportsFieldPlugin\");\nconst ExtensionAliasPlugin = require(\"./ExtensionAliasPlugin\");\nconst FileExistsPlugin = require(\"./FileExistsPlugin\");\nconst ImportsFieldPlugin = require(\"./ImportsFieldPlugin\");\nconst JoinRequestPartPlugin = require(\"./JoinRequestPartPlugin\");\nconst JoinRequestPlugin = require(\"./JoinRequestPlugin\");\nconst MainFieldPlugin = require(\"./MainFieldPlugin\");\nconst ModulesInHierarchicalDirectoriesPlugin = require(\"./ModulesInHierarchicalDirectoriesPlugin\");\nconst ModulesInRootPlugin = require(\"./ModulesInRootPlugin\");\nconst NextPlugin = require(\"./NextPlugin\");\nconst ParsePlugin = require(\"./ParsePlugin\");\nconst PnpPlugin = require(\"./PnpPlugin\");\nconst Resolver = require(\"./Resolver\");\nconst RestrictionsPlugin = require(\"./RestrictionsPlugin\");\nconst ResultPlugin = require(\"./ResultPlugin\");\nconst RootsPlugin = require(\"./RootsPlugin\");\nconst SelfReferencePlugin = require(\"./SelfReferencePlugin\");\nconst SymlinkPlugin = require(\"./SymlinkPlugin\");\nconst SyncAsyncFileSystemDecorator = require(\"./SyncAsyncFileSystemDecorator\");\nconst TryNextPlugin = require(\"./TryNextPlugin\");\nconst TsconfigPathsPlugin = require(\"./TsconfigPathsPlugin\");\nconst UnsafeCachePlugin = require(\"./UnsafeCachePlugin\");\nconst UseFilePlugin = require(\"./UseFilePlugin\");\nconst { PathType, getType, toPath } = require(\"./util/path\");\n\n/** @typedef {import(\"./AliasPlugin\").AliasOption} AliasOptionEntry */\n/** @typedef {import(\"./ExtensionAliasPlugin\").ExtensionAliasOption} ExtensionAliasOption */\n/** @typedef {import(\"./PnpPlugin\").PnpApiImpl} PnpApi */\n/** @typedef {import(\"./Resolver\").EnsuredHooks} EnsuredHooks */\n/** @typedef {import(\"./Resolver\").FileSystem} FileSystem */\n/** @typedef {import(\"./Resolver\").KnownHooks} KnownHooks */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").SyncFileSystem} SyncFileSystem */\n/** @typedef {import(\"./UnsafeCachePlugin\").Cache} Cache */\n\n/** @typedef {string | string[] | false} AliasOptionNewRequest */\n/** @typedef {{ [k: string]: AliasOptionNewRequest }} AliasOptions */\n/** @typedef {string | URL | (string | URL)[] | false} UserAliasOptionNewRequest */\n/** @typedef {{ [k: string]: UserAliasOptionNewRequest }} UserAliasOptions */\n/** @typedef {{ alias: UserAliasOptionNewRequest, name: string, onlyModule?: boolean }} UserAliasOptionEntry */\n/** @typedef {{ [k: string]: string | string[] }} ExtensionAliasOptions */\n/** @typedef {false | 0 | \"\" | null | undefined} Falsy */\n/** @typedef {{ apply: (resolver: Resolver) => void } | ((this: Resolver, resolver: Resolver) => void) | Falsy} Plugin */\n\n/**\n * @typedef {object} TsconfigOptions\n * @property {string=} configFile A relative path to the tsconfig file based on cwd, or an absolute path of tsconfig file\n * @property {string[] | \"auto\"=} references References to other tsconfig files. 'auto' inherits from TypeScript config, or an array of relative/absolute paths\n * @property {string=} baseUrl Override baseUrl from tsconfig.json. If provided, this value will be used instead of the baseUrl in the tsconfig file\n */\n\n/**\n * @typedef {object} UserTsconfigOptions\n * @property {(string | URL)=} configFile A path, or `file:` `URL` instance, pointing at the tsconfig file\n * @property {((string | URL)[] | \"auto\")=} references References to other tsconfig files. 'auto' inherits from TypeScript config, or an array of relative/absolute paths or `file:` `URL` instances\n * @property {(string | URL)=} baseUrl Override baseUrl from tsconfig.json with a path or `file:` `URL` instance\n */\n\n/**\n * @typedef {object} UserResolveOptions\n * @property {(UserAliasOptions | UserAliasOptionEntry[])=} alias A list of module alias configurations or an object which maps key to value\n * @property {(UserAliasOptions | UserAliasOptionEntry[])=} fallback A list of module alias configurations or an object which maps key to value, applied only after modules option\n * @property {ExtensionAliasOptions=} extensionAlias An object which maps extension to extension aliases\n * @property {boolean=} extensionAliasForExports Also apply `extensionAlias` to paths resolved through the package.json `exports` field. Off by default (Node.js-aligned); when enabled, matches TypeScript's behavior for packages that ship TS sources alongside compiled JS.\n * @property {(string | string[])[]=} aliasFields A list of alias fields in description files\n * @property {((predicate: ResolveRequest) => boolean)=} cachePredicate A function which decides whether a request should be cached or not. An object is passed with at least `path` and `request` properties.\n * @property {boolean=} cacheWithContext Whether or not the unsafeCache should include request context as part of the cache key.\n * @property {string[]=} descriptionFiles A list of description files to read from\n * @property {string[]=} conditionNames A list of exports field condition names.\n * @property {boolean=} enforceExtension Enforce that a extension from extensions must be used\n * @property {(string | string[])[]=} exportsFields A list of exports fields in description files\n * @property {(string | string[])[]=} importsFields A list of imports fields in description files\n * @property {string[]=} extensions A list of extensions which should be tried for files\n * @property {FileSystem} fileSystem The file system which should be used\n * @property {(Cache | boolean)=} unsafeCache Use this cache object to unsafely cache the successful requests\n * @property {boolean=} symlinks Resolve symlinks to their symlinked location\n * @property {Resolver=} resolver A prepared Resolver to which the plugins are attached\n * @property {(string | URL)[] | string | URL=} modules A list of directories to resolve modules from, can be absolute path, folder name, or a `file:` `URL` instance\n * @property {(string | string[] | { name: string | string[], forceRelative: boolean })[]=} mainFields A list of main fields in description files\n * @property {string[]=} mainFiles A list of main files in directories\n * @property {Plugin[]=} plugins A list of additional resolve plugins which should be applied\n * @property {PnpApi | null=} pnpApi A PnP API that should be used - null is \"never\", undefined is \"auto\"\n * @property {(string | URL)[]=} roots A list of root paths, each an absolute path or a `file:` `URL` instance\n * @property {boolean=} fullySpecified The request is already fully specified and no extensions or directories are resolved for it\n * @property {boolean=} resolveToContext Resolve to a context instead of a file\n * @property {(string | URL | RegExp)[]=} restrictions A list of resolve restrictions, each an absolute path, a `file:` `URL` instance, or a RegExp\n * @property {boolean=} useSyncFileSystemCalls Use only the sync constraints of the file system calls\n * @property {boolean=} preferRelative Prefer to resolve module requests as relative requests before falling back to modules\n * @property {boolean=} preferAbsolute Prefer to resolve server-relative urls as absolute paths before falling back to resolve in roots\n * @property {string | URL | boolean | UserTsconfigOptions=} tsconfig TypeScript config file path (or `file:` `URL` instance) or config object with configFile and references\n */\n\n/**\n * @typedef {object} ResolveOptions\n * @property {AliasOptionEntry[]} alias alias\n * @property {AliasOptionEntry[]} fallback fallback\n * @property {Set<string | string[]>} aliasFields alias fields\n * @property {ExtensionAliasOption[]} extensionAlias extension alias\n * @property {boolean} extensionAliasForExports apply extension alias to exports field targets\n * @property {(predicate: ResolveRequest) => boolean} cachePredicate cache predicate\n * @property {boolean} cacheWithContext cache with context\n * @property {Set<string>} conditionNames A list of exports field condition names.\n * @property {string[]} descriptionFiles description files\n * @property {boolean} enforceExtension enforce extension\n * @property {Set<string | string[]>} exportsFields exports fields\n * @property {Set<string | string[]>} importsFields imports fields\n * @property {Set<string>} extensions extensions\n * @property {FileSystem} fileSystem fileSystem\n * @property {Cache | false} unsafeCache unsafe cache\n * @property {boolean} symlinks symlinks\n * @property {Resolver=} resolver resolver\n * @property {(string | string[])[]} modules modules\n * @property {{ name: string[], forceRelative: boolean }[]} mainFields main fields\n * @property {Set<string>} mainFiles main files\n * @property {Plugin[]} plugins plugins\n * @property {PnpApi | null} pnpApi pnp API\n * @property {Set<string>} roots roots\n * @property {boolean} fullySpecified fully specified\n * @property {boolean} resolveToContext resolve to context\n * @property {Set<string | RegExp>} restrictions restrictions\n * @property {boolean} preferRelative prefer relative\n * @property {boolean} preferAbsolute prefer absolute\n * @property {string | boolean | TsconfigOptions} tsconfig tsconfig file path or config object\n */\n\n/**\n * @param {PnpApi | null=} option option\n * @returns {PnpApi | null} processed option\n */\nfunction processPnpApiOption(option) {\n\tif (\n\t\toption === undefined &&\n\t\t/** @type {NodeJS.ProcessVersions & { pnp: string }} */ versions.pnp\n\t) {\n\t\tconst _findPnpApi =\n\t\t\t/** @type {(issuer: string) => PnpApi | null}} */\n\t\t\t(\n\t\t\t\t// @ts-expect-error maybe nothing\n\t\t\t\trequire(\"module\").findPnpApi\n\t\t\t);\n\n\t\tif (_findPnpApi) {\n\t\t\treturn {\n\t\t\t\tresolveToUnqualified(request, issuer, opts) {\n\t\t\t\t\tconst pnpapi = _findPnpApi(issuer);\n\n\t\t\t\t\tif (!pnpapi) {\n\t\t\t\t\t\t// Issuer isn't managed by PnP\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn pnpapi.resolveToUnqualified(request, issuer, opts);\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\treturn option || null;\n}\n\n/**\n * @param {UserAliasOptionNewRequest} alias alias target(s)\n * @returns {AliasOptionNewRequest} target(s) with file `URL` instances converted to paths\n */\nfunction toPathAlias(alias) {\n\tif (alias === false) return false;\n\treturn Array.isArray(alias) ? alias.map(toPath) : toPath(alias);\n}\n\n/**\n * @param {UserAliasOptions | UserAliasOptionEntry[] | undefined} alias alias\n * @returns {AliasOptionEntry[]} normalized aliases\n */\nfunction normalizeAlias(alias) {\n\tif (typeof alias === \"object\" && !Array.isArray(alias) && alias !== null) {\n\t\treturn Object.keys(alias).map((key) => {\n\t\t\t/** @type {AliasOptionEntry} */\n\t\t\tconst obj = {\n\t\t\t\tname: key,\n\t\t\t\tonlyModule: false,\n\t\t\t\talias: toPathAlias(alias[key]),\n\t\t\t};\n\n\t\t\tif (/\\$$/.test(key)) {\n\t\t\t\tobj.onlyModule = true;\n\t\t\t\tobj.name = key.slice(0, -1);\n\t\t\t}\n\n\t\t\treturn obj;\n\t\t});\n\t}\n\n\treturn alias\n\t\t? alias.map((item) => ({ ...item, alias: toPathAlias(item.alias) }))\n\t\t: [];\n}\n\n/**\n * @param {string | URL | boolean | UserTsconfigOptions | undefined} tsconfig tsconfig option\n * @returns {string | boolean | TsconfigOptions} normalized tsconfig with file `URL` instances converted to paths\n */\nfunction normalizeTsconfig(tsconfig) {\n\tif (tsconfig === undefined) return false;\n\tif (typeof tsconfig === \"boolean\") return tsconfig;\n\tif (typeof tsconfig === \"string\" || tsconfig instanceof URL) {\n\t\treturn toPath(tsconfig);\n\t}\n\n\t/** @type {TsconfigOptions} */\n\tconst result = {};\n\n\tif (tsconfig.configFile !== undefined) {\n\t\tresult.configFile = toPath(tsconfig.configFile);\n\t}\n\tif (tsconfig.baseUrl !== undefined) {\n\t\tresult.baseUrl = toPath(tsconfig.baseUrl);\n\t}\n\tif (tsconfig.references !== undefined) {\n\t\tresult.references = Array.isArray(tsconfig.references)\n\t\t\t? tsconfig.references.map(toPath)\n\t\t\t: tsconfig.references;\n\t}\n\n\treturn result;\n}\n\n/**\n * Merging filtered elements\n * @param {string[]} array source array\n * @param {(item: string) => boolean} filter predicate\n * @returns {(string | string[])[]} merge result\n */\nfunction mergeFilteredToArray(array, filter) {\n\t/** @type {(string | string[])[]} */\n\tconst result = [];\n\tconst set = new Set(array);\n\n\tfor (const item of set) {\n\t\tif (filter(item)) {\n\t\t\tconst lastElement =\n\t\t\t\tresult.length > 0 ? result[result.length - 1] : undefined;\n\t\t\tif (Array.isArray(lastElement)) {\n\t\t\t\tlastElement.push(item);\n\t\t\t} else {\n\t\t\t\tresult.push([item]);\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(item);\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * @param {UserResolveOptions} options input options\n * @returns {ResolveOptions} output options\n */\nfunction createOptions(options) {\n\tconst mainFieldsSet = new Set(options.mainFields || [\"main\"]);\n\t/** @type {ResolveOptions[\"mainFields\"]} */\n\tconst mainFields = [];\n\n\tfor (const item of mainFieldsSet) {\n\t\tif (typeof item === \"string\") {\n\t\t\tmainFields.push({\n\t\t\t\tname: [item],\n\t\t\t\tforceRelative: true,\n\t\t\t});\n\t\t} else if (Array.isArray(item)) {\n\t\t\tmainFields.push({\n\t\t\t\tname: item,\n\t\t\t\tforceRelative: true,\n\t\t\t});\n\t\t} else {\n\t\t\tmainFields.push({\n\t\t\t\tname: Array.isArray(item.name) ? item.name : [item.name],\n\t\t\t\tforceRelative: item.forceRelative,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn {\n\t\talias: normalizeAlias(options.alias),\n\t\tfallback: normalizeAlias(options.fallback),\n\t\taliasFields: new Set(options.aliasFields),\n\t\tcachePredicate:\n\t\t\toptions.cachePredicate ||\n\t\t\tfunction trueFn() {\n\t\t\t\treturn true;\n\t\t\t},\n\t\tcacheWithContext:\n\t\t\ttypeof options.cacheWithContext !== \"undefined\"\n\t\t\t\t? options.cacheWithContext\n\t\t\t\t: true,\n\t\texportsFields: new Set(options.exportsFields || [\"exports\"]),\n\t\timportsFields: new Set(options.importsFields || [\"imports\"]),\n\t\tconditionNames: new Set(options.conditionNames),\n\t\tdescriptionFiles: [\n\t\t\t...new Set(options.descriptionFiles || [\"package.json\"]),\n\t\t],\n\t\tenforceExtension:\n\t\t\toptions.enforceExtension === undefined\n\t\t\t\t? Boolean(options.extensions && options.extensions.includes(\"\"))\n\t\t\t\t: options.enforceExtension,\n\t\textensions: new Set(options.extensions || [\".js\", \".json\", \".node\"]),\n\t\textensionAlias: options.extensionAlias\n\t\t\t? Object.keys(options.extensionAlias).map((k) => ({\n\t\t\t\t\textension: k,\n\t\t\t\t\talias: /** @type {ExtensionAliasOptions} */ (options.extensionAlias)[\n\t\t\t\t\t\tk\n\t\t\t\t\t],\n\t\t\t\t}))\n\t\t\t: [],\n\t\textensionAliasForExports: options.extensionAliasForExports || false,\n\t\tfileSystem: options.useSyncFileSystemCalls\n\t\t\t? new SyncAsyncFileSystemDecorator(\n\t\t\t\t\t/** @type {SyncFileSystem} */ (\n\t\t\t\t\t\t/** @type {unknown} */ (options.fileSystem)\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t: options.fileSystem,\n\t\tunsafeCache:\n\t\t\toptions.unsafeCache && typeof options.unsafeCache !== \"object\"\n\t\t\t\t? /** @type {Cache} */ ({})\n\t\t\t\t: options.unsafeCache || false,\n\t\tsymlinks: typeof options.symlinks !== \"undefined\" ? options.symlinks : true,\n\t\tresolver: options.resolver,\n\t\tmodules: mergeFilteredToArray(\n\t\t\tArray.isArray(options.modules)\n\t\t\t\t? options.modules.map(toPath)\n\t\t\t\t: options.modules\n\t\t\t\t\t? [toPath(options.modules)]\n\t\t\t\t\t: [\"node_modules\"],\n\t\t\t(item) => {\n\t\t\t\tconst type = getType(item);\n\t\t\t\treturn type === PathType.Normal || type === PathType.Relative;\n\t\t\t},\n\t\t),\n\t\tmainFields,\n\t\tmainFiles: new Set(options.mainFiles || [\"index\"]),\n\t\tplugins: options.plugins || [],\n\t\tpnpApi: processPnpApiOption(options.pnpApi),\n\t\troots: new Set(options.roots ? options.roots.map(toPath) : undefined),\n\t\tfullySpecified: options.fullySpecified || false,\n\t\tresolveToContext: options.resolveToContext || false,\n\t\tpreferRelative: options.preferRelative || false,\n\t\tpreferAbsolute: options.preferAbsolute || false,\n\t\trestrictions: new Set(\n\t\t\toptions.restrictions &&\n\t\t\t\toptions.restrictions.map((r) => (r instanceof RegExp ? r : toPath(r))),\n\t\t),\n\t\ttsconfig: normalizeTsconfig(options.tsconfig),\n\t};\n}\n\n/**\n * @param {UserResolveOptions} options resolve options\n * @returns {Resolver} created resolver\n */\nmodule.exports.createResolver = function createResolver(options) {\n\tconst normalizedOptions = createOptions(options);\n\n\tconst {\n\t\talias,\n\t\tfallback,\n\t\taliasFields,\n\t\textensionAliasForExports,\n\t\tcachePredicate,\n\t\tcacheWithContext,\n\t\tconditionNames,\n\t\tdescriptionFiles,\n\t\tenforceExtension,\n\t\texportsFields,\n\t\textensionAlias,\n\t\timportsFields,\n\t\textensions,\n\t\tfileSystem,\n\t\tfullySpecified,\n\t\tmainFields,\n\t\tmainFiles,\n\t\tmodules,\n\t\tplugins: userPlugins,\n\t\tpnpApi,\n\t\tresolveToContext,\n\t\tpreferRelative,\n\t\tpreferAbsolute,\n\t\tsymlinks,\n\t\tunsafeCache,\n\t\tresolver: customResolver,\n\t\trestrictions,\n\t\troots,\n\t\ttsconfig,\n\t} = normalizedOptions;\n\n\tconst plugins = [...userPlugins];\n\n\tconst resolver =\n\t\tcustomResolver || new Resolver(fileSystem, normalizedOptions);\n\n\t// // pipeline ////\n\n\tresolver.ensureHook(\"resolve\");\n\tresolver.ensureHook(\"internalResolve\");\n\tresolver.ensureHook(\"newInternalResolve\");\n\tresolver.ensureHook(\"importsResolve\");\n\tresolver.ensureHook(\"parsedResolve\");\n\tresolver.ensureHook(\"describedResolve\");\n\tresolver.ensureHook(\"rawResolve\");\n\tresolver.ensureHook(\"normalResolve\");\n\tresolver.ensureHook(\"internal\");\n\tresolver.ensureHook(\"rawModule\");\n\tresolver.ensureHook(\"alternateRawModule\");\n\tresolver.ensureHook(\"module\");\n\tresolver.ensureHook(\"resolveAsModule\");\n\tresolver.ensureHook(\"undescribedResolveInPackage\");\n\tresolver.ensureHook(\"resolveInPackage\");\n\tresolver.ensureHook(\"resolveInExistingDirectory\");\n\tresolver.ensureHook(\"importsFieldRelative\");\n\tif (extensionAliasForExports) {\n\t\tresolver.ensureHook(\"exportsFieldRelative\");\n\t}\n\tresolver.ensureHook(\"relative\");\n\tresolver.ensureHook(\"describedRelative\");\n\tresolver.ensureHook(\"directory\");\n\tresolver.ensureHook(\"undescribedExistingDirectory\");\n\tresolver.ensureHook(\"existingDirectory\");\n\tresolver.ensureHook(\"undescribedRawFile\");\n\tresolver.ensureHook(\"rawFile\");\n\tresolver.ensureHook(\"file\");\n\tresolver.ensureHook(\"finalFile\");\n\tresolver.ensureHook(\"existingFile\");\n\tresolver.ensureHook(\"resolved\");\n\n\t// TODO remove in next major\n\t// cspell:word Interal\n\t// Backward-compat\n\t// @ts-expect-error\n\tresolver.hooks.newInteralResolve = resolver.hooks.newInternalResolve;\n\n\t// resolve\n\tfor (const { source, resolveOptions } of [\n\t\t{ source: \"resolve\", resolveOptions: { fullySpecified } },\n\t\t{ source: \"internal-resolve\", resolveOptions: { fullySpecified: false } },\n\t\t// Entry point for non-relative targets from the imports field.\n\t\t// Sets internal: false to prevent re-entering imports resolution,\n\t\t// aligning with the Node.js ESM spec where PACKAGE_IMPORTS_RESOLVE\n\t\t// does not recursively resolve # specifiers.\n\t\t// https://nodejs.org/api/esm.html#resolution-algorithm-specification\n\t\t{\n\t\t\tsource: \"imports-resolve\",\n\t\t\tresolveOptions: { fullySpecified: false, internal: false },\n\t\t},\n\t]) {\n\t\tplugins.push(new ParsePlugin(source, resolveOptions, \"parsed-resolve\"));\n\t}\n\n\t// parsed-resolve\n\tplugins.push(\n\t\tnew DescriptionFilePlugin(\n\t\t\t\"parsed-resolve\",\n\t\t\tdescriptionFiles,\n\t\t\tfalse,\n\t\t\t\"described-resolve\",\n\t\t),\n\t);\n\tplugins.push(new NextPlugin(\"after-parsed-resolve\", \"described-resolve\"));\n\n\t// described-resolve\n\tif (unsafeCache) {\n\t\tplugins.push(\n\t\t\tnew UnsafeCachePlugin(\n\t\t\t\t\"described-resolve\",\n\t\t\t\tcachePredicate,\n\t\t\t\t/** @type {import(\"./UnsafeCachePlugin\").Cache} */ (unsafeCache),\n\t\t\t\tcacheWithContext,\n\t\t\t\t\"raw-resolve\",\n\t\t\t),\n\t\t);\n\t} else {\n\t\tplugins.push(new NextPlugin(\"described-resolve\", \"raw-resolve\"));\n\t}\n\tif (fallback.length > 0) {\n\t\tplugins.push(\n\t\t\tnew AliasPlugin(\"described-resolve\", fallback, \"internal-resolve\"),\n\t\t);\n\t}\n\t// raw-resolve\n\tif (alias.length > 0) {\n\t\tplugins.push(new AliasPlugin(\"raw-resolve\", alias, \"internal-resolve\"));\n\t}\n\tif (tsconfig) {\n\t\tplugins.push(new TsconfigPathsPlugin(tsconfig));\n\t}\n\tfor (const item of aliasFields) {\n\t\tplugins.push(new AliasFieldPlugin(\"raw-resolve\", item, \"internal-resolve\"));\n\t}\n\tfor (const item of extensionAlias) {\n\t\tplugins.push(\n\t\t\tnew ExtensionAliasPlugin(\"raw-resolve\", item, \"normal-resolve\"),\n\t\t);\n\t}\n\tplugins.push(new NextPlugin(\"raw-resolve\", \"normal-resolve\"));\n\n\t// normal-resolve\n\tif (preferRelative) {\n\t\tplugins.push(new JoinRequestPlugin(\"after-normal-resolve\", \"relative\"));\n\t}\n\tplugins.push(\n\t\tnew ConditionalPlugin(\n\t\t\t\"after-normal-resolve\",\n\t\t\t{ module: true },\n\t\t\t\"resolve as module\",\n\t\t\tfalse,\n\t\t\t\"raw-module\",\n\t\t),\n\t);\n\tplugins.push(\n\t\tnew ConditionalPlugin(\n\t\t\t\"after-normal-resolve\",\n\t\t\t{ internal: true },\n\t\t\t\"resolve as internal import\",\n\t\t\tfalse,\n\t\t\t\"internal\",\n\t\t),\n\t);\n\tif (preferAbsolute) {\n\t\tplugins.push(new JoinRequestPlugin(\"after-normal-resolve\", \"relative\"));\n\t}\n\tif (roots.size > 0) {\n\t\tplugins.push(new RootsPlugin(\"after-normal-resolve\", roots, \"relative\"));\n\t}\n\tif (!preferRelative && !preferAbsolute) {\n\t\tplugins.push(new JoinRequestPlugin(\"after-normal-resolve\", \"relative\"));\n\t}\n\n\t// internal\n\tfor (const importsField of importsFields) {\n\t\tplugins.push(\n\t\t\tnew ImportsFieldPlugin(\n\t\t\t\t\"internal\",\n\t\t\t\tconditionNames,\n\t\t\t\timportsField,\n\t\t\t\t\"imports-field-relative\",\n\t\t\t\t\"imports-resolve\",\n\t\t\t),\n\t\t);\n\t}\n\t// imports-field-relative: apply extensionAlias to paths produced by the\n\t// imports field (TypeScript-style extension substitution for self-package\n\t// imports like `#foo` -> `./foo.js` -> `./foo.ts`). Unlike the exports\n\t// field, the imports field is internal to the package, so applying the\n\t// consumer's extension aliases does not expose files the package author\n\t// did not intend to export. See issue #413.\n\tfor (const item of extensionAlias) {\n\t\tplugins.push(\n\t\t\tnew ExtensionAliasPlugin(\"imports-field-relative\", item, \"relative\"),\n\t\t);\n\t}\n\tplugins.push(new NextPlugin(\"imports-field-relative\", \"relative\"));\n\n\t// raw-module\n\tfor (const exportsField of exportsFields) {\n\t\tplugins.push(\n\t\t\tnew SelfReferencePlugin(\"raw-module\", exportsField, \"resolve-as-module\"),\n\t\t);\n\t}\n\tfor (const item of modules) {\n\t\tif (Array.isArray(item)) {\n\t\t\tif (item.includes(\"node_modules\") && pnpApi) {\n\t\t\t\tplugins.push(\n\t\t\t\t\tnew ModulesInHierarchicalDirectoriesPlugin(\n\t\t\t\t\t\t\"raw-module\",\n\t\t\t\t\t\titem.filter((i) => i !== \"node_modules\"),\n\t\t\t\t\t\t\"module\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tplugins.push(\n\t\t\t\t\tnew PnpPlugin(\n\t\t\t\t\t\t\"raw-module\",\n\t\t\t\t\t\tpnpApi,\n\t\t\t\t\t\t\"undescribed-resolve-in-package\",\n\t\t\t\t\t\t\"alternate-raw-module\",\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\tplugins.push(\n\t\t\t\t\tnew ModulesInHierarchicalDirectoriesPlugin(\n\t\t\t\t\t\t\"alternate-raw-module\",\n\t\t\t\t\t\t[\"node_modules\"],\n\t\t\t\t\t\t\"module\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tplugins.push(\n\t\t\t\t\tnew ModulesInHierarchicalDirectoriesPlugin(\n\t\t\t\t\t\t\"raw-module\",\n\t\t\t\t\t\titem,\n\t\t\t\t\t\t\"module\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tplugins.push(new ModulesInRootPlugin(\"raw-module\", item, \"module\"));\n\t\t}\n\t}\n\n\t// module\n\tplugins.push(new JoinRequestPartPlugin(\"module\", \"resolve-as-module\"));\n\n\t// resolve-as-module\n\tif (!resolveToContext) {\n\t\tplugins.push(\n\t\t\tnew ConditionalPlugin(\n\t\t\t\t\"resolve-as-module\",\n\t\t\t\t{ directory: false, request: \".\" },\n\t\t\t\t\"single file module\",\n\t\t\t\ttrue,\n\t\t\t\t\"undescribed-raw-file\",\n\t\t\t),\n\t\t);\n\t}\n\tplugins.push(\n\t\tnew DirectoryExistsPlugin(\n\t\t\t\"resolve-as-module\",\n\t\t\t\"undescribed-resolve-in-package\",\n\t\t),\n\t);\n\n\t// undescribed-resolve-in-package\n\tplugins.push(\n\t\tnew DescriptionFilePlugin(\n\t\t\t\"undescribed-resolve-in-package\",\n\t\t\tdescriptionFiles,\n\t\t\tfalse,\n\t\t\t\"resolve-in-package\",\n\t\t),\n\t);\n\tplugins.push(\n\t\tnew NextPlugin(\n\t\t\t\"after-undescribed-resolve-in-package\",\n\t\t\t\"resolve-in-package\",\n\t\t),\n\t);\n\n\t// resolve-in-package\n\tconst exportsFieldTarget = extensionAliasForExports\n\t\t? \"exports-field-relative\"\n\t\t: \"relative\";\n\tfor (const exportsField of exportsFields) {\n\t\tplugins.push(\n\t\t\tnew ExportsFieldPlugin(\n\t\t\t\t\"resolve-in-package\",\n\t\t\t\tconditionNames,\n\t\t\t\texportsField,\n\t\t\t\texportsFieldTarget,\n\t\t\t\trestrictions.size > 0,\n\t\t\t),\n\t\t);\n\t}\n\tplugins.push(\n\t\tnew NextPlugin(\"resolve-in-package\", \"resolve-in-existing-directory\"),\n\t);\n\n\t// exports-field-relative (opt-in via `extensionAliasForExports`):\n\t// apply `extensionAlias` to paths produced by the exports field. This is\n\t// off by default to match Node.js (which does not substitute extensions on\n\t// bare-module targets), and on opt-in aligns with TypeScript for packages\n\t// that ship TS sources alongside the compiled JS they list in `exports`.\n\tif (extensionAliasForExports) {\n\t\tfor (const item of extensionAlias) {\n\t\t\tplugins.push(\n\t\t\t\tnew ExtensionAliasPlugin(\"exports-field-relative\", item, \"relative\"),\n\t\t\t);\n\t\t}\n\t\tplugins.push(new NextPlugin(\"exports-field-relative\", \"relative\"));\n\t}\n\n\t// resolve-in-existing-directory\n\tplugins.push(\n\t\tnew JoinRequestPlugin(\"resolve-in-existing-directory\", \"relative\"),\n\t);\n\n\t// relative\n\tplugins.push(\n\t\tnew DescriptionFilePlugin(\n\t\t\t\"relative\",\n\t\t\tdescriptionFiles,\n\t\t\ttrue,\n\t\t\t\"described-relative\",\n\t\t),\n\t);\n\tplugins.push(new NextPlugin(\"after-relative\", \"described-relative\"));\n\n\t// described-relative\n\tif (resolveToContext) {\n\t\tplugins.push(new NextPlugin(\"described-relative\", \"directory\"));\n\t} else {\n\t\tplugins.push(\n\t\t\tnew ConditionalPlugin(\n\t\t\t\t\"described-relative\",\n\t\t\t\t{ directory: false },\n\t\t\t\tnull,\n\t\t\t\ttrue,\n\t\t\t\t\"raw-file\",\n\t\t\t),\n\t\t);\n\t\tplugins.push(\n\t\t\tnew ConditionalPlugin(\n\t\t\t\t\"described-relative\",\n\t\t\t\t{ fullySpecified: false },\n\t\t\t\t\"as directory\",\n\t\t\t\ttrue,\n\t\t\t\t\"directory\",\n\t\t\t),\n\t\t);\n\t}\n\n\t// directory\n\tplugins.push(\n\t\tnew DirectoryExistsPlugin(\"directory\", \"undescribed-existing-directory\"),\n\t);\n\n\tif (resolveToContext) {\n\t\t// undescribed-existing-directory\n\t\tplugins.push(new NextPlugin(\"undescribed-existing-directory\", \"resolved\"));\n\t} else {\n\t\t// undescribed-existing-directory\n\t\tplugins.push(\n\t\t\tnew DescriptionFilePlugin(\n\t\t\t\t\"undescribed-existing-directory\",\n\t\t\t\tdescriptionFiles,\n\t\t\t\tfalse,\n\t\t\t\t\"existing-directory\",\n\t\t\t),\n\t\t);\n\t\tfor (const item of mainFiles) {\n\t\t\tplugins.push(\n\t\t\t\tnew UseFilePlugin(\n\t\t\t\t\t\"undescribed-existing-directory\",\n\t\t\t\t\titem,\n\t\t\t\t\t\"undescribed-raw-file\",\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\t// described-existing-directory\n\t\tfor (const item of mainFields) {\n\t\t\tplugins.push(\n\t\t\t\tnew MainFieldPlugin(\n\t\t\t\t\t\"existing-directory\",\n\t\t\t\t\titem,\n\t\t\t\t\t\"resolve-in-existing-directory\",\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tfor (const item of mainFiles) {\n\t\t\tplugins.push(\n\t\t\t\tnew UseFilePlugin(\"existing-directory\", item, \"undescribed-raw-file\"),\n\t\t\t);\n\t\t}\n\n\t\t// undescribed-raw-file\n\t\tplugins.push(\n\t\t\tnew DescriptionFilePlugin(\n\t\t\t\t\"undescribed-raw-file\",\n\t\t\t\tdescriptionFiles,\n\t\t\t\ttrue,\n\t\t\t\t\"raw-file\",\n\t\t\t),\n\t\t);\n\t\tplugins.push(new NextPlugin(\"after-undescribed-raw-file\", \"raw-file\"));\n\n\t\t// raw-file\n\t\tplugins.push(\n\t\t\tnew ConditionalPlugin(\n\t\t\t\t\"raw-file\",\n\t\t\t\t{ fullySpecified: true },\n\t\t\t\tnull,\n\t\t\t\tfalse,\n\t\t\t\t\"file\",\n\t\t\t),\n\t\t);\n\t\tif (!enforceExtension) {\n\t\t\tplugins.push(new TryNextPlugin(\"raw-file\", \"no extension\", \"file\"));\n\t\t}\n\t\tfor (const item of extensions) {\n\t\t\tplugins.push(new AppendPlugin(\"raw-file\", item, \"file\"));\n\t\t}\n\n\t\t// file\n\t\tif (alias.length > 0) {\n\t\t\tplugins.push(new AliasPlugin(\"file\", alias, \"internal-resolve\"));\n\t\t}\n\t\tfor (const item of aliasFields) {\n\t\t\tplugins.push(new AliasFieldPlugin(\"file\", item, \"internal-resolve\"));\n\t\t}\n\t\tplugins.push(new NextPlugin(\"file\", \"final-file\"));\n\n\t\t// final-file\n\t\tplugins.push(new FileExistsPlugin(\"final-file\", \"existing-file\"));\n\n\t\t// existing-file\n\t\tif (symlinks) {\n\t\t\tplugins.push(new SymlinkPlugin(\"existing-file\", \"existing-file\"));\n\t\t}\n\t\tplugins.push(new NextPlugin(\"existing-file\", \"resolved\"));\n\t}\n\n\tconst { resolved } =\n\t\t/** @type {KnownHooks & EnsuredHooks} */\n\t\t(resolver.hooks);\n\n\t// resolved\n\tif (restrictions.size > 0) {\n\t\tplugins.push(new RestrictionsPlugin(resolved, restrictions));\n\t}\n\n\tplugins.push(new ResultPlugin(resolved));\n\n\t// // RESOLVER ////\n\n\tfor (const plugin of plugins) {\n\t\tif (typeof plugin === \"function\") {\n\t\t\t/** @type {(this: Resolver, resolver: Resolver) => void} */\n\t\t\t(plugin).call(resolver, resolver);\n\t\t} else if (plugin) {\n\t\t\tplugin.apply(resolver);\n\t\t}\n\t}\n\n\treturn resolver;\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class CloneBasenamePlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t * @param {string | ResolveStepHook} target target\n\t */\n\tconstructor(source, target) {\n\t\tthis.source = source;\n\t\tthis.target = target;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst target = resolver.ensureHook(this.target);\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"CloneBasenamePlugin\", (request, resolveContext, callback) => {\n\t\t\t\tconst requestPath = /** @type {string} */ (request.path);\n\t\t\t\tconst filename = resolver.basename(requestPath);\n\t\t\t\tconst filePath = resolver.join(requestPath, filename);\n\t\t\t\t/** @type {ResolveRequest} */\n\t\t\t\tconst obj = {\n\t\t\t\t\t...request,\n\t\t\t\t\tpath: filePath,\n\t\t\t\t\trelativePath:\n\t\t\t\t\t\trequest.relativePath &&\n\t\t\t\t\t\tresolver.join(request.relativePath, filename),\n\t\t\t\t};\n\t\t\t\tresolver.doResolve(\n\t\t\t\t\ttarget,\n\t\t\t\t\tobj,\n\t\t\t\t\t`using path: ${filePath}`,\n\t\t\t\t\tresolveContext,\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").ResolveStepHook} ResolveStepHook */\n\nmodule.exports = class LogInfoPlugin {\n\t/**\n\t * @param {string | ResolveStepHook} source source\n\t */\n\tconstructor(source) {\n\t\tthis.source = source;\n\t}\n\n\t/**\n\t * @param {Resolver} resolver the resolver\n\t * @returns {void}\n\t */\n\tapply(resolver) {\n\t\tconst { source } = this;\n\t\tresolver\n\t\t\t.getHook(this.source)\n\t\t\t.tapAsync(\"LogInfoPlugin\", (request, resolveContext, callback) => {\n\t\t\t\tif (!resolveContext.log) return callback();\n\t\t\t\tconst { log } = resolveContext;\n\t\t\t\tconst prefix = `[${source}] `;\n\t\t\t\tif (request.path) {\n\t\t\t\t\tlog(`${prefix}Resolving in directory: ${request.path}`);\n\t\t\t\t}\n\t\t\t\tif (request.request) {\n\t\t\t\t\tlog(`${prefix}Resolving request: ${request.request}`);\n\t\t\t\t}\n\t\t\t\tif (request.module) log(`${prefix}Request is an module request.`);\n\t\t\t\tif (request.directory) log(`${prefix}Request is a directory request.`);\n\t\t\t\tif (request.query) {\n\t\t\t\t\tlog(`${prefix}Resolving request query: ${request.query}`);\n\t\t\t\t}\n\t\t\t\tif (request.fragment) {\n\t\t\t\t\tlog(`${prefix}Resolving request fragment: ${request.fragment}`);\n\t\t\t\t}\n\t\t\t\tif (request.descriptionFilePath) {\n\t\t\t\t\tlog(\n\t\t\t\t\t\t`${prefix}Has description data from ${request.descriptionFilePath}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (request.relativePath) {\n\t\t\t\t\tlog(\n\t\t\t\t\t\t`${prefix}Relative path from description file is: ${request.relativePath}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tcallback();\n\t\t\t});\n\t}\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\n\"use strict\";\n\nconst memoize = require(\"./util/memoize\");\n\n/** @typedef {import(\"./CachedInputFileSystem\").BaseFileSystem} BaseFileSystem */\n/** @typedef {import(\"./PnpPlugin\").PnpApiImpl} PnpApi */\n/** @typedef {import(\"./Resolver\")} Resolver */\n/** @typedef {import(\"./Resolver\").Context} Context */\n/** @typedef {import(\"./Resolver\").FileSystem} FileSystem */\n/** @typedef {import(\"./Resolver\").ResolveCallback} ResolveCallback */\n/** @typedef {import(\"./Resolver\").ResolveContext} ResolveContext */\n/** @typedef {import(\"./Resolver\").ResolveRequest} ResolveRequest */\n/** @typedef {import(\"./Resolver\").SyncFileSystem} SyncFileSystem */\n/** @typedef {import(\"./ResolverFactory\").Plugin} Plugin */\n/** @typedef {import(\"./ResolverFactory\").UserResolveOptions} ResolveOptions */\n\n/**\n * @typedef {{\n * (context: Context, parent: string | URL, specifier: string | URL, resolveContext: ResolveContext, callback: ResolveCallback): void,\n * (context: Context, parent: string | URL, specifier: string | URL, callback: ResolveCallback): void,\n * (parent: string | URL, specifier: string | URL, resolveContext: ResolveContext, callback: ResolveCallback): void,\n * (parent: string | URL, specifier: string | URL, callback: ResolveCallback): void,\n * }} ResolveFunctionAsync\n */\n\n/**\n * @typedef {{\n * (context: Context, parent: string | URL, specifier: string | URL, resolveContext?: ResolveContext): string | false,\n * (parent: string | URL, specifier: string | URL, resolveContext?: ResolveContext): string | false,\n * }} ResolveFunction\n */\n\n/**\n * @typedef {{\n * (context: Context, parent: string | URL, specifier: string | URL, resolveContext?: ResolveContext): Promise<string | false>,\n * (parent: string | URL, specifier: string | URL, resolveContext?: ResolveContext): Promise<string | false>,\n * }} ResolveFunctionPromise\n */\n\nconst getCachedFileSystem = memoize(() => require(\"./CachedInputFileSystem\"));\n\nconst getNodeFileSystem = memoize(() => {\n\tconst fs = require(\"graceful-fs\");\n\n\tconst CachedInputFileSystem = getCachedFileSystem();\n\n\treturn new CachedInputFileSystem(fs, 4000);\n});\nconst getNodeContext = memoize(() => ({\n\tenvironments: [\"node+es3+es5+process+native\"],\n}));\n\nconst getResolverFactory = memoize(() => require(\"./ResolverFactory\"));\n\nconst getAsyncResolver = memoize(() =>\n\tgetResolverFactory().createResolver({\n\t\tconditionNames: [\"node\"],\n\t\textensions: [\".js\", \".json\", \".node\"],\n\t\tfileSystem: getNodeFileSystem(),\n\t}),\n);\n\n/**\n * @type {ResolveFunctionAsync}\n */\nconst resolve =\n\t/**\n\t * @param {object | string | URL} context context\n\t * @param {string | URL} parent parent path\n\t * @param {string | URL | ResolveContext | ResolveCallback} specifier specifier to resolve\n\t * @param {ResolveContext | ResolveCallback=} resolveContext resolve context\n\t * @param {ResolveCallback=} callback callback\n\t */\n\t(context, parent, specifier, resolveContext, callback) => {\n\t\tif (typeof context === \"string\" || context instanceof URL) {\n\t\t\tcallback = /** @type {ResolveCallback} */ (resolveContext);\n\t\t\tresolveContext = /** @type {ResolveContext} */ (specifier);\n\t\t\tspecifier = parent;\n\t\t\tparent = context;\n\t\t\tcontext = getNodeContext();\n\t\t}\n\t\tif (typeof callback !== \"function\") {\n\t\t\tcallback = /** @type {ResolveCallback} */ (resolveContext);\n\t\t}\n\t\tgetAsyncResolver().resolve(\n\t\t\tcontext,\n\t\t\tparent,\n\t\t\t/** @type {string} */ (specifier),\n\t\t\t/** @type {ResolveContext} */ (resolveContext),\n\t\t\t/** @type {ResolveCallback} */ (callback),\n\t\t);\n\t};\n\nconst getSyncResolver = memoize(() =>\n\tgetResolverFactory().createResolver({\n\t\tconditionNames: [\"node\"],\n\t\textensions: [\".js\", \".json\", \".node\"],\n\t\tuseSyncFileSystemCalls: true,\n\t\tfileSystem: getNodeFileSystem(),\n\t}),\n);\n\n/**\n * @type {ResolveFunction}\n */\nconst resolveSync =\n\t/**\n\t * @param {object | string | URL} context context\n\t * @param {string | URL} parent parent path\n\t * @param {string | URL | ResolveContext | undefined} specifier specifier to resolve\n\t * @param {ResolveContext=} resolveContext resolve context\n\t * @returns {string | false} resolved path\n\t */\n\t(context, parent, specifier, resolveContext) => {\n\t\tif (typeof context === \"string\" || context instanceof URL) {\n\t\t\tresolveContext = /** @type {ResolveContext} */ (specifier);\n\t\t\tspecifier = parent;\n\t\t\tparent = context;\n\t\t\tcontext = getNodeContext();\n\t\t}\n\t\treturn getSyncResolver().resolveSync(\n\t\t\tcontext,\n\t\t\tparent,\n\t\t\t/** @type {string} */ (specifier),\n\t\t\t/** @type {ResolveContext} */ (resolveContext),\n\t\t);\n\t};\n\n/**\n * @type {ResolveFunctionPromise}\n */\nconst resolvePromise =\n\t/**\n\t * @param {object | string | URL} context context\n\t * @param {string | URL} parent parent path\n\t * @param {string | URL | ResolveContext | undefined} specifier specifier to resolve\n\t * @param {ResolveContext=} resolveContext resolve context\n\t * @returns {Promise<string | false>} resolved path\n\t */\n\t(context, parent, specifier, resolveContext) => {\n\t\tif (typeof context === \"string\" || context instanceof URL) {\n\t\t\tresolveContext = /** @type {ResolveContext} */ (specifier);\n\t\t\tspecifier = parent;\n\t\t\tparent = context;\n\t\t\tcontext = getNodeContext();\n\t\t}\n\t\treturn getAsyncResolver().resolvePromise(\n\t\t\tcontext,\n\t\t\tparent,\n\t\t\t/** @type {string} */ (specifier),\n\t\t\t/** @type {ResolveContext} */ (resolveContext),\n\t\t);\n\t};\n\n/** @typedef {Omit<ResolveOptions, \"fileSystem\"> & Partial<Pick<ResolveOptions, \"fileSystem\">>} ResolveOptionsOptionalFS */\n\n/**\n * @param {ResolveOptionsOptionalFS} options Resolver options\n * @returns {ResolveFunctionAsync} Resolver function\n */\nfunction create(options) {\n\tconst resolver = getResolverFactory().createResolver({\n\t\t...options,\n\t\tfileSystem: options.fileSystem || getNodeFileSystem(),\n\t});\n\t/**\n\t * @param {object | string | URL} context Custom context\n\t * @param {string | URL} parent Base/parent path\n\t * @param {string | URL | ResolveContext | ResolveCallback} specifier Specifier to resolve\n\t * @param {ResolveContext | ResolveCallback=} resolveContext Resolve context\n\t * @param {ResolveCallback=} callback Result callback\n\t */\n\treturn function create(context, parent, specifier, resolveContext, callback) {\n\t\tif (typeof context === \"string\" || context instanceof URL) {\n\t\t\tcallback = /** @type {ResolveCallback} */ (resolveContext);\n\t\t\tresolveContext = /** @type {ResolveContext} */ (specifier);\n\t\t\tspecifier = parent;\n\t\t\tparent = context;\n\t\t\tcontext = getNodeContext();\n\t\t}\n\t\tif (typeof callback !== \"function\") {\n\t\t\tcallback = /** @type {ResolveCallback} */ (resolveContext);\n\t\t}\n\t\tresolver.resolve(\n\t\t\tcontext,\n\t\t\tparent,\n\t\t\t/** @type {string} */ (specifier),\n\t\t\t/** @type {ResolveContext} */ (resolveContext),\n\t\t\tcallback,\n\t\t);\n\t};\n}\n\n/**\n * @param {ResolveOptionsOptionalFS} options Resolver options\n * @returns {ResolveFunction} Resolver function\n */\nfunction createSync(options) {\n\tconst resolver = getResolverFactory().createResolver({\n\t\tuseSyncFileSystemCalls: true,\n\t\t...options,\n\t\tfileSystem: options.fileSystem || getNodeFileSystem(),\n\t});\n\t/**\n\t * @param {object | string | URL} context custom context\n\t * @param {string | URL} parent base/parent path\n\t * @param {string | URL | ResolveContext | undefined} specifier specifier to resolve\n\t * @param {ResolveContext=} resolveContext Resolve context\n\t * @returns {string | false} Resolved path or false\n\t */\n\treturn function createSync(context, parent, specifier, resolveContext) {\n\t\tif (typeof context === \"string\" || context instanceof URL) {\n\t\t\tresolveContext = /** @type {ResolveContext} */ (specifier);\n\t\t\tspecifier = parent;\n\t\t\tparent = context;\n\t\t\tcontext = getNodeContext();\n\t\t}\n\t\treturn resolver.resolveSync(\n\t\t\tcontext,\n\t\t\tparent,\n\t\t\t/** @type {string} */ (specifier),\n\t\t\t/** @type {ResolveContext} */ (resolveContext),\n\t\t);\n\t};\n}\n\n/**\n * @param {ResolveOptionsOptionalFS} options Resolver options\n * @returns {ResolveFunctionPromise} Resolver function\n */\nfunction createPromise(options) {\n\tconst resolver = getResolverFactory().createResolver({\n\t\t...options,\n\t\tfileSystem: options.fileSystem || getNodeFileSystem(),\n\t});\n\t/**\n\t * @param {object | string | URL} context Custom context\n\t * @param {string | URL} parent Base/parent path\n\t * @param {string | URL | ResolveContext | undefined} specifier Specifier to resolve\n\t * @param {ResolveContext=} resolveContext Resolve context\n\t * @returns {Promise<string | false>} resolved path\n\t */\n\treturn function createPromise(context, parent, specifier, resolveContext) {\n\t\tif (typeof context === \"string\" || context instanceof URL) {\n\t\t\tresolveContext = /** @type {ResolveContext} */ (specifier);\n\t\t\tspecifier = parent;\n\t\t\tparent = context;\n\t\t\tcontext = getNodeContext();\n\t\t}\n\t\treturn resolver.resolvePromise(\n\t\t\tcontext,\n\t\t\tparent,\n\t\t\t/** @type {string} */ (specifier),\n\t\t\t/** @type {ResolveContext} */ (resolveContext),\n\t\t);\n\t};\n}\n\n/**\n * @template A\n * @template B\n * @param {A} obj input a\n * @param {B} exports input b\n * @returns {A & B} merged\n */\nconst mergeExports = (obj, exports) => {\n\tconst descriptors = Object.getOwnPropertyDescriptors(exports);\n\tObject.defineProperties(obj, descriptors);\n\treturn /** @type {A & B} */ (Object.freeze(obj));\n};\n\nmodule.exports = mergeExports(resolve, {\n\tget sync() {\n\t\treturn resolveSync;\n\t},\n\tget promise() {\n\t\treturn resolvePromise;\n\t},\n\tcreate: mergeExports(create, {\n\t\tget sync() {\n\t\t\treturn createSync;\n\t\t},\n\t\tget promise() {\n\t\t\treturn createPromise;\n\t\t},\n\t}),\n\tget ResolverFactory() {\n\t\treturn getResolverFactory();\n\t},\n\tget CachedInputFileSystem() {\n\t\treturn getCachedFileSystem();\n\t},\n\tget CloneBasenamePlugin() {\n\t\treturn require(\"./CloneBasenamePlugin\");\n\t},\n\tget LogInfoPlugin() {\n\t\treturn require(\"./LogInfoPlugin\");\n\t},\n\tget TsconfigPathsPlugin() {\n\t\treturn require(\"./TsconfigPathsPlugin\");\n\t},\n\tget forEachBail() {\n\t\treturn require(\"./forEachBail\");\n\t},\n});\n","import fs from 'node:fs'\nimport { fileURLToPath } from 'node:url'\nimport { CachedInputFileSystem, ResolverFactory } from 'enhanced-resolve'\nimport { expiringMap } from './expiring-map'\n\nconst fileSystem = new CachedInputFileSystem(fs as any, 30_000)\n\nconst esmResolver = ResolverFactory.createResolver({\n  fileSystem,\n  useSyncFileSystemCalls: true,\n  extensions: ['.mjs', '.js'],\n  mainFields: ['module'],\n  conditionNames: ['node', 'import'],\n})\n\nconst cjsResolver = ResolverFactory.createResolver({\n  fileSystem,\n  useSyncFileSystemCalls: true,\n  extensions: ['.js', '.cjs'],\n  mainFields: ['main'],\n  conditionNames: ['node', 'require'],\n})\n\nconst cssResolver = ResolverFactory.createResolver({\n  fileSystem,\n  useSyncFileSystemCalls: true,\n  extensions: ['.css'],\n  mainFields: ['style'],\n  conditionNames: ['style'],\n})\n\n// This is a long-lived cache for resolved modules whether they exist or not\n// Because we're compatible with a large number of plugins, we need to check\n// for the existence of a module before attempting to import it. This cache\n// is used to mitigate the cost of that check because Node.js does not cache\n// failed module resolutions making repeated checks very expensive.\nconst resolveCache = expiringMap<string, string | null>(30_000)\n\nexport function maybeResolve(name: string) {\n  let modpath = resolveCache.get(name)\n\n  if (modpath === undefined) {\n    try {\n      modpath = resolveJsFrom(fileURLToPath(import.meta.url), name)\n      resolveCache.set(name, modpath)\n    } catch {\n      resolveCache.set(name, null)\n      return null\n    }\n  }\n\n  return modpath\n}\n\nexport async function loadIfExists<T>(name: string): Promise<T | null> {\n  const modpath = maybeResolve(name)\n\n  if (modpath) {\n    const mod = await import(name)\n    return mod.default ?? mod\n  }\n\n  return null\n}\n\nexport function resolveJsFrom(base: string, id: string): string {\n  try {\n    return esmResolver.resolveSync({}, base, id) || id\n  } catch {\n    return cjsResolver.resolveSync({}, base, id) || id\n  }\n}\n\nexport function resolveCssFrom(base: string, id: string) {\n  return cssResolver.resolveSync({}, base, id) || id\n}\n","// @ts-check\nimport * as fs from 'fs/promises'\nimport * as path from 'path'\nimport { pathToFileURL } from 'url'\nimport clearModule from 'clear-module'\nimport escalade from 'escalade/sync'\nimport { createJiti, type Jiti } from 'jiti'\nimport postcss from 'postcss'\n// @ts-ignore\nimport postcssImport from 'postcss-import'\nimport type { RequiredConfig } from 'tailwindcss/types/config.js'\nimport { expiringMap } from './expiring-map.js'\nimport { resolveCssFrom, resolveJsFrom } from './resolve'\nimport type { ContextContainer, SortTailwindClassesOptions } from './types'\n\nconst sourceToPathMap = new Map<string, string | null>()\nconst sourceToEntryMap = new Map<string, string | null>()\nconst pathToContextMap = expiringMap<string | null, ContextContainer>(10_000)\n\nexport async function getTailwindConfig(\n  options: SortTailwindClassesOptions = {},\n): Promise<ContextContainer> {\n  const pkgName = 'tailwindcss'\n\n  const key = [\n    options.baseDir ?? process.cwd(),\n    options.tailwindStylesheet ?? '',\n    options.tailwindConfig ?? '',\n    pkgName,\n  ].join(':')\n\n  const baseDir = getBaseDir(options)\n\n  // Map the source file to it's associated Tailwind config file\n  let configPath = sourceToPathMap.get(key)\n  if (configPath === undefined) {\n    configPath = getConfigPath(options, baseDir)\n    sourceToPathMap.set(key, configPath)\n  }\n\n  let entryPoint = sourceToEntryMap.get(key)\n  if (entryPoint === undefined) {\n    entryPoint = getEntryPoint(options, baseDir)\n    sourceToEntryMap.set(key, entryPoint)\n  }\n\n  // Now see if we've loaded the Tailwind config file before (and it's still valid)\n  const contextKey = `${pkgName}:${configPath}:${entryPoint}`\n  const existing = pathToContextMap.get(contextKey)\n  if (existing) {\n    return existing\n  }\n\n  // By this point we know we need to load the Tailwind config file\n  const result = await loadTailwindConfig(\n    baseDir,\n    pkgName,\n    configPath,\n    entryPoint,\n  )\n\n  pathToContextMap.set(contextKey, result)\n\n  return result\n}\n\nfunction getBaseDir(options: SortTailwindClassesOptions): string {\n  if (options.baseDir) {\n    return options.baseDir\n  }\n\n  return process.cwd()\n}\n\nasync function loadTailwindConfig(\n  baseDir: string,\n  pkgName: string,\n  tailwindConfigPath: string | null,\n  entryPoint: string | null,\n): Promise<ContextContainer> {\n  let createContext: any\n  let generateRules: any\n  let resolveConfig: any\n  let loadConfig: any\n  let tailwindConfig: RequiredConfig = { content: [] }\n\n  try {\n    const pkgPath = resolveJsFrom(baseDir, pkgName)\n    let pkgJsonPath: string\n\n    try {\n      const Module = require('module')\n      const requireFromBase = Module.createRequire(path.join(baseDir, 'index.js'))\n\n      pkgJsonPath = requireFromBase.resolve(`${pkgName}/package.json`)\n    } catch {\n      // Fallback: assume pkgPath is in a subdirectory of the package\n      // Let's walk up until we find package.json\n      let currentDir = path.dirname(pkgPath)\n\n      while (currentDir !== path.dirname(currentDir)) {\n        const candidatePkgJson = path.join(currentDir, 'package.json')\n\n        try {\n          require('fs').accessSync(candidatePkgJson)\n          pkgJsonPath = candidatePkgJson\n          break\n        } catch {}\n\n        currentDir = path.dirname(currentDir)\n      }\n\n      if (!pkgJsonPath!) {\n        throw new Error('Could not find Tailwind CSS package.json')\n      }\n    }\n\n    const pkgDir = path.dirname(pkgJsonPath)\n\n    try {\n      const v4 = await loadV4(baseDir, pkgDir, pkgName, entryPoint)\n      if (v4) {\n        return v4\n      }\n    } catch (_error) {\n      // V4 loading failed, will try v3 below\n    }\n\n    resolveConfig = require(path.join(pkgDir, 'resolveConfig'))\n    createContext = require(\n      path.join(pkgDir, 'lib/lib/setupContextUtils'),\n    ).createContext\n    generateRules = require(\n      path.join(pkgDir, 'lib/lib/generateRules'),\n    ).generateRules\n\n    // Prior to `tailwindcss@3.3.0` this won't exist so we load it last\n    loadConfig = require(path.join(pkgDir, 'loadConfig'))\n  } catch (_error: any) {\n    // Tailwind isn't installed or loading failed, will use defaults\n  }\n\n  if (tailwindConfigPath) {\n    try {\n      clearModule(tailwindConfigPath)\n      const loadedConfig = loadConfig(tailwindConfigPath)\n      tailwindConfig = loadedConfig.default ?? loadedConfig\n    } catch (error) {\n      console.warn(`Failed to load Tailwind config from ${tailwindConfigPath}:`, error)\n    }\n  }\n\n  if (!resolveConfig || !createContext || !generateRules) {\n    return {\n      context: null,\n      generateRules: null,\n    }\n  }\n\n  tailwindConfig.content = ['no-op']\n\n  const context = createContext(resolveConfig(tailwindConfig))\n\n  return {\n    context,\n    generateRules,\n  }\n}\n\n/**\n * Create a loader function that can load plugins and config files relative to\n * the CSS file that uses them. However, we don't want missing files to prevent\n * everything from working so we'll let the error handler decide how to proceed.\n */\nfunction createLoader<T>({\n  legacy,\n  jiti,\n  filepath,\n  onError,\n}: {\n  legacy: boolean\n  jiti: Jiti\n  filepath: string\n  onError: (id: string, error: unknown, resourceType: string) => T\n}) {\n  const cacheKey = `${+Date.now()}`\n\n  async function loadFile(id: string, base: string, resourceType: string) {\n    try {\n      const resolved = resolveJsFrom(base, id)\n\n      const url = pathToFileURL(resolved)\n      url.searchParams.append('t', cacheKey)\n\n      return await jiti.import(url.href, { default: true })\n    } catch (error) {\n      return onError(id, error, resourceType)\n    }\n  }\n\n  if (legacy) {\n    const baseDir = path.dirname(filepath)\n    return (id: string) => loadFile(id, baseDir, 'module')\n  }\n\n  return async (id: string, base: string, resourceType: string) => {\n    return {\n      base,\n      module: await loadFile(id, base, resourceType),\n    }\n  }\n}\n\nasync function loadV4(\n  baseDir: string,\n  pkgDir: string,\n  pkgName: string,\n  entryPoint: string | null,\n) {\n  // Import Tailwind — if this is v4 it'll have APIs we can use directly\n  const pkgPath = resolveJsFrom(baseDir, pkgName)\n\n  const tw = await import(pathToFileURL(pkgPath).toString())\n\n  // This is not Tailwind v4\n  if (!tw.__unstable__loadDesignSystem) {\n    return null\n  }\n\n  // If the user doesn't define an entrypoint then we use the default theme\n  entryPoint = entryPoint ?? `${pkgDir}/theme.css`\n\n  // Create a Jiti instance that can be used to load plugins and config files\n  const jiti = createJiti(import.meta.url, {\n    moduleCache: false,\n    fsCache: false,\n  })\n\n  const importBasePath = path.dirname(entryPoint)\n\n  // Resolve imports in the entrypoint to a flat CSS tree\n  let css = await fs.readFile(entryPoint, 'utf-8')\n\n  // Determine if the v4 API supports resolving `@import`\n  let supportsImports = false\n  try {\n    await tw.__unstable__loadDesignSystem('@import \"./empty\";', {\n      loadStylesheet: () => {\n        supportsImports = true\n        return {\n          base: importBasePath,\n          content: '',\n        }\n      },\n    })\n  } catch {}\n\n  if (!supportsImports) {\n    const resolveImports = postcss([postcssImport()])\n    const result = await resolveImports.process(css, { from: entryPoint })\n    css = result.css\n  }\n\n  // Load the design system and set up a compatible context object that is\n  // usable by the rest of the plugin\n  const design = await tw.__unstable__loadDesignSystem(css, {\n    base: importBasePath,\n\n    // v4.0.0-alpha.25+\n    loadModule: createLoader({\n      legacy: false,\n      jiti,\n      filepath: entryPoint,\n      onError: (id, err, resourceType) => {\n        console.error(`Unable to load ${resourceType}: ${id}`, err)\n\n        if (resourceType === 'config') {\n          return {}\n        } else if (resourceType === 'plugin') {\n          return () => {}\n        }\n      },\n    }),\n\n    loadStylesheet: async (id: string, base: string) => {\n      const resolved = resolveCssFrom(base, id)\n\n      return {\n        base: path.dirname(resolved),\n        content: await fs.readFile(resolved, 'utf-8'),\n      }\n    },\n\n    // v4.0.0-alpha.24 and below\n    loadPlugin: createLoader({\n      legacy: true,\n      jiti,\n      filepath: entryPoint,\n      onError(id, err) {\n        console.error(`Unable to load plugin: ${id}`, err)\n\n        return () => {}\n      },\n    }),\n\n    loadConfig: createLoader({\n      legacy: true,\n      jiti,\n      filepath: entryPoint,\n      onError(id, err) {\n        console.error(`Unable to load config: ${id}`, err)\n\n        return {}\n      },\n    }),\n  })\n\n  return {\n    context: {\n      getClassOrder: (classList: string[]) => design.getClassOrder(classList),\n    },\n\n    // Stubs that are not needed for v4\n    generateRules: () => [],\n  }\n}\n\nfunction getConfigPath(options: SortTailwindClassesOptions, baseDir: string): string | null {\n  if (options.tailwindConfig) {\n    if (options.tailwindConfig.endsWith('.css')) {\n      return null\n    }\n\n    return path.resolve(baseDir, options.tailwindConfig)\n  }\n\n  let configPath: string | void = undefined\n  try {\n    configPath = escalade(baseDir, (_dir, names) => {\n      if (names.includes('tailwind.config.js')) {\n        return 'tailwind.config.js'\n      }\n      if (names.includes('tailwind.config.cjs')) {\n        return 'tailwind.config.cjs'\n      }\n      if (names.includes('tailwind.config.mjs')) {\n        return 'tailwind.config.mjs'\n      }\n      if (names.includes('tailwind.config.ts')) {\n        return 'tailwind.config.ts'\n      }\n    })\n  } catch {}\n\n  if (configPath) {\n    return configPath\n  }\n\n  return null\n}\n\nfunction getEntryPoint(options: SortTailwindClassesOptions, baseDir: string): string | null {\n  if (options.tailwindStylesheet) {\n    return path.resolve(baseDir, options.tailwindStylesheet)\n  }\n\n  if (options.tailwindConfig && options.tailwindConfig.endsWith('.css')) {\n    console.warn(\n      'Use the `tailwindStylesheet` option for v4 projects instead of `tailwindConfig`.',\n    )\n\n    return path.resolve(baseDir, options.tailwindConfig)\n  }\n\n  try {\n    const commonPaths = [\n      'app/assets/tailwind/application.css',\n      'app/assets/stylesheets/application.tailwind.css',\n      'app/assets/stylesheets/application.css',\n      'src/styles/tailwind.css',\n      'src/tailwind.css',\n      'styles/tailwind.css',\n      'tailwind.css',\n      'app.css',\n      'src/app.css',\n    ]\n\n    for (const cssPath of commonPaths) {\n      const fullPath = path.resolve(baseDir, cssPath)\n      try {\n        require('fs').accessSync(fullPath, require('fs').constants.R_OK)\n        return fullPath\n      } catch {\n        // File doesn't exist or isn't readable, continue to next path\n      }\n    }\n  } catch {}\n\n  return null\n}\n","import type { TailwindContext, SortEnv } from './types'\n\nexport function bigSign(bigIntValue: bigint) {\n  return Number(bigIntValue > 0n) - Number(bigIntValue < 0n)\n}\n\nfunction prefixCandidate(\n  context: TailwindContext,\n  selector: string,\n): string {\n  const prefix = context.tailwindConfig.prefix\n  return typeof prefix === 'function' ? prefix(selector) : prefix + selector\n}\n\n// Polyfill for older Tailwind CSS versions\nfunction getClassOrderPolyfill(\n  classes: string[],\n  { env }: { env: SortEnv },\n): [string, bigint | null][] {\n  if (!env.context || !env.generateRules) {\n    return classes.map(name => [name, null] as [string, bigint | null])\n  }\n\n  // A list of utilities that are used by certain Tailwind CSS utilities but\n  // that don't exist on their own. This will result in them \"not existing\" and\n  // sorting could be weird since you still require them in order to make the\n  // host utitlies work properly. (Thanks Biology)\n  const parasiteUtilities = new Set([\n    prefixCandidate(env.context, 'group'),\n    prefixCandidate(env.context, 'peer'),\n  ])\n\n  const classNamesWithOrder: [string, bigint | null][] = []\n\n  for (const className of classes) {\n    let order: bigint | null =\n      env\n        .generateRules(new Set([className]), env.context)\n        .sort(([a], [z]) => bigSign(z - a))[0]?.[0] ?? null\n\n    if (order === null && parasiteUtilities.has(className)) {\n      // This will make sure that it is at the very beginning of the\n      // `components` layer which technically means 'before any\n      // components'.\n      order = env.context.layerOrder.components\n    }\n\n    classNamesWithOrder.push([className, order])\n  }\n\n  return classNamesWithOrder\n}\n\nfunction reorderClasses(classList: string[], { env }: { env: SortEnv }) {\n  if (!env.context) {\n    return classList.map(name => [name, null] as [string, bigint | null])\n  }\n\n  const orderedClasses = env.context.getClassOrder\n    ? env.context.getClassOrder(classList)\n    : getClassOrderPolyfill(classList, { env })\n\n  return orderedClasses.sort(([nameA, a], [nameZ, z]) => {\n    // Move `...` to the end of the list\n    if (nameA === '...' || nameA === '…') return 1\n    if (nameZ === '...' || nameZ === '…') return -1\n\n    if (a === z) return 0\n    if (a === null) return -1\n    if (z === null) return 1\n    return bigSign(a - z)\n  })\n}\n\nexport function sortClasses(\n  classStr: string,\n  {\n    env,\n    ignoreFirst = false,\n    ignoreLast = false,\n    removeDuplicates = true,\n    collapseWhitespace = { start: true, end: true },\n  }: {\n    env: SortEnv\n    ignoreFirst?: boolean\n    ignoreLast?: boolean\n    removeDuplicates?: boolean\n    collapseWhitespace?: false | { start: boolean; end: boolean }\n  },\n): string {\n  if (typeof classStr !== 'string' || classStr === '') {\n    return classStr\n  }\n\n  // Ignore class attributes containing `{{`, to match Prettier behaviour:\n  // https://github.com/prettier/prettier/blob/8a88cdce6d4605f206305ebb9204a0cabf96a070/src/language-html/embed/class-names.js#L9\n  if (classStr.includes('{{')) {\n    return classStr\n  }\n\n  if (env.options.tailwindPreserveWhitespace) {\n    collapseWhitespace = false\n  }\n\n  // This class list is purely whitespace\n  // Collapse it to a single space if the option is enabled\n  if (/^[\\t\\r\\f\\n ]+$/.test(classStr) && collapseWhitespace) {\n    return ' '\n  }\n\n  let result = ''\n  const parts = classStr.split(/([\\t\\r\\f\\n ]+)/)\n  const classes = parts.filter((_, i) => i % 2 === 0)\n\n  let whitespace = parts.filter((_, i) => i % 2 !== 0)\n\n  if (classes[classes.length - 1] === '') {\n    classes.pop()\n  }\n\n  if (collapseWhitespace) {\n    whitespace = whitespace.map(() => ' ')\n  }\n\n  let prefix = ''\n  if (ignoreFirst) {\n    prefix = `${classes.shift() ?? ''}${whitespace.shift() ?? ''}`\n  }\n\n  let suffix = ''\n  if (ignoreLast) {\n    suffix = `${whitespace.pop() ?? ''}${classes.pop() ?? ''}`\n  }\n\n  const { classList, removedIndices } = sortClassList(classes, {\n    env,\n    removeDuplicates,\n  })\n\n  // Remove whitespace that appeared before a removed classes\n  whitespace = whitespace.filter((_, index) => !removedIndices.has(index + 1))\n\n  for (let i = 0; i < classList.length; i++) {\n    result += `${classList[i]}${whitespace[i] ?? ''}`\n  }\n\n  if (collapseWhitespace) {\n    prefix = prefix.replace(/\\s+$/g, ' ')\n    suffix = suffix.replace(/^\\s+/g, ' ')\n\n    result = result\n      .replace(/^\\s+/, collapseWhitespace.start ? '' : ' ')\n      .replace(/\\s+$/, collapseWhitespace.end ? '' : ' ')\n  }\n\n  return prefix + result + suffix\n}\n\nexport function sortClassList(\n  classList: string[],\n  {\n    env,\n    removeDuplicates,\n  }: {\n    env: SortEnv\n    removeDuplicates: boolean\n  },\n) {\n  // Re-order classes based on the Tailwind CSS configuration\n  let orderedClasses = reorderClasses(classList, { env })\n\n  // Remove duplicate Tailwind classes\n  if (env.options.tailwindPreserveDuplicates) {\n    removeDuplicates = false\n  }\n\n  const removedIndices = new Set<number>()\n\n  if (removeDuplicates) {\n    const seenClasses = new Set<string>()\n\n    orderedClasses = orderedClasses.filter(([cls, order], index) => {\n      if (seenClasses.has(cls)) {\n        removedIndices.add(index)\n        return false\n      }\n\n      // Only consider known classes when removing duplicates\n      if (order !== null) {\n        seenClasses.add(cls)\n      }\n\n      return true\n    })\n  }\n\n  return {\n    classList: orderedClasses.map(([className]) => className),\n    removedIndices,\n  }\n}\n","import { getTailwindConfig } from './config.js'\nimport { sortClasses, sortClassList } from './sorting.js'\n\nimport type { SortTailwindClassesOptions, SortEnv, ContextContainer } from './types.js'\n\n/**\n * A reusable Tailwind CSS class sorter that holds a context for efficient sorting.\n * Use this when you need to sort classes multiple times with the same configuration.\n */\nexport class TailwindClassSorter {\n  private env: SortEnv\n\n  /**\n   * Create a new TailwindClassSorter with a pre-loaded context.\n   *\n   * @param contextContainer - Pre-loaded Tailwind context and generateRules function\n   * @param options - Configuration options (merged with context)\n   */\n  constructor(contextContainer: ContextContainer, options: SortTailwindClassesOptions = {}) {\n    this.env = {\n      context: contextContainer.context,\n      generateRules: contextContainer.generateRules,\n      options\n    }\n  }\n\n  /**\n   * Create a TailwindClassSorter by loading a Tailwind config file.\n   *\n   * @param options - Configuration options including config file path\n   * @returns Promise resolving to a new TailwindClassSorter instance\n   */\n  static async fromConfig(options: SortTailwindClassesOptions = {}): Promise<TailwindClassSorter> {\n    const contextContainer = await getTailwindConfig(options)\n    return new TailwindClassSorter(contextContainer, options)\n  }\n\n  /**\n   * Sort Tailwind CSS classes synchronously.\n   *\n   * @param classStr - String of space-separated CSS classes\n   * @param overrideOptions - Options to override the instance options for this sort\n   * @returns Sorted class string\n   */\n  sortClasses(classStr: string, overrideOptions?: Partial<SortTailwindClassesOptions>): string {\n    if (!classStr || typeof classStr !== 'string') {\n      return classStr\n    }\n\n    const env = overrideOptions ? {\n      ...this.env,\n      options: { ...this.env.options, ...overrideOptions }\n    } : this.env\n\n    return sortClasses(classStr, { env })\n  }\n\n  /**\n   * Sort a list of Tailwind CSS classes synchronously.\n   *\n   * @param classList - Array of CSS classes\n   * @param overrideOptions - Options to override the instance options for this sort\n   * @returns Object with sorted classList and removed indices\n   */\n  sortClassList(\n    classList: string[],\n    overrideOptions?: Partial<SortTailwindClassesOptions>\n  ): { classList: string[], removedIndices: Set<number> } {\n    if (!Array.isArray(classList)) {\n      return { classList, removedIndices: new Set() }\n    }\n\n    const env = overrideOptions ? {\n      ...this.env,\n      options: { ...this.env.options, ...overrideOptions }\n    } : this.env\n\n    const effectiveOptions = env.options\n    const removeDuplicates = overrideOptions?.tailwindPreserveDuplicates !== undefined\n      ? !overrideOptions.tailwindPreserveDuplicates\n      : !effectiveOptions.tailwindPreserveDuplicates\n\n    return sortClassList(classList, { env, removeDuplicates })\n  }\n\n  /**\n   * Get the underlying context container.\n   *\n   * @returns The context container used by this sorter\n   */\n  getContext(): ContextContainer {\n    return {\n      context: this.env.context,\n      generateRules: this.env.generateRules\n    }\n  }\n\n  /**\n   * Get the current options.\n   *\n   * @returns The options used by this sorter\n   */\n  getOptions(): SortTailwindClassesOptions {\n    return { ...this.env.options }\n  }\n}\n","import { getTailwindConfig } from './config.js'\nimport { sortClasses, sortClassList } from './sorting.js'\nimport type { SortTailwindClassesOptions, SortEnv } from './types.js'\n\nexport type { SortTailwindClassesOptions, ContextContainer } from './types.js'\nexport { TailwindClassSorter } from './sorter.js'\n\n/**\n * Sort Tailwind CSS classes according to the recommended class order.\n *\n * @param classStr - String of space-separated CSS classes\n * @param options - Configuration options\n * @returns Sorted class string\n */\nexport async function sortTailwindClasses(\n  classStr: string,\n  options: SortTailwindClassesOptions = {}\n): Promise<string> {\n  if (!classStr || typeof classStr !== 'string') {\n    return classStr\n  }\n\n  const { context, generateRules } = await getTailwindConfig(options)\n\n  const env: SortEnv = {\n    context,\n    generateRules,\n    options\n  }\n\n  return sortClasses(classStr, { env })\n}\n\n/**\n * Sort a list of Tailwind CSS classes.\n *\n * @param classList - Array of CSS classes\n * @param options - Configuration options\n * @returns Object with sorted classList and removed indices\n */\nexport async function sortTailwindClassList(\n  classList: string[],\n  options: SortTailwindClassesOptions = {}\n) {\n  if (!Array.isArray(classList)) {\n    return { classList, removedIndices: new Set() }\n  }\n\n  const { context, generateRules } = await getTailwindConfig(options)\n\n  const env: SortEnv = {\n    context,\n    generateRules,\n    options\n  }\n\n  return sortClassList(classList, {\n    env,\n    removeDuplicates: !options.tailwindPreserveDuplicates\n  })\n}\n\nexport { sortClasses, sortClassList } from './sorting.js'\nexport { getTailwindConfig } from './config.js'\n"],"ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66],"mappings":"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"}