From ff31ffa6c347bf483e7ed5392bb277e607538d23 Mon Sep 17 00:00:00 2001 From: patrickpircher Date: Tue, 27 Aug 2024 17:55:32 +0200 Subject: [PATCH] move to default resolve --- packages/vite/src/esbuild-request.ts | 40 ++++++++++++---------- packages/vite/src/esbuild-resolver.ts | 48 ++++++++++++--------------- 2 files changed, 45 insertions(+), 43 deletions(-) diff --git a/packages/vite/src/esbuild-request.ts b/packages/vite/src/esbuild-request.ts index b46b2125ee..45e773f442 100644 --- a/packages/vite/src/esbuild-request.ts +++ b/packages/vite/src/esbuild-request.ts @@ -146,27 +146,33 @@ export class EsBuildModuleRequest implements ModuleRequest { requestStatus(request.specifier); - let result = await this.context.resolve(request.specifier, { - importer: request.fromFile, - resolveDir: dirname(request.fromFile), - kind: this.kind, - pluginData: { - embroider: { - enableCustomResolver: false, - meta: request.meta, + const extensions = ['', '.hbs']; + let lastResult: Resolution; + + for (const extension of extensions) { + let result = await this.context.resolve(request.specifier + extension, { + importer: request.fromFile, + resolveDir: dirname(request.fromFile), + kind: this.kind, + pluginData: { + embroider: { + enableCustomResolver: false, + meta: request.meta, + }, }, - }, - }); + }); - let status = readStatus(request.specifier); + let status = readStatus(request.specifier); - if (result.errors.length > 0 || status === 'not_found') { - return { type: 'not_found', err: result }; - } else if (result.external) { - return { type: 'ignored', result }; - } else { - return { type: 'found', filename: result.path, result, isVirtual: this.isVirtual }; + if (result.errors.length > 0 || status === 'not_found') { + lastResult = { type: 'not_found', err: result }; + } else if (result.external) { + return { type: 'ignored', result }; + } else { + return { type: 'found', filename: result.path, result, isVirtual: this.isVirtual }; + } } + return lastResult!; } } diff --git a/packages/vite/src/esbuild-resolver.ts b/packages/vite/src/esbuild-resolver.ts index 2f70a66e6c..0d1eeff793 100644 --- a/packages/vite/src/esbuild-resolver.ts +++ b/packages/vite/src/esbuild-resolver.ts @@ -45,6 +45,7 @@ export function esBuildResolver(): EsBuildPlugin { return { name: 'embroider-esbuild-resolver', setup(build) { + console.log('build', build); // Embroider Resolver build.onResolve({ filter: /./ }, async ({ path, importer, pluginData, kind }) => { let request = EsBuildModuleRequest.from(build, kind, path, importer, pluginData); @@ -59,14 +60,12 @@ export function esBuildResolver(): EsBuildPlugin { let pkgCache = resolverLoader.resolver.packageCache; let fromPkg = pkgCache.ownerOfFile(request.fromFile); let toPkg = pkgCache.ownerOfFile(resolution.filename); - if (toPkg?.isV2App()) { - if (!fromPkg?.isV2App()) { - let encoded = resolverLoader.resolver.generateEncodedRequest(request); - return { - path: encoded.specifier, - external: true, - }; - } + if (toPkg?.isV2App() && !fromPkg?.isV2App()) { + let encoded = resolverLoader.resolver.generateEncodedRequest(request); + return { + path: encoded.specifier, + external: true, + }; } case 'ignored': return resolution.result; @@ -84,26 +83,23 @@ export function esBuildResolver(): EsBuildPlugin { return null; } - // vite resolver does not take part when optimizing deps - const extensions = ['', '.hbs']; - for (const extension of extensions) { - let result = await build.resolve(path + extension, { - namespace, - resolveDir, - importer, - kind, - // avoid reentrance - pluginData: { ...pluginData, embroiderExtensionResolving: true }, - }); - if (result.errors.length) continue; - if (result.errors.length === 0 && !result.external) { - let syntheticPath = needsSyntheticComponentJS(path, result.path, resolverLoader.resolver.packageCache); - if (syntheticPath) { - return { path: syntheticPath, namespace: 'embroider-template-only-component' }; - } + let result = await build.resolve(path, { + namespace, + resolveDir, + importer, + kind, + // avoid reentrance + pluginData: { ...pluginData, embroiderExtensionResolving: true }, + }); + + if (result.errors.length === 0 && !result.external) { + let syntheticPath = needsSyntheticComponentJS(path, result.path, resolverLoader.resolver.packageCache); + if (syntheticPath) { + return { path: syntheticPath, namespace: 'embroider-template-only-component' }; } - return result; } + + return result; }); // we need to handle everything from one of our three special namespaces: