


























@@ -1,44 +1,15 @@
1-import fs from "node:fs";
2-import path from "node:path";
31import { describe, expect, it } from "vitest";
42import { uniqueSortedStrings } from "../../plugin-sdk/test-helpers/string-utils.js";
53import { loadPluginManifestRegistry, type PluginManifestRecord } from "../manifest-registry.js";
64import { resolveManifestContractPluginIds } from "../plugin-registry.js";
5+import { BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS } from "./inventory/bundled-capability-metadata.js";
76import {
87pluginRegistrationContractRegistry,
98providerContractLoadError,
109providerContractPluginIds,
1110} from "./registry.js";
12111312describe("plugin contract registry", () => {
14-function collectExcludedPackagedExtensionDirs(): ReadonlySet<string> {
15-const packageJson = JSON.parse(
16-fs.readFileSync(path.join(process.cwd(), "package.json"), "utf-8"),
17-) as {
18-files?: unknown;
19-};
20-if (!Array.isArray(packageJson.files)) {
21-return new Set();
22-}
23-const excluded = new Set<string>();
24-for (const entry of packageJson.files) {
25-if (typeof entry !== "string") {
26-continue;
27-}
28-const match = /^!dist\/extensions\/([^/]+)\/\*\*$/u.exec(entry);
29-if (match?.[1]) {
30-excluded.add(match[1]);
31-}
32-}
33-return excluded;
34-}
35-36-const excludedPackagedExtensionDirs = collectExcludedPackagedExtensionDirs();
37-38-function isPackagedCorePluginId(pluginId: string): boolean {
39-return !excludedPackagedExtensionDirs.has(pluginId);
40-}
41-4213function expectUniqueIds(ids: readonly string[]) {
4314expect(ids).toEqual([...new Set(ids)]);
4415}
@@ -53,8 +24,11 @@ describe("plugin contract registry", () => {
5324}
54255526function resolveBundledManifestPluginIds(predicate: (plugin: PluginManifestRecord) => boolean) {
27+const snapshotPluginIds = new Set(
28+BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS.map((entry) => entry.pluginId),
29+);
5630return loadPluginManifestRegistry({})
57-.plugins.filter((plugin) => isPackagedCorePluginId(plugin.id) && predicate(plugin))
31+.plugins.filter((plugin) => snapshotPluginIds.has(plugin.id) && predicate(plugin))
5832.map((plugin) => plugin.id)
5933.toSorted((left, right) => left.localeCompare(right));
6034}
@@ -203,10 +177,13 @@ describe("plugin contract registry", () => {
203177});
204178205179it("covers every bundled web search plugin from the shared resolver", () => {
180+const snapshotPluginIds = new Set(
181+BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS.map((entry) => entry.pluginId),
182+);
206183const bundledWebSearchPluginIds = resolveManifestContractPluginIds({
207184contract: "webSearchProviders",
208185origin: "bundled",
209-}).filter(isPackagedCorePluginId);
186+}).filter((pluginId) => snapshotPluginIds.has(pluginId));
210187211188expect(
212189uniqueSortedStrings(
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。