@embroider/webpack 4.0.9-unstable.b89b741 → 4.0.9-unstable.c3af848

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embroider/webpack",
3
- "version": "4.0.9-unstable.b89b741",
3
+ "version": "4.0.9-unstable.c3af848",
4
4
  "private": false,
5
5
  "description": "Builds EmberJS apps with Webpack",
6
6
  "repository": {
@@ -36,9 +36,9 @@
36
36
  "supports-color": "^8.1.0",
37
37
  "terser": "^5.7.0",
38
38
  "thread-loader": "^3.0.4",
39
- "@embroider/shared-internals": "2.8.2-unstable.b89b741",
40
- "@embroider/babel-loader-9": "3.1.2-unstable.b89b741",
41
- "@embroider/hbs-loader": "3.0.4-unstable.b89b741"
39
+ "@embroider/babel-loader-9": "3.1.2-unstable.c3af848",
40
+ "@embroider/hbs-loader": "3.0.4-unstable.c3af848",
41
+ "@embroider/shared-internals": "2.8.2-unstable.c3af848"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/csso": "^3.5.1",
@@ -50,11 +50,11 @@
50
50
  "@types/semver": "^7.3.6",
51
51
  "typescript": "^5.4.5",
52
52
  "webpack": "^5.38.1",
53
- "@embroider/core": "^3.4.20-unstable.b89b741"
53
+ "@embroider/core": "^3.4.20-unstable.c3af848"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "webpack": "^5.0.0",
57
- "@embroider/core": "^3.4.20-unstable.b89b741"
57
+ "@embroider/core": "^3.4.20-unstable.c3af848"
58
58
  },
59
59
  "engines": {
60
60
  "node": "12.* || 14.* || >= 16"
@@ -122,7 +122,8 @@ const Webpack = (_a = class Webpack {
122
122
  await this.runWebpack(webpack);
123
123
  }
124
124
  examineApp() {
125
- let meta = (0, core_1.getAppMeta)(this.pathToVanillaApp);
125
+ // @ts-expect-error webpack is not updated to work on @embroider/core 4.x
126
+ let meta = getAppMeta(this.pathToVanillaApp);
126
127
  let rootURL = meta['ember-addon']['root-url'];
127
128
  let entrypoints = [];
128
129
  let otherAssets = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ember-webpack.js","sourceRoot":"","sources":["ember-webpack.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n Most of the work this module does is putting an HTML-oriented facade around\n Webpack. That is, we want both the input and output to be primarily HTML files\n with proper spec semantics, and we use webpack to optimize the assets referred\n to by those files.\n\n While there are webpack plugins for handling HTML, none of them handle\n multiple HTML entrypoints and apply correct HTML semantics (for example,\n getting script vs module context correct).\n*/\n\nimport type { AppMeta, BundleSummary, Packager, PackagerConstructor, Variant, ResolverOptions } from '@embroider/core';\nimport { HTMLEntrypoint, getAppMeta, getPackagerCacheDir, getOrCreate } from '@embroider/core';\nimport { locateEmbroiderWorkingDir, RewrittenPackageCache, tmpdir } from '@embroider/shared-internals';\nimport type { Configuration, RuleSetUseItem, WebpackPluginInstance } from 'webpack';\nimport webpack from 'webpack';\nimport type { Stats } from 'fs-extra';\nimport { readFileSync, outputFileSync, copySync, statSync, readJSONSync } from 'fs-extra';\nimport { join, dirname, relative, sep } from 'path';\nimport isEqual from 'lodash/isEqual';\nimport mergeWith from 'lodash/mergeWith';\nimport flatMap from 'lodash/flatMap';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\nimport makeDebug from 'debug';\nimport { format } from 'util';\nimport { warmup as threadLoaderWarmup } from 'thread-loader';\nimport type { Options, BabelLoaderOptions } from './options';\nimport crypto from 'crypto';\nimport semverSatisfies from 'semver/functions/satisfies';\nimport supportsColor from 'supports-color';\nimport type { Options as HbsLoaderOptions } from '@embroider/hbs-loader';\nimport type { Options as EmbroiderPluginOptions } from './webpack-resolver-plugin';\nimport { EmbroiderPlugin } from './webpack-resolver-plugin';\n\nconst debug = makeDebug('embroider:debug');\n\n// this function is never called. It exists to workaround typescript being\n// obtuse. https://github.com/microsoft/TypeScript/pull/53426\nasync function loadTerser() {\n let Terser = await import('terser');\n return Terser.minify;\n}\ntype MinifyOptions = NonNullable<Parameters<Awaited<ReturnType<typeof loadTerser>>>[1]>;\n\ninterface AppInfo {\n entrypoints: HTMLEntrypoint[];\n otherAssets: string[];\n rootURL: AppMeta['root-url'];\n publicAssetURL: string;\n resolverConfig: ResolverOptions;\n packageName: string;\n}\n\n// AppInfos are equal if they result in the same webpack config.\nfunction equalAppInfo(left: AppInfo, right: AppInfo): boolean {\n return (\n left.entrypoints.length === right.entrypoints.length &&\n left.entrypoints.every((e, index) => isEqual(e.modules, right.entrypoints[index].modules))\n );\n}\n\ntype BeginFn = (total: number) => void;\ntype IncrementFn = () => Promise<void>;\n\nfunction createBarrier(): [BeginFn, IncrementFn] {\n const barriers: Array<[() => void, (e: unknown) => void]> = [];\n let done = true;\n let limit = 0;\n return [begin, increment];\n\n function begin(newLimit: number) {\n if (!done) flush(new Error('begin called before limit reached'));\n done = false;\n limit = newLimit;\n }\n\n async function increment() {\n if (done) {\n throw new Error('increment after limit reach');\n }\n const promise = new Promise<void>((resolve, reject) => {\n barriers.push([resolve, reject]);\n });\n if (barriers.length === limit) {\n flush();\n }\n await promise;\n }\n\n function flush(err?: Error) {\n for (const [resolve, reject] of barriers) {\n if (err) reject(err);\n else resolve();\n }\n barriers.length = 0;\n done = true;\n }\n}\n\n// we want to ensure that not only does our instance conform to\n// PackagerInstance, but our constructor conforms to Packager. So instead of\n// just exporting our class directly, we export a const constructor of the\n// correct type.\nconst Webpack: PackagerConstructor<Options> = class Webpack implements Packager {\n static annotation = '@embroider/webpack';\n\n private pathToVanillaApp: string;\n private extraConfig: Configuration | undefined;\n private passthroughCache: Map<string, Stats> = new Map();\n private publicAssetURL: string | undefined;\n private extraThreadLoaderOptions: object | false | undefined;\n private extraBabelLoaderOptions: BabelLoaderOptions | undefined;\n private extraCssLoaderOptions: object | undefined;\n private extraStyleLoaderOptions: object | undefined;\n private _bundleSummary: BundleSummary | undefined;\n private beginBarrier: BeginFn;\n private incrementBarrier: IncrementFn;\n\n constructor(\n private appRoot: string,\n private outputPath: string,\n private variants: Variant[],\n private consoleWrite: (msg: string) => void,\n options?: Options\n ) {\n if (!semverSatisfies(webpack.version, '^5.0.0')) {\n throw new Error(`@embroider/webpack requires webpack@^5.0.0, but found version ${webpack.version}`);\n }\n\n let packageCache = RewrittenPackageCache.shared('embroider', appRoot);\n this.pathToVanillaApp = packageCache.maybeMoved(packageCache.get(appRoot)).root;\n this.extraConfig = options?.webpackConfig;\n this.publicAssetURL = options?.publicAssetURL;\n this.extraThreadLoaderOptions = options?.threadLoaderOptions;\n this.extraBabelLoaderOptions = options?.babelLoaderOptions;\n this.extraCssLoaderOptions = options?.cssLoaderOptions;\n this.extraStyleLoaderOptions = options?.styleLoaderOptions;\n [this.beginBarrier, this.incrementBarrier] = createBarrier();\n warmUp(this.extraThreadLoaderOptions);\n }\n\n get bundleSummary(): BundleSummary {\n let bundleSummary = this._bundleSummary;\n if (bundleSummary === undefined) {\n this._bundleSummary = bundleSummary = {\n entrypoints: new Map(),\n lazyBundles: new Map(),\n variants: this.variants,\n };\n }\n return bundleSummary;\n }\n\n async build(): Promise<void> {\n this._bundleSummary = undefined;\n this.beginBarrier(this.variants.length);\n let appInfo = this.examineApp();\n let webpack = this.getWebpack(appInfo);\n await this.runWebpack(webpack);\n }\n\n private examineApp(): AppInfo {\n let meta = getAppMeta(this.pathToVanillaApp);\n let rootURL = meta['ember-addon']['root-url'];\n let entrypoints = [];\n let otherAssets = [];\n let publicAssetURL = this.publicAssetURL || rootURL;\n\n for (let relativePath of meta['ember-addon'].assets) {\n if (/\\.html/i.test(relativePath)) {\n entrypoints.push(new HTMLEntrypoint(this.pathToVanillaApp, rootURL, publicAssetURL, relativePath));\n } else {\n otherAssets.push(relativePath);\n }\n }\n\n let resolverConfig: EmbroiderPluginOptions = readJSONSync(\n join(locateEmbroiderWorkingDir(this.appRoot), 'resolver.json')\n );\n\n return { entrypoints, otherAssets, rootURL, resolverConfig, publicAssetURL, packageName: meta.name };\n }\n\n private configureWebpack(appInfo: AppInfo, variant: Variant, variantIndex: number): Configuration {\n const { entrypoints, publicAssetURL, packageName, resolverConfig } = appInfo;\n\n let entry: { [name: string]: string } = {};\n for (let entrypoint of entrypoints) {\n for (let moduleName of entrypoint.modules) {\n entry[moduleName] = './' + moduleName;\n }\n }\n\n let { plugins: stylePlugins, loaders: styleLoaders } = this.setupStyleConfig(variant);\n\n let babelLoaderOptions = makeBabelLoaderOptions(\n variant,\n join(this.appRoot, 'babel.config.cjs'),\n this.extraBabelLoaderOptions\n );\n\n let babelLoaderPrefix = `babel-loader-9?${JSON.stringify(babelLoaderOptions.options)}!`;\n\n return {\n mode: variant.optimizeForProduction ? 'production' : 'development',\n context: this.pathToVanillaApp,\n entry,\n performance: {\n hints: false,\n },\n plugins: [\n ...stylePlugins,\n new EmbroiderPlugin(resolverConfig, babelLoaderPrefix),\n compiler => {\n compiler.hooks.done.tapPromise('EmbroiderPlugin', async stats => {\n this.summarizeStats(stats, variant, variantIndex);\n await this.writeFiles(this.bundleSummary, this.lastAppInfo!, variantIndex);\n });\n },\n ],\n node: false,\n module: {\n rules: [\n {\n test: /\\.hbs$/,\n use: nonNullArray([\n maybeThreadLoader(this.extraThreadLoaderOptions),\n babelLoaderOptions,\n {\n loader: require.resolve('@embroider/hbs-loader'),\n options: (() => {\n let options: HbsLoaderOptions = {\n compatModuleNaming: {\n rootDir: this.pathToVanillaApp,\n modulePrefix: packageName,\n },\n };\n return options;\n })(),\n },\n ]),\n },\n {\n use: nonNullArray([\n maybeThreadLoader(this.extraThreadLoaderOptions),\n makeBabelLoaderOptions(variant, join(this.appRoot, 'babel.config.cjs'), this.extraBabelLoaderOptions),\n ]),\n },\n {\n test: isCSS,\n use: styleLoaders,\n },\n ],\n },\n output: {\n path: join(this.outputPath),\n filename: `assets/chunk.[chunkhash].js`,\n chunkFilename: `assets/chunk.[chunkhash].js`,\n publicPath: publicAssetURL,\n },\n optimization: {\n splitChunks: {\n chunks: 'all',\n },\n },\n resolve: {\n extensions: resolverConfig.resolvableExtensions,\n },\n resolveLoader: {\n alias: {\n // these loaders are our dependencies, not the app's dependencies. I'm\n // not overriding the default loader resolution rules in case the app also\n // wants to control those.\n 'thread-loader': require.resolve('thread-loader'),\n 'babel-loader-9': require.resolve('@embroider/babel-loader-9'),\n 'css-loader': require.resolve('css-loader'),\n 'style-loader': require.resolve('style-loader'),\n },\n },\n experiments: {\n // this is needed because fasboot-only modules need to use await import()\n topLevelAwait: true,\n },\n };\n }\n\n private lastAppInfo: AppInfo | undefined;\n private lastWebpack: webpack.MultiCompiler | undefined;\n\n private getWebpack(appInfo: AppInfo) {\n if (this.lastWebpack && this.lastAppInfo && equalAppInfo(appInfo, this.lastAppInfo)) {\n debug(`reusing webpack config`);\n // the appInfos result in equal webpack configs so we don't need to\n // reconfigure webpack. But they may contain other changes (like HTML\n // content changes that don't alter the webpack config) so we still want\n // lastAppInfo to update so that the latest one will be seen in the\n // webpack post-build.\n this.lastAppInfo = appInfo;\n return this.lastWebpack;\n }\n debug(`configuring webpack`);\n let config = this.variants.map((variant, variantIndex) =>\n mergeWith({}, this.configureWebpack(appInfo, variant, variantIndex), this.extraConfig, appendArrays)\n );\n this.lastAppInfo = appInfo;\n return (this.lastWebpack = webpack(config));\n }\n\n private async writeScript(script: string, written: Set<string>, variant: Variant) {\n if (!variant.optimizeForProduction) {\n this.copyThrough(script);\n return script;\n }\n\n // loading these lazily here so they never load in non-production builds.\n // The node cache will ensures we only load them once.\n const [Terser, srcURL] = await Promise.all([import('terser'), import('source-map-url')]);\n\n let inCode = readFileSync(join(this.pathToVanillaApp, script), 'utf8');\n let terserOpts: MinifyOptions = {};\n let fileRelativeSourceMapURL;\n let appRelativeSourceMapURL;\n if (srcURL.default.existsIn(inCode)) {\n fileRelativeSourceMapURL = srcURL.default.getFrom(inCode)!;\n appRelativeSourceMapURL = join(dirname(script), fileRelativeSourceMapURL);\n let content;\n try {\n content = readJSONSync(join(this.pathToVanillaApp, appRelativeSourceMapURL));\n } catch (err) {\n // the script refers to a sourcemap that doesn't exist, so we just leave\n // the map out.\n }\n if (content) {\n terserOpts.sourceMap = { content, url: fileRelativeSourceMapURL };\n }\n }\n let { code: outCode, map: outMap } = await Terser.minify(inCode, terserOpts);\n let finalFilename = this.getFingerprintedFilename(script, outCode!);\n outputFileSync(join(this.outputPath, finalFilename), outCode!);\n written.add(script);\n if (appRelativeSourceMapURL && outMap) {\n outputFileSync(join(this.outputPath, appRelativeSourceMapURL), outMap);\n written.add(appRelativeSourceMapURL);\n }\n return finalFilename;\n }\n\n private async writeStyle(style: string, written: Set<string>, variant: Variant) {\n if (!variant.optimizeForProduction) {\n this.copyThrough(style);\n written.add(style);\n return style;\n }\n\n const csso = await import('csso');\n const cssContent = readFileSync(join(this.pathToVanillaApp, style), 'utf8');\n const minifiedCss = csso.minify(cssContent).css;\n\n let finalFilename = this.getFingerprintedFilename(style, minifiedCss);\n outputFileSync(join(this.outputPath, finalFilename), minifiedCss);\n written.add(style);\n return finalFilename;\n }\n\n private async provideErrorContext(message: string, messageParams: any[], fn: () => Promise<void>) {\n try {\n return await fn();\n } catch (err) {\n let context = format(message, ...messageParams);\n err.message = context + ': ' + err.message;\n throw err;\n }\n }\n\n private async writeFiles(stats: BundleSummary, { entrypoints, otherAssets }: AppInfo, variantIndex: number) {\n // we're doing this ourselves because I haven't seen a webpack 4 HTML plugin\n // that handles multiple HTML entrypoints correctly.\n\n let written: Set<string> = new Set();\n // scripts (as opposed to modules) and stylesheets (as opposed to CSS\n // modules that are imported from JS modules) get passed through without\n // going through webpack.\n for (let entrypoint of entrypoints) {\n await this.provideErrorContext('needed by %s', [entrypoint.filename], async () => {\n for (let script of entrypoint.scripts) {\n if (!stats.entrypoints.has(script)) {\n const mapping = [] as string[];\n try {\n // zero here means we always attribute passthrough scripts to the\n // first build variant\n stats.entrypoints.set(script, new Map([[0, mapping]]));\n mapping.push(await this.writeScript(script, written, this.variants[0]));\n } catch (err) {\n if (err.code === 'ENOENT' && err.path === join(this.pathToVanillaApp, script)) {\n this.consoleWrite(\n `warning: in ${entrypoint.filename} <script src=\"${script\n .split(sep)\n .join(\n '/'\n )}\"> does not exist on disk. If this is intentional, use a data-embroider-ignore attribute.`\n );\n } else {\n throw err;\n }\n }\n }\n }\n for (let style of entrypoint.styles) {\n if (!stats.entrypoints.has(style)) {\n const mapping = [] as string[];\n try {\n // zero here means we always attribute passthrough styles to the\n // first build variant\n stats.entrypoints.set(style, new Map([[0, mapping]]));\n mapping.push(await this.writeStyle(style, written, this.variants[0]));\n } catch (err) {\n if (err.code === 'ENOENT' && err.path === join(this.pathToVanillaApp, style)) {\n this.consoleWrite(\n `warning: in ${entrypoint.filename} <link rel=\"stylesheet\" href=\"${style\n .split(sep)\n .join(\n '/'\n )}\"> does not exist on disk. If this is intentional, use a data-embroider-ignore attribute.`\n );\n } else {\n throw err;\n }\n }\n }\n }\n });\n }\n // we need to wait for both compilers before writing html entrypoint\n await this.incrementBarrier();\n // only the first variant should write it.\n if (variantIndex === 0) {\n for (let entrypoint of entrypoints) {\n this.writeIfChanged(join(this.outputPath, entrypoint.filename), entrypoint.render(stats));\n written.add(entrypoint.filename);\n }\n }\n\n for (let relativePath of otherAssets) {\n if (!written.has(relativePath)) {\n written.add(relativePath);\n await this.provideErrorContext(`while copying app's assets`, [], async () => {\n this.copyThrough(relativePath);\n });\n }\n }\n }\n\n private lastContents = new Map<string, string>();\n\n // The point of this caching isn't really performance (we generate the\n // contents either way, and the actual write is unlikely to be expensive).\n // It's helping ember-cli's traditional livereload system to avoid triggering\n // a full page reload when that wasn't really necessary.\n private writeIfChanged(filename: string, content: string) {\n if (this.lastContents.get(filename) !== content) {\n outputFileSync(filename, content, 'utf8');\n this.lastContents.set(filename, content);\n }\n }\n\n private copyThrough(relativePath: string) {\n let sourcePath = join(this.pathToVanillaApp, relativePath);\n let newStats = statSync(sourcePath);\n let oldStats = this.passthroughCache.get(sourcePath);\n if (!oldStats || oldStats.mtimeMs !== newStats.mtimeMs || oldStats.size !== newStats.size) {\n debug(`emitting ${relativePath}`);\n copySync(sourcePath, join(this.outputPath, relativePath));\n this.passthroughCache.set(sourcePath, newStats);\n }\n }\n\n private getFingerprintedFilename(filename: string, content: string): string {\n let md5 = crypto.createHash('md5');\n md5.update(content);\n let hash = md5.digest('hex');\n\n let fileParts = filename.split('.');\n fileParts.splice(fileParts.length - 1, 0, hash);\n return fileParts.join('.');\n }\n\n private summarizeStats(stats: webpack.Stats, variant: Variant, variantIndex: number): void {\n let output = this.bundleSummary;\n let { entrypoints, chunks } = stats.toJson({\n all: false,\n entrypoints: true,\n chunks: true,\n });\n\n // webpack's types are written rather loosely, implying that these two\n // properties may not be present. They really always are, as far as I can\n // tell, but we need to check here anyway to satisfy the type checker.\n if (!entrypoints) {\n throw new Error(`unexpected webpack output: no entrypoints`);\n }\n if (!chunks) {\n throw new Error(`unexpected webpack output: no chunks`);\n }\n\n for (let id of Object.keys(entrypoints)) {\n let { assets: entrypointAssets } = entrypoints[id];\n if (!entrypointAssets) {\n throw new Error(`unexpected webpack output: no entrypoint.assets`);\n }\n\n getOrCreate(output.entrypoints, id, () => new Map()).set(\n variantIndex,\n entrypointAssets.map(asset => asset.name)\n );\n if (variant.runtime !== 'browser') {\n // in the browser we don't need to worry about lazy assets (they will be\n // handled automatically by webpack as needed), but in any other runtime\n // we need the ability to preload them\n output.lazyBundles.set(\n id,\n flatMap(\n chunks.filter(chunk => chunk.runtime?.includes(id)),\n chunk => chunk.files\n ).filter(file => !entrypointAssets?.find(a => a.name === file)) as string[]\n );\n }\n }\n }\n\n private runWebpack(webpack: webpack.MultiCompiler): Promise<webpack.MultiStats> {\n return new Promise((resolve, reject) => {\n webpack.run((err, stats) => {\n try {\n if (err) {\n if (stats) {\n this.consoleWrite(stats.toString());\n }\n throw err;\n }\n if (!stats) {\n // this doesn't really happen, but webpack's types imply that it\n // could, so we just satisfy typescript here\n throw new Error('bug: no stats and no err');\n }\n if (stats.hasErrors()) {\n // write all the stats output to the console\n this.consoleWrite(\n stats.toString({\n colors: Boolean(supportsColor.stdout),\n })\n );\n\n // the typing for MultiCompiler are all foobared.\n throw this.findBestError(flatMap((stats as any).stats, s => s.compilation.errors));\n }\n if (stats.hasWarnings() || process.env.VANILLA_VERBOSE) {\n this.consoleWrite(\n stats.toString({\n colors: Boolean(supportsColor.stdout),\n })\n );\n }\n resolve(stats);\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n private setupStyleConfig(variant: Variant): {\n loaders: RuleSetUseItem[];\n plugins: WebpackPluginInstance[];\n } {\n let cssLoader = {\n loader: 'css-loader',\n options: {\n url: true,\n import: true,\n modules: 'global',\n ...this.extraCssLoaderOptions,\n },\n };\n\n if (!variant.optimizeForProduction && variant.runtime === 'browser') {\n // in development builds that only need to work in the browser (not\n // fastboot), we can use style-loader because it's fast\n return {\n loaders: [\n { loader: 'style-loader', options: { injectType: 'styleTag', ...this.extraStyleLoaderOptions } },\n cssLoader,\n ],\n plugins: [],\n };\n } else {\n // in any other build, we separate the CSS into its own bundles\n return {\n loaders: [MiniCssExtractPlugin.loader, cssLoader],\n plugins: [\n new MiniCssExtractPlugin({\n filename: `assets/chunk.[chunkhash].css`,\n chunkFilename: `assets/chunk.[chunkhash].css`,\n // in the browser, MiniCssExtractPlugin can manage it's own runtime\n // lazy loading of stylesheets.\n //\n // but in fastboot, we need to disable that in favor of doing our\n // own insertion of `<link>` tags in the HTML\n runtime: variant.runtime === 'browser',\n }),\n ],\n };\n }\n }\n\n private findBestError(errors: any[]) {\n let error = errors[0];\n let file;\n if (error.module?.userRequest) {\n file = relative(this.pathToVanillaApp, error.module.userRequest);\n }\n\n if (!error.file) {\n error.file = file || (error.loc ? error.loc.file : null) || (error.location ? error.location.file : null);\n }\n if (error.line == null) {\n error.line = (error.loc ? error.loc.line : null) || (error.location ? error.location.line : null);\n }\n if (typeof error.message === 'string') {\n if (error.module?.context) {\n error.message = error.message.replace(error.module.context, error.module.userRequest);\n }\n\n // the tmpdir on OSX is horribly long and makes error messages hard to\n // read. This is doing the same as String.prototype.replaceAll, which node\n // doesn't have yet.\n error.message = error.message.split(tmpdir).join('$TMPDIR');\n }\n return error;\n }\n};\n\nconst threadLoaderOptions = {\n workers: 'JOBS' in process.env && Number(process.env.JOBS),\n // poolTimeout shuts down idle workers. The problem is, for\n // interactive rebuilds that means your startup cost for the\n // next rebuild is at least 600ms worse. So we insist on\n // keeping workers alive always.\n poolTimeout: Infinity,\n};\n\nfunction canUseThreadLoader(extraOptions: object | false | undefined) {\n // If the environment sets JOBS to 0, or if our extraOptions are set to false,\n // we have been explicitly configured not to use thread-loader\n if (process.env.JOBS === '0' || extraOptions === false) {\n return false;\n } else {\n return true;\n }\n}\n\nfunction warmUp(extraOptions: object | false | undefined) {\n // We don't know if we'll be parallel-safe or not, but if we've been\n // configured to not use thread-loader, then there is no need to consume extra\n // resources warming the worker pool\n if (!canUseThreadLoader(extraOptions)) {\n return null;\n }\n\n threadLoaderWarmup(Object.assign({}, threadLoaderOptions, extraOptions), [\n require.resolve('@embroider/hbs-loader'),\n require.resolve('@embroider/babel-loader-9'),\n ]);\n}\n\nfunction maybeThreadLoader(extraOptions: object | false | undefined) {\n if (!canUseThreadLoader(extraOptions)) {\n return null;\n }\n\n return {\n loader: 'thread-loader',\n options: Object.assign({}, threadLoaderOptions, extraOptions),\n };\n}\n\nfunction appendArrays(objValue: any, srcValue: any) {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n}\n\nfunction isCSS(filename: string) {\n return /\\.css$/i.test(filename);\n}\n\n// typescript doesn't understand that regular use of array.filter(Boolean) does\n// this.\nfunction nonNullArray<T>(array: T[]): NonNullable<T>[] {\n return array.filter(Boolean) as NonNullable<T>[];\n}\n\nfunction makeBabelLoaderOptions(\n variant: Variant,\n appBabelConfigPath: string,\n extraOptions: BabelLoaderOptions | undefined\n) {\n const cacheDirectory = getPackagerCacheDir('webpack-babel-loader');\n const options: BabelLoaderOptions & { variant: Variant; appBabelConfigPath: string } = {\n variant,\n appBabelConfigPath,\n cacheDirectory,\n ...extraOptions,\n };\n return {\n loader: 'babel-loader-9',\n options,\n };\n}\n\nexport { Webpack };\n"]}
1
+ {"version":3,"file":"ember-webpack.js","sourceRoot":"","sources":["ember-webpack.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n Most of the work this module does is putting an HTML-oriented facade around\n Webpack. That is, we want both the input and output to be primarily HTML files\n with proper spec semantics, and we use webpack to optimize the assets referred\n to by those files.\n\n While there are webpack plugins for handling HTML, none of them handle\n multiple HTML entrypoints and apply correct HTML semantics (for example,\n getting script vs module context correct).\n*/\n\nimport type { BundleSummary, Packager, PackagerConstructor, Variant, ResolverOptions } from '@embroider/core';\nimport { HTMLEntrypoint, getPackagerCacheDir, getOrCreate } from '@embroider/core';\nimport { locateEmbroiderWorkingDir, RewrittenPackageCache, tmpdir } from '@embroider/shared-internals';\nimport type { Configuration, RuleSetUseItem, WebpackPluginInstance } from 'webpack';\nimport webpack from 'webpack';\nimport type { Stats } from 'fs-extra';\nimport { readFileSync, outputFileSync, copySync, statSync, readJSONSync } from 'fs-extra';\nimport { join, dirname, relative, sep } from 'path';\nimport isEqual from 'lodash/isEqual';\nimport mergeWith from 'lodash/mergeWith';\nimport flatMap from 'lodash/flatMap';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\nimport makeDebug from 'debug';\nimport { format } from 'util';\nimport { warmup as threadLoaderWarmup } from 'thread-loader';\nimport type { Options, BabelLoaderOptions } from './options';\nimport crypto from 'crypto';\nimport semverSatisfies from 'semver/functions/satisfies';\nimport supportsColor from 'supports-color';\nimport type { Options as HbsLoaderOptions } from '@embroider/hbs-loader';\nimport type { Options as EmbroiderPluginOptions } from './webpack-resolver-plugin';\nimport { EmbroiderPlugin } from './webpack-resolver-plugin';\n\nconst debug = makeDebug('embroider:debug');\n\n// this function is never called. It exists to workaround typescript being\n// obtuse. https://github.com/microsoft/TypeScript/pull/53426\nasync function loadTerser() {\n let Terser = await import('terser');\n return Terser.minify;\n}\ntype MinifyOptions = NonNullable<Parameters<Awaited<ReturnType<typeof loadTerser>>>[1]>;\n\ninterface AppInfo {\n entrypoints: HTMLEntrypoint[];\n otherAssets: string[];\n rootURL: string;\n publicAssetURL: string;\n resolverConfig: ResolverOptions;\n packageName: string;\n}\n\n// AppInfos are equal if they result in the same webpack config.\nfunction equalAppInfo(left: AppInfo, right: AppInfo): boolean {\n return (\n left.entrypoints.length === right.entrypoints.length &&\n left.entrypoints.every((e, index) => isEqual(e.modules, right.entrypoints[index].modules))\n );\n}\n\ntype BeginFn = (total: number) => void;\ntype IncrementFn = () => Promise<void>;\n\nfunction createBarrier(): [BeginFn, IncrementFn] {\n const barriers: Array<[() => void, (e: unknown) => void]> = [];\n let done = true;\n let limit = 0;\n return [begin, increment];\n\n function begin(newLimit: number) {\n if (!done) flush(new Error('begin called before limit reached'));\n done = false;\n limit = newLimit;\n }\n\n async function increment() {\n if (done) {\n throw new Error('increment after limit reach');\n }\n const promise = new Promise<void>((resolve, reject) => {\n barriers.push([resolve, reject]);\n });\n if (barriers.length === limit) {\n flush();\n }\n await promise;\n }\n\n function flush(err?: Error) {\n for (const [resolve, reject] of barriers) {\n if (err) reject(err);\n else resolve();\n }\n barriers.length = 0;\n done = true;\n }\n}\n\n// we want to ensure that not only does our instance conform to\n// PackagerInstance, but our constructor conforms to Packager. So instead of\n// just exporting our class directly, we export a const constructor of the\n// correct type.\nconst Webpack: PackagerConstructor<Options> = class Webpack implements Packager {\n static annotation = '@embroider/webpack';\n\n private pathToVanillaApp: string;\n private extraConfig: Configuration | undefined;\n private passthroughCache: Map<string, Stats> = new Map();\n private publicAssetURL: string | undefined;\n private extraThreadLoaderOptions: object | false | undefined;\n private extraBabelLoaderOptions: BabelLoaderOptions | undefined;\n private extraCssLoaderOptions: object | undefined;\n private extraStyleLoaderOptions: object | undefined;\n private _bundleSummary: BundleSummary | undefined;\n private beginBarrier: BeginFn;\n private incrementBarrier: IncrementFn;\n\n constructor(\n private appRoot: string,\n private outputPath: string,\n private variants: Variant[],\n private consoleWrite: (msg: string) => void,\n options?: Options\n ) {\n if (!semverSatisfies(webpack.version, '^5.0.0')) {\n throw new Error(`@embroider/webpack requires webpack@^5.0.0, but found version ${webpack.version}`);\n }\n\n let packageCache = RewrittenPackageCache.shared('embroider', appRoot);\n this.pathToVanillaApp = packageCache.maybeMoved(packageCache.get(appRoot)).root;\n this.extraConfig = options?.webpackConfig;\n this.publicAssetURL = options?.publicAssetURL;\n this.extraThreadLoaderOptions = options?.threadLoaderOptions;\n this.extraBabelLoaderOptions = options?.babelLoaderOptions;\n this.extraCssLoaderOptions = options?.cssLoaderOptions;\n this.extraStyleLoaderOptions = options?.styleLoaderOptions;\n [this.beginBarrier, this.incrementBarrier] = createBarrier();\n warmUp(this.extraThreadLoaderOptions);\n }\n\n get bundleSummary(): BundleSummary {\n let bundleSummary = this._bundleSummary;\n if (bundleSummary === undefined) {\n this._bundleSummary = bundleSummary = {\n entrypoints: new Map(),\n lazyBundles: new Map(),\n variants: this.variants,\n };\n }\n return bundleSummary;\n }\n\n async build(): Promise<void> {\n this._bundleSummary = undefined;\n this.beginBarrier(this.variants.length);\n let appInfo = this.examineApp();\n let webpack = this.getWebpack(appInfo);\n await this.runWebpack(webpack);\n }\n\n private examineApp(): AppInfo {\n // @ts-expect-error webpack is not updated to work on @embroider/core 4.x\n let meta = getAppMeta(this.pathToVanillaApp);\n let rootURL = meta['ember-addon']['root-url'];\n let entrypoints = [];\n let otherAssets = [];\n let publicAssetURL = this.publicAssetURL || rootURL;\n\n for (let relativePath of meta['ember-addon'].assets) {\n if (/\\.html/i.test(relativePath)) {\n entrypoints.push(new HTMLEntrypoint(this.pathToVanillaApp, rootURL, publicAssetURL, relativePath));\n } else {\n otherAssets.push(relativePath);\n }\n }\n\n let resolverConfig: EmbroiderPluginOptions = readJSONSync(\n join(locateEmbroiderWorkingDir(this.appRoot), 'resolver.json')\n );\n\n return { entrypoints, otherAssets, rootURL, resolverConfig, publicAssetURL, packageName: meta.name };\n }\n\n private configureWebpack(appInfo: AppInfo, variant: Variant, variantIndex: number): Configuration {\n const { entrypoints, publicAssetURL, packageName, resolverConfig } = appInfo;\n\n let entry: { [name: string]: string } = {};\n for (let entrypoint of entrypoints) {\n for (let moduleName of entrypoint.modules) {\n entry[moduleName] = './' + moduleName;\n }\n }\n\n let { plugins: stylePlugins, loaders: styleLoaders } = this.setupStyleConfig(variant);\n\n let babelLoaderOptions = makeBabelLoaderOptions(\n variant,\n join(this.appRoot, 'babel.config.cjs'),\n this.extraBabelLoaderOptions\n );\n\n let babelLoaderPrefix = `babel-loader-9?${JSON.stringify(babelLoaderOptions.options)}!`;\n\n return {\n mode: variant.optimizeForProduction ? 'production' : 'development',\n context: this.pathToVanillaApp,\n entry,\n performance: {\n hints: false,\n },\n plugins: [\n ...stylePlugins,\n new EmbroiderPlugin(resolverConfig, babelLoaderPrefix),\n compiler => {\n compiler.hooks.done.tapPromise('EmbroiderPlugin', async stats => {\n this.summarizeStats(stats, variant, variantIndex);\n await this.writeFiles(this.bundleSummary, this.lastAppInfo!, variantIndex);\n });\n },\n ],\n node: false,\n module: {\n rules: [\n {\n test: /\\.hbs$/,\n use: nonNullArray([\n maybeThreadLoader(this.extraThreadLoaderOptions),\n babelLoaderOptions,\n {\n loader: require.resolve('@embroider/hbs-loader'),\n options: (() => {\n let options: HbsLoaderOptions = {\n compatModuleNaming: {\n rootDir: this.pathToVanillaApp,\n modulePrefix: packageName,\n },\n };\n return options;\n })(),\n },\n ]),\n },\n {\n use: nonNullArray([\n maybeThreadLoader(this.extraThreadLoaderOptions),\n makeBabelLoaderOptions(variant, join(this.appRoot, 'babel.config.cjs'), this.extraBabelLoaderOptions),\n ]),\n },\n {\n test: isCSS,\n use: styleLoaders,\n },\n ],\n },\n output: {\n path: join(this.outputPath),\n filename: `assets/chunk.[chunkhash].js`,\n chunkFilename: `assets/chunk.[chunkhash].js`,\n publicPath: publicAssetURL,\n },\n optimization: {\n splitChunks: {\n chunks: 'all',\n },\n },\n resolve: {\n extensions: resolverConfig.resolvableExtensions,\n },\n resolveLoader: {\n alias: {\n // these loaders are our dependencies, not the app's dependencies. I'm\n // not overriding the default loader resolution rules in case the app also\n // wants to control those.\n 'thread-loader': require.resolve('thread-loader'),\n 'babel-loader-9': require.resolve('@embroider/babel-loader-9'),\n 'css-loader': require.resolve('css-loader'),\n 'style-loader': require.resolve('style-loader'),\n },\n },\n experiments: {\n // this is needed because fasboot-only modules need to use await import()\n topLevelAwait: true,\n },\n };\n }\n\n private lastAppInfo: AppInfo | undefined;\n private lastWebpack: webpack.MultiCompiler | undefined;\n\n private getWebpack(appInfo: AppInfo) {\n if (this.lastWebpack && this.lastAppInfo && equalAppInfo(appInfo, this.lastAppInfo)) {\n debug(`reusing webpack config`);\n // the appInfos result in equal webpack configs so we don't need to\n // reconfigure webpack. But they may contain other changes (like HTML\n // content changes that don't alter the webpack config) so we still want\n // lastAppInfo to update so that the latest one will be seen in the\n // webpack post-build.\n this.lastAppInfo = appInfo;\n return this.lastWebpack;\n }\n debug(`configuring webpack`);\n let config = this.variants.map((variant, variantIndex) =>\n mergeWith({}, this.configureWebpack(appInfo, variant, variantIndex), this.extraConfig, appendArrays)\n );\n this.lastAppInfo = appInfo;\n return (this.lastWebpack = webpack(config));\n }\n\n private async writeScript(script: string, written: Set<string>, variant: Variant) {\n if (!variant.optimizeForProduction) {\n this.copyThrough(script);\n return script;\n }\n\n // loading these lazily here so they never load in non-production builds.\n // The node cache will ensures we only load them once.\n const [Terser, srcURL] = await Promise.all([import('terser'), import('source-map-url')]);\n\n let inCode = readFileSync(join(this.pathToVanillaApp, script), 'utf8');\n let terserOpts: MinifyOptions = {};\n let fileRelativeSourceMapURL;\n let appRelativeSourceMapURL;\n if (srcURL.default.existsIn(inCode)) {\n fileRelativeSourceMapURL = srcURL.default.getFrom(inCode)!;\n appRelativeSourceMapURL = join(dirname(script), fileRelativeSourceMapURL);\n let content;\n try {\n content = readJSONSync(join(this.pathToVanillaApp, appRelativeSourceMapURL));\n } catch (err) {\n // the script refers to a sourcemap that doesn't exist, so we just leave\n // the map out.\n }\n if (content) {\n terserOpts.sourceMap = { content, url: fileRelativeSourceMapURL };\n }\n }\n let { code: outCode, map: outMap } = await Terser.minify(inCode, terserOpts);\n let finalFilename = this.getFingerprintedFilename(script, outCode!);\n outputFileSync(join(this.outputPath, finalFilename), outCode!);\n written.add(script);\n if (appRelativeSourceMapURL && outMap) {\n outputFileSync(join(this.outputPath, appRelativeSourceMapURL), outMap);\n written.add(appRelativeSourceMapURL);\n }\n return finalFilename;\n }\n\n private async writeStyle(style: string, written: Set<string>, variant: Variant) {\n if (!variant.optimizeForProduction) {\n this.copyThrough(style);\n written.add(style);\n return style;\n }\n\n const csso = await import('csso');\n const cssContent = readFileSync(join(this.pathToVanillaApp, style), 'utf8');\n const minifiedCss = csso.minify(cssContent).css;\n\n let finalFilename = this.getFingerprintedFilename(style, minifiedCss);\n outputFileSync(join(this.outputPath, finalFilename), minifiedCss);\n written.add(style);\n return finalFilename;\n }\n\n private async provideErrorContext(message: string, messageParams: any[], fn: () => Promise<void>) {\n try {\n return await fn();\n } catch (err) {\n let context = format(message, ...messageParams);\n err.message = context + ': ' + err.message;\n throw err;\n }\n }\n\n private async writeFiles(stats: BundleSummary, { entrypoints, otherAssets }: AppInfo, variantIndex: number) {\n // we're doing this ourselves because I haven't seen a webpack 4 HTML plugin\n // that handles multiple HTML entrypoints correctly.\n\n let written: Set<string> = new Set();\n // scripts (as opposed to modules) and stylesheets (as opposed to CSS\n // modules that are imported from JS modules) get passed through without\n // going through webpack.\n for (let entrypoint of entrypoints) {\n await this.provideErrorContext('needed by %s', [entrypoint.filename], async () => {\n for (let script of entrypoint.scripts) {\n if (!stats.entrypoints.has(script)) {\n const mapping = [] as string[];\n try {\n // zero here means we always attribute passthrough scripts to the\n // first build variant\n stats.entrypoints.set(script, new Map([[0, mapping]]));\n mapping.push(await this.writeScript(script, written, this.variants[0]));\n } catch (err) {\n if (err.code === 'ENOENT' && err.path === join(this.pathToVanillaApp, script)) {\n this.consoleWrite(\n `warning: in ${entrypoint.filename} <script src=\"${script\n .split(sep)\n .join(\n '/'\n )}\"> does not exist on disk. If this is intentional, use a data-embroider-ignore attribute.`\n );\n } else {\n throw err;\n }\n }\n }\n }\n for (let style of entrypoint.styles) {\n if (!stats.entrypoints.has(style)) {\n const mapping = [] as string[];\n try {\n // zero here means we always attribute passthrough styles to the\n // first build variant\n stats.entrypoints.set(style, new Map([[0, mapping]]));\n mapping.push(await this.writeStyle(style, written, this.variants[0]));\n } catch (err) {\n if (err.code === 'ENOENT' && err.path === join(this.pathToVanillaApp, style)) {\n this.consoleWrite(\n `warning: in ${entrypoint.filename} <link rel=\"stylesheet\" href=\"${style\n .split(sep)\n .join(\n '/'\n )}\"> does not exist on disk. If this is intentional, use a data-embroider-ignore attribute.`\n );\n } else {\n throw err;\n }\n }\n }\n }\n });\n }\n // we need to wait for both compilers before writing html entrypoint\n await this.incrementBarrier();\n // only the first variant should write it.\n if (variantIndex === 0) {\n for (let entrypoint of entrypoints) {\n this.writeIfChanged(join(this.outputPath, entrypoint.filename), entrypoint.render(stats));\n written.add(entrypoint.filename);\n }\n }\n\n for (let relativePath of otherAssets) {\n if (!written.has(relativePath)) {\n written.add(relativePath);\n await this.provideErrorContext(`while copying app's assets`, [], async () => {\n this.copyThrough(relativePath);\n });\n }\n }\n }\n\n private lastContents = new Map<string, string>();\n\n // The point of this caching isn't really performance (we generate the\n // contents either way, and the actual write is unlikely to be expensive).\n // It's helping ember-cli's traditional livereload system to avoid triggering\n // a full page reload when that wasn't really necessary.\n private writeIfChanged(filename: string, content: string) {\n if (this.lastContents.get(filename) !== content) {\n outputFileSync(filename, content, 'utf8');\n this.lastContents.set(filename, content);\n }\n }\n\n private copyThrough(relativePath: string) {\n let sourcePath = join(this.pathToVanillaApp, relativePath);\n let newStats = statSync(sourcePath);\n let oldStats = this.passthroughCache.get(sourcePath);\n if (!oldStats || oldStats.mtimeMs !== newStats.mtimeMs || oldStats.size !== newStats.size) {\n debug(`emitting ${relativePath}`);\n copySync(sourcePath, join(this.outputPath, relativePath));\n this.passthroughCache.set(sourcePath, newStats);\n }\n }\n\n private getFingerprintedFilename(filename: string, content: string): string {\n let md5 = crypto.createHash('md5');\n md5.update(content);\n let hash = md5.digest('hex');\n\n let fileParts = filename.split('.');\n fileParts.splice(fileParts.length - 1, 0, hash);\n return fileParts.join('.');\n }\n\n private summarizeStats(stats: webpack.Stats, variant: Variant, variantIndex: number): void {\n let output = this.bundleSummary;\n let { entrypoints, chunks } = stats.toJson({\n all: false,\n entrypoints: true,\n chunks: true,\n });\n\n // webpack's types are written rather loosely, implying that these two\n // properties may not be present. They really always are, as far as I can\n // tell, but we need to check here anyway to satisfy the type checker.\n if (!entrypoints) {\n throw new Error(`unexpected webpack output: no entrypoints`);\n }\n if (!chunks) {\n throw new Error(`unexpected webpack output: no chunks`);\n }\n\n for (let id of Object.keys(entrypoints)) {\n let { assets: entrypointAssets } = entrypoints[id];\n if (!entrypointAssets) {\n throw new Error(`unexpected webpack output: no entrypoint.assets`);\n }\n\n getOrCreate(output.entrypoints, id, () => new Map()).set(\n variantIndex,\n entrypointAssets.map(asset => asset.name)\n );\n if (variant.runtime !== 'browser') {\n // in the browser we don't need to worry about lazy assets (they will be\n // handled automatically by webpack as needed), but in any other runtime\n // we need the ability to preload them\n output.lazyBundles.set(\n id,\n flatMap(\n chunks.filter(chunk => chunk.runtime?.includes(id)),\n chunk => chunk.files\n ).filter(file => !entrypointAssets?.find(a => a.name === file)) as string[]\n );\n }\n }\n }\n\n private runWebpack(webpack: webpack.MultiCompiler): Promise<webpack.MultiStats> {\n return new Promise((resolve, reject) => {\n webpack.run((err, stats) => {\n try {\n if (err) {\n if (stats) {\n this.consoleWrite(stats.toString());\n }\n throw err;\n }\n if (!stats) {\n // this doesn't really happen, but webpack's types imply that it\n // could, so we just satisfy typescript here\n throw new Error('bug: no stats and no err');\n }\n if (stats.hasErrors()) {\n // write all the stats output to the console\n this.consoleWrite(\n stats.toString({\n colors: Boolean(supportsColor.stdout),\n })\n );\n\n // the typing for MultiCompiler are all foobared.\n throw this.findBestError(flatMap((stats as any).stats, s => s.compilation.errors));\n }\n if (stats.hasWarnings() || process.env.VANILLA_VERBOSE) {\n this.consoleWrite(\n stats.toString({\n colors: Boolean(supportsColor.stdout),\n })\n );\n }\n resolve(stats);\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n private setupStyleConfig(variant: Variant): {\n loaders: RuleSetUseItem[];\n plugins: WebpackPluginInstance[];\n } {\n let cssLoader = {\n loader: 'css-loader',\n options: {\n url: true,\n import: true,\n modules: 'global',\n ...this.extraCssLoaderOptions,\n },\n };\n\n if (!variant.optimizeForProduction && variant.runtime === 'browser') {\n // in development builds that only need to work in the browser (not\n // fastboot), we can use style-loader because it's fast\n return {\n loaders: [\n { loader: 'style-loader', options: { injectType: 'styleTag', ...this.extraStyleLoaderOptions } },\n cssLoader,\n ],\n plugins: [],\n };\n } else {\n // in any other build, we separate the CSS into its own bundles\n return {\n loaders: [MiniCssExtractPlugin.loader, cssLoader],\n plugins: [\n new MiniCssExtractPlugin({\n filename: `assets/chunk.[chunkhash].css`,\n chunkFilename: `assets/chunk.[chunkhash].css`,\n // in the browser, MiniCssExtractPlugin can manage it's own runtime\n // lazy loading of stylesheets.\n //\n // but in fastboot, we need to disable that in favor of doing our\n // own insertion of `<link>` tags in the HTML\n runtime: variant.runtime === 'browser',\n }),\n ],\n };\n }\n }\n\n private findBestError(errors: any[]) {\n let error = errors[0];\n let file;\n if (error.module?.userRequest) {\n file = relative(this.pathToVanillaApp, error.module.userRequest);\n }\n\n if (!error.file) {\n error.file = file || (error.loc ? error.loc.file : null) || (error.location ? error.location.file : null);\n }\n if (error.line == null) {\n error.line = (error.loc ? error.loc.line : null) || (error.location ? error.location.line : null);\n }\n if (typeof error.message === 'string') {\n if (error.module?.context) {\n error.message = error.message.replace(error.module.context, error.module.userRequest);\n }\n\n // the tmpdir on OSX is horribly long and makes error messages hard to\n // read. This is doing the same as String.prototype.replaceAll, which node\n // doesn't have yet.\n error.message = error.message.split(tmpdir).join('$TMPDIR');\n }\n return error;\n }\n};\n\nconst threadLoaderOptions = {\n workers: 'JOBS' in process.env && Number(process.env.JOBS),\n // poolTimeout shuts down idle workers. The problem is, for\n // interactive rebuilds that means your startup cost for the\n // next rebuild is at least 600ms worse. So we insist on\n // keeping workers alive always.\n poolTimeout: Infinity,\n};\n\nfunction canUseThreadLoader(extraOptions: object | false | undefined) {\n // If the environment sets JOBS to 0, or if our extraOptions are set to false,\n // we have been explicitly configured not to use thread-loader\n if (process.env.JOBS === '0' || extraOptions === false) {\n return false;\n } else {\n return true;\n }\n}\n\nfunction warmUp(extraOptions: object | false | undefined) {\n // We don't know if we'll be parallel-safe or not, but if we've been\n // configured to not use thread-loader, then there is no need to consume extra\n // resources warming the worker pool\n if (!canUseThreadLoader(extraOptions)) {\n return null;\n }\n\n threadLoaderWarmup(Object.assign({}, threadLoaderOptions, extraOptions), [\n require.resolve('@embroider/hbs-loader'),\n require.resolve('@embroider/babel-loader-9'),\n ]);\n}\n\nfunction maybeThreadLoader(extraOptions: object | false | undefined) {\n if (!canUseThreadLoader(extraOptions)) {\n return null;\n }\n\n return {\n loader: 'thread-loader',\n options: Object.assign({}, threadLoaderOptions, extraOptions),\n };\n}\n\nfunction appendArrays(objValue: any, srcValue: any) {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n}\n\nfunction isCSS(filename: string) {\n return /\\.css$/i.test(filename);\n}\n\n// typescript doesn't understand that regular use of array.filter(Boolean) does\n// this.\nfunction nonNullArray<T>(array: T[]): NonNullable<T>[] {\n return array.filter(Boolean) as NonNullable<T>[];\n}\n\nfunction makeBabelLoaderOptions(\n variant: Variant,\n appBabelConfigPath: string,\n extraOptions: BabelLoaderOptions | undefined\n) {\n const cacheDirectory = getPackagerCacheDir('webpack-babel-loader');\n const options: BabelLoaderOptions & { variant: Variant; appBabelConfigPath: string } = {\n variant,\n appBabelConfigPath,\n cacheDirectory,\n ...extraOptions,\n };\n return {\n loader: 'babel-loader-9',\n options,\n };\n}\n\nexport { Webpack };\n"]}
@@ -19,7 +19,9 @@ function virtualLoader() {
19
19
  }
20
20
  let { resolver } = setup(appRoot);
21
21
  this.resourcePath = filename;
22
- return (0, core_1.virtualContent)(filename, resolver).src;
22
+ // @ts-expect-error unimplemented
23
+ let virtual = fixmeImplementVirtualResponse();
24
+ return (0, core_1.virtualContent)(virtual, resolver).src;
23
25
  }
24
26
  throw new Error(`@embroider/webpack/src/virtual-loader received unexpected request: ${this.query}`);
25
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-loader.js","sourceRoot":"","sources":["virtual-loader.ts"],"names":[],"mappings":";;AAYA,gCAaC;AAzBD,0CAAiE;AAGjE,IAAI,cAA0C,CAAC;AAE/C,SAAS,KAAK,CAAC,OAAe;IAC5B,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,MAAK,OAAO,EAAE,CAAC;QACxC,cAAc,GAAG,IAAI,qBAAc,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAwB,aAAa;IACnC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC5D,IAAI,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,qEAAqE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,OAAO,IAAA,qBAAc,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sEAAsE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACtG,CAAC","sourcesContent":["import { ResolverLoader, virtualContent } from '@embroider/core';\nimport type { LoaderContext } from 'webpack';\n\nlet resolverLoader: ResolverLoader | undefined;\n\nfunction setup(appRoot: string): ResolverLoader {\n if (resolverLoader?.appRoot !== appRoot) {\n resolverLoader = new ResolverLoader(appRoot);\n }\n return resolverLoader;\n}\n\nexport default function virtualLoader(this: LoaderContext<unknown>): string | undefined {\n if (typeof this.query === 'string' && this.query[0] === '?') {\n let params = new URLSearchParams(this.query);\n let filename = params.get('f');\n let appRoot = params.get('a');\n if (!filename || !appRoot) {\n throw new Error(`bug in @embroider/webpack virtual loader, cannot locate params in ${this.query}`);\n }\n let { resolver } = setup(appRoot);\n this.resourcePath = filename;\n return virtualContent(filename, resolver).src;\n }\n throw new Error(`@embroider/webpack/src/virtual-loader received unexpected request: ${this.query}`);\n}\n"]}
1
+ {"version":3,"file":"virtual-loader.js","sourceRoot":"","sources":["virtual-loader.ts"],"names":[],"mappings":";;AAYA,gCAeC;AA3BD,0CAAuF;AAGvF,IAAI,cAA0C,CAAC;AAE/C,SAAS,KAAK,CAAC,OAAe;IAC5B,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,MAAK,OAAO,EAAE,CAAC;QACxC,cAAc,GAAG,IAAI,qBAAc,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAwB,aAAa;IACnC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC5D,IAAI,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,qEAAqE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,iCAAiC;QACjC,IAAI,OAAO,GAAoB,6BAA6B,EAAE,CAAC;QAC/D,OAAO,IAAA,qBAAc,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sEAAsE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACtG,CAAC","sourcesContent":["import { ResolverLoader, virtualContent, type VirtualResponse } from '@embroider/core';\nimport type { LoaderContext } from 'webpack';\n\nlet resolverLoader: ResolverLoader | undefined;\n\nfunction setup(appRoot: string): ResolverLoader {\n if (resolverLoader?.appRoot !== appRoot) {\n resolverLoader = new ResolverLoader(appRoot);\n }\n return resolverLoader;\n}\n\nexport default function virtualLoader(this: LoaderContext<unknown>): string | undefined {\n if (typeof this.query === 'string' && this.query[0] === '?') {\n let params = new URLSearchParams(this.query);\n let filename = params.get('f');\n let appRoot = params.get('a');\n if (!filename || !appRoot) {\n throw new Error(`bug in @embroider/webpack virtual loader, cannot locate params in ${this.query}`);\n }\n let { resolver } = setup(appRoot);\n this.resourcePath = filename;\n // @ts-expect-error unimplemented\n let virtual: VirtualResponse = fixmeImplementVirtualResponse();\n return virtualContent(virtual, resolver).src;\n }\n throw new Error(`@embroider/webpack/src/virtual-loader received unexpected request: ${this.query}`);\n}\n"]}
@@ -55,7 +55,6 @@ class EmbroiderPlugin {
55
55
  callback(resolution.err);
56
56
  break;
57
57
  case 'found':
58
- case 'ignored':
59
58
  callback(null, undefined);
60
59
  break;
61
60
  default:
@@ -183,16 +182,16 @@ class WebpackRequestAdapter {
183
182
  err.code = 'MODULE_NOT_FOUND';
184
183
  return { type: 'not_found', err };
185
184
  }
186
- virtualResponse(request, virtualFileName) {
185
+ virtualResponse(request, virtual) {
187
186
  return () => {
188
- return this._resolve(request, virtualFileName);
187
+ return this._resolve(request, virtual);
189
188
  };
190
189
  }
191
190
  async resolve(request) {
192
- return this._resolve(request, undefined);
191
+ return this._resolve(request, false);
193
192
  }
194
- async _resolve(request, virtualFileName) {
195
- return await new Promise(resolve => this.resolveFunction(this.toWebpackResolveData(request, virtualFileName), err => {
193
+ async _resolve(request, virtualResponse) {
194
+ return await new Promise(resolve => this.resolveFunction(this.toWebpackResolveData(request, virtualResponse ? virtualResponse.specifier : request.specifier), err => {
196
195
  if (err) {
197
196
  // unfortunately webpack doesn't let us distinguish between Not Found
198
197
  // and other unexpected exceptions here.
@@ -202,7 +201,7 @@ class WebpackRequestAdapter {
202
201
  resolve({
203
202
  type: 'found',
204
203
  result: this.originalState.createData,
205
- isVirtual: Boolean(virtualFileName),
204
+ virtual: virtualResponse,
206
205
  filename: this.originalState.createData.resource,
207
206
  });
208
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webpack-resolver-plugin.js","sourceRoot":"","sources":["webpack-resolver-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname, resolve } from 'path';\nimport { ModuleRequest, type RequestAdapter, type Resolution } from '@embroider/core';\nimport { Resolver as EmbroiderResolver, ResolverOptions as EmbroiderResolverOptions } from '@embroider/core';\nimport type { Compiler, Module, ResolveData } from 'webpack';\nimport assertNever from 'assert-never';\nimport escapeRegExp from 'escape-string-regexp';\n\nexport { EmbroiderResolverOptions as Options };\n\nconst virtualLoaderName = '@embroider/webpack/src/virtual-loader';\nconst virtualLoaderPath = resolve(__dirname, './virtual-loader.js');\nconst virtualRequestPattern = new RegExp(`${escapeRegExp(virtualLoaderPath)}\\\\?(?<query>.+)!`);\n\nexport class EmbroiderPlugin {\n #resolver: EmbroiderResolver;\n #babelLoaderPrefix: string;\n #appRoot: string;\n\n constructor(opts: EmbroiderResolverOptions, babelLoaderPrefix: string) {\n this.#resolver = new EmbroiderResolver(opts);\n this.#babelLoaderPrefix = babelLoaderPrefix;\n this.#appRoot = opts.appRoot;\n }\n\n #addLoaderAlias(compiler: Compiler, name: string, alias: string) {\n let { resolveLoader } = compiler.options;\n if (Array.isArray(resolveLoader.alias)) {\n resolveLoader.alias.push({ name, alias });\n } else if (resolveLoader.alias) {\n resolveLoader.alias[name] = alias;\n } else {\n resolveLoader.alias = {\n [name]: alias,\n };\n }\n }\n\n apply(compiler: Compiler) {\n this.#addLoaderAlias(compiler, virtualLoaderName, virtualLoaderPath);\n\n compiler.hooks.normalModuleFactory.tap('@embroider/webpack', nmf => {\n let defaultResolve = getDefaultResolveHook(nmf.hooks.resolve.taps);\n\n nmf.hooks.resolve.tapAsync(\n { name: '@embroider/webpack', stage: 50 },\n (state: ExtendedResolveData, callback: CB) => {\n let request = ModuleRequest.create(WebpackRequestAdapter.create, {\n resolveFunction: defaultResolve,\n state,\n babelLoaderPrefix: this.#babelLoaderPrefix,\n appRoot: this.#appRoot,\n });\n if (!request) {\n defaultResolve(state, callback);\n return;\n }\n\n this.#resolver.resolve(request).then(\n resolution => {\n switch (resolution.type) {\n case 'not_found':\n callback(resolution.err);\n break;\n case 'found':\n case 'ignored':\n callback(null, undefined);\n break;\n default:\n throw assertNever(resolution);\n }\n },\n err => callback(err)\n );\n }\n );\n });\n }\n}\n\ninterface CB {\n (err: null, result: Module | undefined): void;\n (err: Error | null): void;\n}\ntype DefaultResolve = (state: ResolveData, callback: CB) => void;\n\n// Despite being absolutely riddled with way-too-powerful tap points,\n// webpack still doesn't succeed in making it possible to provide a\n// fallback to the default resolve hook in the NormalModuleFactory. So\n// instead we will find the default behavior and call it from our own tap,\n// giving us a chance to handle its failures.\nfunction getDefaultResolveHook(taps: { name: string; fn: Function }[]): DefaultResolve {\n let { fn } = taps.find(t => t.name === 'NormalModuleFactory')!;\n return fn as DefaultResolve;\n}\n\ntype ExtendedResolveData = ResolveData & {\n contextInfo: ResolveData['contextInfo'] & { _embroiderMeta?: Record<string, any> };\n};\n\ntype WebpackResolution = Resolution<ResolveData['createData'], null | Error>;\n\nclass WebpackRequestAdapter implements RequestAdapter<WebpackResolution> {\n static create({\n resolveFunction,\n state,\n babelLoaderPrefix,\n appRoot,\n }: {\n resolveFunction: DefaultResolve;\n state: ExtendedResolveData;\n babelLoaderPrefix: string;\n appRoot: string;\n }) {\n let specifier = state.request;\n if (\n specifier.includes(virtualLoaderName) || // prevents recursion on requests we have already sent to our virtual loader\n specifier.startsWith('!') // ignores internal webpack resolvers\n ) {\n return;\n }\n\n let fromFile: string | undefined;\n if (state.contextInfo.issuer) {\n fromFile = state.contextInfo.issuer;\n } else {\n // when the files emitted from our virtual-loader try to import things,\n // those requests show in webpack as having no issuer. But we can see here\n // which requests they are and adjust the issuer so they resolve things from\n // the correct logical place.\n for (let dep of state.dependencies) {\n let match = virtualRequestPattern.exec((dep as any)._parentModule?.userRequest);\n if (match) {\n fromFile = new URLSearchParams(match.groups!.query).get('f')!;\n break;\n }\n }\n }\n if (!fromFile) {\n return;\n }\n\n return {\n initialState: {\n specifier,\n fromFile,\n meta: state.contextInfo._embroiderMeta,\n },\n adapter: new WebpackRequestAdapter(resolveFunction, babelLoaderPrefix, appRoot, state),\n };\n }\n\n private constructor(\n private resolveFunction: DefaultResolve,\n private babelLoaderPrefix: string,\n private appRoot: string,\n private originalState: ExtendedResolveData\n ) {}\n\n get debugType() {\n return 'webpack';\n }\n\n // Webpack mostly relies on mutation to adjust requests. We could create a\n // whole new ResolveData instead, and that would allow defaultResolving to\n // happen, but for the output of that process to actually affect the\n // downstream code in Webpack we would still need to mutate the original\n // ResolveData with the results (primarily the `createData`). So since we\n // cannot avoid the mutation anyway, it seems best to do it earlier rather\n // than later, so that everything from here forward is \"normal\".\n //\n // Technically a NormalModuleLoader `resolve` hook *can* directly return a\n // Module, but that is not how the stock one works, and it would force us to\n // copy more of Webpack's default behaviors into the inside of our hook. Like,\n // we would need to invoke afterResolve, createModule, createModuleClass, etc,\n // just like webpack does if we wanted to produce a Module directly.\n //\n // So the mutation strategy is much less intrusive, even though it means there\n // is the risk of state leakage all over the place.\n //\n // We mitigate that risk by waiting until the last possible moment to apply\n // our desired ModuleRequest fields to the ResolveData. This means that as\n // requests evolve through the module-resolver they aren't actually all\n // mutating the shared state. Only when a request is allowed to bubble back\n // out to webpack does that happen.\n toWebpackResolveData(\n request: ModuleRequest<WebpackResolution>,\n virtualFileName: string | undefined\n ): ExtendedResolveData {\n let specifier = request.specifier;\n if (virtualFileName) {\n let params = new URLSearchParams();\n params.set('f', virtualFileName);\n params.set('a', this.appRoot);\n specifier = `${this.babelLoaderPrefix}${virtualLoaderName}?${params.toString()}!`;\n }\n\n this.originalState.request = specifier;\n this.originalState.context = dirname(request.fromFile);\n this.originalState.contextInfo.issuer = request.fromFile;\n this.originalState.contextInfo._embroiderMeta = request.meta;\n if (request.resolvedTo && typeof request.resolvedTo !== 'function') {\n if (request.resolvedTo.type === 'found') {\n this.originalState.createData = request.resolvedTo.result;\n }\n }\n return this.originalState;\n }\n\n notFoundResponse(request: ModuleRequest<WebpackResolution>): WebpackResolution {\n let err = new Error(`module not found ${request.specifier}`);\n (err as any).code = 'MODULE_NOT_FOUND';\n return { type: 'not_found', err };\n }\n\n virtualResponse(\n request: ModuleRequest<WebpackResolution>,\n virtualFileName: string\n ): () => Promise<WebpackResolution> {\n return () => {\n return this._resolve(request, virtualFileName);\n };\n }\n\n async resolve(request: ModuleRequest<WebpackResolution>): Promise<WebpackResolution> {\n return this._resolve(request, undefined);\n }\n\n async _resolve(\n request: ModuleRequest<WebpackResolution>,\n virtualFileName: string | undefined\n ): Promise<WebpackResolution> {\n return await new Promise(resolve =>\n this.resolveFunction(this.toWebpackResolveData(request, virtualFileName), err => {\n if (err) {\n // unfortunately webpack doesn't let us distinguish between Not Found\n // and other unexpected exceptions here.\n resolve({ type: 'not_found', err });\n } else {\n resolve({\n type: 'found',\n result: this.originalState.createData,\n isVirtual: Boolean(virtualFileName),\n filename: this.originalState.createData.resource!,\n });\n }\n })\n );\n }\n}\n"]}
1
+ {"version":3,"file":"webpack-resolver-plugin.js","sourceRoot":"","sources":["webpack-resolver-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname, resolve } from 'path';\nimport { ModuleRequest, type VirtualResponse, type RequestAdapter, type Resolution } from '@embroider/core';\nimport { Resolver as EmbroiderResolver, ResolverOptions as EmbroiderResolverOptions } from '@embroider/core';\nimport type { Compiler, Module, ResolveData } from 'webpack';\nimport assertNever from 'assert-never';\nimport escapeRegExp from 'escape-string-regexp';\n\nexport { EmbroiderResolverOptions as Options };\n\nconst virtualLoaderName = '@embroider/webpack/src/virtual-loader';\nconst virtualLoaderPath = resolve(__dirname, './virtual-loader.js');\nconst virtualRequestPattern = new RegExp(`${escapeRegExp(virtualLoaderPath)}\\\\?(?<query>.+)!`);\n\nexport class EmbroiderPlugin {\n #resolver: EmbroiderResolver;\n #babelLoaderPrefix: string;\n #appRoot: string;\n\n constructor(opts: EmbroiderResolverOptions, babelLoaderPrefix: string) {\n this.#resolver = new EmbroiderResolver(opts);\n this.#babelLoaderPrefix = babelLoaderPrefix;\n this.#appRoot = opts.appRoot;\n }\n\n #addLoaderAlias(compiler: Compiler, name: string, alias: string) {\n let { resolveLoader } = compiler.options;\n if (Array.isArray(resolveLoader.alias)) {\n resolveLoader.alias.push({ name, alias });\n } else if (resolveLoader.alias) {\n resolveLoader.alias[name] = alias;\n } else {\n resolveLoader.alias = {\n [name]: alias,\n };\n }\n }\n\n apply(compiler: Compiler) {\n this.#addLoaderAlias(compiler, virtualLoaderName, virtualLoaderPath);\n\n compiler.hooks.normalModuleFactory.tap('@embroider/webpack', nmf => {\n let defaultResolve = getDefaultResolveHook(nmf.hooks.resolve.taps);\n\n nmf.hooks.resolve.tapAsync(\n { name: '@embroider/webpack', stage: 50 },\n (state: ExtendedResolveData, callback: CB) => {\n let request = ModuleRequest.create(WebpackRequestAdapter.create, {\n resolveFunction: defaultResolve,\n state,\n babelLoaderPrefix: this.#babelLoaderPrefix,\n appRoot: this.#appRoot,\n });\n if (!request) {\n defaultResolve(state, callback);\n return;\n }\n\n this.#resolver.resolve(request).then(\n resolution => {\n switch (resolution.type) {\n case 'not_found':\n callback(resolution.err);\n break;\n case 'found':\n callback(null, undefined);\n break;\n default:\n throw assertNever(resolution);\n }\n },\n err => callback(err)\n );\n }\n );\n });\n }\n}\n\ninterface CB {\n (err: null, result: Module | undefined): void;\n (err: Error | null): void;\n}\ntype DefaultResolve = (state: ResolveData, callback: CB) => void;\n\n// Despite being absolutely riddled with way-too-powerful tap points,\n// webpack still doesn't succeed in making it possible to provide a\n// fallback to the default resolve hook in the NormalModuleFactory. So\n// instead we will find the default behavior and call it from our own tap,\n// giving us a chance to handle its failures.\nfunction getDefaultResolveHook(taps: { name: string; fn: Function }[]): DefaultResolve {\n let { fn } = taps.find(t => t.name === 'NormalModuleFactory')!;\n return fn as DefaultResolve;\n}\n\ntype ExtendedResolveData = ResolveData & {\n contextInfo: ResolveData['contextInfo'] & { _embroiderMeta?: Record<string, any> };\n};\n\ntype WebpackResolution = Resolution<ResolveData['createData'], null | Error>;\n\nclass WebpackRequestAdapter implements RequestAdapter<WebpackResolution> {\n static create({\n resolveFunction,\n state,\n babelLoaderPrefix,\n appRoot,\n }: {\n resolveFunction: DefaultResolve;\n state: ExtendedResolveData;\n babelLoaderPrefix: string;\n appRoot: string;\n }) {\n let specifier = state.request;\n if (\n specifier.includes(virtualLoaderName) || // prevents recursion on requests we have already sent to our virtual loader\n specifier.startsWith('!') // ignores internal webpack resolvers\n ) {\n return;\n }\n\n let fromFile: string | undefined;\n if (state.contextInfo.issuer) {\n fromFile = state.contextInfo.issuer;\n } else {\n // when the files emitted from our virtual-loader try to import things,\n // those requests show in webpack as having no issuer. But we can see here\n // which requests they are and adjust the issuer so they resolve things from\n // the correct logical place.\n for (let dep of state.dependencies) {\n let match = virtualRequestPattern.exec((dep as any)._parentModule?.userRequest);\n if (match) {\n fromFile = new URLSearchParams(match.groups!.query).get('f')!;\n break;\n }\n }\n }\n if (!fromFile) {\n return;\n }\n\n return {\n initialState: {\n specifier,\n fromFile,\n meta: state.contextInfo._embroiderMeta,\n },\n adapter: new WebpackRequestAdapter(resolveFunction, babelLoaderPrefix, appRoot, state),\n };\n }\n\n private constructor(\n private resolveFunction: DefaultResolve,\n private babelLoaderPrefix: string,\n private appRoot: string,\n private originalState: ExtendedResolveData\n ) {}\n\n get debugType() {\n return 'webpack';\n }\n\n // Webpack mostly relies on mutation to adjust requests. We could create a\n // whole new ResolveData instead, and that would allow defaultResolving to\n // happen, but for the output of that process to actually affect the\n // downstream code in Webpack we would still need to mutate the original\n // ResolveData with the results (primarily the `createData`). So since we\n // cannot avoid the mutation anyway, it seems best to do it earlier rather\n // than later, so that everything from here forward is \"normal\".\n //\n // Technically a NormalModuleLoader `resolve` hook *can* directly return a\n // Module, but that is not how the stock one works, and it would force us to\n // copy more of Webpack's default behaviors into the inside of our hook. Like,\n // we would need to invoke afterResolve, createModule, createModuleClass, etc,\n // just like webpack does if we wanted to produce a Module directly.\n //\n // So the mutation strategy is much less intrusive, even though it means there\n // is the risk of state leakage all over the place.\n //\n // We mitigate that risk by waiting until the last possible moment to apply\n // our desired ModuleRequest fields to the ResolveData. This means that as\n // requests evolve through the module-resolver they aren't actually all\n // mutating the shared state. Only when a request is allowed to bubble back\n // out to webpack does that happen.\n toWebpackResolveData(\n request: ModuleRequest<WebpackResolution>,\n virtualFileName: string | undefined\n ): ExtendedResolveData {\n let specifier = request.specifier;\n if (virtualFileName) {\n let params = new URLSearchParams();\n params.set('f', virtualFileName);\n params.set('a', this.appRoot);\n specifier = `${this.babelLoaderPrefix}${virtualLoaderName}?${params.toString()}!`;\n }\n\n this.originalState.request = specifier;\n this.originalState.context = dirname(request.fromFile);\n this.originalState.contextInfo.issuer = request.fromFile;\n this.originalState.contextInfo._embroiderMeta = request.meta;\n if (request.resolvedTo && typeof request.resolvedTo !== 'function') {\n if (request.resolvedTo.type === 'found') {\n this.originalState.createData = request.resolvedTo.result;\n }\n }\n return this.originalState;\n }\n\n notFoundResponse(request: ModuleRequest<WebpackResolution>): WebpackResolution {\n let err = new Error(`module not found ${request.specifier}`);\n (err as any).code = 'MODULE_NOT_FOUND';\n return { type: 'not_found', err };\n }\n\n virtualResponse(\n request: ModuleRequest<WebpackResolution>,\n virtual: VirtualResponse\n ): () => Promise<WebpackResolution> {\n return () => {\n return this._resolve(request, virtual);\n };\n }\n\n async resolve(request: ModuleRequest<WebpackResolution>): Promise<WebpackResolution> {\n return this._resolve(request, false);\n }\n\n async _resolve(\n request: ModuleRequest<WebpackResolution>,\n virtualResponse: VirtualResponse | false\n ): Promise<WebpackResolution> {\n return await new Promise(resolve =>\n this.resolveFunction(\n this.toWebpackResolveData(request, virtualResponse ? virtualResponse.specifier : request.specifier),\n err => {\n if (err) {\n // unfortunately webpack doesn't let us distinguish between Not Found\n // and other unexpected exceptions here.\n resolve({ type: 'not_found', err });\n } else {\n resolve({\n type: 'found',\n result: this.originalState.createData,\n virtual: virtualResponse,\n filename: this.originalState.createData.resource!,\n });\n }\n }\n )\n );\n }\n}\n"]}