MCPcopy Create free account
hub / github.com/VPSDance/ai-proxy-rules / aggregateProvidersByCategory

Function aggregateProvidersByCategory

scripts/data.ts:81–113  ·  view source on GitHub ↗
(providers: ProviderSource[])

Source from the content-addressed store, hash-verified

79 return aggregateProviderSet(scopedProviders, id, name, description);
80}
81
82function aggregateProviderSet(
83 providers: ProviderSource[],
84 id: string,
85 name: string,
86 description: string
87): RenderTarget {
88 const groups = providers.flatMap((provider) =>
89 provider.groups.map((group) => ({
90 name: `${provider.name} / ${group.name}`,
91 rules: group.rules
92 }))
93 );
94
95 return {
96 id,
97 name,
98 description,
99 groups,
100 rules: mergeRuleSets(providers.map((provider) => provider.rules))
101 };
102}
103
104export function aggregateProvidersByCategory(providers: ProviderSource[]): RenderTarget[] {
105 const byCategory = new Map<ProviderCategory, ProviderSource[]>();
106 for (const provider of providers.filter((provider) => (provider.scope ?? "global") === "global")) {
107 for (const category of provider.categories ?? []) {
108 const categoryProviders = byCategory.get(category) ?? [];
109 categoryProviders.push(provider);
110 byCategory.set(category, categoryProviders);
111 }
112 }
113
114 return providerCategories.flatMap((category) => {
115 const categoryProviders = byCategory.get(category) ?? [];
116 if (categoryProviders.length === 0) {

Callers 2

buildTargetsFunction · 0.85
generators.test.tsFile · 0.85

Calls 2

categoryNameFunction · 0.85
mergeRuleSetsFunction · 0.85

Tested by

no test coverage detected