@embroider/core 2.1.1 → 2.1.2-unstable.3a232cc
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 +3 -4
- package/src/app-differ.d.ts +1 -1
- package/src/app-differ.js +21 -22
- package/src/app-differ.js.map +1 -1
- package/src/app-files.d.ts +1 -2
- package/src/app-files.js +0 -7
- package/src/app-files.js.map +1 -1
- package/src/app.d.ts +9 -7
- package/src/app.js +32 -46
- package/src/app.js.map +1 -1
- package/src/describe-exports.d.ts +0 -1
- package/src/describe-exports.js +8 -9
- package/src/describe-exports.js.map +1 -1
- package/src/index.d.ts +3 -0
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/module-resolver.d.ts +66 -25
- package/src/module-resolver.js +698 -131
- package/src/module-resolver.js.map +1 -1
- package/src/options.d.ts +0 -1
- package/src/options.js.map +1 -1
- package/src/virtual-content.d.ts +9 -0
- package/src/virtual-content.js +131 -0
- package/src/virtual-content.js.map +1 -0
- package/src/wait-for-trees.js.map +1 -1
- package/src/babel-plugin-adjust-imports.d.ts +0 -31
- package/src/babel-plugin-adjust-imports.js +0 -224
- package/src/babel-plugin-adjust-imports.js.map +0 -1
- package/src/babel-plugin-inline-hbs-deps-node.d.ts +0 -14
- package/src/babel-plugin-inline-hbs-deps-node.js +0 -27
- package/src/babel-plugin-inline-hbs-deps-node.js.map +0 -1
- package/src/babel-plugin-inline-hbs-deps.d.ts +0 -10
- package/src/babel-plugin-inline-hbs-deps.js +0 -134
- package/src/babel-plugin-inline-hbs-deps.js.map +0 -1
- package/src/babel-plugin-inline-hbs-node.d.ts +0 -7
- package/src/babel-plugin-inline-hbs-node.js +0 -15
- package/src/babel-plugin-inline-hbs-node.js.map +0 -1
- package/src/babel-plugin-inline-hbs.d.ts +0 -24
- package/src/babel-plugin-inline-hbs.js +0 -142
- package/src/babel-plugin-inline-hbs.js.map +0 -1
- package/src/babel-plugin-stage1-inline-hbs-node.d.ts +0 -12
- package/src/babel-plugin-stage1-inline-hbs-node.js +0 -9
- package/src/babel-plugin-stage1-inline-hbs-node.js.map +0 -1
- package/src/babel-plugin-stage1-inline-hbs.d.ts +0 -9
- package/src/babel-plugin-stage1-inline-hbs.js +0 -96
- package/src/babel-plugin-stage1-inline-hbs.js.map +0 -1
- package/src/browser-index.d.ts +0 -1
- package/src/browser-index.js +0 -6
- package/src/browser-index.js.map +0 -1
- package/src/ember-template-compiler-types.d.ts +0 -41
- package/src/ember-template-compiler-types.js +0 -3
- package/src/ember-template-compiler-types.js.map +0 -1
- package/src/load-ember-template-compiler.d.ts +0 -6
- package/src/load-ember-template-compiler.js +0 -57
- package/src/load-ember-template-compiler.js.map +0 -1
- package/src/mini-modules-polyfill.d.ts +0 -12
- package/src/mini-modules-polyfill.js +0 -80
- package/src/mini-modules-polyfill.js.map +0 -1
- package/src/patch-template-compiler.d.ts +0 -1
- package/src/patch-template-compiler.js +0 -176
- package/src/patch-template-compiler.js.map +0 -1
- package/src/resolver-plugin.d.ts +0 -3
- package/src/resolver-plugin.js +0 -53
- package/src/resolver-plugin.js.map +0 -1
- package/src/resolver.d.ts +0 -14
- package/src/resolver.js +0 -3
- package/src/resolver.js.map +0 -1
- package/src/template-compiler-common.d.ts +0 -70
- package/src/template-compiler-common.js +0 -176
- package/src/template-compiler-common.js.map +0 -1
- package/src/template-compiler-node.d.ts +0 -17
- package/src/template-compiler-node.js +0 -32
- package/src/template-compiler-node.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"module-resolver.js","sourceRoot":"","sources":["module-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { emberVirtualPackages, emberVirtualPeerDeps, packageName as getPackageName } from '@embroider/shared-internals';\nimport { dirname, resolve } from 'path';\nimport { PackageCache, Package, V2Package, explicitRelative } from '@embroider/shared-internals';\nimport { Memoize } from 'typescript-memoize';\n\nexport interface Options {\n renamePackages: {\n [fromName: string]: string;\n };\n renameModules: {\n [fromName: string]: string;\n };\n extraImports: {\n absPath: string;\n target: string;\n runtimeName?: string;\n }[];\n externalsDir: string;\n activeAddons: {\n [packageName: string]: string;\n };\n relocatedFiles: { [relativePath: string]: string };\n resolvableExtensions: string[];\n appRoot: string;\n}\n\nexport type Resolution =\n | { result: 'continue' }\n | { result: 'redirect-to'; specifier: string }\n | { result: 'external'; specifier: string }\n | { result: 'runtime-failure'; specifier: string };\n\nexport class Resolver {\n readonly originalFilename: string;\n\n constructor(readonly filename: string, private options: Options) {\n this.originalFilename = options.relocatedFiles[filename] || filename;\n }\n resolve(specifier: string, isDynamic: boolean): Resolution {\n if (specifier === '@embroider/macros') {\n // the macros package is always handled directly within babel (not\n // necessarily as a real resolvable package), so we should not mess with it.\n // It might not get compiled away until *after* our plugin has run, which is\n // why we need to know about it.\n return { result: 'continue' };\n }\n\n let maybeRenamed = this.handleRenaming(specifier);\n let resolution = this.handleExternal(maybeRenamed, isDynamic);\n if (resolution.result === 'continue' && maybeRenamed !== specifier) {\n return { result: 'redirect-to', specifier: maybeRenamed };\n }\n return resolution;\n }\n\n @Memoize()\n owningPackage(): Package | undefined {\n return PackageCache.shared('embroider-stage3', this.options.appRoot).ownerOfFile(this.originalFilename);\n }\n\n @Memoize()\n private relocatedIntoPackage(): V2Package | undefined {\n if (this.originalFilename !== this.filename) {\n let owning = PackageCache.shared('embroider-stage3', this.options.appRoot).ownerOfFile(this.filename);\n if (owning && !owning.isV2Ember()) {\n throw new Error(`bug: it should only be possible to get relocated into a v2 ember package here`);\n }\n return owning;\n }\n }\n\n private handleRenaming(specifier: string) {\n let packageName = getPackageName(specifier);\n if (!packageName) {\n return specifier;\n }\n\n for (let [candidate, replacement] of Object.entries(this.options.renameModules)) {\n if (candidate === specifier) {\n return replacement;\n }\n for (let extension of this.options.resolvableExtensions) {\n if (candidate === specifier + '/index' + extension) {\n return replacement;\n }\n if (candidate === specifier + extension) {\n return replacement;\n }\n }\n }\n\n if (this.options.renamePackages[packageName]) {\n return specifier.replace(packageName, this.options.renamePackages[packageName]);\n }\n\n let pkg = this.owningPackage();\n if (!pkg || !pkg.isV2Ember()) {\n return specifier;\n }\n\n if (pkg.meta['auto-upgraded'] && pkg.name === packageName) {\n // we found a self-import, make it relative. Only auto-upgraded packages get\n // this help, v2 packages are natively supposed to use relative imports for\n // their own modules, and we want to push them all to do that correctly.\n let fullPath = specifier.replace(packageName, pkg.root);\n return explicitRelative(dirname(this.filename), fullPath);\n }\n\n let relocatedIntoPkg = this.relocatedIntoPackage();\n if (relocatedIntoPkg && pkg.meta['auto-upgraded'] && relocatedIntoPkg.name === packageName) {\n // a file that was relocated into a package does a self-import of that\n // package's name. This can happen when an addon (like ember-cli-mirage)\n // emits files from its own treeForApp that contain imports of the app's own\n // fully qualified name.\n let fullPath = specifier.replace(packageName, relocatedIntoPkg.root);\n return explicitRelative(dirname(this.filename), fullPath);\n }\n\n return specifier;\n }\n\n private handleExternal(specifier: string, isDynamic: boolean): Resolution {\n let pkg = this.owningPackage();\n if (!pkg || !pkg.isV2Ember()) {\n return { result: 'continue' };\n }\n\n let packageName = getPackageName(specifier);\n if (!packageName) {\n // This is a relative import. We don't automatically externalize those\n // because it's rare, and by keeping them static we give better errors. But\n // we do allow them to be explicitly externalized by the package author (or\n // a compat adapter). In the metadata, they would be listed in\n // package-relative form, so we need to convert this specifier to that.\n let absoluteSpecifier = resolve(dirname(this.filename), specifier);\n let packageRelativeSpecifier = explicitRelative(pkg.root, absoluteSpecifier);\n if (isExplicitlyExternal(packageRelativeSpecifier, pkg)) {\n let publicSpecifier = absoluteSpecifier.replace(pkg.root, pkg.name);\n return { result: 'external', specifier: publicSpecifier };\n } else {\n return { result: 'continue' };\n }\n }\n\n // absolute package imports can also be explicitly external based on their\n // full specifier name\n if (isExplicitlyExternal(specifier, pkg)) {\n return { result: 'external', specifier };\n }\n\n if (!pkg.meta['auto-upgraded'] && emberVirtualPeerDeps.has(packageName)) {\n // Native v2 addons are allowed to use the emberVirtualPeerDeps like\n // `@glimmer/component`. And like all v2 addons, it's important that they\n // see those dependencies after those dependencies have been converted to\n // v2.\n //\n // But unlike auto-upgraded addons, native v2 addons are not necessarily\n // copied out of their original place in node_modules. And from that\n // original place they might accidentally resolve the emberVirtualPeerDeps\n // that are present there in v1 format.\n //\n // So before we even check isResolvable, we adjust these imports to point at\n // the app's copies instead.\n if (emberVirtualPeerDeps.has(packageName)) {\n if (!this.options.activeAddons[packageName]) {\n throw new Error(\n `${pkg.name} is trying to import the app's ${packageName} package, but it seems to be missing`\n );\n }\n return {\n result: 'redirect-to',\n specifier: explicitRelative(\n dirname(this.filename),\n specifier.replace(packageName, this.options.activeAddons[packageName])\n ),\n };\n }\n }\n\n let relocatedPkg = this.relocatedIntoPackage();\n if (relocatedPkg) {\n // this file has been moved into another package (presumably the app).\n\n // first try to resolve from the destination package\n if (isResolvable(packageName, relocatedPkg, this.options.appRoot)) {\n // self-imports are legal in the app tree, even for v2 packages.\n if (!pkg.meta['auto-upgraded'] && packageName !== pkg.name) {\n throw new Error(\n `${pkg.name} is trying to import ${packageName} from within its app tree. This is unsafe, because ${pkg.name} can't control which dependencies are resolvable from the app`\n );\n }\n return { result: 'continue' };\n } else {\n // second try to resolve from the source package\n let targetPkg = isResolvable(packageName, pkg, this.options.appRoot);\n if (targetPkg) {\n // self-imports are legal in the app tree, even for v2 packages.\n if (!pkg.meta['auto-upgraded'] && packageName !== pkg.name) {\n throw new Error(\n `${pkg.name} is trying to import ${packageName} from within its app tree. This is unsafe, because ${pkg.name} can't control which dependencies are resolvable from the app`\n );\n }\n // we found it, but we need to rewrite it because it's not really going to\n // resolve from where its sitting\n return {\n result: 'redirect-to',\n specifier: explicitRelative(dirname(this.filename), specifier.replace(packageName, targetPkg.root)),\n };\n }\n }\n } else {\n if (isResolvable(packageName, pkg, this.options.appRoot)) {\n if (!pkg.meta['auto-upgraded'] && !reliablyResolvable(pkg, packageName)) {\n throw new Error(\n `${pkg.name} is trying to import from ${packageName} but that is not one of its explicit dependencies`\n );\n }\n return { result: 'continue' };\n }\n }\n\n // auto-upgraded packages can fall back to the set of known active addons\n //\n // v2 packages can fall back to the set of known active addons only to find\n // themselves (which is needed due to app tree merging)\n if ((pkg.meta['auto-upgraded'] || packageName === pkg.name) && this.options.activeAddons[packageName]) {\n return {\n result: 'redirect-to',\n specifier: explicitRelative(\n dirname(this.filename),\n specifier.replace(packageName, this.options.activeAddons[packageName])\n ),\n };\n }\n\n if (pkg.meta['auto-upgraded']) {\n // auto-upgraded packages can fall back to attempting to find dependencies at\n // runtime. Native v2 packages can only get this behavior in the\n // isExplicitlyExternal case above because they need to explicitly ask for\n // externals.\n return { result: 'external', specifier };\n } else {\n // native v2 packages don't automatically externalize *everything* the way\n // auto-upgraded packages do, but they still externalize known and approved\n // ember virtual packages (like @ember/component)\n if (emberVirtualPackages.has(packageName)) {\n return { result: 'external', specifier };\n }\n }\n\n // non-resolvable imports in dynamic positions become runtime errors, not\n // build-time errors, so we emit the runtime error module here before the\n // stage3 packager has a chance to see the missing module. (Maybe some stage3\n // packagers will have this behavior by default, because it would make sense,\n // but webpack at least does not.)\n if (isDynamic) {\n return { result: 'runtime-failure', specifier };\n }\n\n // this is falling through with the original specifier which was\n // non-resolvable, which will presumably cause a static build error in stage3.\n return { result: 'continue' };\n }\n}\n\nfunction isExplicitlyExternal(specifier: string, fromPkg: V2Package): boolean {\n return Boolean(fromPkg.isV2Addon() && fromPkg.meta['externals'] && fromPkg.meta['externals'].includes(specifier));\n}\n\nfunction isResolvable(packageName: string, fromPkg: V2Package, appRoot: string): false | Package {\n try {\n let dep = PackageCache.shared('embroider-stage3', appRoot).resolve(packageName, fromPkg);\n if (!dep.isEmberPackage() && fromPkg.meta['auto-upgraded'] && !fromPkg.hasDependency('ember-auto-import')) {\n // classic ember addons can only import non-ember dependencies if they\n // have ember-auto-import.\n //\n // whereas native v2 packages can always import any dependency\n return false;\n }\n return dep;\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n return false;\n }\n}\n\n// we don't want to allow things that resolve only by accident that are likely\n// to break in other setups. For example: import your dependencies'\n// dependencies, or importing your own name from within a monorepo (which will\n// work because of the symlinking) without setting up \"exports\" (which makes\n// your own name reliably resolvable)\nfunction reliablyResolvable(pkg: V2Package, packageName: string) {\n if (pkg.hasDependency(packageName)) {\n return true;\n }\n\n if (pkg.name === packageName && pkg.packageJSON.exports) {\n return true;\n }\n\n if (emberVirtualPeerDeps.has(packageName)) {\n return true;\n }\n\n return false;\n}\n"]}
|
1
|
+
{"version":3,"file":"module-resolver.js","sourceRoot":"","sources":["module-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n emberVirtualPackages,\n emberVirtualPeerDeps,\n extensionsPattern,\n packageName as getPackageName,\n} from '@embroider/shared-internals';\nimport { dirname, resolve } from 'path';\nimport { PackageCache, Package, V2Package, explicitRelative } from '@embroider/shared-internals';\nimport makeDebug from 'debug';\nimport assertNever from 'assert-never';\nimport resolveModule from 'resolve';\nimport {\n virtualExternalModule,\n virtualPairComponent,\n virtualContent,\n fastbootSwitch,\n decodeFastbootSwitch,\n} from './virtual-content';\nimport { Memoize } from 'typescript-memoize';\nimport { describeExports } from './describe-exports';\nimport { existsSync, readFileSync } from 'fs';\nimport { readJSONSync } from 'fs-extra';\n\nconst debug = makeDebug('embroider:resolver');\nfunction logTransition<R extends ModuleRequest>(reason: string, before: R, after: R = before): R {\n if (after.isVirtual) {\n debug(`virtualized %s in %s because %s`, before.specifier, before.fromFile, reason);\n } else if (before.specifier !== after.specifier) {\n if (before.fromFile !== after.fromFile) {\n debug(\n `aliased and rehomed: %s to %s, from %s to %s because %s`,\n before.specifier,\n after.specifier,\n before.fromFile,\n after.fromFile,\n reason\n );\n } else {\n debug(`aliased: %s to %s in %s because`, before.specifier, after.specifier, before.fromFile, reason);\n }\n } else if (before.fromFile !== after.fromFile) {\n debug(`rehomed: %s from %s to %s because`, before.specifier, before.fromFile, after.fromFile, reason);\n } else {\n debug(`unchanged: %s in %s because %s`, before.specifier, before.fromFile, reason);\n }\n return after;\n}\n\nexport interface Options {\n renamePackages: {\n [fromName: string]: string;\n };\n renameModules: {\n [fromName: string]: string;\n };\n activeAddons: {\n [packageName: string]: string;\n };\n resolvableExtensions: string[];\n appRoot: string;\n engines: EngineConfig[];\n modulePrefix: string;\n podModulePrefix?: string;\n}\n\ninterface EngineConfig {\n packageName: string;\n activeAddons: { name: string; root: string }[];\n root: string;\n}\n\ntype MergeEntry =\n | {\n type: 'app-only';\n 'app-js': {\n localPath: string;\n packageRoot: string;\n fromPackageName: string;\n };\n }\n | {\n type: 'fastboot-only';\n 'fastboot-js': {\n localPath: string;\n packageRoot: string;\n fromPackageName: string;\n };\n }\n | {\n type: 'both';\n 'app-js': {\n localPath: string;\n packageRoot: string;\n fromPackageName: string;\n };\n 'fastboot-js': {\n localPath: string;\n packageRoot: string;\n fromPackageName: string;\n };\n };\n\ntype MergeMap = Map</* engine root dir */ string, Map</* withinEngineModuleName */ string, MergeEntry>>;\n\nconst compatPattern = /#embroider_compat\\/(?<type>[^\\/]+)\\/(?<rest>.*)/;\n\nexport interface ModuleRequest {\n specifier: string;\n fromFile: string;\n isVirtual: boolean;\n alias(newSpecifier: string): this;\n rehome(newFromFile: string): this;\n virtualize(virtualFilename: string): this;\n}\n\nclass NodeModuleRequest implements ModuleRequest {\n constructor(readonly specifier: string, readonly fromFile: string, readonly isVirtual = false) {}\n alias(specifier: string): this {\n return new NodeModuleRequest(specifier, this.fromFile) as this;\n }\n rehome(fromFile: string): this {\n return new NodeModuleRequest(this.specifier, fromFile) as this;\n }\n virtualize(filename: string) {\n return new NodeModuleRequest(filename, this.fromFile, true) as this;\n }\n}\n\n// This is generic because different build systems have different ways of\n// representing a found module, and we just pass those values through.\nexport type Resolution<T = unknown, E = unknown> = { type: 'found'; result: T } | { type: 'not_found'; err: E };\n\nexport type ResolverFunction<R extends ModuleRequest = ModuleRequest, Res extends Resolution = Resolution> = (\n request: R\n) => Promise<Res>;\n\nexport type SyncResolverFunction<R extends ModuleRequest = ModuleRequest, Res extends Resolution = Resolution> = (\n request: R\n) => Res;\n\nexport class Resolver {\n constructor(private options: Options) {}\n\n beforeResolve<R extends ModuleRequest>(request: R): R {\n if (request.specifier === '@embroider/macros') {\n // the macros package is always handled directly within babel (not\n // necessarily as a real resolvable package), so we should not mess with it.\n // It might not get compiled away until *after* our plugin has run, which is\n // why we need to know about it.\n return logTransition('early exit', request);\n }\n\n request = this.handleFastbootCompat(request);\n request = this.handleGlobalsCompat(request);\n request = this.handleLegacyAddons(request);\n request = this.handleRenaming(request);\n return this.preHandleExternal(request);\n }\n\n // This encapsulates the whole resolving process. Given a `defaultResolve`\n // that calls your build system's normal module resolver, this does both pre-\n // and post-resolution adjustments as needed to implement our compatibility\n // rules.\n //\n // Depending on the plugin architecture you're working in, it may be easier to\n // call beforeResolve and fallbackResolve directly, in which case matching the\n // details of the recursion to what this method does are your responsibility.\n async resolve<Req extends ModuleRequest, Res extends Resolution>(\n request: Req,\n defaultResolve: ResolverFunction<Req, Res>\n ): Promise<Res> {\n let gen = this.internalResolve<Req, Res, Promise<Res>>(request, defaultResolve);\n let out = gen.next();\n while (!out.done) {\n out = gen.next(await out.value);\n }\n return out.value;\n }\n\n // synchronous alternative to resolve() above. Because our own internals are\n // all synchronous, you can use this if your defaultResolve function is\n // synchronous.\n resolveSync<Req extends ModuleRequest, Res extends Resolution>(\n request: Req,\n defaultResolve: SyncResolverFunction<Req, Res>\n ): Res {\n let gen = this.internalResolve<Req, Res, Res>(request, defaultResolve);\n let out = gen.next();\n while (!out.done) {\n out = gen.next(out.value);\n }\n return out.value;\n }\n\n // Our core implementation is a generator so it can power both resolve() and\n // resolveSync()\n private *internalResolve<Req extends ModuleRequest, Res extends Resolution, Yielded>(\n request: Req,\n defaultResolve: (req: Req) => Yielded\n ): Generator<Yielded, Res, Res> {\n request = this.beforeResolve(request);\n let resolution = yield defaultResolve(request);\n\n switch (resolution.type) {\n case 'found':\n return resolution;\n case 'not_found':\n break;\n default:\n throw assertNever(resolution);\n }\n let nextRequest = this.fallbackResolve(request);\n if (nextRequest === request) {\n // no additional fallback is available.\n return resolution;\n }\n if (nextRequest.isVirtual) {\n // virtual requests are terminal, there is no more beforeResolve or\n // fallbackResolve around them. The defaultResolve is expected to know how\n // to implement them.\n return yield defaultResolve(nextRequest);\n }\n return yield* this.internalResolve(nextRequest, defaultResolve);\n }\n\n // Use standard NodeJS resolving, with our required compatibility rules on\n // top. This is a convenience method for calling resolveSync with the\n // defaultResolve already configured to be \"do the normal node thing\".\n nodeResolve(\n specifier: string,\n fromFile: string\n ):\n | { type: 'virtual'; filename: string; content: string }\n | { type: 'real'; filename: string }\n | { type: 'not_found'; err: Error } {\n let resolution = this.resolveSync(new NodeModuleRequest(specifier, fromFile), request => {\n if (request.isVirtual) {\n return {\n type: 'found',\n result: {\n type: 'virtual' as 'virtual',\n content: virtualContent(request.specifier),\n filename: request.specifier,\n },\n };\n }\n try {\n let filename = resolveModule.sync(request.specifier, {\n basedir: dirname(request.fromFile),\n extensions: this.options.resolvableExtensions,\n });\n return { type: 'found', result: { type: 'real' as 'real', filename } };\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n return { type: 'not_found', err };\n }\n });\n switch (resolution.type) {\n case 'not_found':\n return resolution;\n case 'found':\n return resolution.result;\n default:\n throw assertNever(resolution);\n }\n }\n\n owningPackage(fromFile: string): Package | undefined {\n return PackageCache.shared('embroider-stage3', this.options.appRoot).ownerOfFile(fromFile);\n }\n\n private logicalPackage(owningPackage: V2Package, file: string): V2Package {\n let logicalLocation = this.reverseSearchAppTree(owningPackage, file);\n if (logicalLocation) {\n let pkg = PackageCache.shared('embroider-stage3', this.options.appRoot).get(logicalLocation.owningEngine.root);\n if (!pkg.isV2Ember()) {\n throw new Error(`bug: all engines should be v2 addons by the time we see them here`);\n }\n return pkg;\n }\n return owningPackage;\n }\n\n private handleFastbootCompat<R extends ModuleRequest>(request: R): R {\n let match = decodeFastbootSwitch(request.fromFile);\n if (!match) {\n return request;\n }\n\n let section: 'app-js' | 'fastboot-js' | undefined;\n if (request.specifier === './browser') {\n section = 'app-js';\n } else if (request.specifier === './fastboot') {\n section = 'fastboot-js';\n }\n\n if (!section) {\n return request;\n }\n\n let pkg = this.owningPackage(match.filename);\n if (pkg) {\n let rel = withoutJSExt(explicitRelative(pkg.root, match.filename));\n let entry = this.mergeMap.get(pkg.root)?.get(rel);\n if (entry?.type === 'both') {\n return request.alias(entry[section].localPath).rehome(resolve(entry[section].packageRoot, 'package.json'));\n }\n }\n\n return request;\n }\n\n private handleGlobalsCompat<R extends ModuleRequest>(request: R): R {\n let match = compatPattern.exec(request.specifier);\n if (!match) {\n return request;\n }\n let { type, rest } = match.groups!;\n let fromPkg = this.owningPackage(request.fromFile);\n if (!fromPkg?.isV2Ember()) {\n return request;\n }\n let engine = this.owningEngine(fromPkg);\n\n switch (type) {\n case 'helpers':\n return this.resolveHelper(rest, engine, request);\n case 'components':\n return this.resolveComponent(rest, engine, request);\n case 'modifiers':\n return this.resolveModifier(rest, engine, request);\n case 'ambiguous':\n return this.resolveHelperOrComponent(rest, engine, request);\n default:\n throw new Error(`bug: unexepected #embroider_compat specifier: ${request.specifier}`);\n }\n }\n\n private resolveHelper<R extends ModuleRequest>(path: string, inEngine: EngineConfig, request: R): R {\n let target = this.parseGlobalPath(path, inEngine);\n return logTransition(\n 'resolveHelper',\n request,\n request.alias(`${target.packageName}/helpers/${target.memberName}`).rehome(resolve(inEngine.root, 'package.json'))\n );\n }\n\n private resolveComponent<R extends ModuleRequest>(path: string, inEngine: EngineConfig, request: R): R {\n let target = this.parseGlobalPath(path, inEngine);\n\n let hbsModule: string | null = null;\n let jsModule: string | null = null;\n\n // first, the various places our template might be.\n for (let candidate of this.componentTemplateCandidates(target.packageName)) {\n let resolution = this.nodeResolve(\n `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`,\n target.from\n );\n if (resolution.type === 'real') {\n hbsModule = resolution.filename;\n break;\n }\n }\n\n // then the various places our javascript might be.\n for (let candidate of this.componentJSCandidates(target.packageName)) {\n let resolution = this.nodeResolve(\n `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`,\n target.from\n );\n // .hbs is a resolvable extension for us, so we need to exclude it here.\n // It matches as a priority lower than .js, so finding an .hbs means\n // there's definitely not a .js.\n if (resolution.type === 'real' && !resolution.filename.endsWith('.hbs')) {\n jsModule = resolution.filename;\n break;\n }\n }\n\n if (hbsModule) {\n return logTransition(\n `resolveComponent found legacy HBS`,\n request,\n request.virtualize(virtualPairComponent(hbsModule, jsModule))\n );\n } else if (jsModule) {\n return logTransition(`resolveComponent found only JS`, request, request.alias(jsModule).rehome(target.from));\n } else {\n return logTransition(`resolveComponent failed`, request);\n }\n }\n\n private resolveHelperOrComponent<R extends ModuleRequest>(path: string, inEngine: EngineConfig, request: R): R {\n // resolveHelper just rewrites our request to one that should target the\n // component, so here to resolve the ambiguity we need to actually resolve\n // that candidate to see if it works.\n let helperCandidate = this.resolveHelper(path, inEngine, request);\n let helperMatch = this.nodeResolve(helperCandidate.specifier, helperCandidate.fromFile);\n if (helperMatch.type === 'real') {\n return logTransition('ambiguous case matched a helper', request, helperCandidate);\n }\n\n // unlike resolveHelper, resolveComponent already does pre-resolution in\n // order to deal with its own internal ambiguity around JS vs HBS vs\n // colocation.≥\n let componentMatch = this.resolveComponent(path, inEngine, request);\n if (componentMatch !== request) {\n return logTransition('ambiguous case matched a cmoponent', request, componentMatch);\n }\n\n // this is the hard failure case -- we were supposed to find something and\n // didn't. Let the normal resolution process progress so the user gets a\n // normal build error.\n return logTransition('ambiguous case failing', request);\n }\n\n private resolveModifier<R extends ModuleRequest>(path: string, inEngine: EngineConfig, request: R): R {\n let target = this.parseGlobalPath(path, inEngine);\n return logTransition(\n 'resolveModifier',\n request,\n request\n .alias(`${target.packageName}/modifiers/${target.memberName}`)\n .rehome(resolve(inEngine.root, 'package.json'))\n );\n }\n\n private *componentTemplateCandidates(inPackageName: string) {\n yield { prefix: '/templates/components/', suffix: '' };\n yield { prefix: '/components/', suffix: '/template' };\n\n let pods = this.podPrefix(inPackageName);\n if (pods) {\n yield { prefix: `${pods}/components/`, suffix: '/template' };\n }\n }\n\n private *componentJSCandidates(inPackageName: string) {\n yield { prefix: '/components/', suffix: '' };\n yield { prefix: '/components/', suffix: '/component' };\n\n let pods = this.podPrefix(inPackageName);\n if (pods) {\n yield { prefix: `${pods}/components/`, suffix: '/component' };\n }\n }\n\n private podPrefix(targetPackageName: string) {\n if (targetPackageName === this.options.modulePrefix && this.options.podModulePrefix) {\n if (!this.options.podModulePrefix.startsWith(this.options.modulePrefix)) {\n throw new Error(\n `Your podModulePrefix (${this.options.podModulePrefix}) does not start with your app module prefix (${this.options.modulePrefix}). Not gonna support that silliness.`\n );\n }\n return this.options.podModulePrefix.slice(this.options.modulePrefix.length);\n }\n }\n\n // for paths that come from non-strict templates\n private parseGlobalPath(path: string, inEngine: EngineConfig) {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n return { packageName: parts[0], memberName: parts[1], from: resolve(inEngine.root, 'pacakge.json') };\n } else {\n return { packageName: inEngine.packageName, memberName: path, from: resolve(inEngine.root, 'pacakge.json') };\n }\n }\n\n private engineConfig(packageName: string): EngineConfig | undefined {\n return this.options.engines.find(e => e.packageName === packageName);\n }\n\n // This is where we figure out how all the classic treeForApp merging bottoms\n // out.\n @Memoize()\n private get mergeMap(): MergeMap {\n let packageCache = PackageCache.shared('embroider-stage3', this.options.appRoot);\n let result: MergeMap = new Map();\n for (let engine of this.options.engines) {\n let engineModules: Map<string, MergeEntry> = new Map();\n for (let addonConfig of engine.activeAddons) {\n let addon = packageCache.get(addonConfig.root);\n if (!addon.isV2Addon()) {\n continue;\n }\n\n let appJS = addon.meta['app-js'];\n if (appJS) {\n for (let [inEngineName, inAddonName] of Object.entries(appJS)) {\n if (!inEngineName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares app-js in its package.json with the illegal name \"${inEngineName}\". It must start with \"./\" to make it clear that it's relative to the app`\n );\n }\n if (!inAddonName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares app-js in its package.json with the illegal name \"${inAddonName}\". It must start with \"./\" to make it clear that it's relative to the addon`\n );\n }\n inEngineName = withoutJSExt(inEngineName);\n let prevEntry = engineModules.get(inEngineName);\n switch (prevEntry?.type) {\n case undefined:\n engineModules.set(inEngineName, {\n type: 'app-only',\n 'app-js': {\n localPath: inAddonName,\n packageRoot: addon.root,\n fromPackageName: addon.name,\n },\n });\n break;\n case 'app-only':\n case 'both':\n // first match wins, so this one is shadowed\n break;\n case 'fastboot-only':\n engineModules.set(inEngineName, {\n type: 'both',\n 'app-js': {\n localPath: inAddonName,\n packageRoot: addon.root,\n fromPackageName: addon.name,\n },\n 'fastboot-js': prevEntry['fastboot-js'],\n });\n break;\n }\n }\n }\n\n let fastbootJS = addon.meta['fastboot-js'];\n if (fastbootJS) {\n for (let [inEngineName, inAddonName] of Object.entries(fastbootJS)) {\n if (!inEngineName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares fastboot-js in its package.json with the illegal name \"${inEngineName}\". It must start with \"./\" to make it clear that it's relative to the app`\n );\n }\n if (!inAddonName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares fastboot-js in its package.json with the illegal name \"${inAddonName}\". It must start with \"./\" to make it clear that it's relative to the addon`\n );\n }\n inEngineName = withoutJSExt(inEngineName);\n let prevEntry = engineModules.get(inEngineName);\n switch (prevEntry?.type) {\n case undefined:\n engineModules.set(inEngineName, {\n type: 'fastboot-only',\n 'fastboot-js': {\n localPath: inAddonName,\n packageRoot: addon.root,\n fromPackageName: addon.name,\n },\n });\n break;\n case 'fastboot-only':\n case 'both':\n // first match wins, so this one is shadowed\n break;\n case 'app-only':\n engineModules.set(inEngineName, {\n type: 'both',\n 'fastboot-js': {\n localPath: inAddonName,\n packageRoot: addon.root,\n fromPackageName: addon.name,\n },\n 'app-js': prevEntry['app-js'],\n });\n break;\n }\n }\n }\n }\n result.set(engine.root, engineModules);\n }\n return result;\n }\n\n owningEngine(pkg: Package) {\n if (pkg.root === this.options.appRoot) {\n // the app is always the first engine\n return this.options.engines[0];\n }\n let owningEngine = this.options.engines.find(e => e.activeAddons.find(a => a.root === pkg.root));\n if (!owningEngine) {\n throw new Error(\n `bug in @embroider/core/src/module-resolver: cannot figure out the owning engine for ${pkg.root}`\n );\n }\n return owningEngine;\n }\n\n private handleLegacyAddons<R extends ModuleRequest>(request: R): R {\n let packageCache = PackageCache.shared('embroider-stage3', this.options.appRoot);\n\n // first we handle output requests from moved packages\n let pkg = this.owningPackage(request.fromFile);\n if (!pkg) {\n return request;\n }\n let originalRoot = this.legacyAddonsIndex.v2toV1.get(pkg.root);\n if (originalRoot) {\n request = logTransition(\n 'outbound from moved v1 addon',\n request,\n request.rehome(resolve(originalRoot, 'package.json'))\n );\n pkg = packageCache.get(originalRoot)!;\n }\n\n // then we handle inbound requests to moved packages\n let packageName = getPackageName(request.specifier);\n if (packageName && packageName !== pkg.name) {\n // non-relative, non-self request, so check if it aims at a rewritten addon\n try {\n let target = PackageCache.shared('embroider-stage3', this.options.appRoot).resolve(packageName, pkg);\n if (target) {\n let movedRoot = this.legacyAddonsIndex.v1ToV2.get(target.root);\n if (movedRoot) {\n request = logTransition(\n 'inbound to moved v1 addon',\n request,\n this.resolveWithinPackage(request, packageCache.get(movedRoot))\n );\n }\n }\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n }\n }\n\n return request;\n }\n\n @Memoize()\n private get legacyAddonsIndex(): { v1ToV2: Map<string, string>; v2toV1: Map<string, string> } {\n let addonsDir = resolve(this.options.appRoot, 'node_modules', '.embroider', 'addons');\n let indexFile = resolve(addonsDir, 'v1-addon-index.json');\n if (existsSync(indexFile)) {\n let { v1Addons } = readJSONSync(indexFile) as { v1Addons: Record<string, string> };\n return {\n v1ToV2: new Map(\n Object.entries(v1Addons).map(([oldRoot, relativeNewRoot]) => [oldRoot, resolve(addonsDir, relativeNewRoot)])\n ),\n v2toV1: new Map(\n Object.entries(v1Addons).map(([oldRoot, relativeNewRoot]) => [resolve(addonsDir, relativeNewRoot), oldRoot])\n ),\n };\n }\n return { v1ToV2: new Map(), v2toV1: new Map() };\n }\n\n private handleRenaming<R extends ModuleRequest>(request: R): R {\n if (request.isVirtual) {\n return request;\n }\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n return request;\n }\n\n for (let [candidate, replacement] of Object.entries(this.options.renameModules)) {\n if (candidate === request.specifier) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n for (let extension of this.options.resolvableExtensions) {\n if (candidate === request.specifier + '/index' + extension) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n if (candidate === request.specifier + extension) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n }\n }\n\n if (this.options.renamePackages[packageName]) {\n return logTransition(\n `renamePackages`,\n request,\n request.alias(request.specifier.replace(packageName, this.options.renamePackages[packageName]))\n );\n }\n\n let pkg = this.owningPackage(request.fromFile);\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n if (pkg.meta['auto-upgraded'] && pkg.name === packageName) {\n // we found a self-import, resolve it for them. Only auto-upgraded\n // packages get this help, v2 packages are natively supposed to make their\n // own modules resolvable, and we want to push them all to do that\n // correctly.\n return logTransition(`v1 self-import`, request, this.resolveWithinPackage(request, pkg));\n }\n\n return request;\n }\n\n private resolveWithinPackage<R extends ModuleRequest>(request: R, pkg: Package): R {\n if ('exports' in pkg.packageJSON) {\n // this is the easy case -- a package that uses exports can safely resolve\n // its own name, so it's enough to let it resolve the (self-targeting)\n // specifier from its own package root.\n return request.rehome(resolve(pkg.root, 'package.json'));\n } else {\n // otherwise we need to just assume that internal naming is simple\n return request.alias(request.specifier.replace(pkg.name, '.')).rehome(resolve(pkg.root, 'package.json'));\n }\n }\n\n private preHandleExternal<R extends ModuleRequest>(request: R): R {\n if (request.isVirtual) {\n return request;\n }\n let { specifier, fromFile } = request;\n let pkg = this.owningPackage(fromFile);\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n let packageName = getPackageName(specifier);\n if (!packageName) {\n // This is a relative import. We don't automatically externalize those\n // because it's rare, and by keeping them static we give better errors. But\n // we do allow them to be explicitly externalized by the package author (or\n // a compat adapter). In the metadata, they would be listed in\n // package-relative form, so we need to convert this specifier to that.\n let absoluteSpecifier = resolve(dirname(fromFile), specifier);\n let packageRelativeSpecifier = explicitRelative(pkg.root, absoluteSpecifier);\n if (isExplicitlyExternal(packageRelativeSpecifier, pkg)) {\n let publicSpecifier = absoluteSpecifier.replace(pkg.root, pkg.name);\n return external('beforeResolve', request, publicSpecifier);\n }\n\n // if the requesting file is in an addon's app-js, the relative request\n // should really be understood as a request for a module in the containing\n // engine\n let logicalLocation = this.reverseSearchAppTree(pkg, request.fromFile);\n if (logicalLocation) {\n return logTransition(\n 'beforeResolve: relative import in app-js',\n request,\n request.rehome(resolve(logicalLocation.owningEngine.root, logicalLocation.inAppName))\n );\n }\n\n return request;\n }\n\n // absolute package imports can also be explicitly external based on their\n // full specifier name\n if (isExplicitlyExternal(specifier, pkg)) {\n return external('beforeResolve', request, specifier);\n }\n\n if (!pkg.meta['auto-upgraded'] && emberVirtualPeerDeps.has(packageName)) {\n // Native v2 addons are allowed to use the emberVirtualPeerDeps like\n // `@glimmer/component`. And like all v2 addons, it's important that they\n // see those dependencies after those dependencies have been converted to\n // v2.\n //\n // But unlike auto-upgraded addons, native v2 addons are not necessarily\n // copied out of their original place in node_modules. And from that\n // original place they might accidentally resolve the emberVirtualPeerDeps\n // that are present there in v1 format.\n //\n // So before we let normal resolving happen, we adjust these imports to\n // point at the app's copies instead.\n if (!this.options.activeAddons[packageName]) {\n throw new Error(`${pkg.name} is trying to import the app's ${packageName} package, but it seems to be missing`);\n }\n let newHome = resolve(this.options.appRoot, 'package.json');\n return logTransition(`emberVirtualPeerDeps in v2 addon`, request, request.rehome(newHome));\n }\n\n // if this file is part of an addon's app-js, it's really the logical\n // package to which it belongs (normally the app) that affects some policy\n // choices about what it can import\n let logicalPackage = this.logicalPackage(pkg, fromFile);\n\n if (logicalPackage.meta['auto-upgraded'] && !logicalPackage.hasDependency('ember-auto-import')) {\n try {\n let dep = PackageCache.shared('embroider-stage3', this.options.appRoot).resolve(packageName, logicalPackage);\n if (!dep.isEmberPackage()) {\n // classic ember addons can only import non-ember dependencies if they\n // have ember-auto-import.\n return external('v1 package without auto-import', request, specifier);\n }\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n }\n }\n\n // assertions on what native v2 addons can import\n if (!pkg.meta['auto-upgraded']) {\n if (\n !pkg.meta['auto-upgraded'] &&\n !appImportInAppTree(pkg, logicalPackage, packageName) &&\n !reliablyResolvable(pkg, packageName)\n ) {\n throw new Error(\n `${pkg.name} is trying to import from ${packageName} but that is not one of its explicit dependencies`\n );\n }\n }\n return request;\n }\n\n fallbackResolve<R extends ModuleRequest>(request: R): R {\n let { specifier, fromFile } = request;\n\n if (compatPattern.test(specifier)) {\n // Some kinds of compat requests get rewritten into other things\n // deterministically. For example, \"#embroider_compat/helpers/whatever\"\n // means only \"the-current-engine/helpers/whatever\", and if that doesn't\n // actually exist it's that path that will show up as a missing import.\n //\n // But others have an ambiguous meaning. For example,\n // #embroider_compat/components/whatever can mean several different\n // things. If we're unable to find any of them, the actual\n // \"#embroider_compat\" request will fall through all the way to here.\n //\n // In that case, we don't want to externalize that failure. We know it's\n // not a classic runtime thing. It's better to let it be a build error\n // here.\n return request;\n }\n\n let pkg = this.owningPackage(fromFile);\n if (!pkg || !pkg.isV2Ember()) {\n return logTransition('fallbackResolve: not in an ember package', request);\n }\n\n let packageName = getPackageName(specifier);\n if (!packageName) {\n // this is a relative import\n\n let withinEngine = this.engineConfig(pkg.name);\n if (withinEngine) {\n // it's a relative import inside an engine (which also means app), which\n // means we may need to satisfy the request via app tree merging.\n let appJSMatch = this.searchAppTree(\n request,\n withinEngine,\n explicitRelative(pkg.root, resolve(dirname(fromFile), specifier))\n );\n if (appJSMatch) {\n return logTransition('fallbackResolve: relative appJsMatch', request, appJSMatch);\n } else {\n return logTransition('fallbackResolve: relative appJs search failure', request);\n }\n } else {\n // nothing else to do for relative imports\n return logTransition('fallbackResolve: relative failure', request);\n }\n }\n\n // auto-upgraded packages can fall back to the set of known active addons\n //\n // v2 packages can fall back to the set of known active addons only to find\n // themselves (which is needed due to app tree merging)\n if ((pkg.meta['auto-upgraded'] || packageName === pkg.name) && this.options.activeAddons[packageName]) {\n return logTransition(\n `activeAddons`,\n request,\n this.resolveWithinPackage(\n request,\n PackageCache.shared('embroider-stage3', this.options.appRoot).get(this.options.activeAddons[packageName])\n )\n );\n }\n\n let targetingEngine = this.engineConfig(packageName);\n if (targetingEngine) {\n let appJSMatch = this.searchAppTree(request, targetingEngine, specifier.replace(packageName, '.'));\n if (appJSMatch) {\n return logTransition('fallbackResolve: non-relative appJsMatch', request, appJSMatch);\n }\n }\n\n let logicalLocation = this.reverseSearchAppTree(pkg, request.fromFile);\n if (logicalLocation) {\n // the requesting file is in an addon's appTree. We didn't succeed in\n // resolving this (non-relative) request from inside the actual addon, so\n // next try to resolve it from the corresponding logical location in the\n // app.\n return logTransition(\n 'fallbackResolve: retry from logical home of app-js file',\n request,\n request.rehome(resolve(logicalLocation.owningEngine.root, logicalLocation.inAppName))\n );\n }\n\n if (pkg.meta['auto-upgraded']) {\n // auto-upgraded packages can fall back to attempting to find dependencies at\n // runtime. Native v2 packages can only get this behavior in the\n // isExplicitlyExternal case above because they need to explicitly ask for\n // externals.\n return external('v1 catch-all fallback', request, specifier);\n } else {\n // native v2 packages don't automatically externalize *everything* the way\n // auto-upgraded packages do, but they still externalize known and approved\n // ember virtual packages (like @ember/component)\n if (emberVirtualPackages.has(packageName)) {\n return external('emberVirtualPackages', request, specifier);\n }\n }\n\n // this is falling through with the original specifier which was\n // non-resolvable, which will presumably cause a static build error in stage3.\n return logTransition('fallbackResolve final exit', request);\n }\n\n private searchAppTree<R extends ModuleRequest>(\n request: R,\n engine: EngineConfig,\n inEngineSpecifier: string\n ): R | undefined {\n inEngineSpecifier = withoutJSExt(inEngineSpecifier);\n let entry = this.mergeMap.get(engine.root)?.get(inEngineSpecifier);\n switch (entry?.type) {\n case undefined:\n return undefined;\n case 'app-only':\n return request.alias(entry['app-js'].localPath).rehome(resolve(entry['app-js'].packageRoot, 'package.json'));\n case 'fastboot-only':\n return request\n .alias(entry['fastboot-js'].localPath)\n .rehome(resolve(entry['fastboot-js'].packageRoot, 'package.json'));\n case 'both':\n let foundAppJS = this.nodeResolve(\n entry['app-js'].localPath,\n resolve(entry['app-js'].packageRoot, 'package.json')\n );\n if (foundAppJS.type !== 'real') {\n throw new Error(\n `${entry['app-js'].fromPackageName} declared ${inEngineSpecifier} in packageJSON.ember-addon.app-js, but that module does not exist`\n );\n }\n let { names } = describeExports(readFileSync(foundAppJS.filename, 'utf8'), {});\n return request.virtualize(fastbootSwitch(request.specifier, request.fromFile, names));\n }\n }\n\n // check whether the given file with the given owningPackage is an addon's\n // appTree, and if so return the notional location within the app (or owning\n // engine) that it \"logically\" lives at.\n private reverseSearchAppTree(\n owningPackage: Package,\n fromFile: string\n ): { owningEngine: EngineConfig; inAppName: string } | undefined {\n // if the requesting file is in an addon's app-js, the request should\n // really be understood as a request for a module in the containing engine\n if (owningPackage.isV2Addon()) {\n let sections = [owningPackage.meta['app-js'], owningPackage.meta['fastboot-js']];\n for (let section of sections) {\n if (section) {\n let fromPackageRelativePath = explicitRelative(owningPackage.root, fromFile);\n for (let [inAppName, inAddonName] of Object.entries(section)) {\n if (inAddonName === fromPackageRelativePath) {\n return { owningEngine: this.owningEngine(owningPackage), inAppName };\n }\n }\n }\n }\n }\n }\n\n // check if this file is resolvable as a global component, and if so return\n // its dasherized name\n reverseComponentLookup(filename: string): string | undefined {\n const owningPackage = this.owningPackage(filename);\n if (!owningPackage?.isV2Ember()) {\n return;\n }\n let engineConfig = this.options.engines.find(e => e.root === owningPackage.root);\n if (engineConfig) {\n // we're directly inside an engine, so we're potentially resolvable as a\n // global component\n\n // this kind of mapping is not true in general for all packages, but it\n // *is* true for all classical engines (which includes apps) since they\n // don't support package.json `exports`. As for a future v2 engine or app:\n // this whole method is only relevant for implementing packageRules, which\n // should only be for classic stuff. v2 packages should do the right\n // things from the beginning and not need packageRules about themselves.\n let inAppName = explicitRelative(engineConfig.root, filename);\n\n return this.tryReverseComponent(engineConfig.packageName, inAppName);\n }\n\n let engineInfo = this.reverseSearchAppTree(owningPackage, filename);\n if (engineInfo) {\n // we're in some addon's app tree, so we're potentially resolvable as a\n // global component\n return this.tryReverseComponent(engineInfo.owningEngine.packageName, engineInfo.inAppName);\n }\n }\n\n private tryReverseComponent(inEngineName: string, relativePath: string): string | undefined {\n let extensionless = relativePath.replace(extensionsPattern(this.options.resolvableExtensions), '');\n let candidates = [...this.componentJSCandidates(inEngineName), ...this.componentTemplateCandidates(inEngineName)];\n for (let candidate of candidates) {\n if (extensionless.startsWith(`.${candidate.prefix}`) && extensionless.endsWith(candidate.suffix)) {\n return extensionless.slice(candidate.prefix.length + 1, extensionless.length - candidate.suffix.length);\n }\n }\n return undefined;\n }\n}\n\nfunction isExplicitlyExternal(specifier: string, fromPkg: V2Package): boolean {\n return Boolean(fromPkg.isV2Addon() && fromPkg.meta['externals'] && fromPkg.meta['externals'].includes(specifier));\n}\n\n// we don't want to allow things that resolve only by accident that are likely\n// to break in other setups. For example: import your dependencies'\n// dependencies, or importing your own name from within a monorepo (which will\n// work because of the symlinking) without setting up \"exports\" (which makes\n// your own name reliably resolvable)\nfunction reliablyResolvable(pkg: V2Package, packageName: string) {\n if (pkg.hasDependency(packageName)) {\n return true;\n }\n\n if (pkg.name === packageName && pkg.packageJSON.exports) {\n return true;\n }\n\n if (emberVirtualPeerDeps.has(packageName) || emberVirtualPackages.has(packageName)) {\n return true;\n }\n\n return false;\n}\n\n//\nfunction appImportInAppTree(inPackage: Package, inLogicalPackage: Package, importedPackageName: string): boolean {\n return inPackage !== inLogicalPackage && importedPackageName === inLogicalPackage.name;\n}\n\nfunction external<R extends ModuleRequest>(label: string, request: R, specifier: string): R {\n let filename = virtualExternalModule(specifier);\n return logTransition(label, request, request.virtualize(filename));\n}\n\n// this is specifically for app-js handling, where only .js and .hbs are legal\n// extensiosn, and only .js is allowed to be an *implied* extension (.hbs must\n// be explicit). So when normalizing such paths, it's only a .js suffix that we\n// must remove.\nfunction withoutJSExt(filename: string): string {\n return filename.replace(/\\.js$/, '');\n}\n"]}
|
package/src/options.d.ts
CHANGED
package/src/options.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["options.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["options.ts"],"names":[],"mappings":";;;AAmFA,SAAgB,mBAAmB,CAAC,OAAiB;IACnD,IAAI,QAAQ,GAAG;QACb,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,KAAK;QACvB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;QAClB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,uBAAuB,EAAE,eAAkC;KAC5D,CAAC;IACF,IAAI,OAAO,EAAE;QACX,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KACzC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAfD,kDAeC","sourcesContent":["export default interface Options {\n // When true, we statically resolve all template helpers at build time. This\n // causes unused helpers to be left out of the build (\"tree shaking\" of\n // helpers).\n //\n // Defaults to false, which gives you greater compatibility with classic Ember\n // apps at the cost of bigger builds.\n //\n // Enabling this is a prerequisite for route splitting.\n staticHelpers?: boolean;\n\n // When true, we statically resolve all modifiers at build time. This\n // causes unused modifiers to be left out of the build (\"tree shaking\" of\n // modifiers).\n //\n // Defaults to false, which gives you greater compatibility with classic Ember\n // apps at the cost of bigger builds.\n //\n // Enabling this is a prerequisite for route splitting.\n staticModifiers?: boolean;\n\n // When true, we statically resolve all components at build time. This causes\n // unused components to be left out of the build (\"tree shaking\" of\n // components).\n //\n // Defaults to false, which gives you greater compatibility with classic Ember\n // apps at the cost of bigger builds.\n //\n // Enabling this is a prerequisite for route splitting.\n staticComponents?: boolean;\n\n // Enables per-route code splitting. Any route names that match these patterns\n // will be split out of the initial app payload. If you use this, you must\n // also add @embroider/router to your app. See [@embroider/router's\n // README](https://github.com/embroider-build/embroider/blob/main/packages/router/README.md)\n splitAtRoutes?: (RegExp | string)[];\n\n // Every file within your application's `app` directory is categorized as a\n // component, helper, modifier, route, route template, controller, or \"other\".\n //\n // This option lets you decide which \"other\" files should be loaded\n // statically. By default, all \"other\" files will be included in the build and\n // registered with Ember's runtime loader, because we can't know if somebody\n // is going to try to access them dynamically via Ember's resolver or AMD\n // runtime `require`.\n //\n // If you know that your files are only ever imported, you can list them here\n // and then they will only be included exactly where they're needed.\n //\n // Provide a list of directories or files relative to `/app`. For example\n //\n // staticAppPaths: ['lib']\n //\n // means that everything under your-project/app/lib will be loaded statically.\n //\n // This option has no effect on components (which are governed by\n // staticComponents), helpers (which are governed by staticHelpers), modifiers\n // (which are governed by staticModifiers) or the route-specific files (routes,\n // route templates, and controllers which are governed by splitAtRoutes).\n staticAppPaths?: string[];\n\n // By default, all modules that get imported into the app go through Babel, so\n // that all code will conform with your Babel targets. This option allows you\n // to turn Babel off for a particular package. You might need this to work\n // around a transpiler bug or you might use this as a build-performance\n // optimization if you've manually verified that a particular package doesn't\n // need transpilation to be safe in your target browsers.\n skipBabel?: { package: string; semverRange?: string }[];\n\n // This is a performance optimization that can help you avoid the \"Your build\n // is slower because some babel plugins are non-serializable\" penalty. If you\n // provide the locations of known non-serializable objects, we can discover\n // them and make them serializable.\n //\n // resolve is a list of paths to resolve, in a chain. This lets you resolve\n // your dependencies' dependencies, like: resolve: ['your-dependency',\n // 'inner-dependency/lib/transform']\n //\n // useMethod optionally lets you pick which property within the module to use.\n // If not provided, we use the module.exports itself.\n pluginHints?: { resolve: string[]; useMethod?: string }[];\n}\n\nexport function optionsWithDefaults(options?: Options): Required<Options> {\n let defaults = {\n staticHelpers: false,\n staticModifiers: false,\n staticComponents: false,\n splitAtRoutes: [],\n staticAppPaths: [],\n skipBabel: [],\n pluginHints: [],\n implicitModulesStrategy: 'relativePaths' as 'relativePaths',\n };\n if (options) {\n return Object.assign(defaults, options);\n }\n return defaults;\n}\n"]}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
export declare function virtualContent(filename: string): string;
|
2
|
+
export declare function virtualExternalModule(specifier: string): string;
|
3
|
+
export declare function virtualPairComponent(hbsModule: string, jsModule: string | null): string;
|
4
|
+
export declare function fastbootSwitch(specifier: string, fromFile: string, names: Set<string>): string;
|
5
|
+
export declare function decodeFastbootSwitch(filename: string): {
|
6
|
+
names: string[];
|
7
|
+
hasDefaultExport: boolean;
|
8
|
+
filename: string;
|
9
|
+
} | undefined;
|
@@ -0,0 +1,131 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.decodeFastbootSwitch = exports.fastbootSwitch = exports.virtualPairComponent = exports.virtualExternalModule = exports.virtualContent = void 0;
|
4
|
+
const path_1 = require("path");
|
5
|
+
const _1 = require(".");
|
6
|
+
const js_handlebars_1 = require("./js-handlebars");
|
7
|
+
const externalPrefix = '/@embroider/external/';
|
8
|
+
// Given a filename that was passed to your ModuleRequest's `virtualize()`,
|
9
|
+
// this produces the corresponding contents. It's a static, stateless function
|
10
|
+
// because we recognize that that process that did resolution might not be the
|
11
|
+
// same one that loads the content.
|
12
|
+
function virtualContent(filename) {
|
13
|
+
if (filename.startsWith(externalPrefix)) {
|
14
|
+
return externalShim({ moduleName: filename.slice(externalPrefix.length) });
|
15
|
+
}
|
16
|
+
let match = decodeVirtualPairComponent(filename);
|
17
|
+
if (match) {
|
18
|
+
return pairedComponentShim(match);
|
19
|
+
}
|
20
|
+
let fb = decodeFastbootSwitch(filename);
|
21
|
+
if (fb) {
|
22
|
+
return fastbootSwitchTemplate(fb);
|
23
|
+
}
|
24
|
+
throw new Error(`not an @embroider/core virtual file: ${filename}`);
|
25
|
+
}
|
26
|
+
exports.virtualContent = virtualContent;
|
27
|
+
const externalShim = (0, js_handlebars_1.compile)(`
|
28
|
+
{{#if (eq moduleName "require")}}
|
29
|
+
const m = window.requirejs;
|
30
|
+
{{else}}
|
31
|
+
const m = window.require("{{{js-string-escape moduleName}}}");
|
32
|
+
{{/if}}
|
33
|
+
{{!-
|
34
|
+
There are plenty of hand-written AMD defines floating around
|
35
|
+
that lack this, and they will break when other build systems
|
36
|
+
encounter them.
|
37
|
+
|
38
|
+
As far as I can tell, Ember's loader was already treating this
|
39
|
+
case as a module, so in theory we aren't breaking anything by
|
40
|
+
marking it as such when other packagers come looking.
|
41
|
+
|
42
|
+
todo: get review on this part.
|
43
|
+
-}}
|
44
|
+
if (m.default && !m.__esModule) {
|
45
|
+
m.__esModule = true;
|
46
|
+
}
|
47
|
+
module.exports = m;
|
48
|
+
`);
|
49
|
+
const pairedComponentShim = (0, js_handlebars_1.compile)(`
|
50
|
+
import { setComponentTemplate } from "@ember/component";
|
51
|
+
import template from "{{{js-string-escape relativeHBSModule}}}";
|
52
|
+
{{#if relativeJSModule}}
|
53
|
+
import component from "{{{js-string-escape relativeJSModule}}}";
|
54
|
+
export default setComponentTemplate(template, component);
|
55
|
+
{{else}}
|
56
|
+
import templateOnlyComponent from "@ember/component/template-only";
|
57
|
+
export default setComponentTemplate(template, templateOnlyComponent(undefined, "{{{js-string-escape debugName}}}"));
|
58
|
+
{{/if}}
|
59
|
+
`);
|
60
|
+
function virtualExternalModule(specifier) {
|
61
|
+
return externalPrefix + specifier;
|
62
|
+
}
|
63
|
+
exports.virtualExternalModule = virtualExternalModule;
|
64
|
+
const pairComponentMarker = '/embroider-pair-component';
|
65
|
+
const pairComponentPattern = /^(?<hbsModule>.*)\/(?<jsModule>[^\/]*)\/embroider-pair-component$/;
|
66
|
+
function virtualPairComponent(hbsModule, jsModule) {
|
67
|
+
let relativeJSModule = '';
|
68
|
+
if (jsModule) {
|
69
|
+
// The '/j/' here represents the relativeJSModule itself that we're about to
|
70
|
+
// use to create the complete filename. It's there to get the right number
|
71
|
+
// of `..` in our relative path.
|
72
|
+
relativeJSModule = (0, _1.explicitRelative)(hbsModule + '/j/', jsModule);
|
73
|
+
}
|
74
|
+
return `${hbsModule}/${encodeURIComponent(relativeJSModule)}${pairComponentMarker}`;
|
75
|
+
}
|
76
|
+
exports.virtualPairComponent = virtualPairComponent;
|
77
|
+
function decodeVirtualPairComponent(filename) {
|
78
|
+
let match = pairComponentPattern.exec(filename);
|
79
|
+
if (!match) {
|
80
|
+
return null;
|
81
|
+
}
|
82
|
+
let { hbsModule, jsModule } = match.groups;
|
83
|
+
// target our real hbs module from our virtual module
|
84
|
+
let relativeHBSModule = (0, _1.explicitRelative)((0, path_1.dirname)(filename), hbsModule);
|
85
|
+
return {
|
86
|
+
relativeHBSModule,
|
87
|
+
relativeJSModule: decodeURIComponent(jsModule) || null,
|
88
|
+
debugName: (0, path_1.basename)(relativeHBSModule).replace(/\.(js|hbs)$/, ''),
|
89
|
+
};
|
90
|
+
}
|
91
|
+
const fastbootSwitchSuffix = '/embroider_fastboot_switch';
|
92
|
+
const fastbootSwitchPattern = /(?<original>.+)\/embroider_fastboot_switch(?:\?names=(?<names>.+))?$/;
|
93
|
+
function fastbootSwitch(specifier, fromFile, names) {
|
94
|
+
let filename = `${(0, path_1.resolve)((0, path_1.dirname)(fromFile), specifier)}${fastbootSwitchSuffix}`;
|
95
|
+
if (names.size > 0) {
|
96
|
+
return `${filename}?names=${[...names].join(',')}`;
|
97
|
+
}
|
98
|
+
else {
|
99
|
+
return filename;
|
100
|
+
}
|
101
|
+
}
|
102
|
+
exports.fastbootSwitch = fastbootSwitch;
|
103
|
+
function decodeFastbootSwitch(filename) {
|
104
|
+
var _a, _b, _c;
|
105
|
+
let match = fastbootSwitchPattern.exec(filename);
|
106
|
+
if (match) {
|
107
|
+
let names = (_c = (_b = (_a = match.groups) === null || _a === void 0 ? void 0 : _a.names) === null || _b === void 0 ? void 0 : _b.split(',')) !== null && _c !== void 0 ? _c : [];
|
108
|
+
return {
|
109
|
+
names: names.filter(name => name !== 'default'),
|
110
|
+
hasDefaultExport: names.includes('default'),
|
111
|
+
filename: match.groups.original,
|
112
|
+
};
|
113
|
+
}
|
114
|
+
}
|
115
|
+
exports.decodeFastbootSwitch = decodeFastbootSwitch;
|
116
|
+
const fastbootSwitchTemplate = (0, js_handlebars_1.compile)(`
|
117
|
+
import { macroCondition, getGlobalConfig, importSync } from '@embroider/macros';
|
118
|
+
let mod;
|
119
|
+
if (macroCondition(getGlobalConfig().fastboot?.isRunning)){
|
120
|
+
mod = importSync('./fastboot');
|
121
|
+
} else {
|
122
|
+
mod = importSync('./browser');
|
123
|
+
}
|
124
|
+
{{#if hasDefaultExport}}
|
125
|
+
export default mod.default;
|
126
|
+
{{/if}}
|
127
|
+
{{#each names as |name|}}
|
128
|
+
export const {{name}} = mod.{{name}};
|
129
|
+
{{/each}}
|
130
|
+
`);
|
131
|
+
//# sourceMappingURL=virtual-content.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtual-content.js","sourceRoot":"","sources":["virtual-content.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAClD,wBAAqC;AACrC,mDAA0C;AAE1C,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAE/C,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;AAC9E,mCAAmC;AACnC,SAAgB,cAAc,CAAC,QAAgB;IAC7C,IAAI,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;QACvC,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAC5E;IACD,IAAI,KAAK,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,KAAK,EAAE;QACT,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACnC;IAED,IAAI,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,EAAE,EAAE;QACN,OAAO,sBAAsB,CAAC,EAAE,CAAC,CAAC;KACnC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC;AACtE,CAAC;AAfD,wCAeC;AAED,MAAM,YAAY,GAAG,IAAA,uBAAO,EAAC;;;;;;;;;;;;;;;;;;;;;CAqB5B,CAA+C,CAAC;AAEjD,MAAM,mBAAmB,GAAG,IAAA,uBAAO,EAAC;;;;;;;;;;CAUnC,CAA0G,CAAC;AAE5G,SAAgB,qBAAqB,CAAC,SAAiB;IACrD,OAAO,cAAc,GAAG,SAAS,CAAC;AACpC,CAAC;AAFD,sDAEC;AAED,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AACxD,MAAM,oBAAoB,GAAG,mEAAmE,CAAC;AAEjG,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,QAAuB;IAC7E,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,QAAQ,EAAE;QACZ,4EAA4E;QAC5E,0EAA0E;QAC1E,gCAAgC;QAChC,gBAAgB,GAAG,IAAA,mBAAgB,EAAC,SAAS,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC;KAClE;IACD,OAAO,GAAG,SAAS,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,mBAAmB,EAAE,CAAC;AACtF,CAAC;AATD,oDASC;AAED,SAAS,0BAA0B,CACjC,QAAgB;IAEhB,IAAI,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IACD,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,MAAkD,CAAC;IACvF,qDAAqD;IACrD,IAAI,iBAAiB,GAAG,IAAA,mBAAgB,EAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO;QACL,iBAAiB;QACjB,gBAAgB,EAAE,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI;QACtD,SAAS,EAAE,IAAA,eAAQ,EAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAC1D,MAAM,qBAAqB,GAAG,sEAAsE,CAAC;AACrG,SAAgB,cAAc,CAAC,SAAiB,EAAE,QAAgB,EAAE,KAAkB;IACpF,IAAI,QAAQ,GAAG,GAAG,IAAA,cAAO,EAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,GAAG,oBAAoB,EAAE,CAAC;IACjF,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;QAClB,OAAO,GAAG,QAAQ,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;KACpD;SAAM;QACL,OAAO,QAAQ,CAAC;KACjB;AACH,CAAC;AAPD,wCAOC;AAED,SAAgB,oBAAoB,CAAC,QAAgB;;IACnD,IAAI,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,KAAK,EAAE;QACT,IAAI,KAAK,GAAG,MAAA,MAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,KAAK,0CAAE,KAAK,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QAClD,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;YAC/C,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3C,QAAQ,EAAE,KAAK,CAAC,MAAO,CAAC,QAAQ;SACjC,CAAC;KACH;AACH,CAAC;AAVD,oDAUC;AAED,MAAM,sBAAsB,GAAG,IAAA,uBAAO,EAAC;;;;;;;;;;;;;;CActC,CAAuE,CAAC","sourcesContent":["import { dirname, basename, resolve } from 'path';\nimport { explicitRelative } from '.';\nimport { compile } from './js-handlebars';\n\nconst externalPrefix = '/@embroider/external/';\n\n// Given a filename that was passed to your ModuleRequest's `virtualize()`,\n// this produces the corresponding contents. It's a static, stateless function\n// because we recognize that that process that did resolution might not be the\n// same one that loads the content.\nexport function virtualContent(filename: string): string {\n if (filename.startsWith(externalPrefix)) {\n return externalShim({ moduleName: filename.slice(externalPrefix.length) });\n }\n let match = decodeVirtualPairComponent(filename);\n if (match) {\n return pairedComponentShim(match);\n }\n\n let fb = decodeFastbootSwitch(filename);\n if (fb) {\n return fastbootSwitchTemplate(fb);\n }\n\n throw new Error(`not an @embroider/core virtual file: ${filename}`);\n}\n\nconst externalShim = compile(`\n{{#if (eq moduleName \"require\")}}\nconst m = window.requirejs;\n{{else}}\nconst m = window.require(\"{{{js-string-escape moduleName}}}\");\n{{/if}}\n{{!-\n There are plenty of hand-written AMD defines floating around\n that lack this, and they will break when other build systems\n encounter them.\n\n As far as I can tell, Ember's loader was already treating this\n case as a module, so in theory we aren't breaking anything by\n marking it as such when other packagers come looking.\n\n todo: get review on this part.\n-}}\nif (m.default && !m.__esModule) {\n m.__esModule = true;\n}\nmodule.exports = m;\n`) as (params: { moduleName: string }) => string;\n\nconst pairedComponentShim = compile(`\nimport { setComponentTemplate } from \"@ember/component\";\nimport template from \"{{{js-string-escape relativeHBSModule}}}\";\n{{#if relativeJSModule}}\nimport component from \"{{{js-string-escape relativeJSModule}}}\";\nexport default setComponentTemplate(template, component);\n{{else}}\nimport templateOnlyComponent from \"@ember/component/template-only\";\nexport default setComponentTemplate(template, templateOnlyComponent(undefined, \"{{{js-string-escape debugName}}}\"));\n{{/if}}\n`) as (params: { relativeHBSModule: string; relativeJSModule: string | null; debugName: string }) => string;\n\nexport function virtualExternalModule(specifier: string): string {\n return externalPrefix + specifier;\n}\n\nconst pairComponentMarker = '/embroider-pair-component';\nconst pairComponentPattern = /^(?<hbsModule>.*)\\/(?<jsModule>[^\\/]*)\\/embroider-pair-component$/;\n\nexport function virtualPairComponent(hbsModule: string, jsModule: string | null): string {\n let relativeJSModule = '';\n if (jsModule) {\n // The '/j/' here represents the relativeJSModule itself that we're about to\n // use to create the complete filename. It's there to get the right number\n // of `..` in our relative path.\n relativeJSModule = explicitRelative(hbsModule + '/j/', jsModule);\n }\n return `${hbsModule}/${encodeURIComponent(relativeJSModule)}${pairComponentMarker}`;\n}\n\nfunction decodeVirtualPairComponent(\n filename: string\n): { relativeHBSModule: string; relativeJSModule: string | null; debugName: string } | null {\n let match = pairComponentPattern.exec(filename);\n if (!match) {\n return null;\n }\n let { hbsModule, jsModule } = match.groups! as { hbsModule: string; jsModule: string };\n // target our real hbs module from our virtual module\n let relativeHBSModule = explicitRelative(dirname(filename), hbsModule);\n return {\n relativeHBSModule,\n relativeJSModule: decodeURIComponent(jsModule) || null,\n debugName: basename(relativeHBSModule).replace(/\\.(js|hbs)$/, ''),\n };\n}\n\nconst fastbootSwitchSuffix = '/embroider_fastboot_switch';\nconst fastbootSwitchPattern = /(?<original>.+)\\/embroider_fastboot_switch(?:\\?names=(?<names>.+))?$/;\nexport function fastbootSwitch(specifier: string, fromFile: string, names: Set<string>): string {\n let filename = `${resolve(dirname(fromFile), specifier)}${fastbootSwitchSuffix}`;\n if (names.size > 0) {\n return `${filename}?names=${[...names].join(',')}`;\n } else {\n return filename;\n }\n}\n\nexport function decodeFastbootSwitch(filename: string) {\n let match = fastbootSwitchPattern.exec(filename);\n if (match) {\n let names = match.groups?.names?.split(',') ?? [];\n return {\n names: names.filter(name => name !== 'default'),\n hasDefaultExport: names.includes('default'),\n filename: match.groups!.original,\n };\n }\n}\n\nconst fastbootSwitchTemplate = compile(`\nimport { macroCondition, getGlobalConfig, importSync } from '@embroider/macros';\nlet mod;\nif (macroCondition(getGlobalConfig().fastboot?.isRunning)){\n mod = importSync('./fastboot');\n} else {\n mod = importSync('./browser');\n}\n{{#if hasDefaultExport}}\nexport default mod.default;\n{{/if}}\n{{#each names as |name|}}\nexport const {{name}} = mod.{{name}};\n{{/each}}\n`) as (params: { names: string[]; hasDefaultExport: boolean }) => string;\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"wait-for-trees.js","sourceRoot":"","sources":["wait-for-trees.ts"],"names":[],"mappings":";;;;;AAAA,sEAA6C;AAG7C;;;;;;;;;;;;;;;;;;;;EAoBE;AACF,MAAqB,YAAyB,SAAQ,yBAAc;IAClE,YACU,KAAiB,EACzB,UAAkB,EACV,SAA2F;QAEnG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACtB,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,UAAU;YACtB,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QATK,UAAK,GAAL,KAAK,CAAY;QAEjB,cAAS,GAAT,SAAS,CAAkF;IAQrG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAoC;QAC9C,IAAI,MAAM,GAA8C,EAAE,CAAC;QAC3D,IAAI,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAE3B,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,KAAK,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACvD,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC7D,gBAAgB,IAAI,CAAC,CAAC;aACvB;iBAAM,IAAI,KAAK,CAAC,KAAK,EAAE;gBACtB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE5F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACtC,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACtE,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBACjC,gBAAgB,EAAE,CAAC;oBACnB,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CAAC;aACJ;SACF;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAA4C,EAAE,UAAU,CAAC,CAAC;IAClF,CAAC;CACF;AAtCD,+BAsCC;AAMD,SAAS,MAAM,CAAC,CAAM;IACpB,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,mBAAmB,KAAK,UAAU,CAAC;AAC1D,CAAC;AAED,QAAQ,CAAC,CAAC,SAAS,CAAa,KAAiB;IAC/C,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,
|
1
|
+
{"version":3,"file":"wait-for-trees.js","sourceRoot":"","sources":["wait-for-trees.ts"],"names":[],"mappings":"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","sourcesContent":["import BroccoliPlugin from 'broccoli-plugin';\nimport { Node } from 'broccoli-node-api';\n\n/*\n Takes some named broccoli trees and/or lists of broccoli trees and gives you\n the resulting inputPaths once those trees are built. Example:\n\n import { Node } from 'broccoli-node-api';;\n\n interface MyInputs<T> {\n codeFromMyApp: T,\n codeFromMyAddons: T[]\n }\n\n function(trees: MyInputs<Node>): Node {\n return WaitForTrees(trees, build);\n }\n\n async function build(paths: MyInputs<string>) {\n // paths.someTree is a string\n // paths.otherTrees is a string[]\n }\n\n*/\nexport default class WaitForTrees<NamedTrees> extends BroccoliPlugin {\n constructor(\n private trees: NamedTrees,\n annotation: string,\n private buildHook: (trees: OutputPaths<NamedTrees>, changed: Map<string, boolean>) => Promise<void>\n ) {\n super(flatTrees(trees), {\n persistentOutput: true,\n needsCache: false,\n annotation: annotation,\n trackInputChanges: true,\n });\n }\n\n async build(detail?: { changedNodes: boolean[] }) {\n let result: { [treeName: string]: string | string[] } = {};\n let changedMap = new Map();\n\n let inputPathCounter = 0;\n for (let entry of findTrees(this.trees)) {\n if (entry.single) {\n result[entry.name] = this.inputPaths[inputPathCounter];\n let didChange = detail ? detail.changedNodes[inputPathCounter] : true;\n changedMap.set(this.inputPaths[inputPathCounter], didChange);\n inputPathCounter += 1;\n } else if (entry.multi) {\n let sliced = this.inputPaths.slice(inputPathCounter, inputPathCounter + entry.multi.length);\n\n result[entry.name] = sliced.map(slice => {\n let didChange = detail ? detail.changedNodes[inputPathCounter] : true;\n changedMap.set(slice, didChange);\n inputPathCounter++;\n return slice;\n });\n }\n }\n return this.buildHook(result as unknown as OutputPaths<NamedTrees>, changedMap);\n }\n}\n\nexport type OutputPaths<NamedTrees> = {\n [P in keyof NamedTrees]: NamedTrees[P] extends Node ? string : NamedTrees[P] extends Node[] ? string[] : never;\n};\n\nfunction isTree(x: any): x is Node {\n return x && typeof x.__broccoliGetInfo__ === 'function';\n}\n\nfunction* findTrees<NamedTrees>(trees: NamedTrees): IterableIterator<{ name: string; single?: Node; multi?: Node[] }> {\n for (let [name, value] of Object.entries(trees as Record<string, unknown>)) {\n if (Array.isArray(value)) {\n let stringTrees = value.filter(t => typeof t === 'string');\n if (stringTrees.length > 0) {\n throw new Error(`found strings instead of broccoli trees for ${name}: ${value}`);\n }\n yield { name, multi: value.filter(isTree) };\n } else if (isTree(value)) {\n yield { name, single: value };\n } else if (typeof value === 'string') {\n throw new Error(`found a string when we expected a broccoli tree for ${name}: ${value}`);\n }\n }\n}\n\nfunction flatTrees<NamedTrees>(trees: NamedTrees) {\n let output: Node[] = [];\n for (let value of findTrees(trees)) {\n if (value.multi) {\n output = output.concat(value.multi);\n } else if (value.single) {\n output.push(value.single);\n }\n }\n return output;\n}\n"]}
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import type { NodePath } from '@babel/traverse';
|
2
|
-
import type * as Babel from '@babel/core';
|
3
|
-
import type { types as t } from '@babel/core';
|
4
|
-
import { Options, Resolver } from './module-resolver';
|
5
|
-
interface State {
|
6
|
-
resolver: Resolver;
|
7
|
-
opts: Options | DeflatedOptions;
|
8
|
-
}
|
9
|
-
export { Options };
|
10
|
-
export interface DeflatedOptions {
|
11
|
-
adjustImportsOptionsPath: string;
|
12
|
-
relocatedFilesPath: string;
|
13
|
-
}
|
14
|
-
declare type BabelTypes = typeof t;
|
15
|
-
declare type DefineExpressionPath = NodePath<t.CallExpression> & {
|
16
|
-
node: t.CallExpression & {
|
17
|
-
arguments: [t.StringLiteral, t.ArrayExpression, Function];
|
18
|
-
};
|
19
|
-
};
|
20
|
-
export declare function isImportSyncExpression(t: BabelTypes, path: NodePath<any>): boolean;
|
21
|
-
export declare function isDynamicImportExpression(t: BabelTypes, path: NodePath<any>): boolean;
|
22
|
-
export declare function isDefineExpression(t: BabelTypes, path: NodePath<any>): path is DefineExpressionPath;
|
23
|
-
export default function main(babel: typeof Babel): {
|
24
|
-
visitor: {
|
25
|
-
Program: {
|
26
|
-
enter(path: NodePath<Babel.types.Program>, state: State): void;
|
27
|
-
exit(path: NodePath<Babel.types.Program>, state: State): void;
|
28
|
-
};
|
29
|
-
CallExpression(path: NodePath<Babel.types.CallExpression>, state: State): void;
|
30
|
-
};
|
31
|
-
};
|