diff --git a/.changeset/great-goats-trade.md b/.changeset/great-goats-trade.md new file mode 100644 index 000000000..c8e0e8efd --- /dev/null +++ b/.changeset/great-goats-trade.md @@ -0,0 +1,5 @@ +--- +"@fake-scope/fake-pkg": patch +--- + +fix(register): fix esm entry resolver for third-party executor, close #762 diff --git a/packages/register/esm.mts b/packages/register/esm.mts index d454b4d4a..1b11c9e54 100644 --- a/packages/register/esm.mts +++ b/packages/register/esm.mts @@ -11,11 +11,13 @@ interface ResolveContext { conditions: string[] parentURL: string | undefined } + interface ResolveResult { format?: string shortCircuit?: boolean url: string } + type ResolveArgs = [ specifier: string, context?: ResolveContext, @@ -51,7 +53,7 @@ export const resolve: ResolveFn = async (specifier, context, nextResolve) => { } const { resolvedModule } = ts.resolveModuleName( - specifier, + specifier.startsWith('file:') ? fileURLToPath(specifier) : specifier, fileURLToPath(context.parentURL), tsconfig, host, @@ -82,11 +84,13 @@ interface LoadContext { conditions: string[] format: string | null | undefined } + interface LoadResult { format: string shortCircuit?: boolean source: string | ArrayBuffer | SharedArrayBuffer | Uint8Array } + type LoadArgs = [url: string, context: LoadContext, nextLoad?: (...args: LoadArgs) => Promise] type LoadFn = (...args: Required) => Promise