Files
vscode-eda-wave-helper/src/signal_mapping.ts
2025-10-23 23:08:17 +02:00

34 lines
986 B
TypeScript

import * as vscode from "vscode";
export const globalMap: Map<string, string> = new Map();
export async function loadMappingJson(uri: vscode.Uri): Promise<void> {
const bytes = await vscode.workspace.fs.readFile(uri);
const text = new TextDecoder('utf-8').decode(bytes);
let raw: unknown;
try {
raw = JSON.parse(text);
} catch (err: any) {
throw new Error(`Failed to parse JSON: ${err?.message ?? String(err)}`);
}
if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
throw new Error(`Expected a JSON object at top level (key → value mapping).`);
}
const obj = raw as Record<string, unknown>;
globalMap.clear();
for (const [key, value] of Object.entries(obj)) {
if (typeof value !== 'string') {
console.warn(`⚠️ Skipping key '${key}' because its value is not a string.`);
continue;
}
globalMap.set(key, value);
}
console.log(`✅ Loaded ${globalMap.size} valid mappings from ${uri.fsPath}`);
}