test: cache provider contract entries

This commit is contained in:
Peter Steinberger
2026-05-06 08:51:25 +01:00
parent 5969ac8ccf
commit 3915089a25
2 changed files with 16 additions and 4 deletions

View File

@@ -26,15 +26,21 @@ function resolveProviderContractProvidersFromPublicArtifact(
}
export function describeProviderContracts(pluginId: string) {
let providerEntries: ProviderContractEntry[] | undefined;
const resolveProviderEntries = (): ProviderContractEntry[] => {
if (providerEntries) {
return providerEntries;
}
const publicArtifactProviders = resolveProviderContractProvidersFromPublicArtifact(pluginId);
if (publicArtifactProviders) {
return publicArtifactProviders;
providerEntries = publicArtifactProviders;
return providerEntries;
}
return resolveProviderContractProvidersForPluginIds([pluginId]).map((provider) => ({
providerEntries = resolveProviderContractProvidersForPluginIds([pluginId]).map((provider) => ({
pluginId,
provider,
}));
return providerEntries;
};
const resolveProviderIds = (): string[] =>
resolveProviderEntries().map((entry) => entry.provider.id);

View File

@@ -33,18 +33,24 @@ export function describeWebSearchProviderContracts(pluginId: string) {
pluginRegistrationContractRegistry.find((entry) => entry.pluginId === pluginId)
?.webSearchProviderIds ?? [];
let providerEntries: WebSearchContractEntry[] | undefined;
const resolveProviders = (): WebSearchContractEntry[] => {
if (providerEntries) {
return providerEntries;
}
const publicArtifactProviders = resolveBundledExplicitWebSearchProvidersFromPublicArtifacts({
onlyPluginIds: [pluginId],
});
if (publicArtifactProviders) {
return publicArtifactProviders.map((provider) => ({
providerEntries = publicArtifactProviders.map((provider) => ({
pluginId: provider.pluginId,
provider,
credentialValue: resolveWebSearchCredentialValue(provider),
}));
return providerEntries;
}
return resolveWebSearchProviderContractEntriesForPluginId(pluginId);
providerEntries = resolveWebSearchProviderContractEntriesForPluginId(pluginId);
return providerEntries;
};
describe(`${pluginId} web search provider contract registry load`, () => {