@embroider/webpack 3.1.4-unstable.ed7b6fe → 3.1.4

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018 Edward Faulkner
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embroider/webpack",
3
- "version": "3.1.4-unstable.ed7b6fe",
3
+ "version": "3.1.4",
4
4
  "private": false,
5
5
  "description": "Builds EmberJS apps with Webpack",
6
6
  "repository": {
@@ -16,12 +16,8 @@
16
16
  "src/**/*.d.ts",
17
17
  "src/**/*.js.map"
18
18
  ],
19
- "scripts": {},
20
19
  "dependencies": {
21
20
  "@babel/core": "^7.14.5",
22
- "@embroider/babel-loader-8": "3.0.1-unstable.ed7b6fe",
23
- "@embroider/hbs-loader": "3.0.2-unstable.ed7b6fe",
24
- "@embroider/shared-internals": "2.2.4-unstable.ed7b6fe",
25
21
  "@types/supports-color": "^8.1.0",
26
22
  "assert-never": "^1.2.1",
27
23
  "babel-loader": "^8.2.2",
@@ -39,10 +35,12 @@
39
35
  "style-loader": "^2.0.0",
40
36
  "supports-color": "^8.1.0",
41
37
  "terser": "^5.7.0",
42
- "thread-loader": "^3.0.4"
38
+ "thread-loader": "^3.0.4",
39
+ "@embroider/hbs-loader": "3.0.2",
40
+ "@embroider/babel-loader-8": "3.0.0",
41
+ "@embroider/shared-internals": "2.3.0"
43
42
  },
44
43
  "devDependencies": {
45
- "@embroider/core": "3.1.4-unstable.ed7b6fe",
46
44
  "@types/csso": "^3.5.1",
47
45
  "@types/debug": "^4.1.5",
48
46
  "@types/fs-extra": "^9.0.12",
@@ -51,16 +49,18 @@
51
49
  "@types/node": "^15.12.2",
52
50
  "@types/semver": "^7.3.6",
53
51
  "typescript": "^5.1.6",
54
- "webpack": "^5.38.1"
52
+ "webpack": "^5.38.1",
53
+ "@embroider/core": "^3.2.0"
55
54
  },
56
55
  "peerDependencies": {
57
- "@embroider/core": "3.1.4-unstable.ed7b6fe",
58
- "webpack": "^5.0.0"
56
+ "webpack": "^5.0.0",
57
+ "@embroider/core": "^3.2.0"
59
58
  },
60
59
  "engines": {
61
60
  "node": "12.* || 14.* || >= 16"
62
61
  },
63
62
  "volta": {
64
63
  "extends": "../../package.json"
65
- }
66
- }
64
+ },
65
+ "scripts": {}
66
+ }
@@ -140,6 +140,7 @@ class WebpackModuleRequest {
140
140
  // that can actually be handed back to webpack)
141
141
  this.specifier = state.request;
142
142
  this.fromFile = state.contextInfo.issuer;
143
+ this.meta = state.contextInfo._embroiderMeta ? { ...state.contextInfo._embroiderMeta } : undefined;
143
144
  }
144
145
  alias(newSpecifier) {
145
146
  this.state.request = newSpecifier;
@@ -163,5 +164,9 @@ class WebpackModuleRequest {
163
164
  next.isVirtual = true;
164
165
  return next;
165
166
  }
167
+ withMeta(meta) {
168
+ this.state.contextInfo._embroiderMeta = meta;
169
+ return new WebpackModuleRequest(this.babelLoaderPrefix, this.appRoot, this.state);
170
+ }
166
171
  }
167
172
  //# sourceMappingURL=webpack-resolver-plugin.js.map
@@ -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 {\n Resolver as EmbroiderResolver,\n ResolverOptions as EmbroiderResolverOptions,\n ModuleRequest,\n ResolverFunction,\n Resolution,\n} 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 specifier: string;\n fromFile: string;\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 };\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 }\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}\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 {\n Resolver as EmbroiderResolver,\n ResolverOptions as EmbroiderResolverOptions,\n ModuleRequest,\n ResolverFunction,\n Resolution,\n} 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"]}