From 665a8496d7f1cb9b83e73eb69a63297b6c028ca0 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 14 Apr 2026 17:53:10 +0100 Subject: [PATCH] fix(plugin-sdk): sort hashed root alias dist chunks --- src/plugin-sdk/root-alias.cjs | 4 ++- .../contracts/plugin-sdk-root-alias.test.ts | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/plugin-sdk/root-alias.cjs b/src/plugin-sdk/root-alias.cjs index 0d0dde974ce..27ab182d349 100644 --- a/src/plugin-sdk/root-alias.cjs +++ b/src/plugin-sdk/root-alias.cjs @@ -90,7 +90,9 @@ function getPackageRoot() { function findDistChunkByPrefix(prefix) { const distRoot = path.join(getPackageRoot(), "dist"); try { - const entries = fs.readdirSync(distRoot, { withFileTypes: true }); + const entries = fs + .readdirSync(distRoot, { withFileTypes: true }) + .toSorted((left, right) => left.name.localeCompare(right.name)); const match = entries.find( (entry) => entry.isFile() && entry.name.startsWith(`${prefix}-`) && entry.name.endsWith(".js"), diff --git a/src/plugins/contracts/plugin-sdk-root-alias.test.ts b/src/plugins/contracts/plugin-sdk-root-alias.test.ts index 56a2f5bdee3..f4b5dca656e 100644 --- a/src/plugins/contracts/plugin-sdk-root-alias.test.ts +++ b/src/plugins/contracts/plugin-sdk-root-alias.test.ts @@ -331,6 +331,32 @@ describe("plugin-sdk root alias", () => { ); }); + it("chooses hashed dist diagnostic events chunks deterministically", () => { + const packageRoot = createPackageRoot(); + const distAliasPath = createDistAliasPath(); + const lazyModule = loadRootAliasWithStubs({ + aliasPath: distAliasPath, + distExists: false, + distEntries: ["diagnostic-events-zeta.js", "diagnostic-events-alpha.js"], + monolithicExports: { + r: (): (() => void) => () => undefined, + slowHelper: (): string => "loaded", + }, + }); + + expect( + typeof (lazyModule.moduleExports.onDiagnosticEvent as (listener: () => void) => () => void)( + () => undefined, + ), + ).toBe("function"); + expect(lazyModule.loadedSpecifiers).toContain( + path.join(packageRoot, "dist", "diagnostic-events-alpha.js"), + ); + expect(lazyModule.loadedSpecifiers).not.toContain( + path.join(packageRoot, "dist", "diagnostic-events-zeta.js"), + ); + }); + it.each([ { name: "forwards delegateCompactionToRuntime through the compat-backed root alias",