@embroider/webpack 3.2.2-unstable.ded6329 → 3.2.2-unstable.ebf92d6

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embroider/webpack",
3
- "version": "3.2.2-unstable.ded6329",
3
+ "version": "3.2.2-unstable.ebf92d6",
4
4
  "private": false,
5
5
  "description": "Builds EmberJS apps with Webpack",
6
6
  "repository": {
@@ -19,9 +19,9 @@
19
19
  "scripts": {},
20
20
  "dependencies": {
21
21
  "@babel/core": "^7.14.5",
22
- "@embroider/babel-loader-9": "3.1.2-unstable.ded6329",
23
- "@embroider/hbs-loader": "3.0.4-unstable.ded6329",
24
- "@embroider/shared-internals": "2.5.2-unstable.ded6329",
22
+ "@embroider/babel-loader-9": "3.1.2-unstable.ebf92d6",
23
+ "@embroider/hbs-loader": "3.0.4-unstable.ebf92d6",
24
+ "@embroider/shared-internals": "2.5.2-unstable.ebf92d6",
25
25
  "@types/supports-color": "^8.1.0",
26
26
  "assert-never": "^1.2.1",
27
27
  "babel-loader": "^8.2.2",
@@ -42,7 +42,7 @@
42
42
  "thread-loader": "^3.0.4"
43
43
  },
44
44
  "devDependencies": {
45
- "@embroider/core": "3.4.1-unstable.ded6329",
45
+ "@embroider/core": "3.4.3-unstable.ebf92d6",
46
46
  "@types/csso": "^3.5.1",
47
47
  "@types/debug": "^4.1.5",
48
48
  "@types/fs-extra": "^9.0.12",
@@ -54,7 +54,7 @@
54
54
  "webpack": "^5.38.1"
55
55
  },
56
56
  "peerDependencies": {
57
- "@embroider/core": "3.4.1-unstable.ded6329",
57
+ "@embroider/core": "3.4.3-unstable.ebf92d6",
58
58
  "webpack": "^5.0.0"
59
59
  },
60
60
  "engines": {
@@ -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 is a type-only import, so it gets compiled away. At runtime, we load\n// terser lazily so it's only loaded for production builds that use it. Don't\n// add any non-type-only imports here.\nimport type { MinifyOptions } from 'terser';\n\ninterface AppInfo {\n entrypoints: HTMLEntrypoint[];\n otherAssets: string[];\n babel: AppMeta['babel'];\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 isEqual(left.babel, right.babel) &&\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 babel = meta['ember-addon']['babel'];\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, babel, rootURL, resolverConfig, publicAssetURL, packageName: meta.name };\n }\n\n private configureWebpack(appInfo: AppInfo, variant: Variant, variantIndex: number): Configuration {\n const { entrypoints, babel, 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 babel.majorVersion,\n variant,\n join(this.pathToVanillaApp, babel.filename),\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(babel.isParallelSafe, 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 // eslint-disable-next-line @typescript-eslint/no-require-imports\n test: require(join(this.pathToVanillaApp, babel.fileFilter)),\n use: nonNullArray([\n maybeThreadLoader(babel.isParallelSafe, this.extraThreadLoaderOptions),\n makeBabelLoaderOptions(\n babel.majorVersion,\n variant,\n join(this.pathToVanillaApp, babel.filename),\n this.extraBabelLoaderOptions\n ),\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 };\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.default.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 color: 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 color: 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(isParallelSafe: boolean, extraOptions: object | false | undefined) {\n if (!canUseThreadLoader(extraOptions) || !isParallelSafe) {\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 _majorVersion: 7,\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 { 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 is a type-only import, so it gets compiled away. At runtime, we load\n// terser lazily so it's only loaded for production builds that use it. Don't\n// add any non-type-only imports here.\nimport type { MinifyOptions } from 'terser';\n\ninterface AppInfo {\n entrypoints: HTMLEntrypoint[];\n otherAssets: string[];\n babel: AppMeta['babel'];\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 isEqual(left.babel, right.babel) &&\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 babel = meta['ember-addon']['babel'];\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, babel, rootURL, resolverConfig, publicAssetURL, packageName: meta.name };\n }\n\n private configureWebpack(appInfo: AppInfo, variant: Variant, variantIndex: number): Configuration {\n const { entrypoints, babel, 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 babel.majorVersion,\n variant,\n join(this.pathToVanillaApp, babel.filename),\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(babel.isParallelSafe, 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 // eslint-disable-next-line @typescript-eslint/no-require-imports\n test: require(join(this.pathToVanillaApp, babel.fileFilter)),\n use: nonNullArray([\n maybeThreadLoader(babel.isParallelSafe, this.extraThreadLoaderOptions),\n makeBabelLoaderOptions(\n babel.majorVersion,\n variant,\n join(this.pathToVanillaApp, babel.filename),\n this.extraBabelLoaderOptions\n ),\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 };\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.default.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 color: 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 color: 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(isParallelSafe: boolean, extraOptions: object | false | undefined) {\n if (!canUseThreadLoader(extraOptions) || !isParallelSafe) {\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 _majorVersion: 7,\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 +1 @@
1
- {"version":3,"file":"virtual-loader.js","sourceRoot":"","sources":["virtual-loader.ts"],"names":[],"mappings":";;AAAA,0CAAiE;AAGjE,IAAI,cAA0C,CAAC;AAE/C,SAAS,KAAK,CAAC,OAAe;IAC5B,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,MAAK,OAAO,EAAE;QACvC,cAAc,GAAG,IAAI,qBAAc,CAAC,OAAO,CAAC,CAAC;KAC9C;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;QAC3D,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;YACzB,MAAM,IAAI,KAAK,CAAC,qEAAqE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACpG;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;KAC3C;IACD,MAAM,IAAI,KAAK,CAAC,sEAAsE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACtG,CAAC;AAbD,gCAaC","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>) {\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);\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":";;AAAA,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;IAC5C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sEAAsE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACtG,CAAC;AAbD,gCAaC","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>) {\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);\n }\n throw new Error(`@embroider/webpack/src/virtual-loader received unexpected request: ${this.query}`);\n}\n"]}
@@ -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 type { ModuleRequest, ResolverFunction, Resolution } from '@embroider/core';\nimport { Resolver as EmbroiderResolver, ResolverOptions as EmbroiderResolverOptions } from '@embroider/core';\nimport type { Compiler, Module } 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 let adaptedResolve = getAdaptedResolve(defaultResolve);\n\n nmf.hooks.resolve.tapAsync({ name: '@embroider/webpack', stage: 50 }, (state: unknown, callback: CB) => {\n let request = WebpackModuleRequest.from(state, this.#babelLoaderPrefix, this.#appRoot);\n if (!request) {\n defaultResolve(state, callback);\n return;\n }\n\n this.#resolver.resolve(request, adaptedResolve).then(\n resolution => {\n switch (resolution.type) {\n case 'not_found':\n callback(resolution.err);\n break;\n case 'found':\n callback(null, resolution.result);\n break;\n default:\n throw assertNever(resolution);\n }\n },\n err => callback(err)\n );\n });\n });\n }\n}\n\ntype CB = (err: null | Error, result?: Module | undefined) => void;\ntype DefaultResolve = (state: unknown, 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\n// This converts the raw function we got out of webpack into the right interface\n// for use by @embroider/core's resolver.\nfunction getAdaptedResolve(\n defaultResolve: DefaultResolve\n): ResolverFunction<WebpackModuleRequest, Resolution<Module, null | Error>> {\n return function (request: WebpackModuleRequest): Promise<Resolution<Module, null | Error>> {\n return new Promise(resolve => {\n defaultResolve(request.state, (err, value) => {\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({ type: 'found', result: value! });\n }\n });\n });\n };\n}\n\nclass WebpackModuleRequest implements ModuleRequest {\n readonly specifier: string;\n readonly fromFile: string;\n readonly meta: Record<string, any> | undefined;\n\n static from(state: any, babelLoaderPrefix: string, appRoot: string): WebpackModuleRequest | undefined {\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 if (!state.contextInfo?.issuer && Array.isArray(state.dependencies)) {\n for (let dep of state.dependencies) {\n let match = virtualRequestPattern.exec(dep._parentModule?.userRequest);\n if (match) {\n state.contextInfo.issuer = new URLSearchParams(match.groups!.query).get('f');\n state.context = dirname(state.contextInfo.issuer);\n }\n }\n }\n\n if (\n typeof state.request === 'string' &&\n typeof state.context === 'string' &&\n typeof state.contextInfo?.issuer === 'string' &&\n state.contextInfo.issuer !== '' &&\n !state.request.includes(virtualLoaderName) && // prevents recursion on requests we have already sent to our virtual loader\n !state.request.startsWith('!') // ignores internal webpack resolvers\n ) {\n return new WebpackModuleRequest(babelLoaderPrefix, appRoot, state);\n }\n }\n\n constructor(\n private babelLoaderPrefix: string,\n private appRoot: string,\n public state: {\n request: string;\n context: string;\n contextInfo: {\n issuer: string;\n _embroiderMeta?: Record<string, any> | undefined;\n };\n },\n public isVirtual = false\n ) {\n // these get copied here because we mutate the underlying state as we\n // convert one request into the next, and it seems better for debuggability\n // if the fields on the previous request don't change when you make a new\n // one (although it is true that only the newest one has a a valid `state`\n // that can actually be handed back to webpack)\n this.specifier = state.request;\n this.fromFile = state.contextInfo.issuer;\n this.meta = state.contextInfo._embroiderMeta ? { ...state.contextInfo._embroiderMeta } : undefined;\n }\n\n alias(newSpecifier: string) {\n this.state.request = newSpecifier;\n return new WebpackModuleRequest(this.babelLoaderPrefix, this.appRoot, this.state) as this;\n }\n rehome(newFromFile: string) {\n if (this.fromFile === newFromFile) {\n return this;\n } else {\n this.state.contextInfo.issuer = newFromFile;\n this.state.context = dirname(newFromFile);\n return new WebpackModuleRequest(this.babelLoaderPrefix, this.appRoot, this.state) as this;\n }\n }\n virtualize(filename: string) {\n let params = new URLSearchParams();\n params.set('f', filename);\n params.set('a', this.appRoot);\n let next = this.alias(`${this.babelLoaderPrefix}${virtualLoaderName}?${params.toString()}!`);\n next.isVirtual = true;\n return next;\n }\n withMeta(meta: Record<string, any> | undefined): this {\n this.state.contextInfo._embroiderMeta = meta;\n return new WebpackModuleRequest(this.babelLoaderPrefix, this.appRoot, this.state) as this;\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 type { ModuleRequest, ResolverFunction, Resolution } from '@embroider/core';\nimport { Resolver as EmbroiderResolver, ResolverOptions as EmbroiderResolverOptions } from '@embroider/core';\nimport type { Compiler, Module } 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 let adaptedResolve = getAdaptedResolve(defaultResolve);\n\n nmf.hooks.resolve.tapAsync({ name: '@embroider/webpack', stage: 50 }, (state: unknown, callback: CB) => {\n let request = WebpackModuleRequest.from(state, this.#babelLoaderPrefix, this.#appRoot);\n if (!request) {\n defaultResolve(state, callback);\n return;\n }\n\n this.#resolver.resolve(request, adaptedResolve).then(\n resolution => {\n switch (resolution.type) {\n case 'not_found':\n callback(resolution.err);\n break;\n case 'found':\n callback(null, resolution.result);\n break;\n default:\n throw assertNever(resolution);\n }\n },\n err => callback(err)\n );\n });\n });\n }\n}\n\ntype CB = (err: null | Error, result?: Module | undefined) => void;\ntype DefaultResolve = (state: unknown, 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\n// This converts the raw function we got out of webpack into the right interface\n// for use by @embroider/core's resolver.\nfunction getAdaptedResolve(\n defaultResolve: DefaultResolve\n): ResolverFunction<WebpackModuleRequest, Resolution<Module, null | Error>> {\n return function (request: WebpackModuleRequest): Promise<Resolution<Module, null | Error>> {\n return new Promise(resolve => {\n defaultResolve(request.state, (err, value) => {\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({ type: 'found', result: value! });\n }\n });\n });\n };\n}\n\nclass WebpackModuleRequest implements ModuleRequest {\n readonly specifier: string;\n readonly fromFile: string;\n readonly meta: Record<string, any> | undefined;\n\n static from(state: any, babelLoaderPrefix: string, appRoot: string): WebpackModuleRequest | undefined {\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 if (!state.contextInfo?.issuer && Array.isArray(state.dependencies)) {\n for (let dep of state.dependencies) {\n let match = virtualRequestPattern.exec(dep._parentModule?.userRequest);\n if (match) {\n state.contextInfo.issuer = new URLSearchParams(match.groups!.query).get('f');\n state.context = dirname(state.contextInfo.issuer);\n }\n }\n }\n\n if (\n typeof state.request === 'string' &&\n typeof state.context === 'string' &&\n typeof state.contextInfo?.issuer === 'string' &&\n state.contextInfo.issuer !== '' &&\n !state.request.includes(virtualLoaderName) && // prevents recursion on requests we have already sent to our virtual loader\n !state.request.startsWith('!') // ignores internal webpack resolvers\n ) {\n return new WebpackModuleRequest(babelLoaderPrefix, appRoot, state);\n }\n }\n\n constructor(\n private babelLoaderPrefix: string,\n private appRoot: string,\n public state: {\n request: string;\n context: string;\n contextInfo: {\n issuer: string;\n _embroiderMeta?: Record<string, any> | undefined;\n };\n },\n public isVirtual = false\n ) {\n // these get copied here because we mutate the underlying state as we\n // convert one request into the next, and it seems better for debuggability\n // if the fields on the previous request don't change when you make a new\n // one (although it is true that only the newest one has a a valid `state`\n // that can actually be handed back to webpack)\n this.specifier = state.request;\n this.fromFile = state.contextInfo.issuer;\n this.meta = state.contextInfo._embroiderMeta ? { ...state.contextInfo._embroiderMeta } : undefined;\n }\n\n alias(newSpecifier: string) {\n this.state.request = newSpecifier;\n return new WebpackModuleRequest(this.babelLoaderPrefix, this.appRoot, this.state) as this;\n }\n rehome(newFromFile: string) {\n if (this.fromFile === newFromFile) {\n return this;\n } else {\n this.state.contextInfo.issuer = newFromFile;\n this.state.context = dirname(newFromFile);\n return new WebpackModuleRequest(this.babelLoaderPrefix, this.appRoot, this.state) as this;\n }\n }\n virtualize(filename: string) {\n let params = new URLSearchParams();\n params.set('f', filename);\n params.set('a', this.appRoot);\n let next = this.alias(`${this.babelLoaderPrefix}${virtualLoaderName}?${params.toString()}!`);\n next.isVirtual = true;\n return next;\n }\n withMeta(meta: Record<string, any> | undefined): this {\n this.state.contextInfo._embroiderMeta = meta;\n return new WebpackModuleRequest(this.babelLoaderPrefix, this.appRoot, this.state) as this;\n }\n}\n"]}