@uns-kit/core 1.0.37 → 1.0.38
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.
|
@@ -169,7 +169,14 @@ async function refreshUnsAssets() {
|
|
|
169
169
|
return `${comment} "${entry.asset}": "${entry.asset}",`;
|
|
170
170
|
})
|
|
171
171
|
.join("\n");
|
|
172
|
-
const
|
|
172
|
+
const helpers = `
|
|
173
|
+
export function resolveGeneratedAsset(name: keyof typeof GeneratedAssets): (typeof GeneratedAssets)[keyof typeof GeneratedAssets];
|
|
174
|
+
export function resolveGeneratedAsset<T extends string>(name: T): (typeof GeneratedAssets)[keyof typeof GeneratedAssets] | T;
|
|
175
|
+
export function resolveGeneratedAsset(name: string): string {
|
|
176
|
+
return (GeneratedAssets as Record<string, string>)[name] ?? name;
|
|
177
|
+
}
|
|
178
|
+
`;
|
|
179
|
+
const vsebina = `${header}export const GeneratedAssets = {\n${entries}\n} as const;\nexport type GeneratedAssetName = typeof GeneratedAssets[keyof typeof GeneratedAssets];\n${helpers}`;
|
|
173
180
|
const outputPath = path.resolve(process.cwd(), "src/uns/uns-assets.ts");
|
|
174
181
|
await ensureDirectory(path.dirname(outputPath));
|
|
175
182
|
await writeToFile(outputPath, vsebina);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-uns.js","sourceRoot":"","sources":["../../src/tools/refresh-uns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;AAE7C,6CAA6C;AAC7C,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAe;IAC1D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAmC,EAAE,EAAE;YACtE,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;gBAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACnD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iDAAiD;AACjD,SAAS,iBAAiB,CAAC,IAAqB,EAAE,WAAmB;IACnE,OAAO,IAAI;SACR,GAAG,CAAC,OAAO,CAAC,EAAE;QACb,MAAM,OAAO,GAAG,GAAG,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC;QACpD,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM;YAC7C,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,IAAI,OAAO,MAAM,cAAc,EAAE,CAAC;IAC3C,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,8DAA8D;AAC9D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;AACvC,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9C,IAAI,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;IACjD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;CACpD,CAAC,CAAC;AAEH,KAAK,UAAU,eAAe,CAAI,QAAa;IAC7C,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,OAAO,CAAI,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,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;QAC7G,IAAI,SAAS,EAAE,CAAC;YACd,+DAA+D;YAC/D,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;YAC3D,OAAO,MAAM,MAAM,CAAC,OAAO,CAAI,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,+BAA+B;AAC/B,KAAK,UAAU,gBAAgB;IAC7B,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgClB,CAAC;IAEH,MAAM,KAAK,GAAQ,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,GAAoB,KAAK,CAAC,gBAAgB,CAAC;IAErD,MAAM,OAAO,GAAG,2BAA2B,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC;IACzF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACxE,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,6BAA6B;AAC7B,KAAK,UAAU,cAAc;IAC3B,MAAM,QAAQ,GAAG,GAAG,CAAA;;;IAGlB,CAAC;IAEH,MAAM,KAAK,GAAQ,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,GAAa,KAAK,CAAC,OAAO,CAAC;IAErC,MAAM,OAAO,GAAG,yBAAyB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC;IAClG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACtE,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAoC;IAClE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAyD;IACtF,MAAM,OAAO,GAAG,IAAI,GAAG,EAOnB,CAAC;IAEL,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;YAChB,IAAI;YACJ,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;YAC3E,aAAa,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;YACjF,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YACrE,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;YACxE,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;SACnE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAiD;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,EAGnB,CAAC;IAEL,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,+BAA+B;AAC/B,KAAK,UAAU,gBAAgB;IAC7B,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;IASlB,CAAC;IAEH,MAAM,KAAK,GAAQ,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,wEAAwE,CAAC;IACxF,MAAM,OAAO,GAAG,MAAM;SACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,OAAO,GAAG,OAAO,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,IAAI,CAAC;IAC3D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,GAAG,MAAM,qCAAqC,OAAO,yGAAyG,CAAC;IAC/K,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACxE,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,gCAAgC;AAChC,KAAK,UAAU,OAAO;IACpB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAAC;AAExE,KAAK,UAAU,eAAe,CAAC,OAAe;IAC5C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import { GraphQLClient, gql, ClientError } from \"graphql-request\";\nimport { TreeStructure, UnsAttributeSummary, UnsAssetSummary } from \"./schema.js\";\nimport * as path from \"path\";\nimport * as fs from 'fs';\nimport { mkdir } from \"fs/promises\";\nimport { ConfigFile } from \"../config-file.js\";\nimport { AuthClient } from \"./auth/index.js\";\n\n\nconst config = await ConfigFile.loadConfig();\n\n// Helper function to write content to a file\nasync function writeToFile(filePath: string, content: string) {\n return new Promise<void>((resolve, reject) => {\n fs.writeFile(filePath, content, (error: NodeJS.ErrnoException | null) => {\n if (error) {\n console.error('Error writing file:', error);\n return reject(error);\n }\n console.log(`${path.basename(filePath)} updated.`);\n resolve();\n });\n });\n}\n\n// Function to process tree structure recursively\nfunction generateUnsTopics(tree: TreeStructure[], currentPath: string): string {\n return tree\n .map(element => {\n const newPath = `${currentPath}${element.unsNode}/`;\n const childrenTopics = element.children?.length\n ? generateUnsTopics(element.children, newPath)\n : '';\n return `\"${newPath}\" |${childrenTopics}`;\n })\n .join('');\n}\n\n// Prepare GraphQL client with Authorization from auth library\nconst auth = await AuthClient.create();\nlet accessToken = await auth.getAccessToken();\nlet client = new GraphQLClient(config.uns.graphql, {\n headers: { Authorization: `Bearer ${accessToken}` },\n});\n\nasync function requestWithAuth<T>(document: any): Promise<T> {\n try {\n return await client.request<T>(document);\n } catch (err: any) {\n const isAuthErr = err instanceof ClientError && (err.response.status === 401 || err.response.status === 403);\n if (isAuthErr) {\n // Attempt to get a fresh token (will try refresh, then prompt)\n accessToken = await auth.getAccessToken();\n client.setHeader('Authorization', `Bearer ${accessToken}`);\n return await client.request<T>(document);\n }\n throw err;\n }\n}\n\n// Fetch and generate UnsTopics\nasync function refreshUnsTopics() {\n const document = gql`\n query GetTreeStructure {\n GetTreeStructure {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n }\n }\n }\n }\n }\n }\n }`;\n\n const query: any = await requestWithAuth(document);\n const tree: TreeStructure[] = query.GetTreeStructure;\n\n const vsebina = `export type UnsTopics = ${generateUnsTopics(tree, '')}\\n(string & {});`;\n const outputPath = path.resolve(process.cwd(), \"src/uns/uns-topics.ts\");\n await ensureDirectory(path.dirname(outputPath));\n await writeToFile(outputPath, vsebina);\n}\n\n// Fetch and generate UnsTags\nasync function refreshUnsTags() {\n const document = gql`\n query Query {\n GetTags\n }`;\n\n const query: any = await requestWithAuth(document);\n const tags: string[] = query.GetTags;\n\n const vsebina = `export type UnsTags = ${tags.map(tag => `\"${tag}\" |`).join('')}\\n(string & {});`;\n const outputPath = path.resolve(process.cwd(), \"src/uns/uns-tags.ts\");\n await ensureDirectory(path.dirname(outputPath));\n await writeToFile(outputPath, vsebina);\n}\n\nfunction normalizeAttributePath(pathValue: string | null | undefined): string {\n if (!pathValue) return \"\";\n return pathValue.replace(/\\/+$/, \"\");\n}\n\nfunction buildAttributeEntries(attributes: Array<UnsAttributeSummary | null | undefined>) {\n const deduped = new Map<string, {\n path: string;\n description: string | null;\n attributeType: string | null;\n dataGroup: string | null;\n objectType: string | null;\n objectId: string | null;\n }>();\n\n for (const attr of attributes) {\n if (!attr) continue;\n const path = normalizeAttributePath(typeof attr.path === \"string\" ? attr.path : null);\n if (!path) continue;\n deduped.set(path, {\n path,\n description: typeof attr.description === \"string\" ? attr.description : null,\n attributeType: typeof attr.attributeType === \"string\" ? attr.attributeType : null,\n dataGroup: typeof attr.dataGroup === \"string\" ? attr.dataGroup : null,\n objectType: typeof attr.objectType === \"string\" ? attr.objectType : null,\n objectId: typeof attr.objectId === \"string\" ? attr.objectId : null,\n });\n }\n\n return Array.from(deduped.values()).sort((a, b) => a.path.localeCompare(b.path));\n}\n\nfunction buildAssetEntries(assets: Array<UnsAssetSummary | null | undefined>) {\n const deduped = new Map<string, {\n asset: string;\n description: string | null;\n }>();\n\n for (const entry of assets) {\n if (!entry) continue;\n const assetName = typeof entry.asset === \"string\" ? entry.asset.trim() : \"\";\n if (!assetName) continue;\n const description = typeof entry.description === \"string\" ? entry.description : null;\n if (!deduped.has(assetName)) {\n deduped.set(assetName, { asset: assetName, description });\n }\n }\n\n return Array.from(deduped.values()).sort((a, b) => a.asset.localeCompare(b.asset));\n}\n\n// Fetch and generate UnsAssets\nasync function refreshUnsAssets() {\n const document = gql`\n query GetAssets {\n GetAssets {\n path\n description\n asset\n objectType\n objectId\n }\n }`;\n\n const query: any = await requestWithAuth(document);\n let assets = buildAssetEntries(Array.isArray(query.GetAssets) ? query.GetAssets : []);\n if (!assets.length) {\n assets = [{ asset: \"asset\", description: null }];\n }\n\n const header = `// Generated UNS asset list. Run \\`pnpm run refresh-uns\\` to update.\\n`;\n const entries = assets\n .map((entry) => {\n const comment = entry.description ? ` /** ${sanitizeComment(entry.description)} */\\n` : \"\";\n return `${comment} \"${entry.asset}\": \"${entry.asset}\",`;\n })\n .join(\"\\n\");\n\n const vsebina = `${header}export const GeneratedAssets = {\\n${entries}\\n} as const;\\nexport type GeneratedAssetName = typeof GeneratedAssets[keyof typeof GeneratedAssets];\\n`;\n const outputPath = path.resolve(process.cwd(), \"src/uns/uns-assets.ts\");\n await ensureDirectory(path.dirname(outputPath));\n await writeToFile(outputPath, vsebina);\n}\n\n// Execute the refresh processes\nasync function refresh() {\n await Promise.all([refreshUnsTopics(), refreshUnsTags(), refreshUnsAssets()]);\n}\n\nrefresh().catch(error => console.error('Error during refresh:', error));\n\nasync function ensureDirectory(dirPath: string): Promise<void> {\n await mkdir(dirPath, { recursive: true });\n}\n\nfunction sanitizeComment(text: string): string {\n return text.replace(/\\*\\//g, \"*\\\\/\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"refresh-uns.js","sourceRoot":"","sources":["../../src/tools/refresh-uns.ts"],"names":[],"mappings":"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","sourcesContent":["import { GraphQLClient, gql, ClientError } from \"graphql-request\";\nimport { TreeStructure, UnsAttributeSummary, UnsAssetSummary } from \"./schema.js\";\nimport * as path from \"path\";\nimport * as fs from 'fs';\nimport { mkdir } from \"fs/promises\";\nimport { ConfigFile } from \"../config-file.js\";\nimport { AuthClient } from \"./auth/index.js\";\n\n\nconst config = await ConfigFile.loadConfig();\n\n// Helper function to write content to a file\nasync function writeToFile(filePath: string, content: string) {\n return new Promise<void>((resolve, reject) => {\n fs.writeFile(filePath, content, (error: NodeJS.ErrnoException | null) => {\n if (error) {\n console.error('Error writing file:', error);\n return reject(error);\n }\n console.log(`${path.basename(filePath)} updated.`);\n resolve();\n });\n });\n}\n\n// Function to process tree structure recursively\nfunction generateUnsTopics(tree: TreeStructure[], currentPath: string): string {\n return tree\n .map(element => {\n const newPath = `${currentPath}${element.unsNode}/`;\n const childrenTopics = element.children?.length\n ? generateUnsTopics(element.children, newPath)\n : '';\n return `\"${newPath}\" |${childrenTopics}`;\n })\n .join('');\n}\n\n// Prepare GraphQL client with Authorization from auth library\nconst auth = await AuthClient.create();\nlet accessToken = await auth.getAccessToken();\nlet client = new GraphQLClient(config.uns.graphql, {\n headers: { Authorization: `Bearer ${accessToken}` },\n});\n\nasync function requestWithAuth<T>(document: any): Promise<T> {\n try {\n return await client.request<T>(document);\n } catch (err: any) {\n const isAuthErr = err instanceof ClientError && (err.response.status === 401 || err.response.status === 403);\n if (isAuthErr) {\n // Attempt to get a fresh token (will try refresh, then prompt)\n accessToken = await auth.getAccessToken();\n client.setHeader('Authorization', `Bearer ${accessToken}`);\n return await client.request<T>(document);\n }\n throw err;\n }\n}\n\n// Fetch and generate UnsTopics\nasync function refreshUnsTopics() {\n const document = gql`\n query GetTreeStructure {\n GetTreeStructure {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n children {\n id\n parent\n unsNode\n }\n }\n }\n }\n }\n }\n }`;\n\n const query: any = await requestWithAuth(document);\n const tree: TreeStructure[] = query.GetTreeStructure;\n\n const vsebina = `export type UnsTopics = ${generateUnsTopics(tree, '')}\\n(string & {});`;\n const outputPath = path.resolve(process.cwd(), \"src/uns/uns-topics.ts\");\n await ensureDirectory(path.dirname(outputPath));\n await writeToFile(outputPath, vsebina);\n}\n\n// Fetch and generate UnsTags\nasync function refreshUnsTags() {\n const document = gql`\n query Query {\n GetTags\n }`;\n\n const query: any = await requestWithAuth(document);\n const tags: string[] = query.GetTags;\n\n const vsebina = `export type UnsTags = ${tags.map(tag => `\"${tag}\" |`).join('')}\\n(string & {});`;\n const outputPath = path.resolve(process.cwd(), \"src/uns/uns-tags.ts\");\n await ensureDirectory(path.dirname(outputPath));\n await writeToFile(outputPath, vsebina);\n}\n\nfunction normalizeAttributePath(pathValue: string | null | undefined): string {\n if (!pathValue) return \"\";\n return pathValue.replace(/\\/+$/, \"\");\n}\n\nfunction buildAttributeEntries(attributes: Array<UnsAttributeSummary | null | undefined>) {\n const deduped = new Map<string, {\n path: string;\n description: string | null;\n attributeType: string | null;\n dataGroup: string | null;\n objectType: string | null;\n objectId: string | null;\n }>();\n\n for (const attr of attributes) {\n if (!attr) continue;\n const path = normalizeAttributePath(typeof attr.path === \"string\" ? attr.path : null);\n if (!path) continue;\n deduped.set(path, {\n path,\n description: typeof attr.description === \"string\" ? attr.description : null,\n attributeType: typeof attr.attributeType === \"string\" ? attr.attributeType : null,\n dataGroup: typeof attr.dataGroup === \"string\" ? attr.dataGroup : null,\n objectType: typeof attr.objectType === \"string\" ? attr.objectType : null,\n objectId: typeof attr.objectId === \"string\" ? attr.objectId : null,\n });\n }\n\n return Array.from(deduped.values()).sort((a, b) => a.path.localeCompare(b.path));\n}\n\nfunction buildAssetEntries(assets: Array<UnsAssetSummary | null | undefined>) {\n const deduped = new Map<string, {\n asset: string;\n description: string | null;\n }>();\n\n for (const entry of assets) {\n if (!entry) continue;\n const assetName = typeof entry.asset === \"string\" ? entry.asset.trim() : \"\";\n if (!assetName) continue;\n const description = typeof entry.description === \"string\" ? entry.description : null;\n if (!deduped.has(assetName)) {\n deduped.set(assetName, { asset: assetName, description });\n }\n }\n\n return Array.from(deduped.values()).sort((a, b) => a.asset.localeCompare(b.asset));\n}\n\n// Fetch and generate UnsAssets\nasync function refreshUnsAssets() {\n const document = gql`\n query GetAssets {\n GetAssets {\n path\n description\n asset\n objectType\n objectId\n }\n }`;\n\n const query: any = await requestWithAuth(document);\n let assets = buildAssetEntries(Array.isArray(query.GetAssets) ? query.GetAssets : []);\n if (!assets.length) {\n assets = [{ asset: \"asset\", description: null }];\n }\n\n const header = `// Generated UNS asset list. Run \\`pnpm run refresh-uns\\` to update.\\n`;\n const entries = assets\n .map((entry) => {\n const comment = entry.description ? ` /** ${sanitizeComment(entry.description)} */\\n` : \"\";\n return `${comment} \"${entry.asset}\": \"${entry.asset}\",`;\n })\n .join(\"\\n\");\n\n const helpers = `\nexport function resolveGeneratedAsset(name: keyof typeof GeneratedAssets): (typeof GeneratedAssets)[keyof typeof GeneratedAssets];\nexport function resolveGeneratedAsset<T extends string>(name: T): (typeof GeneratedAssets)[keyof typeof GeneratedAssets] | T;\nexport function resolveGeneratedAsset(name: string): string {\n return (GeneratedAssets as Record<string, string>)[name] ?? name;\n}\n`;\n\n const vsebina = `${header}export const GeneratedAssets = {\\n${entries}\\n} as const;\\nexport type GeneratedAssetName = typeof GeneratedAssets[keyof typeof GeneratedAssets];\\n${helpers}`;\n const outputPath = path.resolve(process.cwd(), \"src/uns/uns-assets.ts\");\n await ensureDirectory(path.dirname(outputPath));\n await writeToFile(outputPath, vsebina);\n}\n\n// Execute the refresh processes\nasync function refresh() {\n await Promise.all([refreshUnsTopics(), refreshUnsTags(), refreshUnsAssets()]);\n}\n\nrefresh().catch(error => console.error('Error during refresh:', error));\n\nasync function ensureDirectory(dirPath: string): Promise<void> {\n await mkdir(dirPath, { recursive: true });\n}\n\nfunction sanitizeComment(text: string): string {\n return text.replace(/\\*\\//g, \"*\\\\/\");\n}\n"]}
|