@uns-kit/core 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tools/generate-uns-dictionary.js +24 -1
- package/dist/tools/generate-uns-dictionary.js.map +1 -1
- package/dist/tools/generate-uns-measurements.d.ts +3 -0
- package/dist/tools/generate-uns-measurements.d.ts.map +1 -0
- package/dist/tools/generate-uns-measurements.js +104 -0
- package/dist/tools/generate-uns-measurements.js.map +1 -0
- package/dist/uns/uns-dictionary.generated.d.ts +2 -0
- package/dist/uns/uns-dictionary.generated.d.ts.map +1 -1
- package/dist/uns/uns-dictionary.generated.js +1 -0
- package/dist/uns/uns-dictionary.generated.js.map +1 -1
- package/dist/uns/uns-interfaces.d.ts +58 -0
- package/dist/uns/uns-interfaces.d.ts.map +1 -1
- package/dist/uns/uns-interfaces.js.map +1 -1
- package/dist/uns/uns-measurements.d.ts +99 -95
- package/dist/uns/uns-measurements.d.ts.map +1 -1
- package/dist/uns/uns-measurements.generated.d.ts +99 -0
- package/dist/uns/uns-measurements.generated.d.ts.map +1 -0
- package/dist/uns/uns-measurements.generated.js +96 -0
- package/dist/uns/uns-measurements.generated.js.map +1 -0
- package/dist/uns/uns-measurements.js +4 -146
- package/dist/uns/uns-measurements.js.map +1 -1
- package/dist/uns/uns-object.d.ts +1 -0
- package/dist/uns/uns-object.d.ts.map +1 -1
- package/dist/uns/uns-object.js +4 -1
- package/dist/uns/uns-object.js.map +1 -1
- package/dist/uns-mqtt/uns-mqtt-proxy.d.ts +2 -2
- package/dist/uns-mqtt/uns-mqtt-proxy.d.ts.map +1 -1
- package/dist/uns-mqtt/uns-mqtt-proxy.js +66 -32
- package/dist/uns-mqtt/uns-mqtt-proxy.js.map +1 -1
- package/package.json +1 -1
|
@@ -236,6 +236,12 @@ function mergeDictionaries(base, overlay, priority, lang) {
|
|
|
236
236
|
async function writeDictionaryTs(dictionary, filePath, lang) {
|
|
237
237
|
const objectTypeEntries = Object.entries(dictionary.objectTypes ?? {});
|
|
238
238
|
const attributeEntries = Object.entries(dictionary.attributes ?? {});
|
|
239
|
+
const attributesByType = {};
|
|
240
|
+
for (const [name, entry] of objectTypeEntries) {
|
|
241
|
+
if (Array.isArray(entry.attributes) && entry.attributes.length > 0) {
|
|
242
|
+
attributesByType[name] = entry.attributes.filter(Boolean);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
239
245
|
const renderRecord = (entries) => entries
|
|
240
246
|
.map(([name, entry]) => {
|
|
241
247
|
const desc = resolveDescription(entry, lang);
|
|
@@ -250,7 +256,24 @@ async function writeDictionaryTs(dictionary, filePath, lang) {
|
|
|
250
256
|
const objectTypeDescConst = `export const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {\n${renderDescriptions(objectTypeEntries)}\n};`;
|
|
251
257
|
const attributeConst = `export const GeneratedAttributes = {\n${renderRecord(attributeEntries)}\n} as const;`;
|
|
252
258
|
const attributeDescConst = `export const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {\n${renderDescriptions(attributeEntries)}\n};`;
|
|
253
|
-
const
|
|
259
|
+
const renderAttributesByType = () => {
|
|
260
|
+
const blocks = [];
|
|
261
|
+
for (const [objectType, attrs] of Object.entries(attributesByType)) {
|
|
262
|
+
if (!attrs.length)
|
|
263
|
+
continue;
|
|
264
|
+
const lines = attrs
|
|
265
|
+
.map((attr) => {
|
|
266
|
+
const desc = resolveDescription(dictionary.attributes?.[attr], lang);
|
|
267
|
+
const doc = desc ? ` /** ${desc} */\n` : "";
|
|
268
|
+
return `${doc} "${attr}": "${attr}",`;
|
|
269
|
+
})
|
|
270
|
+
.join("\n");
|
|
271
|
+
blocks.push(` "${objectType}": {\n${lines}\n },`);
|
|
272
|
+
}
|
|
273
|
+
return blocks.join("\n");
|
|
274
|
+
};
|
|
275
|
+
const attributesByTypeConst = `const GeneratedAttributesByTypeBase = {\n${renderAttributesByType()}\n} as const;\n\nexport const GeneratedAttributesByType = GeneratedAttributesByTypeBase;`;
|
|
276
|
+
const content = `/* Auto-generated by generate-uns-dictionary.ts. Do not edit by hand. */\n${objectTypeConst}\n\n${objectTypeDescConst}\n\nexport type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;\n\nexport function getGeneratedObjectTypeDescription(name: string): string | undefined {\n return (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[name];\n}\n\n${attributeConst}\n\n${attributeDescConst}\n\n${attributesByTypeConst}\n\nexport type GeneratedAttributeName = keyof typeof GeneratedAttributes;\n\nexport type GeneratedAttributesFor<T extends keyof typeof GeneratedAttributesByType> = keyof typeof GeneratedAttributesByType[T];\n\nexport function getGeneratedAttributeDescription(name: string): string | undefined {\n return (GeneratedAttributeDescriptions as Record<string, string | undefined>)[name];\n}\n`;
|
|
254
277
|
const absolute = path.resolve(process.cwd(), filePath);
|
|
255
278
|
await mkdir(path.dirname(absolute), { recursive: true });
|
|
256
279
|
await writeFile(absolute, content, "utf8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-uns-dictionary.js","sourceRoot":"","sources":["../../src/tools/generate-uns-dictionary.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Generate a TypeScript dictionary of object types and attributes (with descriptions)\n * from a JSON file or by fetching from GraphQL. The output is meant for IntelliSense\n * and metadata enrichment (e.g., emitting descriptions alongside topics).\n *\n * JSON shape (example):\n * {\n * \"objectTypes\": {\n * \"energy-resource\": { \"description\": \"Energy carriers (electricity/steam/gas)\" },\n * \"custom-type\": { \"description\": \"Tenant-specific thing\" }\n * },\n * \"attributes\": {\n * \"cumulative-active-energy-delivered\": { \"description\": \"kWh total\" },\n * \"status\": { \"description\": \"Generic status\" }\n * }\n * }\n */\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { GraphQLClient, ClientError, gql } from \"graphql-request\";\nimport { ConfigFile } from \"../config-file.js\";\nimport { AuthClient } from \"./auth/index.js\";\n\ntype DictionaryEntry = {\n description?: string | null;\n descriptions?: Record<string, string | null | undefined>;\n};\ntype UnsDictionary = {\n objectTypes?: Record<string, DictionaryEntry>;\n attributes?: Record<string, DictionaryEntry>;\n};\n\ntype CliArgs = {\n input: string;\n output: string;\n jsonOut: string;\n fromGraphql: boolean;\n queryFile?: string;\n writeMergedJson: boolean;\n priority: \"overlay\" | \"base\";\n lang: string;\n};\n\nconst DEFAULT_INPUT = \"uns-dictionary.json\";\nconst DEFAULT_OUTPUT = path.resolve(process.cwd(), \"src/uns/uns-dictionary.generated.ts\");\nconst DEFAULT_JSON_OUT = path.resolve(process.cwd(), DEFAULT_INPUT);\n\nasync function main(): Promise<void> {\n const args = parseArgs(process.argv.slice(2));\n\n const baseDictionary = await readDictionaryIfExists(args.input);\n const overlayDictionary = args.fromGraphql\n ? await fetchDictionaryFromGraphql(args.queryFile)\n : {};\n\n const { merged, differences } = mergeDictionaries(baseDictionary, overlayDictionary, args.priority, args.lang);\n\n if (differences.length) {\n console.log(\"Overlay changes applied:\");\n for (const diff of differences) {\n console.log(` [${diff.section}] ${diff.key}: \"${diff.from ?? \"\"}\" -> \"${diff.to ?? \"\"}\"`);\n }\n } else {\n console.log(\"No overlay changes applied.\");\n }\n\n // Persist the merged JSON only when explicitly requested.\n if (args.writeMergedJson) {\n await writeJson(merged, args.jsonOut);\n }\n\n await writeDictionaryTs(merged, args.output, args.lang);\n console.log(`Generated dictionary -> ${args.output}`);\n}\n\nfunction parseArgs(argv: string[]): CliArgs {\n let input = DEFAULT_INPUT;\n let output = DEFAULT_OUTPUT;\n let jsonOut = DEFAULT_JSON_OUT;\n let fromGraphql = false;\n let queryFile: string | undefined;\n let writeMergedJson = false;\n let priority: \"overlay\" | \"base\" = \"overlay\";\n let lang = \"sl\";\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n if (arg === \"--input\" && argv[i + 1]) {\n input = argv[++i];\n continue;\n }\n if (arg === \"--output\" && argv[i + 1]) {\n output = argv[++i];\n continue;\n }\n if (arg === \"--json-out\" && argv[i + 1]) {\n jsonOut = argv[++i];\n continue;\n }\n if (arg === \"--write-merged-json\") {\n writeMergedJson = true;\n continue;\n }\n if (arg === \"--from-graphql\") {\n fromGraphql = true;\n continue;\n }\n if (arg === \"--query-file\" && argv[i + 1]) {\n queryFile = argv[++i];\n continue;\n }\n if (arg === \"--priority\" && argv[i + 1]) {\n const val = argv[++i];\n if (val !== \"overlay\" && val !== \"base\") {\n throw new Error(`Invalid priority \"${val}\". Use \"overlay\" or \"base\".`);\n }\n priority = val;\n continue;\n }\n if (arg === \"--lang\" && argv[i + 1]) {\n lang = argv[++i];\n continue;\n }\n if (arg === \"--help\" || arg === \"-h\") {\n printHelp();\n process.exit(0);\n }\n throw new Error(`Unknown argument: ${arg}`);\n }\n\n return { input, output, jsonOut, fromGraphql, queryFile, writeMergedJson, priority, lang };\n}\n\nfunction printHelp(): void {\n console.log(`Usage: tsx packages/uns-core/src/tools/generate-uns-dictionary.ts [options]\n\nOptions:\n --input <file> Path to uns-dictionary.json (default: ${DEFAULT_INPUT})\n --output <file> Path to generated TS file (default: src/uns/uns-dictionary.generated.ts)\n --json-out <file> Where to write merged JSON (default: ${DEFAULT_JSON_OUT})\n --write-merged-json Persist the merged JSON (otherwise JSON is left untouched)\n --from-graphql Fetch dictionary from GraphQL instead of reading local JSON\n --query-file <file> Optional .graphql/.gql file to override the default query\n --priority <p> Merge priority: \"overlay\" (default) or \"base\" (keep base descriptions)\n --lang <code> Preferred description language code (default: \"sl\")\n --help, -h Show this help\n`);\n}\n\nasync function readDictionaryFromJson(filePath: string): Promise<UnsDictionary> {\n const absolute = path.resolve(process.cwd(), filePath);\n const raw = await readFile(absolute, \"utf8\");\n return JSON.parse(raw) as UnsDictionary;\n}\n\nasync function readDictionaryIfExists(filePath: string): Promise<UnsDictionary> {\n try {\n return await readDictionaryFromJson(filePath);\n } catch (error: any) {\n if (error?.code === \"ENOENT\") {\n return {};\n }\n throw error;\n }\n}\n\nasync function fetchDictionaryFromGraphql(queryFile?: string): Promise<UnsDictionary> {\n const config = await ConfigFile.loadConfig();\n const auth = await AuthClient.create();\n let accessToken = await auth.getAccessToken();\n\n const client = new GraphQLClient(config.uns.graphql, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n\n const querySource = queryFile\n ? await readFile(path.resolve(process.cwd(), queryFile), \"utf8\")\n : DEFAULT_DICTIONARY_QUERY;\n\n const document = gql`${querySource}`;\n\n async function requestWithAuth<T>(documentToRun: any): Promise<T> {\n try {\n return await client.request<T>(documentToRun);\n } catch (err: any) {\n const isAuthErr = err instanceof ClientError && (err.response.status === 401 || err.response.status === 403);\n if (isAuthErr) {\n accessToken = await auth.getAccessToken();\n client.setHeader(\"Authorization\", `Bearer ${accessToken}`);\n return await client.request<T>(documentToRun);\n }\n throw err;\n }\n }\n\n const data: any = await requestWithAuth(document);\n\n const objectTypeArray =\n data?.GetObjectTypes ??\n data?.objectTypes ??\n data?.unsDictionary?.objectTypes ??\n [];\n\n const attributeArray =\n data?.GetAttributes ??\n data?.attributes ??\n data?.unsDictionary?.attributes ??\n [];\n\n const objectTypes: Record<string, DictionaryEntry> = {};\n for (const item of objectTypeArray) {\n if (item?.name) {\n objectTypes[item.name] = { description: item.description ?? undefined };\n }\n }\n\n const attributes: Record<string, DictionaryEntry> = {};\n for (const item of attributeArray) {\n if (item?.name) {\n attributes[item.name] = { description: item.description ?? undefined };\n }\n }\n\n return { objectTypes, attributes };\n}\n\nasync function writeJson(dictionary: UnsDictionary, filePath: string): Promise<void> {\n const absolute = path.resolve(process.cwd(), filePath);\n await mkdir(path.dirname(absolute), { recursive: true });\n await writeFile(absolute, JSON.stringify(dictionary, null, 2) + \"\\n\", \"utf8\");\n console.log(`Wrote dictionary JSON -> ${absolute}`);\n}\n\ntype Diff = { section: \"objectTypes\" | \"attributes\"; key: string; from?: string; to?: string };\n\nconst resolveDescription = (entry: DictionaryEntry | undefined, lang: string): string | undefined => {\n if (!entry) return undefined;\n const byLang = entry.descriptions?.[lang];\n if (byLang && byLang.length > 0) return byLang;\n if (entry.description && entry.description.length > 0) return entry.description;\n return undefined;\n};\n\nfunction mergeDictionaries(base: UnsDictionary, overlay: UnsDictionary, priority: \"overlay\" | \"base\", lang: string): { merged: UnsDictionary; differences: Diff[] } {\n const differences: Diff[] = [];\n\n const mergeSection = (\n baseSection: Record<string, DictionaryEntry> = {},\n overlaySection: Record<string, DictionaryEntry> = {},\n section: Diff[\"section\"],\n ) => {\n const result: Record<string, DictionaryEntry> = { ...baseSection };\n for (const [key, value] of Object.entries(overlaySection)) {\n const baseEntry = result[key];\n const mergedEntry: DictionaryEntry = {\n ...(baseEntry ?? {}),\n descriptions: { ...(baseEntry?.descriptions ?? {}), ...(value.descriptions ?? {}) },\n };\n\n if (value.description !== undefined) {\n mergedEntry.description = value.description ?? undefined;\n }\n\n if (!baseEntry) {\n result[key] = mergedEntry;\n const toDesc = resolveDescription(mergedEntry, lang) ?? \"\";\n differences.push({ section, key, from: undefined, to: toDesc });\n continue;\n }\n\n const baseDesc = resolveDescription(baseEntry, lang);\n const overlayDesc = resolveDescription(value, lang);\n const shouldOverride = priority === \"overlay\" && overlayDesc && overlayDesc.length > 0;\n\n if (shouldOverride && overlayDesc !== baseDesc) {\n differences.push({ section, key, from: baseDesc ?? \"\", to: overlayDesc });\n // mergedEntry already contains overlay descriptions; resolved value will pick it up.\n }\n\n result[key] = mergedEntry;\n }\n return result;\n };\n\n const merged = {\n objectTypes: mergeSection(base.objectTypes, overlay.objectTypes, \"objectTypes\"),\n attributes: mergeSection(base.attributes, overlay.attributes, \"attributes\"),\n };\n\n return { merged, differences };\n}\n\nasync function writeDictionaryTs(dictionary: UnsDictionary, filePath: string, lang: string): Promise<void> {\n const objectTypeEntries = Object.entries(dictionary.objectTypes ?? {});\n const attributeEntries = Object.entries(dictionary.attributes ?? {});\n\n const renderRecord = (entries: [string, DictionaryEntry][]) =>\n entries\n .map(([name, entry]) => {\n const desc = resolveDescription(entry, lang);\n const doc = desc ? ` /** ${desc} */\\n` : \"\";\n return `${doc} \"${name}\": \"${name}\",`;\n })\n .join(\"\\n\");\n\n const renderDescriptions = (entries: [string, DictionaryEntry][]) =>\n entries\n .map(([name, value]) => ` \"${name}\": ${JSON.stringify(resolveDescription(value, lang) ?? \"\")},`)\n .join(\"\\n\");\n\n const objectTypeConst = `export const GeneratedObjectTypes = {\\n${renderRecord(objectTypeEntries)}\\n} as const;`;\n const objectTypeDescConst = `export const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {\\n${renderDescriptions(objectTypeEntries)}\\n};`;\n\n const attributeConst = `export const GeneratedAttributes = {\\n${renderRecord(attributeEntries)}\\n} as const;`;\n const attributeDescConst = `export const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {\\n${renderDescriptions(attributeEntries)}\\n};`;\n\n const content = `/* Auto-generated by generate-uns-dictionary.ts. Do not edit by hand. */\\n${objectTypeConst}\\n\\n${objectTypeDescConst}\\n\\nexport type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;\\n\\nexport function getGeneratedObjectTypeDescription(name: string): string | undefined {\\n return (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[name];\\n}\\n\\n${attributeConst}\\n\\n${attributeDescConst}\\n\\nexport type GeneratedAttributeName = keyof typeof GeneratedAttributes;\\n\\nexport function getGeneratedAttributeDescription(name: string): string | undefined {\\n return (GeneratedAttributeDescriptions as Record<string, string | undefined>)[name];\\n}\\n`;\n\n const absolute = path.resolve(process.cwd(), filePath);\n await mkdir(path.dirname(absolute), { recursive: true });\n await writeFile(absolute, content, \"utf8\");\n}\n\nconst DEFAULT_DICTIONARY_QUERY = /* GraphQL */ `\n query GetUnsDictionary {\n GetObjectTypes {\n name\n description\n }\n GetAttributes {\n name\n description\n }\n }\n`;\n\nmain().catch((error) => {\n console.error(\"Failed to generate UNS dictionary:\", error);\n process.exitCode = 1;\n});\n"]}
|
|
1
|
+
{"version":3,"file":"generate-uns-dictionary.js","sourceRoot":"","sources":["../../src/tools/generate-uns-dictionary.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAyB7C,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qCAAqC,CAAC,CAAC;AAC1F,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;AAEpE,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW;QACxC,CAAC,CAAC,MAAM,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/G,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAED,0DAA0D;IAC1D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,KAAK,GAAG,aAAa,CAAC;IAC1B,IAAI,MAAM,GAAG,cAAc,CAAC;IAC5B,IAAI,OAAO,GAAG,gBAAgB,CAAC;IAC/B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,SAA6B,CAAC;IAClC,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,QAAQ,GAAuB,SAAS,CAAC;IAC7C,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACrC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;YAClC,eAAe,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YAC7B,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1C,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,6BAA6B,CAAC,CAAC;YACzE,CAAC;YACD,QAAQ,GAAG,GAAG,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7F,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;gEAGkD,aAAa;;+DAEd,gBAAgB;;;;;;;CAO9E,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IACpD,IAAI,CAAC;QACH,OAAO,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,SAAkB;IAC1D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;IACvC,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QACnD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;KACpD,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,SAAS;QAC3B,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAChE,CAAC,CAAC,wBAAwB,CAAC;IAE7B,MAAM,QAAQ,GAAG,GAAG,CAAA,GAAG,WAAW,EAAE,CAAC;IAErC,KAAK,UAAU,eAAe,CAAI,aAAkB;QAClD,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,OAAO,CAAI,aAAa,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,GAAG,YAAY,WAAW,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;YAC7G,IAAI,SAAS,EAAE,CAAC;gBACd,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1C,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;gBAC3D,OAAO,MAAM,MAAM,CAAC,OAAO,CAAI,aAAa,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAQ,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAElD,MAAM,eAAe,GACnB,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,aAAa,EAAE,WAAW;QAChC,EAAE,CAAC;IAEL,MAAM,cAAc,GAClB,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa,EAAE,UAAU;QAC/B,EAAE,CAAC;IAEL,MAAM,WAAW,GAAoC,EAAE,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAoC,EAAE,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;QACzE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,UAAyB,EAAE,QAAgB;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;AACtD,CAAC;AAID,MAAM,kBAAkB,GAAG,CAAC,KAAkC,EAAE,IAAY,EAAsB,EAAE;IAClG,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC;IAChF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,SAAS,iBAAiB,CAAC,IAAmB,EAAE,OAAsB,EAAE,QAA4B,EAAE,IAAY;IAChH,MAAM,WAAW,GAAW,EAAE,CAAC;IAE/B,MAAM,YAAY,GAAG,CACnB,cAA+C,EAAE,EACjD,iBAAkD,EAAE,EACpD,OAAwB,EACxB,EAAE;QACF,MAAM,MAAM,GAAoC,EAAE,GAAG,WAAW,EAAE,CAAC;QACnE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,WAAW,GAAoB;gBACnC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;gBACpB,YAAY,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE;aACpF,CAAC;YAEF,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;YAC3D,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;gBAC1B,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3D,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChE,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpD,MAAM,cAAc,GAAG,QAAQ,KAAK,SAAS,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAEvF,IAAI,cAAc,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC/C,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC1E,qFAAqF;YACvF,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC;QAC/E,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;KAC5E,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAyB,EAAE,QAAgB,EAAE,IAAY;IACxF,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAA6B,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnE,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,OAAoC,EAAE,EAAE,CAC5D,OAAO;SACJ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,GAAG,MAAM,IAAI,OAAO,IAAI,IAAI,CAAC;IACzC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,MAAM,kBAAkB,GAAG,CAAC,OAAoC,EAAE,EAAE,CAClE,OAAO;SACJ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;SAChG,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,MAAM,eAAe,GAAG,0CAA0C,YAAY,CAAC,iBAAiB,CAAC,eAAe,CAAC;IACjH,MAAM,mBAAmB,GAAG,wGAAwG,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,CAAC;IAEhL,MAAM,cAAc,GAAG,yCAAyC,YAAY,CAAC,gBAAgB,CAAC,eAAe,CAAC;IAC9G,MAAM,kBAAkB,GAAG,sGAAsG,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,CAAC;IAE5K,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,SAAS;YAC5B,MAAM,KAAK,GAAG,KAAK;iBAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;gBACrE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,OAAO,GAAG,GAAG,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC;YAC3C,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,MAAM,UAAU,SAAS,KAAK,QAAQ,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,4CAA4C,sBAAsB,EAAE,0FAA0F,CAAC;IAE7L,MAAM,OAAO,GAAG,6EAA6E,eAAe,OAAO,mBAAmB,wQAAwQ,cAAc,OAAO,kBAAkB,OAAO,qBAAqB,sYAAsY,CAAC;IAEx1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,wBAAwB,GAAG,aAAa,CAAC;;;;;;;;;;;CAW9C,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\n/**\n * Generate a TypeScript dictionary of object types and attributes (with descriptions)\n * from a JSON file or by fetching from GraphQL. The output is meant for IntelliSense\n * and metadata enrichment (e.g., emitting descriptions alongside topics).\n *\n * JSON shape (example):\n * {\n * \"objectTypes\": {\n * \"energy-resource\": { \"description\": \"Energy carriers (electricity/steam/gas)\" },\n * \"custom-type\": { \"description\": \"Tenant-specific thing\" }\n * },\n * \"attributes\": {\n * \"cumulative-active-energy-delivered\": { \"description\": \"kWh total\" },\n * \"status\": { \"description\": \"Generic status\" }\n * }\n * }\n */\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { GraphQLClient, ClientError, gql } from \"graphql-request\";\nimport { ConfigFile } from \"../config-file.js\";\nimport { AuthClient } from \"./auth/index.js\";\n\ntype DictionaryEntry = {\n description?: string | null;\n descriptions?: Record<string, string | null | undefined>;\n};\ntype ObjectTypeEntry = DictionaryEntry & {\n attributes?: string[] | null;\n};\ntype UnsDictionary = {\n objectTypes?: Record<string, ObjectTypeEntry>;\n attributes?: Record<string, DictionaryEntry>;\n};\n\ntype CliArgs = {\n input: string;\n output: string;\n jsonOut: string;\n fromGraphql: boolean;\n queryFile?: string;\n writeMergedJson: boolean;\n priority: \"overlay\" | \"base\";\n lang: string;\n};\n\nconst DEFAULT_INPUT = \"uns-dictionary.json\";\nconst DEFAULT_OUTPUT = path.resolve(process.cwd(), \"src/uns/uns-dictionary.generated.ts\");\nconst DEFAULT_JSON_OUT = path.resolve(process.cwd(), DEFAULT_INPUT);\n\nasync function main(): Promise<void> {\n const args = parseArgs(process.argv.slice(2));\n\n const baseDictionary = await readDictionaryIfExists(args.input);\n const overlayDictionary = args.fromGraphql\n ? await fetchDictionaryFromGraphql(args.queryFile)\n : {};\n\n const { merged, differences } = mergeDictionaries(baseDictionary, overlayDictionary, args.priority, args.lang);\n\n if (differences.length) {\n console.log(\"Overlay changes applied:\");\n for (const diff of differences) {\n console.log(` [${diff.section}] ${diff.key}: \"${diff.from ?? \"\"}\" -> \"${diff.to ?? \"\"}\"`);\n }\n } else {\n console.log(\"No overlay changes applied.\");\n }\n\n // Persist the merged JSON only when explicitly requested.\n if (args.writeMergedJson) {\n await writeJson(merged, args.jsonOut);\n }\n\n await writeDictionaryTs(merged, args.output, args.lang);\n console.log(`Generated dictionary -> ${args.output}`);\n}\n\nfunction parseArgs(argv: string[]): CliArgs {\n let input = DEFAULT_INPUT;\n let output = DEFAULT_OUTPUT;\n let jsonOut = DEFAULT_JSON_OUT;\n let fromGraphql = false;\n let queryFile: string | undefined;\n let writeMergedJson = false;\n let priority: \"overlay\" | \"base\" = \"overlay\";\n let lang = \"sl\";\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n if (arg === \"--input\" && argv[i + 1]) {\n input = argv[++i];\n continue;\n }\n if (arg === \"--output\" && argv[i + 1]) {\n output = argv[++i];\n continue;\n }\n if (arg === \"--json-out\" && argv[i + 1]) {\n jsonOut = argv[++i];\n continue;\n }\n if (arg === \"--write-merged-json\") {\n writeMergedJson = true;\n continue;\n }\n if (arg === \"--from-graphql\") {\n fromGraphql = true;\n continue;\n }\n if (arg === \"--query-file\" && argv[i + 1]) {\n queryFile = argv[++i];\n continue;\n }\n if (arg === \"--priority\" && argv[i + 1]) {\n const val = argv[++i];\n if (val !== \"overlay\" && val !== \"base\") {\n throw new Error(`Invalid priority \"${val}\". Use \"overlay\" or \"base\".`);\n }\n priority = val;\n continue;\n }\n if (arg === \"--lang\" && argv[i + 1]) {\n lang = argv[++i];\n continue;\n }\n if (arg === \"--help\" || arg === \"-h\") {\n printHelp();\n process.exit(0);\n }\n throw new Error(`Unknown argument: ${arg}`);\n }\n\n return { input, output, jsonOut, fromGraphql, queryFile, writeMergedJson, priority, lang };\n}\n\nfunction printHelp(): void {\n console.log(`Usage: tsx packages/uns-core/src/tools/generate-uns-dictionary.ts [options]\n\nOptions:\n --input <file> Path to uns-dictionary.json (default: ${DEFAULT_INPUT})\n --output <file> Path to generated TS file (default: src/uns/uns-dictionary.generated.ts)\n --json-out <file> Where to write merged JSON (default: ${DEFAULT_JSON_OUT})\n --write-merged-json Persist the merged JSON (otherwise JSON is left untouched)\n --from-graphql Fetch dictionary from GraphQL instead of reading local JSON\n --query-file <file> Optional .graphql/.gql file to override the default query\n --priority <p> Merge priority: \"overlay\" (default) or \"base\" (keep base descriptions)\n --lang <code> Preferred description language code (default: \"sl\")\n --help, -h Show this help\n`);\n}\n\nasync function readDictionaryFromJson(filePath: string): Promise<UnsDictionary> {\n const absolute = path.resolve(process.cwd(), filePath);\n const raw = await readFile(absolute, \"utf8\");\n return JSON.parse(raw) as UnsDictionary;\n}\n\nasync function readDictionaryIfExists(filePath: string): Promise<UnsDictionary> {\n try {\n return await readDictionaryFromJson(filePath);\n } catch (error: any) {\n if (error?.code === \"ENOENT\") {\n return {};\n }\n throw error;\n }\n}\n\nasync function fetchDictionaryFromGraphql(queryFile?: string): Promise<UnsDictionary> {\n const config = await ConfigFile.loadConfig();\n const auth = await AuthClient.create();\n let accessToken = await auth.getAccessToken();\n\n const client = new GraphQLClient(config.uns.graphql, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n\n const querySource = queryFile\n ? await readFile(path.resolve(process.cwd(), queryFile), \"utf8\")\n : DEFAULT_DICTIONARY_QUERY;\n\n const document = gql`${querySource}`;\n\n async function requestWithAuth<T>(documentToRun: any): Promise<T> {\n try {\n return await client.request<T>(documentToRun);\n } catch (err: any) {\n const isAuthErr = err instanceof ClientError && (err.response.status === 401 || err.response.status === 403);\n if (isAuthErr) {\n accessToken = await auth.getAccessToken();\n client.setHeader(\"Authorization\", `Bearer ${accessToken}`);\n return await client.request<T>(documentToRun);\n }\n throw err;\n }\n }\n\n const data: any = await requestWithAuth(document);\n\n const objectTypeArray =\n data?.GetObjectTypes ??\n data?.objectTypes ??\n data?.unsDictionary?.objectTypes ??\n [];\n\n const attributeArray =\n data?.GetAttributes ??\n data?.attributes ??\n data?.unsDictionary?.attributes ??\n [];\n\n const objectTypes: Record<string, DictionaryEntry> = {};\n for (const item of objectTypeArray) {\n if (item?.name) {\n objectTypes[item.name] = { description: item.description ?? undefined };\n }\n }\n\n const attributes: Record<string, DictionaryEntry> = {};\n for (const item of attributeArray) {\n if (item?.name) {\n attributes[item.name] = { description: item.description ?? undefined };\n }\n }\n\n return { objectTypes, attributes };\n}\n\nasync function writeJson(dictionary: UnsDictionary, filePath: string): Promise<void> {\n const absolute = path.resolve(process.cwd(), filePath);\n await mkdir(path.dirname(absolute), { recursive: true });\n await writeFile(absolute, JSON.stringify(dictionary, null, 2) + \"\\n\", \"utf8\");\n console.log(`Wrote dictionary JSON -> ${absolute}`);\n}\n\ntype Diff = { section: \"objectTypes\" | \"attributes\"; key: string; from?: string; to?: string };\n\nconst resolveDescription = (entry: DictionaryEntry | undefined, lang: string): string | undefined => {\n if (!entry) return undefined;\n const byLang = entry.descriptions?.[lang];\n if (byLang && byLang.length > 0) return byLang;\n if (entry.description && entry.description.length > 0) return entry.description;\n return undefined;\n};\n\nfunction mergeDictionaries(base: UnsDictionary, overlay: UnsDictionary, priority: \"overlay\" | \"base\", lang: string): { merged: UnsDictionary; differences: Diff[] } {\n const differences: Diff[] = [];\n\n const mergeSection = (\n baseSection: Record<string, DictionaryEntry> = {},\n overlaySection: Record<string, DictionaryEntry> = {},\n section: Diff[\"section\"],\n ) => {\n const result: Record<string, DictionaryEntry> = { ...baseSection };\n for (const [key, value] of Object.entries(overlaySection)) {\n const baseEntry = result[key];\n const mergedEntry: DictionaryEntry = {\n ...(baseEntry ?? {}),\n descriptions: { ...(baseEntry?.descriptions ?? {}), ...(value.descriptions ?? {}) },\n };\n\n if (value.description !== undefined) {\n mergedEntry.description = value.description ?? undefined;\n }\n\n if (!baseEntry) {\n result[key] = mergedEntry;\n const toDesc = resolveDescription(mergedEntry, lang) ?? \"\";\n differences.push({ section, key, from: undefined, to: toDesc });\n continue;\n }\n\n const baseDesc = resolveDescription(baseEntry, lang);\n const overlayDesc = resolveDescription(value, lang);\n const shouldOverride = priority === \"overlay\" && overlayDesc && overlayDesc.length > 0;\n\n if (shouldOverride && overlayDesc !== baseDesc) {\n differences.push({ section, key, from: baseDesc ?? \"\", to: overlayDesc });\n // mergedEntry already contains overlay descriptions; resolved value will pick it up.\n }\n\n result[key] = mergedEntry;\n }\n return result;\n };\n\n const merged = {\n objectTypes: mergeSection(base.objectTypes, overlay.objectTypes, \"objectTypes\"),\n attributes: mergeSection(base.attributes, overlay.attributes, \"attributes\"),\n };\n\n return { merged, differences };\n}\n\nasync function writeDictionaryTs(dictionary: UnsDictionary, filePath: string, lang: string): Promise<void> {\n const objectTypeEntries = Object.entries(dictionary.objectTypes ?? {});\n const attributeEntries = Object.entries(dictionary.attributes ?? {});\n const attributesByType: Record<string, string[]> = {};\n for (const [name, entry] of objectTypeEntries) {\n if (Array.isArray(entry.attributes) && entry.attributes.length > 0) {\n attributesByType[name] = entry.attributes.filter(Boolean) as string[];\n }\n }\n\n const renderRecord = (entries: [string, DictionaryEntry][]) =>\n entries\n .map(([name, entry]) => {\n const desc = resolveDescription(entry, lang);\n const doc = desc ? ` /** ${desc} */\\n` : \"\";\n return `${doc} \"${name}\": \"${name}\",`;\n })\n .join(\"\\n\");\n\n const renderDescriptions = (entries: [string, DictionaryEntry][]) =>\n entries\n .map(([name, value]) => ` \"${name}\": ${JSON.stringify(resolveDescription(value, lang) ?? \"\")},`)\n .join(\"\\n\");\n\n const objectTypeConst = `export const GeneratedObjectTypes = {\\n${renderRecord(objectTypeEntries)}\\n} as const;`;\n const objectTypeDescConst = `export const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {\\n${renderDescriptions(objectTypeEntries)}\\n};`;\n\n const attributeConst = `export const GeneratedAttributes = {\\n${renderRecord(attributeEntries)}\\n} as const;`;\n const attributeDescConst = `export const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {\\n${renderDescriptions(attributeEntries)}\\n};`;\n\n const renderAttributesByType = () => {\n const blocks: string[] = [];\n for (const [objectType, attrs] of Object.entries(attributesByType)) {\n if (!attrs.length) continue;\n const lines = attrs\n .map((attr) => {\n const desc = resolveDescription(dictionary.attributes?.[attr], lang);\n const doc = desc ? ` /** ${desc} */\\n` : \"\";\n return `${doc} \"${attr}\": \"${attr}\",`;\n })\n .join(\"\\n\");\n blocks.push(` \"${objectType}\": {\\n${lines}\\n },`);\n }\n return blocks.join(\"\\n\");\n };\n\n const attributesByTypeConst = `const GeneratedAttributesByTypeBase = {\\n${renderAttributesByType()}\\n} as const;\\n\\nexport const GeneratedAttributesByType = GeneratedAttributesByTypeBase;`;\n\n const content = `/* Auto-generated by generate-uns-dictionary.ts. Do not edit by hand. */\\n${objectTypeConst}\\n\\n${objectTypeDescConst}\\n\\nexport type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;\\n\\nexport function getGeneratedObjectTypeDescription(name: string): string | undefined {\\n return (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[name];\\n}\\n\\n${attributeConst}\\n\\n${attributeDescConst}\\n\\n${attributesByTypeConst}\\n\\nexport type GeneratedAttributeName = keyof typeof GeneratedAttributes;\\n\\nexport type GeneratedAttributesFor<T extends keyof typeof GeneratedAttributesByType> = keyof typeof GeneratedAttributesByType[T];\\n\\nexport function getGeneratedAttributeDescription(name: string): string | undefined {\\n return (GeneratedAttributeDescriptions as Record<string, string | undefined>)[name];\\n}\\n`;\n\n const absolute = path.resolve(process.cwd(), filePath);\n await mkdir(path.dirname(absolute), { recursive: true });\n await writeFile(absolute, content, \"utf8\");\n}\n\nconst DEFAULT_DICTIONARY_QUERY = /* GraphQL */ `\n query GetUnsDictionary {\n GetObjectTypes {\n name\n description\n }\n GetAttributes {\n name\n description\n }\n }\n`;\n\nmain().catch((error) => {\n console.error(\"Failed to generate UNS dictionary:\", error);\n process.exitCode = 1;\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-uns-measurements.d.ts","sourceRoot":"","sources":["../../src/tools/generate-uns-measurements.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Generate a TypeScript helper for measurements from a JSON file.
|
|
4
|
+
*
|
|
5
|
+
* JSON shape (example):
|
|
6
|
+
* {
|
|
7
|
+
* "physical": {
|
|
8
|
+
* "None": { "value": "", "description": "Brez enote" },
|
|
9
|
+
* "Celsius": { "value": "°C", "description": "Stopinje Celzija" }
|
|
10
|
+
* },
|
|
11
|
+
* "dataSize": {
|
|
12
|
+
* "Bit": { "value": "bit", "description": "Bit" }
|
|
13
|
+
* },
|
|
14
|
+
* "counter": {
|
|
15
|
+
* "Kilo": { "value": "k", "description": "Kilo" }
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
20
|
+
import path from "node:path";
|
|
21
|
+
const DEFAULT_INPUT = "uns-measurements.json";
|
|
22
|
+
const DEFAULT_OUTPUT = path.resolve(process.cwd(), "src/uns/uns-measurements.generated.ts");
|
|
23
|
+
async function main() {
|
|
24
|
+
const { input, output, lang } = parseArgs(process.argv.slice(2));
|
|
25
|
+
const json = await loadJson(input);
|
|
26
|
+
const content = renderTs(json, lang);
|
|
27
|
+
await mkdir(path.dirname(output), { recursive: true });
|
|
28
|
+
await writeFile(output, content, "utf8");
|
|
29
|
+
console.log(`Generated measurements -> ${output}`);
|
|
30
|
+
}
|
|
31
|
+
function parseArgs(argv) {
|
|
32
|
+
let input = DEFAULT_INPUT;
|
|
33
|
+
let output = DEFAULT_OUTPUT;
|
|
34
|
+
let lang = "sl";
|
|
35
|
+
for (let i = 0; i < argv.length; i++) {
|
|
36
|
+
const arg = argv[i];
|
|
37
|
+
if (arg === "--input" && argv[i + 1]) {
|
|
38
|
+
input = argv[++i];
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (arg === "--output" && argv[i + 1]) {
|
|
42
|
+
output = argv[++i];
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (arg === "--lang" && argv[i + 1]) {
|
|
46
|
+
lang = argv[++i];
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (arg === "--help" || arg === "-h") {
|
|
50
|
+
printHelp();
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`Unknown argument: ${arg}`);
|
|
54
|
+
}
|
|
55
|
+
return { input, output, lang };
|
|
56
|
+
}
|
|
57
|
+
function printHelp() {
|
|
58
|
+
console.log(`Usage: tsx packages/uns-core/src/tools/generate-uns-measurements.ts [options]
|
|
59
|
+
|
|
60
|
+
Options:
|
|
61
|
+
--input <file> Path to uns-measurements.json (default: ${DEFAULT_INPUT})
|
|
62
|
+
--output <file> Path to generated TS file (default: src/uns/uns-measurements.generated.ts)
|
|
63
|
+
--lang <code> Preferred description language (default: "sl")
|
|
64
|
+
--help, -h Show this help
|
|
65
|
+
`);
|
|
66
|
+
}
|
|
67
|
+
async function loadJson(filePath) {
|
|
68
|
+
const abs = path.resolve(process.cwd(), filePath);
|
|
69
|
+
const raw = await readFile(abs, "utf8");
|
|
70
|
+
return JSON.parse(raw);
|
|
71
|
+
}
|
|
72
|
+
const resolveDesc = (entry, lang) => {
|
|
73
|
+
if (!entry)
|
|
74
|
+
return undefined;
|
|
75
|
+
const byLang = entry.descriptions?.[lang];
|
|
76
|
+
if (byLang && byLang.length > 0)
|
|
77
|
+
return byLang;
|
|
78
|
+
if (entry.description && entry.description.length > 0)
|
|
79
|
+
return entry.description;
|
|
80
|
+
return undefined;
|
|
81
|
+
};
|
|
82
|
+
function renderSection(name, entries, lang) {
|
|
83
|
+
if (!entries)
|
|
84
|
+
return `export const ${name} = {} as const;`;
|
|
85
|
+
const lines = Object.entries(entries)
|
|
86
|
+
.map(([key, entry]) => {
|
|
87
|
+
const desc = resolveDesc(entry, lang);
|
|
88
|
+
const doc = desc ? ` /** ${desc} */\n` : "";
|
|
89
|
+
return `${doc} "${key}": "${entry.value}",`;
|
|
90
|
+
})
|
|
91
|
+
.join("\n");
|
|
92
|
+
return `export const ${name} = {\n${lines}\n} as const;`;
|
|
93
|
+
}
|
|
94
|
+
function renderTs(json, lang) {
|
|
95
|
+
const physical = renderSection("GeneratedPhysicalMeasurements", json.physical, lang);
|
|
96
|
+
const dataSize = renderSection("GeneratedDataSizeMeasurements", json.dataSize, lang);
|
|
97
|
+
const counter = renderSection("GeneratedCounterMeasurements", json.counter, lang);
|
|
98
|
+
return `/* Auto-generated by generate-uns-measurements.ts. Do not edit by hand. */\n${physical}\n\n${dataSize}\n\n${counter}\n\nexport type GeneratedPhysicalMeasurement = typeof GeneratedPhysicalMeasurements[keyof typeof GeneratedPhysicalMeasurements];\nexport type GeneratedDataSizeMeasurement = typeof GeneratedDataSizeMeasurements[keyof typeof GeneratedDataSizeMeasurements];\nexport type GeneratedCounterMeasurement = typeof GeneratedCounterMeasurements[keyof typeof GeneratedCounterMeasurements];\nexport type GeneratedMeasurementUnit = GeneratedPhysicalMeasurement | GeneratedDataSizeMeasurement | GeneratedCounterMeasurement | (string & {});\n`;
|
|
99
|
+
}
|
|
100
|
+
main().catch((err) => {
|
|
101
|
+
console.error("Failed to generate measurements:", err);
|
|
102
|
+
process.exitCode = 1;
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=generate-uns-measurements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-uns-measurements.js","sourceRoot":"","sources":["../../src/tools/generate-uns-measurements.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Generate a TypeScript helper for measurements from a JSON file.\n *\n * JSON shape (example):\n * {\n * \"physical\": {\n * \"None\": { \"value\": \"\", \"description\": \"Brez enote\" },\n * \"Celsius\": { \"value\": \"°C\", \"description\": \"Stopinje Celzija\" }\n * },\n * \"dataSize\": {\n * \"Bit\": { \"value\": \"bit\", \"description\": \"Bit\" }\n * },\n * \"counter\": {\n * \"Kilo\": { \"value\": \"k\", \"description\": \"Kilo\" }\n * }\n * }\n */\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\ntype Entry = { value: string; description?: string | null; descriptions?: Record<string, string | null | undefined> };\ntype MeasurementsJson = {\n physical?: Record<string, Entry>;\n dataSize?: Record<string, Entry>;\n counter?: Record<string, Entry>;\n};\n\nconst DEFAULT_INPUT = \"uns-measurements.json\";\nconst DEFAULT_OUTPUT = path.resolve(process.cwd(), \"src/uns/uns-measurements.generated.ts\");\n\nasync function main() {\n const { input, output, lang } = parseArgs(process.argv.slice(2));\n const json = await loadJson(input);\n const content = renderTs(json, lang);\n await mkdir(path.dirname(output), { recursive: true });\n await writeFile(output, content, \"utf8\");\n console.log(`Generated measurements -> ${output}`);\n}\n\nfunction parseArgs(argv: string[]) {\n let input = DEFAULT_INPUT;\n let output = DEFAULT_OUTPUT;\n let lang = \"sl\";\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n if (arg === \"--input\" && argv[i + 1]) {\n input = argv[++i];\n continue;\n }\n if (arg === \"--output\" && argv[i + 1]) {\n output = argv[++i];\n continue;\n }\n if (arg === \"--lang\" && argv[i + 1]) {\n lang = argv[++i];\n continue;\n }\n if (arg === \"--help\" || arg === \"-h\") {\n printHelp();\n process.exit(0);\n }\n throw new Error(`Unknown argument: ${arg}`);\n }\n\n return { input, output, lang };\n}\n\nfunction printHelp(): void {\n console.log(`Usage: tsx packages/uns-core/src/tools/generate-uns-measurements.ts [options]\n\nOptions:\n --input <file> Path to uns-measurements.json (default: ${DEFAULT_INPUT})\n --output <file> Path to generated TS file (default: src/uns/uns-measurements.generated.ts)\n --lang <code> Preferred description language (default: \"sl\")\n --help, -h Show this help\n`);\n}\n\nasync function loadJson(filePath: string): Promise<MeasurementsJson> {\n const abs = path.resolve(process.cwd(), filePath);\n const raw = await readFile(abs, \"utf8\");\n return JSON.parse(raw) as MeasurementsJson;\n}\n\nconst resolveDesc = (entry: Entry | undefined, lang: string): string | undefined => {\n if (!entry) return undefined;\n const byLang = entry.descriptions?.[lang];\n if (byLang && byLang.length > 0) return byLang;\n if (entry.description && entry.description.length > 0) return entry.description;\n return undefined;\n};\n\nfunction renderSection(name: string, entries: Record<string, Entry> | undefined, lang: string): string {\n if (!entries) return `export const ${name} = {} as const;`;\n const lines = Object.entries(entries)\n .map(([key, entry]) => {\n const desc = resolveDesc(entry, lang);\n const doc = desc ? ` /** ${desc} */\\n` : \"\";\n return `${doc} \"${key}\": \"${entry.value}\",`;\n })\n .join(\"\\n\");\n return `export const ${name} = {\\n${lines}\\n} as const;`;\n}\n\nfunction renderTs(json: MeasurementsJson, lang: string): string {\n const physical = renderSection(\"GeneratedPhysicalMeasurements\", json.physical, lang);\n const dataSize = renderSection(\"GeneratedDataSizeMeasurements\", json.dataSize, lang);\n const counter = renderSection(\"GeneratedCounterMeasurements\", json.counter, lang);\n\n return `/* Auto-generated by generate-uns-measurements.ts. Do not edit by hand. */\\n${physical}\\n\\n${dataSize}\\n\\n${counter}\\n\\nexport type GeneratedPhysicalMeasurement = typeof GeneratedPhysicalMeasurements[keyof typeof GeneratedPhysicalMeasurements];\\nexport type GeneratedDataSizeMeasurement = typeof GeneratedDataSizeMeasurements[keyof typeof GeneratedDataSizeMeasurements];\\nexport type GeneratedCounterMeasurement = typeof GeneratedCounterMeasurements[keyof typeof GeneratedCounterMeasurements];\\nexport type GeneratedMeasurementUnit = GeneratedPhysicalMeasurement | GeneratedDataSizeMeasurement | GeneratedCounterMeasurement | (string & {});\\n`;\n}\n\nmain().catch((err) => {\n console.error(\"Failed to generate measurements:\", err);\n process.exitCode = 1;\n});\n"]}
|
|
@@ -150,6 +150,8 @@ export declare const GeneratedAttributes: {
|
|
|
150
150
|
export declare const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string>;
|
|
151
151
|
export type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;
|
|
152
152
|
export declare function getGeneratedObjectTypeDescription(name: string): string | undefined;
|
|
153
|
+
export declare const GeneratedAttributesByType: {};
|
|
153
154
|
export type GeneratedAttributeName = keyof typeof GeneratedAttributes;
|
|
154
155
|
export declare function getGeneratedAttributeDescription(name: string): string | undefined;
|
|
156
|
+
export type GeneratedAttributesFor<T extends keyof typeof GeneratedAttributesByType> = keyof typeof GeneratedAttributesByType[T];
|
|
155
157
|
//# sourceMappingURL=uns-dictionary.generated.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uns-dictionary.generated.d.ts","sourceRoot":"","sources":["../../src/uns/uns-dictionary.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB;IAC/B,wGAAwG;;IAExG,kGAAkG;;IAElG,mFAAmF;;IAEnF,oGAAoG;;IAEpG,yFAAyF;;IAEzF,0EAA0E;;IAE1E,+EAA+E;;IAE/E,+FAA+F;;IAE/F,wCAAwC;;IAExC,yDAAyD;;IAEzD,4CAA4C;;IAE5C,iEAAiE;;CAEzD,CAAC;AAEX,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,OAAO,oBAAoB,EAAE,MAAM,CAa7F,CAAC;AAEF,eAAO,MAAM,mBAAmB;IAC9B,uCAAuC;;IAEvC,+BAA+B;;IAE/B,yBAAyB;;IAEzB,+BAA+B;;IAE/B,mBAAmB;;IAEnB,yBAAyB;;IAEzB,uBAAuB;;IAEvB,0BAA0B;;IAE1B,+BAA+B;;IAE/B,qBAAqB;;IAErB,0BAA0B;;IAE1B,qCAAqC;;IAErC,yBAAyB;;IAEzB,4BAA4B;;IAE5B,oBAAoB;;IAEpB,uBAAuB;;IAEvB,mBAAmB;;IAEnB,qBAAqB;;IAErB,gCAAgC;;IAEhC,wBAAwB;;IAExB,gCAAgC;;IAEhC,oBAAoB;;IAEpB,wBAAwB;;IAExB,8BAA8B;;IAE9B,4CAA4C;;IAE5C,yBAAyB;;IAEzB,wBAAwB;;IAExB,yBAAyB;;IAEzB,mCAAmC;;IAEnC,qCAAqC;;IAErC,yBAAyB;;IAEzB,wBAAwB;;IAExB,uBAAuB;;IAEvB,sCAAsC;;IAEtC,oBAAoB;;IAEpB,yBAAyB;;IAEzB,2BAA2B;;IAE3B,iCAAiC;;IAEjC,2BAA2B;;IAE3B,4BAA4B;;IAE5B,mBAAmB;;IAEnB,oBAAoB;;IAEpB,0BAA0B;;IAE1B,WAAW;;IAEX,gBAAgB;;IAEhB,gBAAgB;;IAEhB,WAAW;;IAEX,iBAAiB;;IAEjB,eAAe;;IAEf,YAAY;;IAEZ,cAAc;;IAEd,cAAc;;IAEd,sBAAsB;;IAEtB,qBAAqB;;IAErB,kBAAkB;;IAElB,mBAAmB;;IAEnB,mCAAmC;;IAEnC,sBAAsB;;IAEtB,qCAAqC;;IAErC,wBAAwB;;CAEhB,CAAC;AAEX,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,OAAO,mBAAmB,EAAE,MAAM,CA6D3F,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,oBAAoB,CAAC;AACxE,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElF;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AACtE,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjF"}
|
|
1
|
+
{"version":3,"file":"uns-dictionary.generated.d.ts","sourceRoot":"","sources":["../../src/uns/uns-dictionary.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB;IAC/B,wGAAwG;;IAExG,kGAAkG;;IAElG,mFAAmF;;IAEnF,oGAAoG;;IAEpG,yFAAyF;;IAEzF,0EAA0E;;IAE1E,+EAA+E;;IAE/E,+FAA+F;;IAE/F,wCAAwC;;IAExC,yDAAyD;;IAEzD,4CAA4C;;IAE5C,iEAAiE;;CAEzD,CAAC;AAEX,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,OAAO,oBAAoB,EAAE,MAAM,CAa7F,CAAC;AAEF,eAAO,MAAM,mBAAmB;IAC9B,uCAAuC;;IAEvC,+BAA+B;;IAE/B,yBAAyB;;IAEzB,+BAA+B;;IAE/B,mBAAmB;;IAEnB,yBAAyB;;IAEzB,uBAAuB;;IAEvB,0BAA0B;;IAE1B,+BAA+B;;IAE/B,qBAAqB;;IAErB,0BAA0B;;IAE1B,qCAAqC;;IAErC,yBAAyB;;IAEzB,4BAA4B;;IAE5B,oBAAoB;;IAEpB,uBAAuB;;IAEvB,mBAAmB;;IAEnB,qBAAqB;;IAErB,gCAAgC;;IAEhC,wBAAwB;;IAExB,gCAAgC;;IAEhC,oBAAoB;;IAEpB,wBAAwB;;IAExB,8BAA8B;;IAE9B,4CAA4C;;IAE5C,yBAAyB;;IAEzB,wBAAwB;;IAExB,yBAAyB;;IAEzB,mCAAmC;;IAEnC,qCAAqC;;IAErC,yBAAyB;;IAEzB,wBAAwB;;IAExB,uBAAuB;;IAEvB,sCAAsC;;IAEtC,oBAAoB;;IAEpB,yBAAyB;;IAEzB,2BAA2B;;IAE3B,iCAAiC;;IAEjC,2BAA2B;;IAE3B,4BAA4B;;IAE5B,mBAAmB;;IAEnB,oBAAoB;;IAEpB,0BAA0B;;IAE1B,WAAW;;IAEX,gBAAgB;;IAEhB,gBAAgB;;IAEhB,WAAW;;IAEX,iBAAiB;;IAEjB,eAAe;;IAEf,YAAY;;IAEZ,cAAc;;IAEd,cAAc;;IAEd,sBAAsB;;IAEtB,qBAAqB;;IAErB,kBAAkB;;IAElB,mBAAmB;;IAEnB,mCAAmC;;IAEnC,sBAAsB;;IAEtB,qCAAqC;;IAErC,wBAAwB;;CAEhB,CAAC;AAEX,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,OAAO,mBAAmB,EAAE,MAAM,CA6D3F,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,oBAAoB,CAAC;AACxE,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElF;AAED,eAAO,MAAM,yBAAyB,IAAc,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AACtE,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjF;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,OAAO,yBAAyB,IAAI,MAAM,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -226,6 +226,7 @@ export const GeneratedAttributeDescriptions = {
|
|
|
226
226
|
export function getGeneratedObjectTypeDescription(name) {
|
|
227
227
|
return GeneratedObjectTypeDescriptions[name];
|
|
228
228
|
}
|
|
229
|
+
export const GeneratedAttributesByType = {};
|
|
229
230
|
export function getGeneratedAttributeDescription(name) {
|
|
230
231
|
return GeneratedAttributeDescriptions[name];
|
|
231
232
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uns-dictionary.generated.js","sourceRoot":"","sources":["../../src/uns/uns-dictionary.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* Stub dictionary. Regenerate via generate-uns-dictionary.ts if you want to override. */\nexport const GeneratedObjectTypes = {\n /** Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov. */\n \"equipment\": \"equipment\",\n /** Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike. */\n \"material\": \"material\",\n /** Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status. */\n \"personnel\": \"personnel\",\n /** Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa. */\n \"process-segment\": \"process-segment\",\n /** Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije. */\n \"product-definition\": \"product-definition\",\n /** Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev). */\n \"product-quality\": \"product-quality\",\n /** Definicija nalog ali delovnih tokov. Za planirane operacije in navodila. */\n \"work-definition\": \"work-definition\",\n /** Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo. */\n \"resource-status\": \"resource-status\",\n /** Energija (elektrika, para, plin). */\n \"energy-resource\": \"energy-resource\",\n /** Utility viri (voda, zrak, dušik, stisnjeni plini). */\n \"utility-resource\": \"utility-resource\",\n /** Tekočine in plini, ki niso energenti. */\n \"fluid-resource\": \"fluid-resource\",\n /** Maziva, olja, čistila, ki se porabijo in niso del izdelka. */\n \"consumable-resource\": \"consumable-resource\",\n} as const;\n\nexport const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {\n \"equipment\": \"Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.\",\n \"material\": \"Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike.\",\n \"personnel\": \"Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.\",\n \"process-segment\": \"Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.\",\n \"product-definition\": \"Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije.\",\n \"product-quality\": \"Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).\",\n \"work-definition\": \"Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.\",\n \"resource-status\": \"Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo.\",\n \"energy-resource\": \"Energija (elektrika, para, plin).\",\n \"utility-resource\": \"Utility viri (voda, zrak, dušik, stisnjeni plini).\",\n \"fluid-resource\": \"Tekočine in plini, ki niso energenti.\",\n \"consumable-resource\": \"Maziva, olja, čistila, ki se porabijo in niso del izdelka.\",\n};\n\nexport const GeneratedAttributes = {\n /** Trenutno stanje vira ali opreme. */\n \"status\": \"status\",\n /** Temperatura vira/opreme. */\n \"temperature\": \"temperature\",\n /** Merjena vibracija. */\n \"vibration\": \"vibration\",\n /** Število obratovalnih ur. */\n \"operating-hours\": \"operating-hours\",\n /** Koda napake. */\n \"fault-code\": \"fault-code\",\n /** Hitrost delovanja. */\n \"speed\": \"speed\",\n /** Poraba energije. */\n \"energy-consumption\": \"energy-consumption\",\n /** Identifikator lota. */\n \"lot-id\": \"lot-id\",\n /** Številka serije (batch). */\n \"batch-number\": \"batch-number\",\n /** Tip materiala. */\n \"material-type\": \"material-type\",\n /** Količina materiala. */\n \"quantity\": \"quantity\",\n /** Lokacija materiala ali opreme. */\n \"location\": \"location\",\n /** Prisotnost osebja. */\n \"presence\": \"presence\",\n /** Identifikator naloge. */\n \"task-id\": \"task-id\",\n /** Vloga osebja. */\n \"role\": \"role\",\n /** Nivo pooblastil. */\n \"authorization-level\": \"authorization-level\",\n /** Čas začetka. */\n \"start-time\": \"start-time\",\n /** Čas zaključka. */\n \"end-time\": \"end-time\",\n /** Trajanje faze ali naloge. */\n \"duration\": \"duration\",\n /** Izhodna količina. */\n \"output-quantity\": \"output-quantity\",\n /** Identifikator operaterja. */\n \"operator-id\": \"operator-id\",\n /** Koda izdelka. */\n \"product-code\": \"product-code\",\n /** Revizija izdelka. */\n \"revision\": \"revision\",\n /** Tehnične specifikacije. */\n \"specification\": \"specification\",\n /** Ciljni parametri izdelka ali procesa. */\n \"target-parameters\": \"target-parameters\",\n /** Sestava materiala. */\n \"material-composition\": \"material-composition\",\n /** Zgodovina verzij. */\n \"version-history\": \"version-history\",\n /** Rezultat pregleda. */\n \"inspection-result\": \"inspection-result\",\n /** Odstopanje od specifikacije. */\n \"deviation\": \"deviation\",\n /** Uspešno/neuspešno (pass/fail). */\n \"pass-fail\": \"pass-fail\",\n /** Površinska napaka. */\n \"surface-defect\": \"surface-defect\",\n /** Trdota materiala. */\n \"hardness\": \"hardness\",\n /** Natezna trdnost. */\n \"tensile-strength\": \"tensile-strength\",\n /** Identifikator delovnega naloga. */\n \"work-order-id\": \"work-order-id\",\n /** Seznam nalog. */\n \"task-list\": \"task-list\",\n /** Planirani začetek. */\n \"planned-start\": \"planned-start\",\n /** Planirani zaključek. */\n \"planned-end\": \"planned-end\",\n /** Dodeljeno osebi ali ekipi. */\n \"assigned-to\": \"assigned-to\",\n /** Povezava do navodil. */\n \"instruction-url\": \"instruction-url\",\n /** Razpoložljivost vira. */\n \"availability\": \"availability\",\n /** Izraba vira. */\n \"utilization\": \"utilization\",\n /** Zastoj/izpad. */\n \"downtime\": \"downtime\",\n /** Stanje vzdrževanja. */\n \"maintenance-status\": \"maintenance-status\",\n /** Moč. */\n \"power\": \"power\",\n /** Energija. */\n \"energy\": \"energy\",\n /** Napetost. */\n \"voltage\": \"voltage\",\n /** Tok. */\n \"current\": \"current\",\n /** Frekvenca. */\n \"frequency\": \"frequency\",\n /** Strošek. */\n \"cost\": \"cost\",\n /** Tlak. */\n \"pressure\": \"pressure\",\n /** Pretok. */\n \"flow\": \"flow\",\n /** Poraba. */\n \"consumption\": \"consumption\",\n /** Alarmni signal. */\n \"alarm\": \"alarm\",\n /** Skupni pretok. */\n \"total-flow\": \"total-flow\",\n /** Prevodnost. */\n \"conductivity\": \"conductivity\",\n /** pH vrednost. */\n \"ph\": \"ph\",\n /** Nivo zaloge ali rezervoarja. */\n \"level\": \"level\",\n /** Hitrost porabe. */\n \"consumption-rate\": \"consumption-rate\",\n /** Potrebno dolivanje/dopolnitev. */\n \"refill-required\": \"refill-required\",\n /** Zadnje polnjenje. */\n \"last-refill\": \"last-refill\",\n} as const;\n\nexport const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {\n \"status\": \"Trenutno stanje vira ali opreme.\",\n \"temperature\": \"Temperatura vira/opreme.\",\n \"vibration\": \"Merjena vibracija.\",\n \"operating-hours\": \"Število obratovalnih ur.\",\n \"fault-code\": \"Koda napake.\",\n \"speed\": \"Hitrost delovanja.\",\n \"energy-consumption\": \"Poraba energije.\",\n \"lot-id\": \"Identifikator lota.\",\n \"batch-number\": \"Številka serije (batch).\",\n \"material-type\": \"Tip materiala.\",\n \"quantity\": \"Količina materiala.\",\n \"location\": \"Lokacija materiala ali opreme.\",\n \"presence\": \"Prisotnost osebja.\",\n \"task-id\": \"Identifikator naloge.\",\n \"role\": \"Vloga osebja.\",\n \"authorization-level\": \"Nivo pooblastil.\",\n \"start-time\": \"Čas začetka.\",\n \"end-time\": \"Čas zaključka.\",\n \"duration\": \"Trajanje faze ali naloge.\",\n \"output-quantity\": \"Izhodna količina.\",\n \"operator-id\": \"Identifikator operaterja.\",\n \"product-code\": \"Koda izdelka.\",\n \"revision\": \"Revizija izdelka.\",\n \"specification\": \"Tehnične specifikacije.\",\n \"target-parameters\": \"Ciljni parametri izdelka ali procesa.\",\n \"material-composition\": \"Sestava materiala.\",\n \"version-history\": \"Zgodovina verzij.\",\n \"inspection-result\": \"Rezultat pregleda.\",\n \"deviation\": \"Odstopanje od specifikacije.\",\n \"pass-fail\": \"Uspešno/neuspešno (pass/fail).\",\n \"surface-defect\": \"Površinska napaka.\",\n \"hardness\": \"Trdota materiala.\",\n \"tensile-strength\": \"Natezna trdnost.\",\n \"work-order-id\": \"Identifikator delovnega naloga.\",\n \"task-list\": \"Seznam nalog.\",\n \"planned-start\": \"Planirani začetek.\",\n \"planned-end\": \"Planirani zaključek.\",\n \"assigned-to\": \"Dodeljeno osebi ali ekipi.\",\n \"instruction-url\": \"Povezava do navodil.\",\n \"availability\": \"Razpoložljivost vira.\",\n \"utilization\": \"Izraba vira.\",\n \"downtime\": \"Zastoj/izpad.\",\n \"maintenance-status\": \"Stanje vzdrževanja.\",\n \"power\": \"Moč.\",\n \"energy\": \"Energija.\",\n \"voltage\": \"Napetost.\",\n \"current\": \"Tok.\",\n \"frequency\": \"Frekvenca.\",\n \"cost\": \"Strošek.\",\n \"pressure\": \"Tlak.\",\n \"flow\": \"Pretok.\",\n \"consumption\": \"Poraba.\",\n \"alarm\": \"Alarmni signal.\",\n \"total-flow\": \"Skupni pretok.\",\n \"conductivity\": \"Prevodnost.\",\n \"ph\": \"pH vrednost.\",\n \"level\": \"Nivo zaloge ali rezervoarja.\",\n \"consumption-rate\": \"Hitrost porabe.\",\n \"refill-required\": \"Potrebno dolivanje/dopolnitev.\",\n \"last-refill\": \"Zadnje polnjenje.\",\n};\n\nexport type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;\nexport function getGeneratedObjectTypeDescription(name: string): string | undefined {\n return (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[name];\n}\n\nexport type GeneratedAttributeName = keyof typeof GeneratedAttributes;\nexport function getGeneratedAttributeDescription(name: string): string | undefined {\n return (GeneratedAttributeDescriptions as Record<string, string | undefined>)[name];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"uns-dictionary.generated.js","sourceRoot":"","sources":["../../src/uns/uns-dictionary.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* Stub dictionary. Regenerate via generate-uns-dictionary.ts if you want to override. */\nexport const GeneratedObjectTypes = {\n /** Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov. */\n \"equipment\": \"equipment\",\n /** Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike. */\n \"material\": \"material\",\n /** Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status. */\n \"personnel\": \"personnel\",\n /** Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa. */\n \"process-segment\": \"process-segment\",\n /** Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije. */\n \"product-definition\": \"product-definition\",\n /** Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev). */\n \"product-quality\": \"product-quality\",\n /** Definicija nalog ali delovnih tokov. Za planirane operacije in navodila. */\n \"work-definition\": \"work-definition\",\n /** Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo. */\n \"resource-status\": \"resource-status\",\n /** Energija (elektrika, para, plin). */\n \"energy-resource\": \"energy-resource\",\n /** Utility viri (voda, zrak, dušik, stisnjeni plini). */\n \"utility-resource\": \"utility-resource\",\n /** Tekočine in plini, ki niso energenti. */\n \"fluid-resource\": \"fluid-resource\",\n /** Maziva, olja, čistila, ki se porabijo in niso del izdelka. */\n \"consumable-resource\": \"consumable-resource\",\n} as const;\n\nexport const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {\n \"equipment\": \"Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.\",\n \"material\": \"Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike.\",\n \"personnel\": \"Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.\",\n \"process-segment\": \"Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.\",\n \"product-definition\": \"Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije.\",\n \"product-quality\": \"Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).\",\n \"work-definition\": \"Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.\",\n \"resource-status\": \"Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo.\",\n \"energy-resource\": \"Energija (elektrika, para, plin).\",\n \"utility-resource\": \"Utility viri (voda, zrak, dušik, stisnjeni plini).\",\n \"fluid-resource\": \"Tekočine in plini, ki niso energenti.\",\n \"consumable-resource\": \"Maziva, olja, čistila, ki se porabijo in niso del izdelka.\",\n};\n\nexport const GeneratedAttributes = {\n /** Trenutno stanje vira ali opreme. */\n \"status\": \"status\",\n /** Temperatura vira/opreme. */\n \"temperature\": \"temperature\",\n /** Merjena vibracija. */\n \"vibration\": \"vibration\",\n /** Število obratovalnih ur. */\n \"operating-hours\": \"operating-hours\",\n /** Koda napake. */\n \"fault-code\": \"fault-code\",\n /** Hitrost delovanja. */\n \"speed\": \"speed\",\n /** Poraba energije. */\n \"energy-consumption\": \"energy-consumption\",\n /** Identifikator lota. */\n \"lot-id\": \"lot-id\",\n /** Številka serije (batch). */\n \"batch-number\": \"batch-number\",\n /** Tip materiala. */\n \"material-type\": \"material-type\",\n /** Količina materiala. */\n \"quantity\": \"quantity\",\n /** Lokacija materiala ali opreme. */\n \"location\": \"location\",\n /** Prisotnost osebja. */\n \"presence\": \"presence\",\n /** Identifikator naloge. */\n \"task-id\": \"task-id\",\n /** Vloga osebja. */\n \"role\": \"role\",\n /** Nivo pooblastil. */\n \"authorization-level\": \"authorization-level\",\n /** Čas začetka. */\n \"start-time\": \"start-time\",\n /** Čas zaključka. */\n \"end-time\": \"end-time\",\n /** Trajanje faze ali naloge. */\n \"duration\": \"duration\",\n /** Izhodna količina. */\n \"output-quantity\": \"output-quantity\",\n /** Identifikator operaterja. */\n \"operator-id\": \"operator-id\",\n /** Koda izdelka. */\n \"product-code\": \"product-code\",\n /** Revizija izdelka. */\n \"revision\": \"revision\",\n /** Tehnične specifikacije. */\n \"specification\": \"specification\",\n /** Ciljni parametri izdelka ali procesa. */\n \"target-parameters\": \"target-parameters\",\n /** Sestava materiala. */\n \"material-composition\": \"material-composition\",\n /** Zgodovina verzij. */\n \"version-history\": \"version-history\",\n /** Rezultat pregleda. */\n \"inspection-result\": \"inspection-result\",\n /** Odstopanje od specifikacije. */\n \"deviation\": \"deviation\",\n /** Uspešno/neuspešno (pass/fail). */\n \"pass-fail\": \"pass-fail\",\n /** Površinska napaka. */\n \"surface-defect\": \"surface-defect\",\n /** Trdota materiala. */\n \"hardness\": \"hardness\",\n /** Natezna trdnost. */\n \"tensile-strength\": \"tensile-strength\",\n /** Identifikator delovnega naloga. */\n \"work-order-id\": \"work-order-id\",\n /** Seznam nalog. */\n \"task-list\": \"task-list\",\n /** Planirani začetek. */\n \"planned-start\": \"planned-start\",\n /** Planirani zaključek. */\n \"planned-end\": \"planned-end\",\n /** Dodeljeno osebi ali ekipi. */\n \"assigned-to\": \"assigned-to\",\n /** Povezava do navodil. */\n \"instruction-url\": \"instruction-url\",\n /** Razpoložljivost vira. */\n \"availability\": \"availability\",\n /** Izraba vira. */\n \"utilization\": \"utilization\",\n /** Zastoj/izpad. */\n \"downtime\": \"downtime\",\n /** Stanje vzdrževanja. */\n \"maintenance-status\": \"maintenance-status\",\n /** Moč. */\n \"power\": \"power\",\n /** Energija. */\n \"energy\": \"energy\",\n /** Napetost. */\n \"voltage\": \"voltage\",\n /** Tok. */\n \"current\": \"current\",\n /** Frekvenca. */\n \"frequency\": \"frequency\",\n /** Strošek. */\n \"cost\": \"cost\",\n /** Tlak. */\n \"pressure\": \"pressure\",\n /** Pretok. */\n \"flow\": \"flow\",\n /** Poraba. */\n \"consumption\": \"consumption\",\n /** Alarmni signal. */\n \"alarm\": \"alarm\",\n /** Skupni pretok. */\n \"total-flow\": \"total-flow\",\n /** Prevodnost. */\n \"conductivity\": \"conductivity\",\n /** pH vrednost. */\n \"ph\": \"ph\",\n /** Nivo zaloge ali rezervoarja. */\n \"level\": \"level\",\n /** Hitrost porabe. */\n \"consumption-rate\": \"consumption-rate\",\n /** Potrebno dolivanje/dopolnitev. */\n \"refill-required\": \"refill-required\",\n /** Zadnje polnjenje. */\n \"last-refill\": \"last-refill\",\n} as const;\n\nexport const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {\n \"status\": \"Trenutno stanje vira ali opreme.\",\n \"temperature\": \"Temperatura vira/opreme.\",\n \"vibration\": \"Merjena vibracija.\",\n \"operating-hours\": \"Število obratovalnih ur.\",\n \"fault-code\": \"Koda napake.\",\n \"speed\": \"Hitrost delovanja.\",\n \"energy-consumption\": \"Poraba energije.\",\n \"lot-id\": \"Identifikator lota.\",\n \"batch-number\": \"Številka serije (batch).\",\n \"material-type\": \"Tip materiala.\",\n \"quantity\": \"Količina materiala.\",\n \"location\": \"Lokacija materiala ali opreme.\",\n \"presence\": \"Prisotnost osebja.\",\n \"task-id\": \"Identifikator naloge.\",\n \"role\": \"Vloga osebja.\",\n \"authorization-level\": \"Nivo pooblastil.\",\n \"start-time\": \"Čas začetka.\",\n \"end-time\": \"Čas zaključka.\",\n \"duration\": \"Trajanje faze ali naloge.\",\n \"output-quantity\": \"Izhodna količina.\",\n \"operator-id\": \"Identifikator operaterja.\",\n \"product-code\": \"Koda izdelka.\",\n \"revision\": \"Revizija izdelka.\",\n \"specification\": \"Tehnične specifikacije.\",\n \"target-parameters\": \"Ciljni parametri izdelka ali procesa.\",\n \"material-composition\": \"Sestava materiala.\",\n \"version-history\": \"Zgodovina verzij.\",\n \"inspection-result\": \"Rezultat pregleda.\",\n \"deviation\": \"Odstopanje od specifikacije.\",\n \"pass-fail\": \"Uspešno/neuspešno (pass/fail).\",\n \"surface-defect\": \"Površinska napaka.\",\n \"hardness\": \"Trdota materiala.\",\n \"tensile-strength\": \"Natezna trdnost.\",\n \"work-order-id\": \"Identifikator delovnega naloga.\",\n \"task-list\": \"Seznam nalog.\",\n \"planned-start\": \"Planirani začetek.\",\n \"planned-end\": \"Planirani zaključek.\",\n \"assigned-to\": \"Dodeljeno osebi ali ekipi.\",\n \"instruction-url\": \"Povezava do navodil.\",\n \"availability\": \"Razpoložljivost vira.\",\n \"utilization\": \"Izraba vira.\",\n \"downtime\": \"Zastoj/izpad.\",\n \"maintenance-status\": \"Stanje vzdrževanja.\",\n \"power\": \"Moč.\",\n \"energy\": \"Energija.\",\n \"voltage\": \"Napetost.\",\n \"current\": \"Tok.\",\n \"frequency\": \"Frekvenca.\",\n \"cost\": \"Strošek.\",\n \"pressure\": \"Tlak.\",\n \"flow\": \"Pretok.\",\n \"consumption\": \"Poraba.\",\n \"alarm\": \"Alarmni signal.\",\n \"total-flow\": \"Skupni pretok.\",\n \"conductivity\": \"Prevodnost.\",\n \"ph\": \"pH vrednost.\",\n \"level\": \"Nivo zaloge ali rezervoarja.\",\n \"consumption-rate\": \"Hitrost porabe.\",\n \"refill-required\": \"Potrebno dolivanje/dopolnitev.\",\n \"last-refill\": \"Zadnje polnjenje.\",\n};\n\nexport type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;\nexport function getGeneratedObjectTypeDescription(name: string): string | undefined {\n return (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[name];\n}\n\nexport const GeneratedAttributesByType = {} as const;\n\nexport type GeneratedAttributeName = keyof typeof GeneratedAttributes;\nexport function getGeneratedAttributeDescription(name: string): string | undefined {\n return (GeneratedAttributeDescriptions as Record<string, string | undefined>)[name];\n}\n\nexport type GeneratedAttributesFor<T extends keyof typeof GeneratedAttributesByType> = keyof typeof GeneratedAttributesByType[T];\n"]}
|
|
@@ -100,6 +100,63 @@ export interface IMqttMessage {
|
|
|
100
100
|
packet: IUnsPacket;
|
|
101
101
|
attributeNeedsPersistence?: boolean | null;
|
|
102
102
|
}
|
|
103
|
+
export interface IMqttAttributeMessage {
|
|
104
|
+
attribute: UnsAttribute;
|
|
105
|
+
description?: string;
|
|
106
|
+
tags?: UnsTags[];
|
|
107
|
+
attributeNeedsPersistence?: boolean | null;
|
|
108
|
+
}
|
|
109
|
+
type AttributePayload = {
|
|
110
|
+
message: IUnsMessage;
|
|
111
|
+
data?: never;
|
|
112
|
+
event?: never;
|
|
113
|
+
table?: never;
|
|
114
|
+
command?: never;
|
|
115
|
+
createdAt?: never;
|
|
116
|
+
expiresAt?: never;
|
|
117
|
+
} | {
|
|
118
|
+
message?: never;
|
|
119
|
+
data: IUnsData;
|
|
120
|
+
event?: never;
|
|
121
|
+
table?: never;
|
|
122
|
+
command?: never;
|
|
123
|
+
createdAt?: ISO8601;
|
|
124
|
+
expiresAt?: ISO8601;
|
|
125
|
+
} | {
|
|
126
|
+
message?: never;
|
|
127
|
+
data?: never;
|
|
128
|
+
event: IUnsEvent;
|
|
129
|
+
table?: never;
|
|
130
|
+
command?: never;
|
|
131
|
+
createdAt?: ISO8601;
|
|
132
|
+
expiresAt?: ISO8601;
|
|
133
|
+
} | {
|
|
134
|
+
message?: never;
|
|
135
|
+
data?: never;
|
|
136
|
+
event?: never;
|
|
137
|
+
table: IUnsTable;
|
|
138
|
+
command?: never;
|
|
139
|
+
createdAt?: ISO8601;
|
|
140
|
+
expiresAt?: ISO8601;
|
|
141
|
+
} | {
|
|
142
|
+
message?: never;
|
|
143
|
+
data?: never;
|
|
144
|
+
event?: never;
|
|
145
|
+
table?: never;
|
|
146
|
+
command: IUnsCommand;
|
|
147
|
+
createdAt?: ISO8601;
|
|
148
|
+
expiresAt?: ISO8601;
|
|
149
|
+
};
|
|
150
|
+
export type IMqttAttributeEntry = IMqttAttributeMessage & AttributePayload;
|
|
151
|
+
export interface IMqttMultiMessage {
|
|
152
|
+
topic: UnsTopics;
|
|
153
|
+
asset: UnsAsset;
|
|
154
|
+
assetDescription?: string;
|
|
155
|
+
objectType: UnsObjectType;
|
|
156
|
+
objectTypeDescription?: string;
|
|
157
|
+
objectId: UnsObjectId;
|
|
158
|
+
attributes: IMqttAttributeEntry[];
|
|
159
|
+
}
|
|
103
160
|
export interface IUnsPacket {
|
|
104
161
|
message: IUnsExtendedMessage;
|
|
105
162
|
messageSignature?: string;
|
|
@@ -170,4 +227,5 @@ export interface IGetEndpointOptions {
|
|
|
170
227
|
tags?: string[];
|
|
171
228
|
queryParams?: QueryParamDef[];
|
|
172
229
|
}
|
|
230
|
+
export {};
|
|
173
231
|
//# sourceMappingURL=uns-interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uns-interfaces.d.ts","sourceRoot":"","sources":["../../src/uns/uns-interfaces.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uns-interfaces.d.ts","sourceRoot":"","sources":["../../src/uns/uns-interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uns-interfaces.js","sourceRoot":"","sources":["../../src/uns/uns-interfaces.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,YAAY,GAAG,+CAA+C,CAAC;IACrE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAID,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["import { UnsAttributeType } from \"../graphql/schema.js\";\nimport { MeasurementUnit } from \"./uns-measurements.js\";\nimport { UnsTags } from \"./uns-tags.js\";\nimport type { UnsObjectId, UnsObjectType } from \"./uns-object.js\";\nimport type { UnsAsset } from \"./uns-asset.js\";\nimport { UnsTopics } from \"./uns-topics.js\";\nimport { knownUnsAttributes, type KnownUnsAttributeName } from \"./uns-attributes.js\";\n\nexport type ISO8601 = `${number}-${string}-${string}T${string}:${string}:${string}.${string}Z`;\nexport function isIOS8601Type(value: string): value is ISO8601 {\n const iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n return iso8601Regex.test(value);\n}\n// Known attribute names (with IntelliSense) while still allowing arbitrary strings.\nexport type UnsAttribute = KnownUnsAttributeName | (string & {});\n\nexport const valueTypes = [\"string\", \"number\"];\nexport type ValueTypeString = typeof valueTypes[number];\nexport type ValueType = string | number;\n\nexport interface IUnsParameters {\n mqttSubToTopics?: string | string[];\n username?: string;\n password?: string;\n mqttSSL?: boolean;\n publishThrottlingDelay?: number; // Delay in milliseconds; default is 1ms\n subscribeThrottlingDelay?: number; // Delay in milliseconds; default is 1ms\n}\n\nexport interface IUnsProcessParameters {\n processName?: string | undefined;\n mqttSubToTopics?: string | string[];\n username?: string;\n password?: string;\n mqttSSL?: boolean;\n}\n\nexport interface UnsEvents {\n // Emitters in MqttProxy, UnsMqttProxy\n input: { topic: string; message: string, packet: any };\n mqttProxyStatus: { event: string, value: number, uom: MeasurementUnit, statusTopic: string };\n \n // Emitters in MqttProxy\n error: { code: number; message: string };\n \n // Emitters in UnsMqttProxy\n mqttWorker: { command: string, instanceName: string; batchSize: number, referenceHash: string };\n\n // Emitter in UnsCronProxy\n cronEvent: {};\n\n // Emitters in UnsApiProxy\n apiGetEvent: {req: any, res: any};\n\n // Emitters in UnsProxy\n unsProxyProducedTopics: { producedTopics: ITopicObject[], statusTopic: string };\n\n // Emitters in UnsProxy\n unsProxyProducedApiEndpoints: { producedApiEndpoints: IApiObject[], statusTopic: string };\n}\n\nexport interface IUnsExtendedData extends IUnsData {\n valueType: ValueTypeString;\n}\n\nexport interface IUnsData {\n time: ISO8601;\n value: ValueType;\n dataGroup?: string;\n uom?: MeasurementUnit;\n foreignEventKey?: string;\n}\n\nexport interface IUnsEvent {\n time: ISO8601;\n dataGroup?: string;\n details?: string;\n uniqueEventId?: string;\n}\n\nexport interface IUnsTable {\n time: ISO8601;\n values: Record<string, string | number | undefined | null>\n dataGroup?: string;\n}\n\nexport interface IUnsCommand {\n time: ISO8601;\n details?: string;\n}\n\nexport interface IMqttMessage {\n topic: UnsTopics;\n attribute: UnsAttribute;\n asset: UnsAsset;\n assetDescription?: string;\n objectType: UnsObjectType;\n objectTypeDescription?: string;\n objectId: UnsObjectId;\n description?: string;\n tags?: UnsTags[];\n packet: IUnsPacket;\n attributeNeedsPersistence?: boolean | null;\n}\n\n// This interface represents a packet for a UNS system\nexport interface IUnsPacket {\n // The message object of the packet\n message: IUnsExtendedMessage;\n \n // The HMAC signature of the message\n messageSignature?: string;\n\n // Automatically calculated interval between two packets in ms\n interval?: number;\n\n // Current library version\n readonly version: string;\n\n // Autogenerated sequence number\n sequenceId?: number;\n}\n\nexport interface IUnsPackatParameters {\n\n}\n\nexport interface IUnsMessage {\n command?: IUnsCommand;\n data?: IUnsData;\n event?: IUnsEvent;\n table?: IUnsTable;\n expiresAt?: ISO8601;\n createdAt?: ISO8601;\n}\n\nexport interface IUnsExtendedMessage extends IUnsMessage {\n data?: IUnsExtendedData;\n}\n\nexport interface ITopicObject {\n timestamp: string;\n attribute:string;\n attributeType: UnsAttributeType;\n topic:string;\n description:string;\n dataGroup:string;\n tags:string[] | null;\n attributeNeedsPersistence: boolean | null;\n asset: UnsAsset;\n assetDescription?: string;\n objectType: UnsObjectType;\n objectTypeDescription?: string;\n objectId: UnsObjectId;\n}\n\n// API Interfaces below\nexport interface IApiObject {\n timestamp: string;\n attribute:string;\n topic:string;\n attributeType: UnsAttributeType;\n apiDescription?: string; // Optional description for the API endpoint\n apiHost: string; // Hostname of the service\n apiEndpoint: string; // API endpoint for virtual topics\n apiSwaggerEndpoint: string; // Swagger endpoint for API documentation\n apiMethod: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\"; // HTTP method for API endpoint\n apiQueryParams: QueryParamDef[]; // query parameters for the API endpoint\n asset: UnsAsset;\n objectType: UnsObjectType;\n objectId: UnsObjectId;\n}\n\nexport interface QueryParamDef {\n name: string;\n type: \"string\" | \"number\" | \"boolean\";\n required?: boolean;\n description?: string;\n}\n\nexport interface IApiProxyOptions {\n jwtSecret?: string;\n jwks?: {\n wellKnownJwksUrl: string;\n activeKidUrl?: string;\n cacheTtlMs?: number;\n algorithms?: (\"RS256\" | \"RS384\" | \"RS512\")[];\n };\n}\n\nexport interface IGetEndpointOptions {\n apiDescription?: string;\n tags?: string[];\n queryParams?: QueryParamDef[];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"uns-interfaces.js","sourceRoot":"","sources":["../../src/uns/uns-interfaces.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,YAAY,GAAG,+CAA+C,CAAC;IACrE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAID,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["import { UnsAttributeType } from \"../graphql/schema.js\";\nimport { MeasurementUnit } from \"./uns-measurements.js\";\nimport { UnsTags } from \"./uns-tags.js\";\nimport type { UnsObjectId, UnsObjectType } from \"./uns-object.js\";\nimport type { UnsAsset } from \"./uns-asset.js\";\nimport { UnsTopics } from \"./uns-topics.js\";\nimport { knownUnsAttributes, type KnownUnsAttributeName } from \"./uns-attributes.js\";\n\nexport type ISO8601 = `${number}-${string}-${string}T${string}:${string}:${string}.${string}Z`;\nexport function isIOS8601Type(value: string): value is ISO8601 {\n const iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n return iso8601Regex.test(value);\n}\n// Known attribute names (with IntelliSense) while still allowing arbitrary strings.\nexport type UnsAttribute = KnownUnsAttributeName | (string & {});\n\nexport const valueTypes = [\"string\", \"number\"];\nexport type ValueTypeString = typeof valueTypes[number];\nexport type ValueType = string | number;\n\nexport interface IUnsParameters {\n mqttSubToTopics?: string | string[];\n username?: string;\n password?: string;\n mqttSSL?: boolean;\n publishThrottlingDelay?: number; // Delay in milliseconds; default is 1ms\n subscribeThrottlingDelay?: number; // Delay in milliseconds; default is 1ms\n}\n\nexport interface IUnsProcessParameters {\n processName?: string | undefined;\n mqttSubToTopics?: string | string[];\n username?: string;\n password?: string;\n mqttSSL?: boolean;\n}\n\nexport interface UnsEvents {\n // Emitters in MqttProxy, UnsMqttProxy\n input: { topic: string; message: string, packet: any };\n mqttProxyStatus: { event: string, value: number, uom: MeasurementUnit, statusTopic: string };\n \n // Emitters in MqttProxy\n error: { code: number; message: string };\n \n // Emitters in UnsMqttProxy\n mqttWorker: { command: string, instanceName: string; batchSize: number, referenceHash: string };\n\n // Emitter in UnsCronProxy\n cronEvent: {};\n\n // Emitters in UnsApiProxy\n apiGetEvent: {req: any, res: any};\n\n // Emitters in UnsProxy\n unsProxyProducedTopics: { producedTopics: ITopicObject[], statusTopic: string };\n\n // Emitters in UnsProxy\n unsProxyProducedApiEndpoints: { producedApiEndpoints: IApiObject[], statusTopic: string };\n}\n\nexport interface IUnsExtendedData extends IUnsData {\n valueType: ValueTypeString;\n}\n\nexport interface IUnsData {\n time: ISO8601;\n value: ValueType;\n dataGroup?: string;\n uom?: MeasurementUnit;\n foreignEventKey?: string;\n}\n\nexport interface IUnsEvent {\n time: ISO8601;\n dataGroup?: string;\n details?: string;\n uniqueEventId?: string;\n}\n\nexport interface IUnsTable {\n time: ISO8601;\n values: Record<string, string | number | undefined | null>\n dataGroup?: string;\n}\n\nexport interface IUnsCommand {\n time: ISO8601;\n details?: string;\n}\n\nexport interface IMqttMessage {\n topic: UnsTopics;\n attribute: UnsAttribute;\n asset: UnsAsset;\n assetDescription?: string;\n objectType: UnsObjectType;\n objectTypeDescription?: string;\n objectId: UnsObjectId;\n description?: string;\n tags?: UnsTags[];\n packet: IUnsPacket;\n attributeNeedsPersistence?: boolean | null;\n}\n\nexport interface IMqttAttributeMessage {\n attribute: UnsAttribute;\n description?: string;\n tags?: UnsTags[];\n attributeNeedsPersistence?: boolean | null;\n}\n\ntype AttributePayload =\n | { message: IUnsMessage; data?: never; event?: never; table?: never; command?: never; createdAt?: never; expiresAt?: never }\n | { message?: never; data: IUnsData; event?: never; table?: never; command?: never; createdAt?: ISO8601; expiresAt?: ISO8601 }\n | { message?: never; data?: never; event: IUnsEvent; table?: never; command?: never; createdAt?: ISO8601; expiresAt?: ISO8601 }\n | { message?: never; data?: never; event?: never; table: IUnsTable; command?: never; createdAt?: ISO8601; expiresAt?: ISO8601 }\n | { message?: never; data?: never; event?: never; table?: never; command: IUnsCommand; createdAt?: ISO8601; expiresAt?: ISO8601 };\n\nexport type IMqttAttributeEntry = IMqttAttributeMessage & AttributePayload;\n\nexport interface IMqttMultiMessage {\n topic: UnsTopics;\n asset: UnsAsset;\n assetDescription?: string;\n objectType: UnsObjectType;\n objectTypeDescription?: string;\n objectId: UnsObjectId;\n attributes: IMqttAttributeEntry[];\n}\n\n// This interface represents a packet for a UNS system\nexport interface IUnsPacket {\n // The message object of the packet\n message: IUnsExtendedMessage;\n \n // The HMAC signature of the message\n messageSignature?: string;\n\n // Automatically calculated interval between two packets in ms\n interval?: number;\n\n // Current library version\n readonly version: string;\n\n // Autogenerated sequence number\n sequenceId?: number;\n}\n\nexport interface IUnsPackatParameters {\n\n}\n\nexport interface IUnsMessage {\n command?: IUnsCommand;\n data?: IUnsData;\n event?: IUnsEvent;\n table?: IUnsTable;\n expiresAt?: ISO8601;\n createdAt?: ISO8601;\n}\n\nexport interface IUnsExtendedMessage extends IUnsMessage {\n data?: IUnsExtendedData;\n}\n\nexport interface ITopicObject {\n timestamp: string;\n attribute:string;\n attributeType: UnsAttributeType;\n topic:string;\n description:string;\n dataGroup:string;\n tags:string[] | null;\n attributeNeedsPersistence: boolean | null;\n asset: UnsAsset;\n assetDescription?: string;\n objectType: UnsObjectType;\n objectTypeDescription?: string;\n objectId: UnsObjectId;\n}\n\n// API Interfaces below\nexport interface IApiObject {\n timestamp: string;\n attribute:string;\n topic:string;\n attributeType: UnsAttributeType;\n apiDescription?: string; // Optional description for the API endpoint\n apiHost: string; // Hostname of the service\n apiEndpoint: string; // API endpoint for virtual topics\n apiSwaggerEndpoint: string; // Swagger endpoint for API documentation\n apiMethod: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\"; // HTTP method for API endpoint\n apiQueryParams: QueryParamDef[]; // query parameters for the API endpoint\n asset: UnsAsset;\n objectType: UnsObjectType;\n objectId: UnsObjectId;\n}\n\nexport interface QueryParamDef {\n name: string;\n type: \"string\" | \"number\" | \"boolean\";\n required?: boolean;\n description?: string;\n}\n\nexport interface IApiProxyOptions {\n jwtSecret?: string;\n jwks?: {\n wellKnownJwksUrl: string;\n activeKidUrl?: string;\n cacheTtlMs?: number;\n algorithms?: (\"RS256\" | \"RS384\" | \"RS512\")[];\n };\n}\n\nexport interface IGetEndpointOptions {\n apiDescription?: string;\n tags?: string[];\n queryParams?: QueryParamDef[];\n}\n"]}
|