MCPcopy Create free account
hub / github.com/amrkmn/x / parseExtensionsData

Function parseExtensionsData

scripts/validation.ts:38–68  ·  view source on GitHub ↗
(
    value: unknown
)

Source from the content-addressed store, hash-verified

36}
37
38export function parseExtensionsData(
39 value: unknown
40): Record<string, Record<string, ExtensionConfig>> {
41 if (!isRecord(value)) throw new Error('Invalid extensions data: expected object');
42
43 const result: Record<string, Record<string, ExtensionConfig>> = {};
44 const seenPaths = new Set<string>();
45
46 for (const [category, entries] of Object.entries(value)) {
47 if (!isRecord(entries)) {
48 throw new Error(`Invalid extensions data.${category}: expected object`);
49 }
50
51 result[category] = {};
52
53 for (const [key, entry] of Object.entries(entries)) {
54 const parsed = parseExtensionConfig(
55 entry,
56 `extensions data.${category}.${key}`,
57 category
58 );
59 if (seenPaths.has(parsed.path)) {
60 throw new Error(`Duplicate extension path: ${parsed.path}`);
61 }
62 seenPaths.add(parsed.path);
63 result[category][key] = parsed;
64 }
65 }
66
67 return result;
68}

Callers 2

loadExtensionsDataFunction · 0.90
validation.test.tsFile · 0.90

Calls 2

parseExtensionConfigFunction · 0.85
isRecordFunction · 0.70

Tested by

no test coverage detected