@uns-kit/core 1.0.7 → 1.0.9
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/README.md +18 -0
- package/dist/tools/generate-uns-dictionary.d.ts +3 -0
- package/dist/tools/generate-uns-dictionary.d.ts.map +1 -0
- package/dist/tools/generate-uns-dictionary.js +270 -0
- package/dist/tools/generate-uns-dictionary.js.map +1 -0
- package/dist/tools/initialize.d.ts.map +1 -0
- package/dist/tools/initialize.js.map +1 -0
- package/dist/tools/make.d.ts.map +1 -0
- package/dist/tools/make.js.map +1 -0
- package/dist/tools/update-rtt.d.ts.map +1 -0
- package/dist/tools/update-rtt.js.map +1 -0
- package/dist/tools/update-tools.d.ts.map +1 -0
- package/dist/tools/update-tools.js.map +1 -0
- package/dist/uns/uns-attributes.d.ts +6 -143
- package/dist/uns/uns-attributes.d.ts.map +1 -1
- package/dist/uns/uns-attributes.js +7 -180
- package/dist/uns/uns-attributes.js.map +1 -1
- package/dist/uns/uns-dictionary.generated.d.ts +83 -0
- package/dist/uns/uns-dictionary.generated.d.ts.map +1 -0
- package/dist/uns/uns-dictionary.generated.js +160 -0
- package/dist/uns/uns-dictionary.generated.js.map +1 -0
- package/dist/uns/uns-interfaces.d.ts +4 -0
- package/dist/uns/uns-interfaces.d.ts.map +1 -1
- package/dist/uns/uns-interfaces.js.map +1 -1
- package/dist/uns/uns-object.d.ts +14 -38
- package/dist/uns/uns-object.d.ts.map +1 -1
- package/dist/uns/uns-object.js +4 -61
- package/dist/uns/uns-object.js.map +1 -1
- package/dist/uns/uns-proxy.d.ts.map +1 -1
- package/dist/uns/uns-proxy.js +2 -0
- package/dist/uns/uns-proxy.js.map +1 -1
- package/dist/uns-grpc/uns-gateway-server.js +1 -1
- package/dist/uns-grpc/uns-gateway-server.js.map +1 -1
- package/dist/uns-mqtt/uns-mqtt-proxy.d.ts.map +1 -1
- package/dist/uns-mqtt/uns-mqtt-proxy.js +4 -1
- package/dist/uns-mqtt/uns-mqtt-proxy.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,6 +40,24 @@ pnpm run refresh-uns
|
|
|
40
40
|
|
|
41
41
|
When configured via `uns-kit configure-codegen`, this script lives in your project `package.json` and writes into `src/uns/`.
|
|
42
42
|
|
|
43
|
+
### Generate UNS dictionary (object types & attributes with descriptions)
|
|
44
|
+
|
|
45
|
+
Use `packages/uns-core/src/tools/generate-uns-dictionary.ts` to turn a JSON dictionary into a TypeScript helper (with optional GraphQL overlay). Defaults:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pnpm tsx packages/uns-core/src/tools/generate-uns-dictionary.ts \
|
|
49
|
+
--input uns-dictionary.json \ # base JSON (optional; skipped if missing)
|
|
50
|
+
--output src/uns/uns-dictionary.generated.ts \
|
|
51
|
+
--from-graphql \ # optional: fetch overlay from GraphQL
|
|
52
|
+
--lang sl \ # pick language code from descriptions
|
|
53
|
+
--priority overlay \ # overlay wins when it has a description
|
|
54
|
+
--write-merged-json --json-out uns-dictionary.merged.json # optional: persist merged view
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
- Reads base JSON if present; overlays GraphQL results on top (additive, per-key override).
|
|
58
|
+
- Logs any additions/overrides; JSON stays untouched unless `--write-merged-json` is passed.
|
|
59
|
+
- The generated TS file exports constants, description maps, and helper getters for IntelliSense and metadata emission.
|
|
60
|
+
|
|
43
61
|
### Infisical secret resolution in development
|
|
44
62
|
|
|
45
63
|
- The resolver looks for `SecretResolverOptions.infisical.fetchSecret`, then `INFISICAL_TOKEN`/`INFISICAL_PERSONAL_TOKEN`, then `/run/secrets/infisical_token` (or `/var/lib/uns/secrets/infisical_token`).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-uns-dictionary.d.ts","sourceRoot":"","sources":["../../src/tools/generate-uns-dictionary.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Generate a TypeScript dictionary of object types and attributes (with descriptions)
|
|
4
|
+
* from a JSON file or by fetching from GraphQL. The output is meant for IntelliSense
|
|
5
|
+
* and metadata enrichment (e.g., emitting descriptions alongside topics).
|
|
6
|
+
*
|
|
7
|
+
* JSON shape (example):
|
|
8
|
+
* {
|
|
9
|
+
* "objectTypes": {
|
|
10
|
+
* "energy-resource": { "description": "Energy carriers (electricity/steam/gas)" },
|
|
11
|
+
* "custom-type": { "description": "Tenant-specific thing" }
|
|
12
|
+
* },
|
|
13
|
+
* "attributes": {
|
|
14
|
+
* "cumulative-active-energy-delivered": { "description": "kWh total" },
|
|
15
|
+
* "status": { "description": "Generic status" }
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
20
|
+
import path from "node:path";
|
|
21
|
+
import { GraphQLClient, ClientError, gql } from "graphql-request";
|
|
22
|
+
import { ConfigFile } from "../config-file.js";
|
|
23
|
+
import { AuthClient } from "./auth/index.js";
|
|
24
|
+
const DEFAULT_INPUT = "uns-dictionary.json";
|
|
25
|
+
const DEFAULT_OUTPUT = path.resolve(process.cwd(), "src/uns/uns-dictionary.generated.ts");
|
|
26
|
+
const DEFAULT_JSON_OUT = path.resolve(process.cwd(), DEFAULT_INPUT);
|
|
27
|
+
async function main() {
|
|
28
|
+
const args = parseArgs(process.argv.slice(2));
|
|
29
|
+
const baseDictionary = await readDictionaryIfExists(args.input);
|
|
30
|
+
const overlayDictionary = args.fromGraphql
|
|
31
|
+
? await fetchDictionaryFromGraphql(args.queryFile)
|
|
32
|
+
: {};
|
|
33
|
+
const { merged, differences } = mergeDictionaries(baseDictionary, overlayDictionary, args.priority, args.lang);
|
|
34
|
+
if (differences.length) {
|
|
35
|
+
console.log("Overlay changes applied:");
|
|
36
|
+
for (const diff of differences) {
|
|
37
|
+
console.log(` [${diff.section}] ${diff.key}: "${diff.from ?? ""}" -> "${diff.to ?? ""}"`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.log("No overlay changes applied.");
|
|
42
|
+
}
|
|
43
|
+
// Persist the merged JSON only when explicitly requested.
|
|
44
|
+
if (args.writeMergedJson) {
|
|
45
|
+
await writeJson(merged, args.jsonOut);
|
|
46
|
+
}
|
|
47
|
+
await writeDictionaryTs(merged, args.output, args.lang);
|
|
48
|
+
console.log(`Generated dictionary -> ${args.output}`);
|
|
49
|
+
}
|
|
50
|
+
function parseArgs(argv) {
|
|
51
|
+
let input = DEFAULT_INPUT;
|
|
52
|
+
let output = DEFAULT_OUTPUT;
|
|
53
|
+
let jsonOut = DEFAULT_JSON_OUT;
|
|
54
|
+
let fromGraphql = false;
|
|
55
|
+
let queryFile;
|
|
56
|
+
let writeMergedJson = false;
|
|
57
|
+
let priority = "overlay";
|
|
58
|
+
let lang = "sl";
|
|
59
|
+
for (let i = 0; i < argv.length; i++) {
|
|
60
|
+
const arg = argv[i];
|
|
61
|
+
if (arg === "--input" && argv[i + 1]) {
|
|
62
|
+
input = argv[++i];
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (arg === "--output" && argv[i + 1]) {
|
|
66
|
+
output = argv[++i];
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (arg === "--json-out" && argv[i + 1]) {
|
|
70
|
+
jsonOut = argv[++i];
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (arg === "--write-merged-json") {
|
|
74
|
+
writeMergedJson = true;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (arg === "--from-graphql") {
|
|
78
|
+
fromGraphql = true;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (arg === "--query-file" && argv[i + 1]) {
|
|
82
|
+
queryFile = argv[++i];
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (arg === "--priority" && argv[i + 1]) {
|
|
86
|
+
const val = argv[++i];
|
|
87
|
+
if (val !== "overlay" && val !== "base") {
|
|
88
|
+
throw new Error(`Invalid priority "${val}". Use "overlay" or "base".`);
|
|
89
|
+
}
|
|
90
|
+
priority = val;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (arg === "--lang" && argv[i + 1]) {
|
|
94
|
+
lang = argv[++i];
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (arg === "--help" || arg === "-h") {
|
|
98
|
+
printHelp();
|
|
99
|
+
process.exit(0);
|
|
100
|
+
}
|
|
101
|
+
throw new Error(`Unknown argument: ${arg}`);
|
|
102
|
+
}
|
|
103
|
+
return { input, output, jsonOut, fromGraphql, queryFile, writeMergedJson, priority, lang };
|
|
104
|
+
}
|
|
105
|
+
function printHelp() {
|
|
106
|
+
console.log(`Usage: tsx packages/uns-core/src/tools/generate-uns-dictionary.ts [options]
|
|
107
|
+
|
|
108
|
+
Options:
|
|
109
|
+
--input <file> Path to uns-dictionary.json (default: ${DEFAULT_INPUT})
|
|
110
|
+
--output <file> Path to generated TS file (default: src/uns/uns-dictionary.generated.ts)
|
|
111
|
+
--json-out <file> Where to write merged JSON (default: ${DEFAULT_JSON_OUT})
|
|
112
|
+
--write-merged-json Persist the merged JSON (otherwise JSON is left untouched)
|
|
113
|
+
--from-graphql Fetch dictionary from GraphQL instead of reading local JSON
|
|
114
|
+
--query-file <file> Optional .graphql/.gql file to override the default query
|
|
115
|
+
--priority <p> Merge priority: "overlay" (default) or "base" (keep base descriptions)
|
|
116
|
+
--lang <code> Preferred description language code (default: "sl")
|
|
117
|
+
--help, -h Show this help
|
|
118
|
+
`);
|
|
119
|
+
}
|
|
120
|
+
async function readDictionaryFromJson(filePath) {
|
|
121
|
+
const absolute = path.resolve(process.cwd(), filePath);
|
|
122
|
+
const raw = await readFile(absolute, "utf8");
|
|
123
|
+
return JSON.parse(raw);
|
|
124
|
+
}
|
|
125
|
+
async function readDictionaryIfExists(filePath) {
|
|
126
|
+
try {
|
|
127
|
+
return await readDictionaryFromJson(filePath);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (error?.code === "ENOENT") {
|
|
131
|
+
return {};
|
|
132
|
+
}
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async function fetchDictionaryFromGraphql(queryFile) {
|
|
137
|
+
const config = await ConfigFile.loadConfig();
|
|
138
|
+
const auth = await AuthClient.create();
|
|
139
|
+
let accessToken = await auth.getAccessToken();
|
|
140
|
+
const client = new GraphQLClient(config.uns.graphql, {
|
|
141
|
+
headers: { Authorization: `Bearer ${accessToken}` },
|
|
142
|
+
});
|
|
143
|
+
const querySource = queryFile
|
|
144
|
+
? await readFile(path.resolve(process.cwd(), queryFile), "utf8")
|
|
145
|
+
: DEFAULT_DICTIONARY_QUERY;
|
|
146
|
+
const document = gql `${querySource}`;
|
|
147
|
+
async function requestWithAuth(documentToRun) {
|
|
148
|
+
try {
|
|
149
|
+
return await client.request(documentToRun);
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
const isAuthErr = err instanceof ClientError && (err.response.status === 401 || err.response.status === 403);
|
|
153
|
+
if (isAuthErr) {
|
|
154
|
+
accessToken = await auth.getAccessToken();
|
|
155
|
+
client.setHeader("Authorization", `Bearer ${accessToken}`);
|
|
156
|
+
return await client.request(documentToRun);
|
|
157
|
+
}
|
|
158
|
+
throw err;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const data = await requestWithAuth(document);
|
|
162
|
+
const objectTypeArray = data?.GetObjectTypes ??
|
|
163
|
+
data?.objectTypes ??
|
|
164
|
+
data?.unsDictionary?.objectTypes ??
|
|
165
|
+
[];
|
|
166
|
+
const attributeArray = data?.GetAttributes ??
|
|
167
|
+
data?.attributes ??
|
|
168
|
+
data?.unsDictionary?.attributes ??
|
|
169
|
+
[];
|
|
170
|
+
const objectTypes = {};
|
|
171
|
+
for (const item of objectTypeArray) {
|
|
172
|
+
if (item?.name) {
|
|
173
|
+
objectTypes[item.name] = { description: item.description ?? undefined };
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const attributes = {};
|
|
177
|
+
for (const item of attributeArray) {
|
|
178
|
+
if (item?.name) {
|
|
179
|
+
attributes[item.name] = { description: item.description ?? undefined };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return { objectTypes, attributes };
|
|
183
|
+
}
|
|
184
|
+
async function writeJson(dictionary, filePath) {
|
|
185
|
+
const absolute = path.resolve(process.cwd(), filePath);
|
|
186
|
+
await mkdir(path.dirname(absolute), { recursive: true });
|
|
187
|
+
await writeFile(absolute, JSON.stringify(dictionary, null, 2) + "\n", "utf8");
|
|
188
|
+
console.log(`Wrote dictionary JSON -> ${absolute}`);
|
|
189
|
+
}
|
|
190
|
+
const resolveDescription = (entry, lang) => {
|
|
191
|
+
if (!entry)
|
|
192
|
+
return undefined;
|
|
193
|
+
const byLang = entry.descriptions?.[lang];
|
|
194
|
+
if (byLang && byLang.length > 0)
|
|
195
|
+
return byLang;
|
|
196
|
+
if (entry.description && entry.description.length > 0)
|
|
197
|
+
return entry.description;
|
|
198
|
+
return undefined;
|
|
199
|
+
};
|
|
200
|
+
function mergeDictionaries(base, overlay, priority, lang) {
|
|
201
|
+
const differences = [];
|
|
202
|
+
const mergeSection = (baseSection = {}, overlaySection = {}, section) => {
|
|
203
|
+
const result = { ...baseSection };
|
|
204
|
+
for (const [key, value] of Object.entries(overlaySection)) {
|
|
205
|
+
const baseEntry = result[key];
|
|
206
|
+
const mergedEntry = {
|
|
207
|
+
...(baseEntry ?? {}),
|
|
208
|
+
descriptions: { ...(baseEntry?.descriptions ?? {}), ...(value.descriptions ?? {}) },
|
|
209
|
+
};
|
|
210
|
+
if (value.description !== undefined) {
|
|
211
|
+
mergedEntry.description = value.description ?? undefined;
|
|
212
|
+
}
|
|
213
|
+
if (!baseEntry) {
|
|
214
|
+
result[key] = mergedEntry;
|
|
215
|
+
const toDesc = resolveDescription(mergedEntry, lang) ?? "";
|
|
216
|
+
differences.push({ section, key, from: undefined, to: toDesc });
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
const baseDesc = resolveDescription(baseEntry, lang);
|
|
220
|
+
const overlayDesc = resolveDescription(value, lang);
|
|
221
|
+
const shouldOverride = priority === "overlay" && overlayDesc && overlayDesc.length > 0;
|
|
222
|
+
if (shouldOverride && overlayDesc !== baseDesc) {
|
|
223
|
+
differences.push({ section, key, from: baseDesc ?? "", to: overlayDesc });
|
|
224
|
+
// mergedEntry already contains overlay descriptions; resolved value will pick it up.
|
|
225
|
+
}
|
|
226
|
+
result[key] = mergedEntry;
|
|
227
|
+
}
|
|
228
|
+
return result;
|
|
229
|
+
};
|
|
230
|
+
const merged = {
|
|
231
|
+
objectTypes: mergeSection(base.objectTypes, overlay.objectTypes, "objectTypes"),
|
|
232
|
+
attributes: mergeSection(base.attributes, overlay.attributes, "attributes"),
|
|
233
|
+
};
|
|
234
|
+
return { merged, differences };
|
|
235
|
+
}
|
|
236
|
+
async function writeDictionaryTs(dictionary, filePath, lang) {
|
|
237
|
+
const objectTypeEntries = Object.entries(dictionary.objectTypes ?? {});
|
|
238
|
+
const attributeEntries = Object.entries(dictionary.attributes ?? {});
|
|
239
|
+
const renderRecord = (entries) => entries
|
|
240
|
+
.map(([name]) => ` "${name}": "${name}",`)
|
|
241
|
+
.join("\n");
|
|
242
|
+
const renderDescriptions = (entries) => entries
|
|
243
|
+
.map(([name, value]) => ` "${name}": ${JSON.stringify(resolveDescription(value, lang) ?? "")},`)
|
|
244
|
+
.join("\n");
|
|
245
|
+
const objectTypeConst = `export const GeneratedObjectTypes = {\n${renderRecord(objectTypeEntries)}\n} as const;`;
|
|
246
|
+
const objectTypeDescConst = `export const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {\n${renderDescriptions(objectTypeEntries)}\n};`;
|
|
247
|
+
const attributeConst = `export const GeneratedAttributes = {\n${renderRecord(attributeEntries)}\n} as const;`;
|
|
248
|
+
const attributeDescConst = `export const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {\n${renderDescriptions(attributeEntries)}\n};`;
|
|
249
|
+
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`;
|
|
250
|
+
const absolute = path.resolve(process.cwd(), filePath);
|
|
251
|
+
await mkdir(path.dirname(absolute), { recursive: true });
|
|
252
|
+
await writeFile(absolute, content, "utf8");
|
|
253
|
+
}
|
|
254
|
+
const DEFAULT_DICTIONARY_QUERY = /* GraphQL */ `
|
|
255
|
+
query GetUnsDictionary {
|
|
256
|
+
GetObjectTypes {
|
|
257
|
+
name
|
|
258
|
+
description
|
|
259
|
+
}
|
|
260
|
+
GetAttributes {
|
|
261
|
+
name
|
|
262
|
+
description
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
`;
|
|
266
|
+
main().catch((error) => {
|
|
267
|
+
console.error("Failed to generate UNS dictionary:", error);
|
|
268
|
+
process.exitCode = 1;
|
|
269
|
+
});
|
|
270
|
+
//# sourceMappingURL=generate-uns-dictionary.js.map
|
|
@@ -0,0 +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]) => ` \"${name}\": \"${name}\",`)\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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../src/tools/initialize.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,QAAsC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../src/tools/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import * as azdev from \"azure-devops-node-api\";\nimport * as ga from \"azure-devops-node-api/GitApi\";\nimport { GitRepository } from \"azure-devops-node-api/interfaces/TfvcInterfaces\";\nimport chalk from \"chalk\";\nimport { readFile } from \"fs/promises\";\nimport readline from \"node:readline\";\nimport * as path from \"path\";\nimport { CleanOptions, SimpleGit, simpleGit } from \"simple-git\";\nimport fs from \"fs-extra\";\nimport { basePath } from \"./base-path.js\";\n\n\nconst git: SimpleGit = simpleGit(\"./\").clean(CleanOptions.FORCE);\n\nexport const packageJsonPath = path.join(basePath, \"package.json\");\nconst orgUrl = \"https://example-org@dev.azure.com/example-org\";\n\nconst rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n});\n\nlet token: string = \"\";\nconst packageJson = JSON.parse(await readFile(packageJsonPath, \"utf8\"));\nconst repoName: string = packageJson.name;\n\nasync function run() {\n let repos: GitRepository[];\n let gitApi: ga.IGitApi;\n const project = \"example-project\";\n try {\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\n const connection = new azdev.WebApi(orgUrl, authHandler);\n gitApi = await connection.getGitApi();\n repos = await gitApi.getRepositories(project); \n } catch (error) {\n console.error(\"Your AZURE_PAT environment variable has probably expired.\");\n console.log(\"Please update your AZURE_PAT environment with a new one on.\");\n console.log(\"You can create a new one at[https://dev.azure.com/example-org/_usersSettings/tokens]\");\n }\n\n if (repos.filter((x) => x.name == repoName).length > 0) {\n console.log(\n chalk.red.bold(\n `Error: Repository ${repoName} in project ${project} already exists.`,\n ),\n );\n } else {\n process.stdout.write(`Create ${repoName} in project ${project}`);\n try {\n await gitApi.createRepository({ name: repoName }, project);\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Initialize local git repository on branch master`);\n try {\n await git.init();\n await git.checkoutLocalBranch(\"master\");\n await git.add(\".\");\n await git.commit(\"Initial commit\");\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Add remote origin.`);\n try {\n await git.remote([\n \"add\",\n \"origin\",\n `git@ssh.dev.azure.com:v3/example-org/example-project/${repoName}`,\n ]);\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Push master to remote`);\n try {\n await git.push(\"origin\", \"master\");\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Create default config.json from config-template.json`);\n try {\n fs.copyFileSync(path.join(basePath,'config-template.json'), path.join(basePath,'config.json'));\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n console.log(\n chalk.green.bold(\n `\\nNow you can add pipeline for ${repoName} in Azure DevOps pipelines for the project ${project}.`,\n ),\n );\n }\n}\n\nconsole.log(chalk.green.bold(`Create new RTT: ${repoName}\\n`));\n\nconst envPat = process.env.AZURE_PAT;\nif (envPat && envPat.length > 10) {\n rl.close();\n console.log(\"Using PAT from your AZURE_PAT environment\");\n token = envPat;\n run();\n} else {\n console.log(\"Could not find AZURE_PAT environment.\");\n rl.question(\n `Please enter your PAT, you can create one at [https://dev.azure.com/example-org/_usersSettings/tokens]: `,\n (newToken) => {\n rl.close();\n token = newToken;\n run();\n },\n ); \n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../src/tools/make.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make.js","sourceRoot":"","sources":["../../src/tools/make.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE3C,IAAI,CAAC;IACH,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;IACnD,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACnF,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAClD,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9E,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACxF,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAErE,oFAAoF;IACpF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEvD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,SAAS,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import fs from \"fs-extra\";\nimport { basePath } from \"./base-path.js\";\nimport * as path from \"path\";\nimport { execSync } from 'child_process';\n\n\nconst binDir = path.join(basePath, 'bin/');\n\ntry {\n const ua = process.env.npm_config_user_agent || \"\";\n const pm = ua.startsWith(\"pnpm\") ? \"pnpm\" : ua.startsWith(\"yarn\") ? \"yarn\" : \"npm\";\n execSync(`${pm} run build`, { stdio: 'inherit' });\n fs.rmSync(binDir, {\n recursive: true,\n force: true,\n });\n fs.mkdirSync(binDir, { recursive: true });\n fs.copyFileSync(path.join(basePath, 'LICENSE'), path.join(binDir, 'LICENSE'));\n fs.copyFileSync(path.join(basePath, 'package.json'), path.join(binDir, 'package.json'));\n fs.copySync(path.join(basePath, 'dist'), path.join(binDir, 'dist/'));\n\n // After all files are copied, check for ../local-tools/make.js and run it if exists\n const localToolsDir = path.resolve(basePath, 'dist/local-tools');\n const makeJsPath = path.join(localToolsDir, 'make.js');\n\n if (fs.existsSync(makeJsPath)) {\n execSync(`node \"${makeJsPath}\"`, { stdio: 'inherit' });\n }\n} catch (error) {\n console.log(`error: ${error}`);\n} \n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-rtt.d.ts","sourceRoot":"","sources":["../../src/tools/update-rtt.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-rtt.js","sourceRoot":"","sources":["../../src/tools/update-rtt.ts"],"names":[],"mappings":"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","sourcesContent":["import { basePath } from \"./base-path.js\";\nimport readline from \"node:readline\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport { readFile } from \"fs/promises\";\nimport fs from \"fs-extra\";\nimport * as prettier from \"prettier\";\n\n\nconst rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n});\n\nconst packageJsonPath = path.join(basePath, \"package.json\");\nconst packageJson = JSON.parse(await readFile(packageJsonPath, \"utf8\"));\n\n// Flags\nconst argv = new Set(process.argv.slice(2));\nconst DRY_RUN = argv.has(\"--dry-run\") || process.env.DRY_RUN === \"1\";\n\nfunction logAction(action: string) {\n if (DRY_RUN) console.log(`[dry-run] ${action}`);\n else console.log(action);\n}\n\nfunction writeJson(file: string, obj: any) {\n return prettier.format(JSON.stringify(obj), { parser: \"json\" }).then((s) => {\n if (DRY_RUN) {\n console.log(`[dry-run] write ${file} (${s.length} bytes)`);\n } else {\n fs.writeFileSync(file, s, \"utf8\");\n }\n });\n}\n\nfunction copyDir(src: string, dest: string, options?: any) {\n if (DRY_RUN) {\n console.log(`[dry-run] copy ${src} -> ${dest}`);\n return;\n }\n fs.copySync(src, dest, { overwrite: true, ...options });\n}\n\nfunction removePath(p: string, opts?: any) {\n if (DRY_RUN) {\n console.log(`[dry-run] rm ${p}`);\n return;\n }\n fs.rmSync(p, { force: true, recursive: true, ...opts });\n}\n\ntry {\n await main();\n rl.close();\n} catch (error) {\n console.log(chalk.red.bold(`\\n${error}`));\n rl.close();\n}\n\nasync function main() {\n const tmpRtt = path.join(basePath, \"/tmp-rtt\");\n\n try {\n logAction(`Overwrite examples`);\n copyDir(path.join(tmpRtt, \"/src/examples\"), path.join(basePath, \"/src/examples\"));\n\n logAction(`Overwrite uns`);\n copyDir(path.join(tmpRtt, \"/src/uns\"), path.join(basePath, \"/src/uns\"));\n\n logAction(`Overwrite uns-config`);\n copyDir(path.join(tmpRtt, \"/src/uns-config\"), path.join(basePath, \"/src/uns-config\"));\n\n // Python: copy template but preserve local project area(s) and environments\n // Preserved by default: python/rtt, python/venv, python/.venv, python/__pycache__\n const pythonSrc = path.join(tmpRtt, \"/python\");\n const pythonDst = path.join(basePath, \"/python\");\n logAction(`Overwrite python (preserve local, rtt, venv/.venv, __pycache__)`);\n copyDir(pythonSrc, pythonDst, {\n filter: (src: string) => {\n // Only filter relative to template python root\n const rel = path.relative(pythonSrc, src);\n if (!rel || rel === \"\") return true;\n const top = rel.split(path.sep)[0];\n const preserved = new Set([\"local\", \"rtt\", \"venv\", \".venv\", \"__pycache__\"]);\n return !preserved.has(top);\n },\n });\n\n logAction(`Overwrite uns-grpc`);\n copyDir(path.join(tmpRtt, \"/src/uns-grpc\"), path.join(basePath, \"/packages/uns-core/src/uns-grpc\"));\n\n logAction(`Overwrite uns-cron`);\n copyDir(path.join(tmpRtt, \"/src/uns-cron\"), path.join(basePath, \"/packages/uns-cron/src\"));\n\n logAction(`Overwrite uns-api`);\n copyDir(path.join(tmpRtt, \"/src/uns-api\"), path.join(basePath, \"/packages/uns-api/src\"));\n\n logAction(`Overwrite uns-mqtt`);\n copyDir(path.join(tmpRtt, \"/src/uns-mqtt\"), path.join(basePath, \"/packages/uns-core/src/uns-mqtt\"));\n\n logAction(`Overwrite uns-temporal`);\n copyDir(path.join(tmpRtt, \"/src/uns-temporal\"), path.join(basePath, \"/packages/uns-temporal/src\"));\n\n logAction(`Overwrite eslint.config.mjs`);\n copyDir(path.join(tmpRtt, \"/eslint.config.mjs\"), path.join(basePath, \"/eslint.config.mjs\"));\n\n logAction(`Overwrite schema.ts`);\n copyDir(path.join(tmpRtt, \"/src/graphql/schema.ts\"), path.join(basePath, \"/src/graphql/schema.ts\"));\n\n logAction(`Overwrite config-template.json`);\n copyDir(path.join(tmpRtt, \"/config-template.json\"), path.join(basePath, \"/config-template.json\"));\n\n logAction(`Overwrite vite.config.js`);\n copyDir(path.join(tmpRtt, \"/vite.config.js\"), path.join(basePath, \"/vite.config.js\"));\n\n logAction(`Overwrite codegen.ts`);\n copyDir(path.join(tmpRtt, \"/codegen.ts\"), path.join(basePath, \"/codegen.ts\")); \n\n logAction(`Overwrite logger.ts`);\n copyDir(path.join(tmpRtt, \"/src/logger.ts\"), path.join(basePath, \"/src/logger.ts\")); \n\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return;\n }\n\n try {\n logAction(`Merge package.json scripts (template overrides existing keys, preserves extras)`);\n const tmpPackageJson = JSON.parse(await readFile(path.join(tmpRtt, 'package.json'), \"utf8\"));\n const currentScripts = packageJson.scripts || {};\n const templateScripts = tmpPackageJson.scripts || {};\n packageJson.scripts = { ...currentScripts, ...templateScripts };\n await writeJson('package.json', packageJson);\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`));\n return;\n }\n\n try {\n console.log(chalk.red(`Update devDependencies: overwrite versions for existing, add missing; preserve extras.`));\n const tmpPackageJson = JSON.parse(await readFile(path.join(tmpRtt, 'package.json'), \"utf8\"));\n packageJson.devDependencies = packageJson.devDependencies || {};\n for (const [dep, version] of Object.entries(tmpPackageJson.devDependencies || {})) {\n packageJson.devDependencies[dep] = version as string;\n }\n await writeJson('package.json', packageJson);\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`));\n return;\n }\n\n try {\n console.log(chalk.red(`Update dependencies: keep existing versions; add missing from template.`));\n const tmpPackageJson = JSON.parse(await readFile(path.join(tmpRtt, 'package.json'), \"utf8\"));\n\n packageJson.dependencies = packageJson.dependencies || {};\n for (const [dep, version] of Object.entries(tmpPackageJson.dependencies || {})) {\n if (!(dep in packageJson.dependencies)) {\n packageJson.dependencies[dep] = version as string;\n }\n }\n\n await writeJson('package.json', packageJson);\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`));\n return;\n }\n\n try {\n logAction(`Remove obsolete directories and files`);\n removePath(path.join(basePath, \"/src/mqtt-rtt\"));\n removePath(path.join(basePath, \"/src/uns-rtt\")); \n removePath(path.join(basePath, \"/.eslintignore\"));\n removePath(path.join(basePath, \"/.eslintrc.json\"));\n removePath(path.join(basePath, \"/src/update-rtt.ts\"));\n removePath(path.join(basePath, \"/src/demo\"));\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`));\n return;\n }\n\n\n try {\n logAction(`Remove tmp-rtt`);\n removePath(tmpRtt);\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return;\n }\n\n console.log(chalk.green.bold(\"\\nRun npm run build to rebuild the project, and remove obsolete directories and files.\"));\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-tools.d.ts","sourceRoot":"","sources":["../../src/tools/update-tools.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-tools.js","sourceRoot":"","sources":["../../src/tools/update-tools.ts"],"names":[],"mappings":"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","sourcesContent":["import { CleanOptions, SimpleGit, simpleGit } from \"simple-git\";\nimport { basePath } from \"./base-path.js\";\nimport readline from \"node:readline\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport { execSync } from \"child_process\";\n\n\nconst rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n});\n\nconst git: SimpleGit = simpleGit(\"./\").clean(CleanOptions.FORCE);\n\ntry {\n await main();\n rl.close();\n} catch (error) {\n console.log(chalk.red.bold(`\\n${error}`));\n rl.close();\n}\n\nasync function main() {\n const tmpRtt = path.join(basePath, \"/tmp-rtt\");\n try {\n console.log(`Pull template-ts-nodejs into tmp-rtt`);\n await git.clone(\"git@ssh.dev.azure.com:v3/example-org/example-project/template-uns-rtt\", tmpRtt);\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return;\n }\n\n try {\n console.log(`Overwrite tools`);\n fs.copySync(path.join(tmpRtt, \"/src/tools\"), path.join(basePath, \"/src/tools\"), {overwrite: true});\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return;\n }\n\n // Update library version JSON at repo root from template\n try {\n const srcJson = path.join(tmpRtt, 'uns-library.json');\n const dstJson = path.join(basePath, 'uns-library.json');\n if (fs.existsSync(srcJson)) {\n fs.copyFileSync(srcJson, dstJson);\n const ver = JSON.parse(fs.readFileSync(srcJson, 'utf8')).version;\n console.log(`Updated uns-library.json -> ${ver}`);\n } else {\n // Fallback for older templates: synthesize from package.json\n const tmpPackageJsonPath = path.join(tmpRtt, 'package.json');\n const tmpPackageJson = JSON.parse(fs.readFileSync(tmpPackageJsonPath, 'utf8'));\n const payload = JSON.stringify({ name: tmpPackageJson.name, version: tmpPackageJson.version }, null, 2);\n fs.writeFileSync(dstJson, payload + \"\\n\", 'utf8');\n console.log(`Updated uns-library.json -> ${tmpPackageJson.version}`);\n }\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`));\n return;\n }\n\n try {\n console.log(`Running update-rtt from tools`);\n // Propagate any CLI args to update-rtt (e.g., --dry-run)\n const args = process.argv.slice(2).join(\" \");\n // Run the TypeScript tool directly to avoid relying on a successful build\n execSync(`tsx ./src/tools/update-rtt.ts ${args}`.trim(), { stdio: 'inherit' });\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return; \n }\n}\n"]}
|
|
@@ -1,144 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
export type
|
|
3
|
-
export type
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
readonly MeasuredVibration: "measured-vibration";
|
|
8
|
-
readonly MeasuredPressure: "measured-pressure";
|
|
9
|
-
readonly MeasuredFlow: "measured-flow";
|
|
10
|
-
readonly OperatingHours: "operating-hours";
|
|
11
|
-
readonly FaultCode: "fault-code";
|
|
12
|
-
readonly Speed: "speed";
|
|
13
|
-
readonly EnergyConsumption: "energy-consumption";
|
|
14
|
-
readonly Power: "power";
|
|
15
|
-
readonly Voltage: "voltage";
|
|
16
|
-
readonly Current: "current";
|
|
17
|
-
readonly Energy: "energy";
|
|
18
|
-
};
|
|
19
|
-
export type EquipmentAttributeName = typeof EquipmentAttributes[keyof typeof EquipmentAttributes];
|
|
20
|
-
export declare const MaterialAttributes: {
|
|
21
|
-
readonly Lot: "lot";
|
|
22
|
-
readonly LotId: "lot-id";
|
|
23
|
-
readonly BatchNumber: "batch-number";
|
|
24
|
-
readonly MaterialType: "material-type";
|
|
25
|
-
readonly Quantity: "quantity";
|
|
26
|
-
readonly Location: "location";
|
|
27
|
-
readonly Status: "status";
|
|
28
|
-
};
|
|
29
|
-
export type MaterialAttributeName = typeof MaterialAttributes[keyof typeof MaterialAttributes];
|
|
30
|
-
export declare const PersonnelAttributes: {
|
|
31
|
-
readonly Presence: "presence";
|
|
32
|
-
readonly TaskId: "task-id";
|
|
33
|
-
readonly AssignedTask: "assigned-task";
|
|
34
|
-
readonly Role: "role";
|
|
35
|
-
readonly Status: "status";
|
|
36
|
-
};
|
|
37
|
-
export type PersonnelAttributeName = typeof PersonnelAttributes[keyof typeof PersonnelAttributes];
|
|
38
|
-
export declare const ProcessSegmentAttributes: {
|
|
39
|
-
readonly StartTime: "start-time";
|
|
40
|
-
readonly EndTime: "end-time";
|
|
41
|
-
readonly Duration: "duration";
|
|
42
|
-
readonly Status: "status";
|
|
43
|
-
readonly OutputQuantity: "output-quantity";
|
|
44
|
-
};
|
|
45
|
-
export type ProcessSegmentAttributeName = typeof ProcessSegmentAttributes[keyof typeof ProcessSegmentAttributes];
|
|
46
|
-
export declare const ProductDefinitionAttributes: {
|
|
47
|
-
readonly ProductCode: "product-code";
|
|
48
|
-
readonly Revision: "revision";
|
|
49
|
-
readonly Specification: "specification";
|
|
50
|
-
readonly TargetParameters: "target-parameters";
|
|
51
|
-
readonly MaterialComposition: "material-composition";
|
|
52
|
-
readonly VersionHistory: "version-history";
|
|
53
|
-
};
|
|
54
|
-
export type ProductDefinitionAttributeName = typeof ProductDefinitionAttributes[keyof typeof ProductDefinitionAttributes];
|
|
55
|
-
export declare const ProductQualityAttributes: {
|
|
56
|
-
readonly InspectionResult: "inspection-result";
|
|
57
|
-
readonly Deviation: "deviation";
|
|
58
|
-
readonly PassFail: "pass-fail";
|
|
59
|
-
readonly SurfaceDefect: "surface-defect";
|
|
60
|
-
readonly Hardness: "hardness";
|
|
61
|
-
readonly TensileStrength: "tensile-strength";
|
|
62
|
-
};
|
|
63
|
-
export type ProductQualityAttributeName = typeof ProductQualityAttributes[keyof typeof ProductQualityAttributes];
|
|
64
|
-
export declare const WorkDefinitionAttributes: {
|
|
65
|
-
readonly WorkOrderId: "work-order-id";
|
|
66
|
-
readonly TaskList: "task-list";
|
|
67
|
-
readonly PlannedStart: "planned-start";
|
|
68
|
-
readonly PlannedEnd: "planned-end";
|
|
69
|
-
readonly AssignedTo: "assigned-to";
|
|
70
|
-
readonly InstructionUrl: "instruction-url";
|
|
71
|
-
};
|
|
72
|
-
export type WorkDefinitionAttributeName = typeof WorkDefinitionAttributes[keyof typeof WorkDefinitionAttributes];
|
|
73
|
-
export declare const ResourceStatusAttributes: {
|
|
74
|
-
readonly Availability: "availability";
|
|
75
|
-
readonly Utilization: "utilization";
|
|
76
|
-
readonly Downtime: "downtime";
|
|
77
|
-
readonly Status: "status";
|
|
78
|
-
readonly MaintenanceStatus: "maintenance-status";
|
|
79
|
-
};
|
|
80
|
-
export type ResourceStatusAttributeName = typeof ResourceStatusAttributes[keyof typeof ResourceStatusAttributes];
|
|
81
|
-
export declare const EnergyResourceAttributes: {
|
|
82
|
-
readonly Power: "power";
|
|
83
|
-
readonly Energy: "energy";
|
|
84
|
-
readonly Voltage: "voltage";
|
|
85
|
-
readonly Current: "current";
|
|
86
|
-
readonly Frequency: "frequency";
|
|
87
|
-
readonly Cost: "cost";
|
|
88
|
-
};
|
|
89
|
-
export type EnergyResourceAttributeName = typeof EnergyResourceAttributes[keyof typeof EnergyResourceAttributes];
|
|
90
|
-
export declare const UtilityResourceAttributes: {
|
|
91
|
-
readonly Pressure: "pressure";
|
|
92
|
-
readonly Flow: "flow";
|
|
93
|
-
readonly Consumption: "consumption";
|
|
94
|
-
readonly Status: "status";
|
|
95
|
-
readonly Alarm: "alarm";
|
|
96
|
-
};
|
|
97
|
-
export type UtilityResourceAttributeName = typeof UtilityResourceAttributes[keyof typeof UtilityResourceAttributes];
|
|
98
|
-
export declare const FluidResourceAttributes: {
|
|
99
|
-
readonly Flow: "flow";
|
|
100
|
-
readonly Pressure: "pressure";
|
|
101
|
-
readonly Temperature: "temperature";
|
|
102
|
-
readonly TotalFlow: "total-flow";
|
|
103
|
-
readonly Conductivity: "conductivity";
|
|
104
|
-
readonly PH: "ph";
|
|
105
|
-
};
|
|
106
|
-
export type FluidResourceAttributeName = typeof FluidResourceAttributes[keyof typeof FluidResourceAttributes];
|
|
107
|
-
export declare const ConsumableResourceAttributes: {
|
|
108
|
-
readonly Level: "level";
|
|
109
|
-
readonly ConsumptionRate: "consumption-rate";
|
|
110
|
-
readonly RefillRequired: "refill-required";
|
|
111
|
-
readonly LastRefill: "last-refill";
|
|
112
|
-
readonly Status: "status";
|
|
113
|
-
};
|
|
114
|
-
export type ConsumableResourceAttributeName = typeof ConsumableResourceAttributes[keyof typeof ConsumableResourceAttributes];
|
|
115
|
-
export declare const LineAttributes: {
|
|
116
|
-
readonly Status: "status";
|
|
117
|
-
};
|
|
118
|
-
export type LineAttributeName = typeof LineAttributes[keyof typeof LineAttributes];
|
|
119
|
-
export declare const AreaAttributes: {
|
|
120
|
-
readonly Status: "status";
|
|
121
|
-
};
|
|
122
|
-
export type AreaAttributeName = typeof AreaAttributes[keyof typeof AreaAttributes];
|
|
123
|
-
export declare const SiteAttributes: {
|
|
124
|
-
readonly Status: "status";
|
|
125
|
-
};
|
|
126
|
-
export type SiteAttributeName = typeof SiteAttributes[keyof typeof SiteAttributes];
|
|
127
|
-
export declare const EnterpriseAttributes: {
|
|
128
|
-
readonly Status: "status";
|
|
129
|
-
};
|
|
130
|
-
export type EnterpriseAttributeName = typeof EnterpriseAttributes[keyof typeof EnterpriseAttributes];
|
|
131
|
-
export declare const AssetAttributes: {
|
|
132
|
-
readonly Status: "status";
|
|
133
|
-
};
|
|
134
|
-
export type AssetAttributeName = typeof AssetAttributes[keyof typeof AssetAttributes];
|
|
135
|
-
export declare const SensorAttributes: {
|
|
136
|
-
readonly Status: "status";
|
|
137
|
-
readonly MeasuredTemperature: "measured-temperature";
|
|
138
|
-
readonly MeasuredVibration: "measured-vibration";
|
|
139
|
-
readonly MeasuredPressure: "measured-pressure";
|
|
140
|
-
readonly MeasuredFlow: "measured-flow";
|
|
141
|
-
readonly Temperature: "temperature";
|
|
142
|
-
};
|
|
143
|
-
export type SensorAttributeName = typeof SensorAttributes[keyof typeof SensorAttributes];
|
|
1
|
+
import { GeneratedAttributes } from "./uns-dictionary.generated.js";
|
|
2
|
+
export declare const knownUnsAttributes: ("status" | "temperature" | "vibration" | "operating-hours" | "fault-code" | "speed" | "energy-consumption" | "lot-id" | "batch-number" | "material-type" | "quantity" | "location" | "presence" | "task-id" | "role" | "authorization-level" | "start-time" | "end-time" | "duration" | "output-quantity" | "operator-id" | "product-code" | "revision" | "specification" | "target-parameters" | "material-composition" | "version-history" | "inspection-result" | "deviation" | "pass-fail" | "surface-defect" | "hardness" | "tensile-strength" | "work-order-id" | "task-list" | "planned-start" | "planned-end" | "assigned-to" | "instruction-url" | "availability" | "utilization" | "downtime" | "maintenance-status" | "power" | "energy" | "voltage" | "current" | "frequency" | "cost" | "pressure" | "flow" | "consumption" | "alarm" | "total-flow" | "conductivity" | "ph" | "level" | "consumption-rate" | "refill-required" | "last-refill")[];
|
|
3
|
+
export type KnownUnsAttributeName = typeof GeneratedAttributes[keyof typeof GeneratedAttributes];
|
|
4
|
+
export type UnsAttribute = "" | KnownUnsAttributeName | (string & {});
|
|
5
|
+
export declare const AttributeDescriptions: Record<"status" | "temperature" | "vibration" | "operating-hours" | "fault-code" | "speed" | "energy-consumption" | "lot-id" | "batch-number" | "material-type" | "quantity" | "location" | "presence" | "task-id" | "role" | "authorization-level" | "start-time" | "end-time" | "duration" | "output-quantity" | "operator-id" | "product-code" | "revision" | "specification" | "target-parameters" | "material-composition" | "version-history" | "inspection-result" | "deviation" | "pass-fail" | "surface-defect" | "hardness" | "tensile-strength" | "work-order-id" | "task-list" | "planned-start" | "planned-end" | "assigned-to" | "instruction-url" | "availability" | "utilization" | "downtime" | "maintenance-status" | "power" | "energy" | "voltage" | "current" | "frequency" | "cost" | "pressure" | "flow" | "consumption" | "alarm" | "total-flow" | "conductivity" | "ph" | "level" | "consumption-rate" | "refill-required" | "last-refill", string>;
|
|
6
|
+
export declare function getAttributeDescription(name: string): string | undefined;
|
|
144
7
|
//# sourceMappingURL=uns-attributes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uns-attributes.d.ts","sourceRoot":"","sources":["../../src/uns/uns-attributes.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"uns-attributes.d.ts","sourceRoot":"","sources":["../../src/uns/uns-attributes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAkC,MAAM,+BAA+B,CAAC;AAEpG,eAAO,MAAM,kBAAkB,k6BAAqC,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,OAAO,mBAAmB,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAGjG,MAAM,MAAM,YAAY,GAAG,EAAE,GAAG,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,86BAAiC,CAAC;AAEpE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExE"}
|