@embroider/core 3.4.18 → 3.4.20-unstable.0aa8fc6
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 +20 -10
- package/src/app-files.d.ts +3 -5
- package/src/app-files.js +25 -8
- package/src/app-files.js.map +1 -1
- package/src/index.d.ts +2 -3
- package/src/index.js +1 -3
- package/src/index.js.map +1 -1
- package/src/measure-concat.js +1 -2
- package/src/measure-concat.js.map +1 -1
- package/src/module-resolver-options.d.ts +42 -0
- package/src/module-resolver-options.js +164 -0
- package/src/module-resolver-options.js.map +1 -0
- package/src/module-resolver.d.ts +28 -44
- package/src/module-resolver.js +430 -304
- package/src/module-resolver.js.map +1 -1
- package/src/node-resolve.d.ts +33 -0
- package/src/node-resolve.js +131 -0
- package/src/node-resolve.js.map +1 -0
- package/src/options.d.ts +0 -7
- package/src/options.js +0 -1
- package/src/options.js.map +1 -1
- package/src/resolver-loader.js +8 -1
- package/src/resolver-loader.js.map +1 -1
- package/src/virtual-content.d.ts +6 -4
- package/src/virtual-content.js +67 -99
- package/src/virtual-content.js.map +1 -1
- package/src/virtual-entrypoint.d.ts +19 -0
- package/src/virtual-entrypoint.js +289 -0
- package/src/virtual-entrypoint.js.map +1 -0
- package/src/virtual-route-entrypoint.d.ts +15 -0
- package/src/virtual-route-entrypoint.js +94 -0
- package/src/virtual-route-entrypoint.js.map +1 -0
- package/src/virtual-test-support-styles.d.ts +4 -0
- package/src/virtual-test-support-styles.js +64 -0
- package/src/virtual-test-support-styles.js.map +1 -0
- package/src/virtual-test-support.d.ts +4 -0
- package/src/virtual-test-support.js +68 -0
- package/src/virtual-test-support.js.map +1 -0
- package/src/virtual-vendor-styles.d.ts +4 -0
- package/src/virtual-vendor-styles.js +82 -0
- package/src/virtual-vendor-styles.js.map +1 -0
- package/src/virtual-vendor.d.ts +4 -0
- package/src/virtual-vendor.js +57 -0
- package/src/virtual-vendor.js.map +1 -0
- package/types/virtual/index.d.ts +9 -0
- package/types/virtual/index.js +3 -0
- package/src/asset.d.ts +0 -32
- package/src/asset.js +0 -3
- package/src/asset.js.map +0 -1
- package/src/ember-html.d.ts +0 -43
- package/src/ember-html.js +0 -110
- package/src/ember-html.js.map +0 -1
- package/src/portable-babel-config.d.ts +0 -11
- package/src/portable-babel-config.js +0 -132
- package/src/portable-babel-config.js.map +0 -1
- package/src/portable-babel-launcher.d.ts +0 -6
- package/src/portable-babel-launcher.js +0 -75
- package/src/portable-babel-launcher.js.map +0 -1
- package/src/to-broccoli-plugin.d.ts +0 -8
- package/src/to-broccoli-plugin.js +0 -30
- package/src/to-broccoli-plugin.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 {\n emberVirtualPackages,\n emberVirtualPeerDeps,\n extensionsPattern,\n packageName as getPackageName,\n packageName,\n} from '@embroider/shared-internals';\nimport { dirname, resolve } from 'path';\nimport type { Package, V2Package } from '@embroider/shared-internals';\nimport { explicitRelative, RewrittenPackageCache } from '@embroider/shared-internals';\nimport makeDebug from 'debug';\nimport assertNever from 'assert-never';\nimport resolveModule from 'resolve';\nimport {\n virtualExternalESModule,\n virtualExternalCJSModule,\n virtualPairComponent,\n virtualContent,\n fastbootSwitch,\n decodeFastbootSwitch,\n decodeImplicitModules,\n} from './virtual-content';\nimport { Memoize } from 'typescript-memoize';\nimport { describeExports } from './describe-exports';\nimport { readFileSync } from 'fs';\nimport type UserOptions from './options';\nimport { satisfies } from 'semver';\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 amdCompatibility: Required<UserOptions['amdCompatibility']>;\n}\n\ninterface EngineConfig {\n packageName: string;\n activeAddons: { name: string; root: string }[];\n fastbootFiles: { [appName: string]: { localFilename: string; shadowedFilename: string | undefined } };\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 readonly specifier: string;\n readonly fromFile: string;\n readonly isVirtual: boolean;\n readonly meta: Record<string, unknown> | undefined;\n alias(newSpecifier: string): this;\n rehome(newFromFile: string): this;\n virtualize(virtualFilename: string): this;\n withMeta(meta: Record<string, any> | undefined): this;\n}\n\nclass NodeModuleRequest implements ModuleRequest {\n constructor(\n readonly specifier: string,\n readonly fromFile: string,\n readonly isVirtual: boolean,\n readonly meta: Record<string, any> | undefined\n ) {}\n alias(specifier: string): this {\n return new NodeModuleRequest(specifier, this.fromFile, false, this.meta) as this;\n }\n rehome(fromFile: string): this {\n if (this.fromFile === fromFile) {\n return this;\n } else {\n return new NodeModuleRequest(this.specifier, fromFile, false, this.meta) as this;\n }\n }\n virtualize(filename: string): this {\n return new NodeModuleRequest(filename, this.fromFile, true, this.meta) as this;\n }\n withMeta(meta: Record<string, any> | undefined): this {\n return new NodeModuleRequest(this.specifier, this.fromFile, this.isVirtual, meta) 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(readonly 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.handleFastbootSwitch(request);\n request = this.handleGlobalsCompat(request);\n request = this.handleImplicitModules(request);\n request = this.handleRenaming(request);\n // we expect the specifier to be app relative at this point - must be after handleRenaming\n request = this.generateFastbootSwitch(request);\n request = this.preHandleExternal(request);\n\n // this should probably stay the last step in beforeResolve, because it can\n // rehome requests to their un-rewritten locations, and for the most part we\n // want to be dealing with the rewritten packages.\n request = this.handleRewrittenPackages(request);\n return 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\n if (nextRequest.fromFile === request.fromFile && nextRequest.specifier === request.specifier) {\n throw new Error(\n 'Bug Discovered! New request is not === original request but has the same fromFile and specifier. This will likely create a loop.'\n );\n }\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, false, undefined), request => {\n if (request.isVirtual) {\n return {\n type: 'found',\n result: {\n type: 'virtual' as 'virtual',\n content: virtualContent(request.specifier, this),\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 get packageCache() {\n return RewrittenPackageCache.shared('embroider', this.options.appRoot);\n }\n\n private logicalPackage(owningPackage: V2Package, file: string): V2Package {\n let logicalLocation = this.reverseSearchAppTree(owningPackage, file);\n if (logicalLocation) {\n let pkg = this.packageCache.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 generateFastbootSwitch<R extends ModuleRequest>(request: R): R {\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!pkg) {\n return request;\n }\n\n if (packageName(request.specifier)) {\n // not a relative request, and we're assuming all within-engine requests\n // are relative by this point due to `v1 self-import` which happens\n // earlier\n return request;\n }\n\n let engineConfig = this.engineConfig(pkg.name);\n let appRelativePath = explicitRelative(pkg.root, resolve(dirname(request.fromFile), request.specifier));\n if (engineConfig) {\n for (let candidate of this.withResolvableExtensions(appRelativePath)) {\n let fastbootFile = engineConfig.fastbootFiles[candidate];\n if (fastbootFile) {\n if (fastbootFile.shadowedFilename) {\n let { names } = describeExports(readFileSync(resolve(pkg.root, fastbootFile.shadowedFilename), 'utf8'), {});\n let switchFile = fastbootSwitch(candidate, resolve(pkg.root, 'package.json'), names);\n if (switchFile === request.fromFile) {\n return logTransition('internal lookup from fastbootSwitch', request);\n } else {\n return logTransition('shadowed app fastboot', request, request.virtualize(switchFile));\n }\n } else {\n return logTransition(\n 'unshadowed app fastboot',\n request,\n request.alias(fastbootFile.localFilename).rehome(resolve(pkg.root, 'package.json'))\n );\n }\n }\n }\n }\n\n return request;\n }\n\n private handleFastbootSwitch<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 logTransition('non-special import in fastboot switch', request);\n }\n\n let pkg = this.packageCache.ownerOfFile(match.filename);\n if (pkg) {\n let rel = explicitRelative(pkg.root, match.filename);\n\n let engineConfig = this.engineConfig(pkg.name);\n if (engineConfig) {\n let fastbootFile = engineConfig.fastbootFiles[rel];\n if (fastbootFile && fastbootFile.shadowedFilename) {\n let targetFile: string;\n if (section === 'app-js') {\n targetFile = fastbootFile.shadowedFilename;\n } else {\n targetFile = fastbootFile.localFilename;\n }\n return logTransition(\n 'matched app entry',\n request,\n // deliberately not using rehome because we want\n // generateFastbootSwitch to see that this request is coming *from*\n // a fastboot switch so it won't cycle back around. Instead we make\n // the targetFile relative to the fromFile that we already have.\n request.alias(explicitRelative(dirname(request.fromFile), resolve(pkg.root, targetFile)))\n );\n }\n }\n\n let entry = this.getEntryFromMergeMap(rel, pkg.root)?.entry;\n if (entry?.type === 'both') {\n return logTransition(\n 'matched addon entry',\n request,\n request.alias(entry[section].localPath).rehome(resolve(entry[section].packageRoot, 'package.json'))\n );\n }\n }\n\n return logTransition('failed to match in fastboot switch', request);\n }\n\n private handleImplicitModules<R extends ModuleRequest>(request: R): R {\n let im = decodeImplicitModules(request.specifier);\n if (!im) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!pkg?.isV2Ember()) {\n throw new Error(`bug: found implicit modules import in non-ember package at ${request.fromFile}`);\n }\n\n let packageName = getPackageName(im.fromFile);\n if (packageName) {\n let dep = this.packageCache.resolve(packageName, pkg);\n return logTransition(\n `dep's implicit modules`,\n request,\n request.virtualize(resolve(dep.root, `-embroider-${im.type}.js`))\n );\n } else {\n return logTransition(\n `own implicit modules`,\n request,\n request.virtualize(resolve(pkg.root, `-embroider-${im.type}.js`))\n );\n }\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.packageCache.ownerOfFile(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 if (!this.emberVersionSupportsSeparateTemplates) {\n throw new Error(\n `Components with separately resolved templates were removed at Ember 6.0. Migrate to either co-located js/ts + hbs files or to gjs/gts. https://deprecations.emberjs.com/id/component-template-resolving/. Bad template was: ${hbsModule}.`\n );\n }\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 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 = this.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 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 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 let owningEngine = this.options.engines.find(e =>\n pkg.isEngine() ? e.root === pkg.root : e.activeAddons.find(a => a.root === pkg.root)\n );\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 get emberVersion(): string {\n return this.packageCache.get(this.options.engines[0].root).dependencies.find(d => d.name === 'ember-source')!\n .version;\n }\n\n @Memoize() get emberVersionSupportsSeparateTemplates(): boolean {\n return satisfies(this.emberVersion, '< 6.0.0-alpha.0', {\n includePrerelease: true,\n });\n }\n\n private handleRewrittenPackages<R extends ModuleRequest>(request: R): R {\n if (request.isVirtual) {\n return request;\n }\n let requestingPkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!requestingPkg) {\n return request;\n }\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n // relative request\n return request;\n }\n\n let targetPkg: Package | undefined;\n if (packageName !== requestingPkg.name) {\n // non-relative, non-self request, so check if it aims at a rewritten addon\n try {\n targetPkg = this.packageCache.resolve(packageName, requestingPkg);\n } catch (err) {\n // this is not the place to report resolution failures. If the thing\n // doesn't resolve, we're just not interested in redirecting it for\n // backward-compat, that's all. The rest of the system will take care of\n // reporting a failure to resolve (or handling it a different way)\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n }\n }\n\n let originalRequestingPkg = this.packageCache.original(requestingPkg);\n let originalTargetPkg = targetPkg ? this.packageCache.original(targetPkg) : undefined;\n\n if (targetPkg && originalTargetPkg !== targetPkg) {\n // in this case it doesn't matter whether or not the requesting package\n // was moved. RewrittenPackageCache.resolve already took care of finding\n // the right target, and we redirect the request so it will look inside\n // that target.\n return logTransition(\n 'request targets a moved package',\n request,\n this.resolveWithinMovedPackage(request, targetPkg)\n );\n } else if (originalRequestingPkg !== requestingPkg) {\n // in this case, the requesting package is moved but its destination is\n // not, so we need to rehome the request back to the original location.\n return logTransition(\n 'outbound request from moved package',\n request,\n request.withMeta({ wasMovedTo: request.fromFile }).rehome(resolve(originalRequestingPkg.root, 'package.json'))\n );\n }\n\n return request;\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 let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n // real deps take precedence over renaming rules. That is, a package like\n // ember-source might provide backburner via module renaming, but if you\n // have an explicit dependency on backburner you should still get that real\n // copy.\n if (!pkg.hasDependency(packageName)) {\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\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(\n `v1 self-import`,\n request,\n request.alias(request.specifier.replace(pkg.name, '.')).rehome(resolve(pkg.root, 'package.json'))\n );\n }\n\n return request;\n }\n\n private resolveWithinMovedPackage<R extends ModuleRequest>(request: R, pkg: Package): R {\n let levels = ['..'];\n if (pkg.name.startsWith('@')) {\n levels.push('..');\n }\n let newRequest = request.rehome(resolve(pkg.root, ...levels, 'moved-package-target.js'));\n\n if (newRequest === request) {\n return request;\n }\n\n return newRequest.withMeta({\n resolvedWithinPackage: pkg.root,\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.packageCache.ownerOfFile(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\n if (!absoluteSpecifier.startsWith(pkg.root)) {\n // this relative path escape its package. So it's not really using\n // normal inter-package resolving and we should leave it alone. This\n // case comes up especially when babel transforms are trying to insert\n // references to runtime utilities, like we do in @embroider/macros.\n return logTransition('beforeResolve: relative path escapes its package', request);\n }\n\n let packageRelativeSpecifier = explicitRelative(pkg.root, absoluteSpecifier);\n if (isExplicitlyExternal(packageRelativeSpecifier, pkg)) {\n let publicSpecifier = absoluteSpecifier.replace(pkg.root, pkg.name);\n return this.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 this.external('beforeResolve', request, specifier);\n }\n\n if (emberVirtualPackages.has(packageName) && !pkg.hasDependency(packageName)) {\n return this.external('beforeResolve emberVirtualPackages', request, specifier);\n }\n\n if (emberVirtualPeerDeps.has(packageName) && !pkg.hasDependency(packageName)) {\n // addons (whether auto-upgraded or not) may use the app's\n // emberVirtualPeerDeps, like \"@glimmer/component\" etc.\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(\n this.packageCache.maybeMoved(this.packageCache.get(this.options.appRoot)).root,\n 'package.json'\n );\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 = this.packageCache.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 this.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 private external<R extends ModuleRequest>(label: string, request: R, specifier: string): R {\n if (this.options.amdCompatibility === 'cjs') {\n let filename = virtualExternalCJSModule(specifier);\n return logTransition(label, request, request.virtualize(filename));\n } else if (this.options.amdCompatibility) {\n let entry = this.options.amdCompatibility.es.find(\n entry => entry[0] === specifier || entry[0] + '/index' === specifier\n );\n if (!entry && request.specifier === 'require') {\n entry = ['require', ['default', 'has']];\n }\n if (!entry) {\n throw new Error(\n `A module tried to resolve \"${request.specifier}\" and didn't find it (${label}).\n\n - Maybe a dependency declaration is missing?\n - Remember that v1 addons can only import non-Ember-addon NPM dependencies if they include ember-auto-import in their dependencies.\n - If this dependency is available in the AMD loader (because someone manually called \"define()\" for it), you can configure a shim like:\n\n amdCompatibility: {\n es: [\n [\"${request.specifier}\", [\"default\", \"yourNamedExportsGoHere\"]],\n ]\n }\n\n`\n );\n }\n let filename = virtualExternalESModule(specifier, entry[1]);\n return logTransition(label, request, request.virtualize(filename));\n } else {\n throw new Error(\n `Embroider's amdCompatibility option is disabled, but something tried to use it to access \"${request.specifier}\"`\n );\n }\n }\n\n fallbackResolve<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('fallback early exit', request);\n }\n\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 if (fromFile.endsWith('moved-package-target.js')) {\n if (!request.meta?.resolvedWithinPackage) {\n throw new Error(`bug: embroider resolver's meta is not propagating`);\n }\n fromFile = resolve(request.meta?.resolvedWithinPackage as string, 'package.json');\n }\n\n let pkg = this.packageCache.ownerOfFile(fromFile);\n if (!pkg) {\n return logTransition('no identifiable owningPackage', request);\n }\n\n // if we rehomed this request to its un-rewritten location in order to try\n // to do the defaultResolve from there, now we refer back to the rewritten\n // location because that's what we want to use when asking things like\n // isV2Ember()\n let movedPkg = this.packageCache.maybeMoved(pkg);\n if (movedPkg !== pkg) {\n if (!request.meta?.wasMovedTo) {\n throw new Error(`bug: embroider resolver's meta is not propagating`);\n }\n fromFile = request.meta.wasMovedTo as string;\n pkg = movedPkg;\n }\n\n if (!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 if (pkg.meta['auto-upgraded'] && this.options.activeAddons[packageName]) {\n const rehomed = this.resolveWithinMovedPackage(\n request,\n this.packageCache.get(this.options.activeAddons[packageName])\n );\n\n if (rehomed !== request) {\n return logTransition(`activeAddons`, request, rehomed);\n }\n }\n\n let logicalLocation = this.reverseSearchAppTree(pkg, 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 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 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 this.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 this.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 getEntryFromMergeMap(\n inEngineSpecifier: string,\n root: string\n ): { entry: MergeEntry; matched: string } | undefined {\n let entry: MergeEntry | undefined;\n for (let candidate of this.withResolvableExtensions(inEngineSpecifier)) {\n entry = this.mergeMap.get(root)?.get(candidate);\n if (entry) {\n return { entry, matched: candidate };\n }\n }\n }\n\n private *withResolvableExtensions(filename: string): Generator<string, void, void> {\n if (filename.match(/\\.(hbs|js|hbs\\.js)$/)) {\n yield filename;\n } else {\n for (let ext of ['.js', '.hbs.js', '.hbs']) {\n yield `${filename}${ext}`;\n }\n }\n }\n\n private searchAppTree<R extends ModuleRequest>(\n request: R,\n engine: EngineConfig,\n inEngineSpecifier: string\n ): R | undefined {\n let matched = this.getEntryFromMergeMap(inEngineSpecifier, engine.root);\n\n switch (matched?.entry.type) {\n case undefined:\n return undefined;\n case 'app-only':\n return request\n .alias(matched.entry['app-js'].localPath)\n .rehome(resolve(matched.entry['app-js'].packageRoot, 'package.json'));\n case 'fastboot-only':\n return request\n .alias(matched.entry['fastboot-js'].localPath)\n .rehome(resolve(matched.entry['fastboot-js'].packageRoot, 'package.json'));\n case 'both':\n let foundAppJS = this.nodeResolve(\n matched.entry['app-js'].localPath,\n resolve(matched.entry['app-js'].packageRoot, 'package.json')\n );\n if (foundAppJS.type !== 'real') {\n throw new Error(\n `${matched.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(matched.matched, resolve(engine.root, 'package.json'), 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.packageCache.ownerOfFile(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"]}
|
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 packageName,\n} from '@embroider/shared-internals';\nimport { dirname, resolve, posix } from 'path';\nimport type { Package, V2Package } from '@embroider/shared-internals';\nimport { explicitRelative, RewrittenPackageCache } from '@embroider/shared-internals';\nimport makeDebug from 'debug';\nimport assertNever from 'assert-never';\nimport { externalName } from '@embroider/reverse-exports';\nimport { exports as resolveExports } from 'resolve.exports';\n\nimport { virtualPairComponent, fastbootSwitch, decodeFastbootSwitch, decodeImplicitModules } from './virtual-content';\nimport { Memoize } from 'typescript-memoize';\nimport { describeExports } from './describe-exports';\nimport { readFileSync } from 'fs';\nimport { nodeResolve } from './node-resolve';\nimport { decodePublicRouteEntrypoint, encodeRouteEntrypoint } from './virtual-route-entrypoint';\nimport type { Options, EngineConfig } from './module-resolver-options';\nimport { satisfies } from 'semver';\n\nconst debug = makeDebug('embroider:resolver');\n\n// Using a formatter makes this work lazy so nothing happens when we aren't\n// logging. It is unfortunate that formatters are a globally mutable config and\n// you can only use single character names, but oh well.\nmakeDebug.formatters.p = (s: string) => {\n let cwd = process.cwd();\n if (s.startsWith(cwd)) {\n return s.slice(cwd.length + 1);\n }\n return s;\n};\n\nfunction logTransition<R extends ModuleRequest>(reason: string, before: R, after: R = before): R {\n if (after.isVirtual) {\n debug(`[%s:virtualized] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else if (after.resolvedTo) {\n debug(`[%s:resolvedTo] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else if (before.specifier !== after.specifier) {\n if (before.fromFile !== after.fromFile) {\n debug(\n `[%s:aliased and rehomed] %s to %s\\n because %s\\n from %p\\n to %p`,\n before.debugType,\n before.specifier,\n after.specifier,\n reason,\n before.fromFile,\n after.fromFile\n );\n } else {\n debug(`[%s:aliased] %s to %s\\n because %s`, before.debugType, before.specifier, after.specifier, reason);\n }\n } else if (before.fromFile !== after.fromFile) {\n debug(\n `[%s:rehomed] %s, because %s\\n from %p\\n to %p`,\n before.debugType,\n before.specifier,\n reason,\n before.fromFile,\n after.fromFile\n );\n } else if (after.isNotFound) {\n debug(`[%s:not-found] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else {\n debug(`[%s:unchanged] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n }\n return after;\n}\n\nfunction isTerminal(request: ModuleRequest): boolean {\n return request.isVirtual || request.isNotFound || Boolean(request.resolvedTo);\n}\n\ntype MergeEntry =\n | {\n type: 'app-only';\n 'app-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n }\n | {\n type: 'fastboot-only';\n 'fastboot-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n }\n | {\n type: 'both';\n 'app-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n 'fastboot-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n };\n\ntype MergeMap = Map</* engine root dir */ string, Map</* withinEngineModuleName */ string, MergeEntry>>;\n\nconst compatPattern = /@embroider\\/virtual\\/(?<type>[^\\/]+)\\/(?<rest>.*)/;\n\nexport interface ModuleRequest<Res extends Resolution = Resolution> {\n readonly specifier: string;\n readonly fromFile: string;\n readonly isVirtual: boolean;\n readonly meta: Record<string, unknown> | undefined;\n readonly debugType: string;\n readonly isNotFound: boolean;\n readonly resolvedTo: Res | undefined;\n alias(newSpecifier: string): this;\n rehome(newFromFile: string): this;\n virtualize(virtualFilename: string): this;\n withMeta(meta: Record<string, any> | undefined): this;\n notFound(): this;\n defaultResolve(): Promise<Res>;\n resolveTo(resolution: Res): this;\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> =\n | { type: 'found'; filename: string; isVirtual: boolean; result: T }\n\n // used for requests that are special and don't represent real files that\n // embroider can possibly do anything custom with.\n //\n // the motivating use case for introducing this is Vite's depscan which marks\n // almost everything as \"external\" as a way to tell esbuild to stop traversing\n // once it has been seen the first time.\n | { type: 'ignored'; result: T }\n\n // the important thing about this Resolution is that embroider should do its\n // fallback behaviors here.\n | { type: 'not_found'; err: E };\n\nexport class Resolver {\n constructor(readonly options: Options) {}\n\n private async beforeResolve<R extends ModuleRequest>(request: R): Promise<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.handleFastbootSwitch(request);\n request = await this.handleGlobalsCompat(request);\n request = this.handleImplicitModules(request);\n request = this.handleImplicitTestScripts(request);\n request = this.handleVendorStyles(request);\n request = this.handleTestSupportStyles(request);\n request = this.handleEntrypoint(request);\n request = this.handleRouteEntrypoint(request);\n request = this.handleRenaming(request);\n request = this.handleVendor(request);\n // we expect the specifier to be app relative at this point - must be after handleRenaming\n request = this.generateFastbootSwitch(request);\n request = this.preHandleExternal(request);\n\n // this should probably stay the last step in beforeResolve, because it can\n // rehome requests to their un-rewritten locations, and for the most part we\n // want to be dealing with the rewritten packages.\n request = this.handleRewrittenPackages(request);\n return 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 async resolve<ResolveResolution extends Resolution>(\n request: ModuleRequest<ResolveResolution>\n ): Promise<ResolveResolution> {\n request = await this.beforeResolve(request);\n if (request.resolvedTo) {\n return request.resolvedTo;\n }\n\n let resolution = await request.defaultResolve();\n\n switch (resolution.type) {\n case 'found':\n case 'ignored':\n return resolution;\n case 'not_found':\n break;\n default:\n throw assertNever(resolution);\n }\n let nextRequest = await this.fallbackResolve(request);\n if (nextRequest === request) {\n // no additional fallback is available.\n return resolution;\n }\n\n if (nextRequest.resolvedTo) {\n return nextRequest.resolvedTo;\n }\n\n if (nextRequest.fromFile === request.fromFile && nextRequest.specifier === request.specifier) {\n throw new Error(\n 'Bug Discovered! New request is not === original request but has the same fromFile and specifier. This will likely create a loop.'\n );\n }\n\n if (nextRequest.isVirtual || nextRequest.isNotFound) {\n // virtual and NotFound requests are terminal, there is no more\n // beforeResolve or fallbackResolve around them. The defaultResolve is\n // expected to know how to implement them.\n return nextRequest.defaultResolve();\n }\n\n return this.resolve(nextRequest);\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 async nodeResolve(\n specifier: string,\n fromFile: string\n ): Promise<\n | { type: 'virtual'; filename: string; content: string }\n | { type: 'real'; filename: string }\n | { type: 'not_found'; err: Error }\n > {\n return nodeResolve(this, specifier, fromFile);\n }\n\n get packageCache() {\n return RewrittenPackageCache.shared('embroider', this.options.appRoot);\n }\n\n private logicalPackage(owningPackage: V2Package, file: string): V2Package {\n let logicalLocation = this.reverseSearchAppTree(owningPackage, file);\n if (logicalLocation) {\n let pkg = this.packageCache.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 generateFastbootSwitch<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!pkg) {\n return request;\n }\n\n if (packageName(request.specifier)) {\n // not a relative request, and we're assuming all within-engine requests\n // are relative by this point due to `v1 self-import` which happens\n // earlier\n return request;\n }\n\n let engineConfig = this.engineConfig(pkg.name);\n let appRelativePath = explicitRelative(pkg.root, resolve(dirname(request.fromFile), request.specifier));\n if (engineConfig) {\n for (let candidate of this.withResolvableExtensions(appRelativePath)) {\n let fastbootFile = engineConfig.fastbootFiles[candidate];\n if (fastbootFile) {\n if (fastbootFile.shadowedFilename) {\n let { names } = describeExports(readFileSync(resolve(pkg.root, fastbootFile.shadowedFilename), 'utf8'), {\n configFile: false,\n });\n let switchFile = fastbootSwitch(candidate, resolve(pkg.root, 'package.json'), names);\n if (switchFile === request.fromFile) {\n return logTransition('internal lookup from fastbootSwitch', request);\n } else {\n return logTransition('shadowed app fastboot', request, request.virtualize(switchFile));\n }\n } else {\n return logTransition(\n 'unshadowed app fastboot',\n request,\n request.alias(fastbootFile.localFilename).rehome(resolve(pkg.root, 'package.json'))\n );\n }\n }\n }\n }\n\n return request;\n }\n\n private handleFastbootSwitch<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\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 logTransition('non-special import in fastboot switch', request);\n }\n\n let pkg = this.packageCache.ownerOfFile(match.filename);\n if (pkg) {\n let rel = explicitRelative(pkg.root, match.filename);\n\n let engineConfig = this.engineConfig(pkg.name);\n if (engineConfig) {\n let fastbootFile = engineConfig.fastbootFiles[rel];\n if (fastbootFile && fastbootFile.shadowedFilename) {\n let targetFile: string;\n if (section === 'app-js') {\n targetFile = fastbootFile.shadowedFilename;\n } else {\n targetFile = fastbootFile.localFilename;\n }\n return logTransition(\n 'matched app entry',\n request,\n // deliberately not using rehome because we want\n // generateFastbootSwitch to see that this request is coming *from*\n // a fastboot switch so it won't cycle back around. Instead we make\n // the targetFile relative to the fromFile that we already have.\n request.alias(explicitRelative(dirname(request.fromFile), resolve(pkg.root, targetFile)))\n );\n }\n }\n\n let entry = this.getEntryFromMergeMap(rel, pkg.root)?.entry;\n if (entry?.type === 'both') {\n return logTransition(\n 'matched addon entry',\n request,\n request.alias(entry[section].specifier).rehome(entry[section].fromFile)\n );\n }\n }\n\n return logTransition('failed to match in fastboot switch', request);\n }\n\n private handleImplicitModules<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let im = decodeImplicitModules(request.specifier);\n if (!im) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!pkg?.isV2Ember()) {\n throw new Error(`bug: found implicit modules import in non-ember package at ${request.fromFile}`);\n }\n\n let packageName = getPackageName(im.fromFile);\n if (packageName) {\n let dep = this.packageCache.resolve(packageName, pkg);\n return logTransition(\n `dep's implicit modules`,\n request,\n request.virtualize(resolve(dep.root, `-embroider-${im.type}.js`))\n );\n } else {\n return logTransition(\n `own implicit modules`,\n request,\n request.virtualize(resolve(pkg.root, `-embroider-${im.type}.js`))\n );\n }\n }\n\n private handleEntrypoint<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/virtual/compat-modules',\n '/@embroider/virtual/compat-modules',\n './@embroider/virtual/compat-modules',\n ];\n\n if (!candidates.some(c => request.specifier.startsWith(c + '/') || request.specifier === c)) {\n return request;\n }\n\n const result = /\\.?\\/?@embroider\\/virtual\\/compat-modules(?:\\/(?<packageName>.*))?/.exec(request.specifier);\n\n if (!result) {\n // TODO make a better error\n throw new Error('entrypoint does not match pattern' + request.specifier);\n }\n\n const { packageName } = result.groups!;\n\n const requestingPkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!requestingPkg?.isV2Ember()) {\n throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);\n }\n\n let pkg;\n\n if (packageName) {\n pkg = this.packageCache.resolve(packageName, requestingPkg);\n } else {\n pkg = requestingPkg;\n }\n let matched = resolveExports(pkg.packageJSON, '-embroider-entrypoint.js', {\n browser: true,\n conditions: ['default', 'imports'],\n });\n return logTransition(\n 'entrypoint',\n request,\n request.virtualize(resolve(pkg.root, matched?.[0] ?? '-embroider-entrypoint.js'))\n );\n }\n\n private handleRouteEntrypoint<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n\n let routeName = decodePublicRouteEntrypoint(request.specifier);\n\n if (!routeName) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!pkg?.isV2Ember()) {\n throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);\n }\n\n let matched = resolveExports(pkg.packageJSON, '-embroider-route-entrypoint.js', {\n browser: true,\n conditions: ['default', 'imports'],\n });\n\n return logTransition(\n 'route entrypoint',\n request,\n request.virtualize(encodeRouteEntrypoint(pkg.root, matched?.[0], routeName))\n );\n }\n\n private handleImplicitTestScripts<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/virtual/test-support.js',\n '/@embroider/virtual/test-support.js',\n './@embroider/virtual/test-support.js',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/test-support.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition('test-support', request, request.virtualize(resolve(pkg.root, '-embroider-test-support.js')));\n }\n\n private handleTestSupportStyles<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/virtual/test-support.css',\n '/@embroider/virtual/test-support.css',\n './@embroider/virtual/test-support.css',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/test-support.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition(\n 'test-support-styles',\n request,\n request.virtualize(resolve(pkg.root, '-embroider-test-support-styles.css'))\n );\n }\n\n private async handleGlobalsCompat<R extends ModuleRequest>(request: R): Promise<R> {\n if (isTerminal(request)) {\n return request;\n }\n let match = compatPattern.exec(request.specifier);\n if (!match) {\n return request;\n }\n let { type, rest } = match.groups!;\n let fromPkg = this.packageCache.ownerOfFile(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/virtual specifier: ${request.specifier}`);\n }\n }\n\n private handleVendorStyles<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/virtual/vendor.css',\n '/@embroider/virtual/vendor.css',\n './@embroider/virtual/vendor.css',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!pkg || !this.options.engines.some(e => e.root === pkg?.root)) {\n throw new Error(\n `bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app or Engine. The top-level Ember app is the only one that has support for @embroider/virtual/vendor.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition(\n 'vendor-styles',\n request,\n request.virtualize(resolve(pkg.root, '-embroider-vendor-styles.css'))\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 async resolveComponent<R extends ModuleRequest>(\n path: string,\n inEngine: EngineConfig,\n request: R\n ): Promise<R> {\n let target = this.parseGlobalPath(path, inEngine);\n\n let hbsModule: Resolution | null = null;\n let jsModule: Resolution | null = null;\n\n // first, the various places our template might be.\n for (let candidate of this.componentTemplateCandidates(target.packageName)) {\n let candidateSpecifier = `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`;\n\n let resolution = await this.resolve(\n request.alias(candidateSpecifier).rehome(target.from).withMeta({\n runtimeFallback: false,\n })\n );\n\n if (resolution.type === 'found') {\n hbsModule = resolution;\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 candidateSpecifier = `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`;\n\n let resolution = await this.resolve(\n request.alias(candidateSpecifier).rehome(target.from).withMeta({\n runtimeFallback: false,\n })\n );\n\n if (resolution.type === 'ignored') {\n return logTransition(`resolving to ignored component`, request, request.resolveTo(resolution));\n }\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 === 'found' && !resolution.filename.endsWith('.hbs')) {\n jsModule = resolution;\n break;\n }\n }\n\n if (hbsModule) {\n if (!this.emberVersionSupportsSeparateTemplates) {\n throw new Error(\n `Components with separately resolved templates were removed at Ember 6.0. Migrate to either co-located js/ts + hbs files or to gjs/gts. https://deprecations.emberjs.com/id/component-template-resolving/. Bad template was: ${hbsModule.filename}.`\n );\n }\n return logTransition(\n `resolveComponent found legacy HBS`,\n request,\n request.virtualize(virtualPairComponent(hbsModule.filename, jsModule?.filename))\n );\n } else if (jsModule) {\n return logTransition(`resolving to resolveComponent found only JS`, request, request.resolveTo(jsModule));\n } else {\n return logTransition(`resolveComponent failed`, request);\n }\n }\n\n private async resolveHelperOrComponent<R extends ModuleRequest>(\n path: string,\n inEngine: EngineConfig,\n request: R\n ): Promise<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 = await this.resolve(\n request.alias(helperCandidate.specifier).rehome(helperCandidate.fromFile).withMeta({\n runtimeFallback: false,\n })\n );\n\n // for the case of 'ignored' that means that esbuild found this helper in an external\n // package so it should be considered found in this case and we should not look for a\n // component with this name\n if (helperMatch.type === 'found' || helperMatch.type === 'ignored') {\n return logTransition('resolve to ambiguous case matched a helper', request, request.resolveTo(helperMatch));\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 = await 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: '/index' };\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, 'package.json') };\n } else {\n return { packageName: inEngine.packageName, memberName: path, from: resolve(inEngine.root, 'package.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 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 = this.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 let specifier = externalName(addon.packageJSON, inAddonName);\n if (!specifier) {\n throw new Error(\n `${addon.name}'s package.json app-js refers to ${inAddonName}, but that module is not accessible from outside the package`\n );\n }\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 specifier,\n fromFile: addonConfig.canResolveFromFile,\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 specifier,\n fromFile: addonConfig.canResolveFromFile,\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 let specifier = externalName(addon.packageJSON, inAddonName);\n if (!specifier) {\n throw new Error(\n `${addon.name}'s package.json fastboot-js refers to ${inAddonName}, but that module is not accessible from outside the package`\n );\n }\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 specifier,\n fromFile: addonConfig.canResolveFromFile,\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 specifier,\n fromFile: addonConfig.canResolveFromFile,\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 let owningEngine = this.options.engines.find(e =>\n pkg.isEngine() ? e.root === pkg.root : e.activeAddons.find(a => a.root === pkg.root)\n );\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 get emberVersion(): string {\n return this.packageCache.get(this.options.engines[0].root).dependencies.find(d => d.name === 'ember-source')!\n .version;\n }\n\n @Memoize() get emberVersionSupportsSeparateTemplates(): boolean {\n return satisfies(this.emberVersion, '< 6.0.0-alpha.0', {\n includePrerelease: true,\n });\n }\n\n private handleRewrittenPackages<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let requestingPkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!requestingPkg) {\n return request;\n }\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n // relative request\n return request;\n }\n\n let targetPkg: Package | undefined;\n if (packageName !== requestingPkg.name) {\n // non-relative, non-self request, so check if it aims at a rewritten addon\n try {\n targetPkg = this.packageCache.resolve(packageName, requestingPkg);\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n }\n }\n\n let originalRequestingPkg = this.packageCache.original(requestingPkg);\n let originalTargetPkg = targetPkg ? this.packageCache.original(targetPkg) : undefined;\n\n if (targetPkg && originalTargetPkg !== targetPkg) {\n // in this case it doesn't matter whether or not the requesting package\n // was moved. RewrittenPackageCache.resolve already took care of finding\n // the right target, and we redirect the request so it will look inside\n // that target.\n return logTransition(\n 'request targets a moved package',\n request,\n this.resolveWithinMovedPackage(request, targetPkg)\n );\n } else if (originalRequestingPkg !== requestingPkg) {\n if (targetPkg) {\n // in this case, the requesting package is moved but its destination is\n // not, so we need to rehome the request back to the original location.\n return logTransition(\n 'outbound request from moved package',\n request,\n request\n // setting meta here because if this fails, we want the fallback\n // logic to revert our rehome and continue from the *moved* package.\n .withMeta({ originalFromFile: request.fromFile })\n .rehome(resolve(originalRequestingPkg.root, 'package.json'))\n );\n } else {\n // requesting package was moved and we failed to find its target. We\n // can't let that accidentally succeed in the defaultResolve because we\n // could escape the moved package system.\n return logTransition('missing outbound request from moved package', request, request.notFound());\n }\n }\n\n return request;\n }\n\n private handleRenaming<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n // real deps take precedence over renaming rules. That is, a package like\n // ember-source might provide backburner via module renaming, but if you\n // have an explicit dependency on backburner you should still get that real\n // copy.\n\n if (!pkg?.hasDependency(packageName)) {\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\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n if (pkg.name === packageName) {\n // we found a self-import\n if (pkg.meta['auto-upgraded']) {\n // auto-upgraded packages always get automatically adjusted. They never\n // supported fancy package.json exports features so this direct mapping\n // to the root is always right.\n\n // \"my-app/foo\" -> \"./foo\" from app's package.json\n // \"my-addon/foo\" -> \"my-addon/foo\" from a package that's guaranteed to be able to resolve my-addon\n\n let owningEngine = this.owningEngine(pkg);\n let addonConfig = owningEngine.activeAddons.find(a => a.root === pkg.root);\n if (addonConfig) {\n // auto-upgraded addons get special support for self-resolving here.\n return logTransition(`v1 addon self-import`, request, request.rehome(addonConfig.canResolveFromFile));\n } else {\n // auto-upgraded apps will necessarily have packageJSON.exports\n // because we insert them, so for that support we can fall through to\n // that support below.\n }\n }\n\n // v2 packages are supposed to use package.json `exports` to enable\n // self-imports, but not all build tools actually follow the spec. This\n // is a workaround for badly behaved packagers.\n //\n // Known upstream bugs this works around:\n // - https://github.com/vitejs/vite/issues/9731\n if (pkg.packageJSON.exports) {\n let found = resolveExports(pkg.packageJSON, request.specifier, {\n browser: true,\n conditions: ['default', 'imports'],\n });\n if (found?.[0]) {\n return logTransition(\n `v2 self-import with package.json exports`,\n request,\n request.alias(found?.[0]).rehome(resolve(pkg.root, 'package.json'))\n );\n }\n }\n }\n\n return request;\n }\n\n private handleVendor<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/virtual/vendor.js',\n '/@embroider/virtual/vendor.js',\n './@embroider/virtual/vendor.js',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/vendor.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition('vendor', request, request.virtualize(resolve(pkg.root, '-embroider-vendor.js')));\n }\n\n private resolveWithinMovedPackage<R extends ModuleRequest>(request: R, pkg: Package): R {\n let levels = ['..'];\n if (pkg.name.startsWith('@')) {\n levels.push('..');\n }\n let originalFromFile = request.fromFile;\n let newRequest = request.rehome(resolve(pkg.root, ...levels, 'moved-package-target.js'));\n\n if (newRequest === request) {\n return request;\n }\n\n // setting meta because if this fails, we want the fallback to pick up back\n // in the original requesting package.\n return newRequest.withMeta({ originalFromFile });\n }\n\n private preHandleExternal<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let { specifier, fromFile } = request;\n let pkg = this.packageCache.ownerOfFile(fromFile);\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n let packageName = getPackageName(specifier);\n if (!packageName) {\n let absoluteSpecifier = resolve(dirname(fromFile), specifier);\n\n if (!absoluteSpecifier.startsWith(pkg.root)) {\n // this relative path escape its package. So it's not really using\n // normal inter-package resolving and we should leave it alone. This\n // case comes up especially when babel transforms are trying to insert\n // references to runtime utilities, like we do in @embroider/macros.\n return logTransition('beforeResolve: relative path escapes its package', request);\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.alias(\n posix.join(logicalLocation.owningEngine.packageName, dirname(logicalLocation.inAppName), request.specifier)\n )\n );\n }\n\n return request;\n }\n\n if (emberVirtualPeerDeps.has(packageName) && !pkg.hasDependency(packageName)) {\n // addons (whether auto-upgraded or not) may use the app's\n // emberVirtualPeerDeps, like \"@glimmer/component\" etc.\n let addon = this.locateActiveAddon(packageName);\n if (!addon) {\n throw new Error(\n `${pkg.name} is trying to import the emberVirtualPeerDep \"${packageName}\", but it seems to be missing`\n );\n }\n return logTransition(`emberVirtualPeerDeps`, request, request.rehome(addon.canResolveFromFile));\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 = this.packageCache.resolve(packageName, logicalPackage);\n if (!dep.isEmberAddon()) {\n // classic ember addons can only import non-ember dependencies if they\n // have ember-auto-import.\n return logTransition('v1 package without auto-import', request, request.notFound());\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 (\n !pkg.needsLooseResolving() &&\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 private locateActiveAddon(packageName: string): { root: string; canResolveFromFile: string } | undefined {\n if (packageName === this.options.modulePrefix) {\n // the app itself is something that addon's can classically resolve if they know it's name.\n return {\n root: this.options.appRoot,\n canResolveFromFile: resolve(\n this.packageCache.maybeMoved(this.packageCache.get(this.options.appRoot)).root,\n 'package.json'\n ),\n };\n }\n for (let engine of this.options.engines) {\n for (let addon of engine.activeAddons) {\n if (addon.name === packageName) {\n return addon;\n }\n }\n }\n }\n\n private async fallbackResolve<R extends ModuleRequest>(request: R): Promise<R> {\n if (request.isVirtual) {\n throw new Error(\n 'Build tool bug detected! Fallback resolve should never see a virtual request. It is expected that the defaultResolve for your bundler has already resolved this request'\n );\n }\n\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('fallback early exit', request);\n }\n\n if (compatPattern.test(request.specifier)) {\n // Some kinds of compat requests get rewritten into other things\n // deterministically. For example, \"@embroider/virtual/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/virtual/components/whatever can mean several different\n // things. If we're unable to find any of them, the actual\n // \"@embroider/virtual\" 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.packageCache.ownerOfFile(request.fromFile);\n\n if (pkg) {\n ({ pkg, request } = this.restoreRehomedRequest(pkg, request));\n }\n\n if (!pkg?.isV2Ember()) {\n // this request is coming from a file that appears to be owned by no ember\n // package. We offer one fallback behavior for such files. They're allowed\n // to resolve from the app's namespace.\n //\n // This makes it possible for integrations like vite to leave references\n // to the app in their pre-bundled dependencies, which will end up in an\n // arbitrary cache that is not inside any particular package.\n let description = pkg ? 'non-ember package' : 'unowned module';\n\n let packageName = getPackageName(request.specifier);\n if (packageName === this.options.modulePrefix) {\n return logTransition(\n `fallbackResolver: ${description} resolved app namespace`,\n request,\n request.rehome(this.packageCache.maybeMoved(this.packageCache.get(this.options.appRoot)).root)\n );\n }\n return logTransition(`fallbackResolver: ${description}`, request);\n }\n\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n // this is a relative import\n return this.relativeFallbackResolve(pkg, request);\n }\n\n if (pkg.needsLooseResolving()) {\n let activeAddon = this.maybeFallbackToActiveAddon(request, packageName);\n if (activeAddon) {\n return activeAddon;\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 // it might look more precise to rehome into logicalLocation.inAppName\n // rather than package.json. But that logical location may not actually\n // exist, and some systems (including node's require.resolve) will be\n // mad about trying to resolve from notional paths that don't really\n // exist.\n request.rehome(resolve(logicalLocation.owningEngine.root, 'package.json'))\n );\n }\n\n let targetingEngine = this.engineConfig(packageName);\n if (targetingEngine) {\n let appJSMatch = await this.searchAppTree(request, targetingEngine, request.specifier.replace(packageName, '.'));\n if (appJSMatch) {\n return logTransition('fallbackResolve: non-relative appJsMatch', request, appJSMatch);\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 restoreRehomedRequest<R extends ModuleRequest>(pkg: Package, request: R): { pkg: Package; request: R } {\n // meta.originalFromFile gets set when we want to try to rehome a request\n // but then come back to the original location here in the fallback when the\n // rehomed request fails\n let movedPkg = this.packageCache.maybeMoved(pkg);\n if (movedPkg !== pkg) {\n let originalFromFile = request.meta?.originalFromFile;\n if (typeof originalFromFile !== 'string') {\n throw new Error(`bug: embroider resolver's meta is not propagating`);\n }\n request = request.rehome(originalFromFile);\n pkg = movedPkg;\n }\n return { pkg, request };\n }\n\n private async relativeFallbackResolve<R extends ModuleRequest>(pkg: Package, request: R): Promise<R> {\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\n let logicalName = engineRelativeName(pkg, resolve(dirname(request.fromFile), request.specifier));\n if (!logicalName) {\n return logTransition(\n 'fallbackResolve: relative failure because this file is not externally accessible',\n request\n );\n }\n let appJSMatch = await this.searchAppTree(request, withinEngine, logicalName);\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 private maybeFallbackToActiveAddon<R extends ModuleRequest>(request: R, requestedPackageName: string): R | undefined {\n // auto-upgraded packages can fall back to the set of known active addons\n let addon = this.locateActiveAddon(requestedPackageName);\n if (addon) {\n const rehomed = request.rehome(addon.canResolveFromFile);\n if (rehomed !== request) {\n return logTransition(`activeAddons`, request, rehomed);\n }\n }\n }\n\n private getEntryFromMergeMap(\n inEngineSpecifier: string,\n root: string\n ): { entry: MergeEntry; matched: string } | undefined {\n let entry: MergeEntry | undefined;\n for (let candidate of this.withResolvableExtensions(inEngineSpecifier)) {\n entry = this.mergeMap.get(root)?.get(candidate);\n if (entry) {\n return { entry, matched: candidate };\n }\n }\n }\n\n private *withResolvableExtensions(filename: string): Generator<string, void, void> {\n if (filename.match(/\\.(hbs|js|hbs\\.js)$/)) {\n yield filename;\n } else {\n for (let ext of ['.js', '.hbs.js', '.hbs']) {\n yield `${filename}${ext}`;\n }\n }\n }\n\n private async searchAppTree<R extends ModuleRequest>(\n request: R,\n engine: EngineConfig,\n inEngineSpecifier: string\n ): Promise<R | undefined> {\n let matched = this.getEntryFromMergeMap(inEngineSpecifier, engine.root);\n\n switch (matched?.entry.type) {\n case undefined:\n return undefined;\n case 'app-only':\n return request.alias(matched.entry['app-js'].specifier).rehome(matched.entry['app-js'].fromFile);\n case 'fastboot-only':\n return request.alias(matched.entry['fastboot-js'].specifier).rehome(matched.entry['fastboot-js'].fromFile);\n case 'both':\n let foundAppJS = await this.resolve(\n request.alias(matched.entry['app-js'].specifier).rehome(matched.entry['app-js'].fromFile).withMeta({\n runtimeFallback: false,\n })\n );\n if (foundAppJS.type !== 'found') {\n throw new Error(\n `${matched.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'), { configFile: false });\n return request.virtualize(fastbootSwitch(matched.matched, resolve(engine.root, 'package.json'), 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.packageCache.ownerOfFile(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 let inAppName = engineRelativeName(owningPackage, filename);\n if (inAppName) {\n return this.tryReverseComponent(engineConfig.packageName, inAppName);\n }\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\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 engineRelativeName(pkg: Package, filename: string): string | undefined {\n let outsideName = externalName(pkg.packageJSON, explicitRelative(pkg.root, filename));\n if (outsideName) {\n return '.' + outsideName.slice(pkg.name.length);\n }\n}\n"]}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import type { ModuleRequest, Resolution, Resolver } from './module-resolver';
|
2
|
+
export declare class NodeModuleRequest implements ModuleRequest {
|
3
|
+
private resolver;
|
4
|
+
readonly specifier: string;
|
5
|
+
readonly fromFile: string;
|
6
|
+
readonly isVirtual: boolean;
|
7
|
+
readonly meta: Record<string, any> | undefined;
|
8
|
+
readonly isNotFound: boolean;
|
9
|
+
readonly resolvedTo: Resolution<NodeResolution, Error> | undefined;
|
10
|
+
constructor(resolver: Resolver, specifier: string, fromFile: string, isVirtual: boolean, meta: Record<string, any> | undefined, isNotFound: boolean, resolvedTo: Resolution<NodeResolution, Error> | undefined);
|
11
|
+
get debugType(): string;
|
12
|
+
alias(specifier: string): this;
|
13
|
+
rehome(fromFile: string): this;
|
14
|
+
virtualize(filename: string): this;
|
15
|
+
withMeta(meta: Record<string, any> | undefined): this;
|
16
|
+
notFound(): this;
|
17
|
+
resolveTo(resolution: Resolution<NodeResolution, Error>): this;
|
18
|
+
defaultResolve(): Promise<Resolution<NodeResolution, Error>>;
|
19
|
+
}
|
20
|
+
type NodeResolution = {
|
21
|
+
type: 'virtual';
|
22
|
+
filename: string;
|
23
|
+
content: string;
|
24
|
+
} | {
|
25
|
+
type: 'real';
|
26
|
+
filename: string;
|
27
|
+
};
|
28
|
+
type NodeResolutionError = {
|
29
|
+
type: 'not_found';
|
30
|
+
err: Error;
|
31
|
+
};
|
32
|
+
export declare function nodeResolve(resolver: Resolver, specifier: string, fromFile: string): Promise<NodeResolution | NodeResolutionError>;
|
33
|
+
export {};
|
@@ -0,0 +1,131 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.NodeModuleRequest = void 0;
|
7
|
+
exports.nodeResolve = nodeResolve;
|
8
|
+
const virtual_content_1 = require("./virtual-content");
|
9
|
+
const path_1 = require("path");
|
10
|
+
const shared_internals_1 = require("@embroider/shared-internals");
|
11
|
+
const assert_never_1 = __importDefault(require("assert-never"));
|
12
|
+
class NodeModuleRequest {
|
13
|
+
constructor(resolver, specifier, fromFile, isVirtual, meta, isNotFound, resolvedTo) {
|
14
|
+
this.resolver = resolver;
|
15
|
+
this.specifier = specifier;
|
16
|
+
this.fromFile = fromFile;
|
17
|
+
this.isVirtual = isVirtual;
|
18
|
+
this.meta = meta;
|
19
|
+
this.isNotFound = isNotFound;
|
20
|
+
this.resolvedTo = resolvedTo;
|
21
|
+
}
|
22
|
+
get debugType() {
|
23
|
+
return 'node';
|
24
|
+
}
|
25
|
+
alias(specifier) {
|
26
|
+
return new NodeModuleRequest(this.resolver, specifier, this.fromFile, false, this.meta, false, undefined);
|
27
|
+
}
|
28
|
+
rehome(fromFile) {
|
29
|
+
if (this.fromFile === fromFile) {
|
30
|
+
return this;
|
31
|
+
}
|
32
|
+
else {
|
33
|
+
return new NodeModuleRequest(this.resolver, this.specifier, fromFile, false, this.meta, false, undefined);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
virtualize(filename) {
|
37
|
+
return new NodeModuleRequest(this.resolver, filename, this.fromFile, true, this.meta, false, undefined);
|
38
|
+
}
|
39
|
+
withMeta(meta) {
|
40
|
+
return new NodeModuleRequest(this.resolver, this.specifier, this.fromFile, this.isVirtual, meta, this.isNotFound, this.resolvedTo);
|
41
|
+
}
|
42
|
+
notFound() {
|
43
|
+
return new NodeModuleRequest(this.resolver, this.specifier, this.fromFile, this.isVirtual, this.meta, true, undefined);
|
44
|
+
}
|
45
|
+
resolveTo(resolution) {
|
46
|
+
return new NodeModuleRequest(this.resolver, this.specifier, this.fromFile, this.isVirtual, this.meta, this.isNotFound, resolution);
|
47
|
+
}
|
48
|
+
async defaultResolve() {
|
49
|
+
const request = this;
|
50
|
+
if (request.isVirtual) {
|
51
|
+
return {
|
52
|
+
type: 'found',
|
53
|
+
filename: request.specifier,
|
54
|
+
isVirtual: true,
|
55
|
+
result: {
|
56
|
+
type: 'virtual',
|
57
|
+
content: (0, virtual_content_1.virtualContent)(request.specifier, this.resolver).src,
|
58
|
+
filename: request.specifier,
|
59
|
+
},
|
60
|
+
};
|
61
|
+
}
|
62
|
+
if (request.isNotFound) {
|
63
|
+
let err = new Error(`module not found ${request.specifier}`);
|
64
|
+
err.code = 'MODULE_NOT_FOUND';
|
65
|
+
return {
|
66
|
+
type: 'not_found',
|
67
|
+
err,
|
68
|
+
};
|
69
|
+
}
|
70
|
+
// require.resolve does not like when we resolve from virtual paths.
|
71
|
+
// That is, a request like "../thing.js" from
|
72
|
+
// "/a/real/path/VIRTUAL_SUBDIR/virtual.js" has an unambiguous target of
|
73
|
+
// "/a/real/path/thing.js", but require.resolve won't do that path
|
74
|
+
// adjustment until after checking whether VIRTUAL_SUBDIR actually
|
75
|
+
// exists.
|
76
|
+
//
|
77
|
+
// We can do the path adjustments before doing require.resolve.
|
78
|
+
let { specifier } = request;
|
79
|
+
let fromDir = (0, path_1.dirname)(request.fromFile);
|
80
|
+
if (!(0, path_1.isAbsolute)(specifier) && specifier.startsWith('.')) {
|
81
|
+
let targetPath = (0, path_1.resolve)(fromDir, specifier);
|
82
|
+
let newFromDir = (0, path_1.dirname)(targetPath);
|
83
|
+
if (fromDir !== newFromDir) {
|
84
|
+
specifier = (0, shared_internals_1.explicitRelative)(newFromDir, targetPath);
|
85
|
+
fromDir = newFromDir;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
let initialError;
|
89
|
+
for (let candidate of candidates(specifier)) {
|
90
|
+
let filename;
|
91
|
+
try {
|
92
|
+
filename = require.resolve(candidate, {
|
93
|
+
paths: [fromDir],
|
94
|
+
});
|
95
|
+
}
|
96
|
+
catch (err) {
|
97
|
+
if (err.code !== 'MODULE_NOT_FOUND') {
|
98
|
+
throw err;
|
99
|
+
}
|
100
|
+
if (!initialError) {
|
101
|
+
initialError = err;
|
102
|
+
}
|
103
|
+
continue;
|
104
|
+
}
|
105
|
+
return { type: 'found', filename, result: { type: 'real', filename }, isVirtual: false };
|
106
|
+
}
|
107
|
+
return { type: 'not_found', err: initialError };
|
108
|
+
}
|
109
|
+
}
|
110
|
+
exports.NodeModuleRequest = NodeModuleRequest;
|
111
|
+
function* candidates(specifier) {
|
112
|
+
yield specifier;
|
113
|
+
const extensions = ['.hbs.js', '.hbs'];
|
114
|
+
for (let ext of extensions) {
|
115
|
+
yield `${specifier}${ext}`;
|
116
|
+
}
|
117
|
+
}
|
118
|
+
async function nodeResolve(resolver, specifier, fromFile) {
|
119
|
+
let resolution = await resolver.resolve(new NodeModuleRequest(resolver, specifier, fromFile, false, undefined, false, undefined));
|
120
|
+
switch (resolution.type) {
|
121
|
+
case 'not_found':
|
122
|
+
return resolution;
|
123
|
+
case 'found':
|
124
|
+
return resolution.result;
|
125
|
+
case 'ignored':
|
126
|
+
throw new Error(`bug: this is supposed to be impossible because NodeModuleRequest.prototype.defaultResove does not use "ignored"`);
|
127
|
+
default:
|
128
|
+
throw (0, assert_never_1.default)(resolution);
|
129
|
+
}
|
130
|
+
}
|
131
|
+
//# sourceMappingURL=node-resolve.js.map
|