
























@@ -168,6 +168,7 @@ describe("collectInstalledMirroredRootDependencyManifestErrors", () => {
168168169169function writeSlackWebApiProbePackage(params: {
170170root: string;
171+importerSource?: string;
171172importerPath?: string;
172173rootDependencies?: Record<string, string>;
173174rootOptionalDependencies?: Record<string, string>;
@@ -184,7 +185,11 @@ describe("collectInstalledMirroredRootDependencyManifestErrors", () => {
184185});
185186const importerPath = params.importerPath ?? "dist/probe-Cz2PiFtC.js";
186187mkdirSync(join(params.root, "dist"), { recursive: true });
187-writeFileSync(join(params.root, importerPath), 'import("@slack/web-api");\n', "utf8");
188+writeFileSync(
189+join(params.root, importerPath),
190+params.importerSource ?? 'import("@slack/web-api");\n',
191+"utf8",
192+);
188193}
189194190195it("flags bundled plugin deps imported by root dist when root mirrors are missing", () => {
@@ -216,6 +221,47 @@ describe("collectInstalledMirroredRootDependencyManifestErrors", () => {
216221}
217222});
218223224+it("allows bundled plugin deps imported from root chunks sourced from their extension", () => {
225+const packageRoot = makeInstalledPackageRoot();
226+227+try {
228+writeSlackWebApiProbePackage({
229+root: packageRoot,
230+importerSource: '//#region extensions/slack/client.ts\nimport("@slack/web-api");\n',
231+});
232+233+expect(collectInstalledMirroredRootDependencyManifestErrors(packageRoot)).toEqual([]);
234+} finally {
235+rmSync(packageRoot, { recursive: true, force: true });
236+}
237+});
238+239+it("does not require root mirrors for extension-only Matrix crypto deps", () => {
240+const packageRoot = makeInstalledPackageRoot();
241+242+try {
243+writePackageFile(packageRoot, "package.json", {
244+version: "2026.4.10",
245+dependencies: {},
246+});
247+writePackageFile(packageRoot, "dist/extensions/matrix/package.json", {
248+dependencies: {
249+"@matrix-org/matrix-sdk-crypto-nodejs": "^0.4.0",
250+"@matrix-org/matrix-sdk-crypto-wasm": "18.1.0",
251+},
252+});
253+writeFileSync(
254+join(packageRoot, "dist/extensions/matrix/crypto-node.runtime.js"),
255+'require("@matrix-org/matrix-sdk-crypto-nodejs");\n',
256+"utf8",
257+);
258+259+expect(collectInstalledMirroredRootDependencyManifestErrors(packageRoot)).toEqual([]);
260+} finally {
261+rmSync(packageRoot, { recursive: true, force: true });
262+}
263+});
264+219265it("accepts mirrored root dependencies declared in package optionalDependencies", () => {
220266const packageRoot = makeInstalledPackageRoot();
221267此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。