@uns-kit/core 0.0.35 → 0.0.36
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/LICENSE +21 -21
- package/README.md +55 -55
- package/dist/app-config.d.ts.map +1 -0
- package/dist/app-config.js.map +1 -0
- package/dist/base-path.js.map +1 -1
- package/dist/config/app-config.js.map +1 -1
- package/dist/config/project.config.extension.js.map +1 -1
- package/dist/config-file.d.ts.map +1 -1
- package/dist/config-file.js +1 -4
- package/dist/config-file.js.map +1 -1
- package/dist/graphql/schema.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/tools/auth/auth-client.js.map +1 -1
- package/dist/tools/auth/index.js.map +1 -1
- package/dist/tools/auth/secure-store.js.map +1 -1
- package/dist/tools/base-path.js.map +1 -1
- package/dist/tools/generate-config-schema.js.map +1 -1
- package/dist/tools/initialize.d.ts +1 -1
- package/dist/tools/initialize.js +103 -103
- package/dist/tools/make.d.ts +1 -1
- package/dist/tools/make.js +27 -27
- package/dist/tools/pull-request.js.map +1 -1
- package/dist/tools/refresh-uns.js +35 -35
- package/dist/tools/refresh-uns.js.map +1 -1
- package/dist/tools/schema.js.map +1 -1
- package/dist/tools/update-rtt.d.ts +1 -1
- package/dist/tools/update-rtt.js +169 -169
- package/dist/tools/update-tools.d.ts +1 -1
- package/dist/tools/update-tools.js +72 -72
- package/dist/uns/handover-manager-event-emitter.js.map +1 -1
- package/dist/uns/handover-manager.js.map +1 -1
- package/dist/uns/process-config.js.map +1 -1
- package/dist/uns/process-name-service.js.map +1 -1
- package/dist/uns/status-monitor.js.map +1 -1
- package/dist/uns/uns-event-emitter.js.map +1 -1
- package/dist/uns/uns-interfaces.js.map +1 -1
- package/dist/uns/uns-measurements.js.map +1 -1
- package/dist/uns/uns-packet.js.map +1 -1
- package/dist/uns/uns-proxy-process.js.map +1 -1
- package/dist/uns/uns-proxy.js.map +1 -1
- package/dist/uns/uns-tags.js.map +1 -1
- package/dist/uns/uns-topic-matcher.js.map +1 -1
- package/dist/uns/uns-topics.js.map +1 -1
- package/dist/uns-config/config-schema.js.map +1 -1
- package/dist/uns-config/host-placeholders.js.map +1 -1
- package/dist/uns-config/schema-tolls.js.map +1 -1
- package/dist/uns-config/schema-tools.js.map +1 -1
- package/dist/uns-config/secret-placeholders.js.map +1 -1
- package/dist/uns-config/secret-resolver.js.map +1 -1
- package/dist/uns-config/uns-core-schema.js.map +1 -1
- package/dist/uns-grpc/uns-gateway-cli.js.map +1 -1
- package/dist/uns-grpc/uns-gateway-server.js.map +1 -1
- package/dist/uns-grpc/uns-gateway.proto +102 -102
- package/dist/uns-mqtt/mqtt-interfaces.js.map +1 -1
- package/dist/uns-mqtt/mqtt-proxy.js.map +1 -1
- package/dist/uns-mqtt/mqtt-topic-builder.js.map +1 -1
- package/dist/uns-mqtt/mqtt-worker-init.js.map +1 -1
- package/dist/uns-mqtt/mqtt-worker.js.map +1 -1
- package/dist/uns-mqtt/throttled-queue.js.map +1 -1
- package/dist/uns-mqtt/uns-mqtt-proxy.js.map +1 -1
- package/dist/uns-mqtt/ws-proxy.js.map +1 -1
- package/package.json +1 -1
- package/dist/tools/initialize.d.ts.map +0 -1
- package/dist/tools/initialize.js.map +0 -1
- package/dist/tools/make.d.ts.map +0 -1
- package/dist/tools/make.js.map +0 -1
- package/dist/tools/update-rtt.d.ts.map +0 -1
- package/dist/tools/update-rtt.js.map +0 -1
- package/dist/tools/update-tools.d.ts.map +0 -1
- package/dist/tools/update-tools.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-config-schema.js","sourceRoot":"","sources":["../../src/tools/generate-config-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { zodToJsonSchema } from \"zod-to-json-schema\";\nimport { zodToTs, printNode, withGetType } from \"zod-to-ts\";\nimport { z } from \"zod\";\n\nimport { composeConfigSchema } from \"../uns-config/schema-tools.js\";\nimport { unsCoreSchema } from \"../uns-config/uns-core-schema.js\";\nimport { projectExtrasSchema as coreProjectExtrasSchema } from \"../config/project.config.extension.js\";\nimport { hostValueSchema } from \"../uns-config/host-placeholders.js\";\nimport { secretValueSchema } from \"../uns-config/secret-placeholders.js\";\n\nfunction write(filePath: string, data: string) {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n fs.writeFileSync(filePath, data);\n}\n\nlet tsLoaderReady = false;\n\nasync function ensureTsLoader(): Promise<void> {\n if (tsLoaderReady) {\n return;\n }\n tsLoaderReady = true;\n try {\n await import(\"tsx/esm\");\n } catch (error) {\n throw new Error(\n \"Unable to load TypeScript project.config.extension. Install 'tsx' (e.g. pnpm add -D tsx) or provide a compiled JavaScript file.\",\n );\n }\n}\n\nasync function loadProjectExtrasSchema(): Promise<z.AnyZodObject> {\n const base = path.resolve(process.cwd(), \"src/config/project.config.extension\");\n const extensions = [\"\", \".ts\", \".mts\", \".tsx\", \".js\", \".mjs\", \".cjs\"];\n\n for (const ext of extensions) {\n const candidate = ext ? `${base}${ext}` : base;\n if (!fs.existsSync(candidate)) {\n continue;\n }\n\n const lowerExt = path.extname(candidate).toLowerCase();\n try {\n if (lowerExt === \".ts\" || lowerExt === \".mts\" || lowerExt === \".tsx\") {\n await ensureTsLoader();\n }\n\n const module = await import(pathToFileURL(candidate).href);\n if (module?.projectExtrasSchema) {\n return module.projectExtrasSchema as z.AnyZodObject;\n }\n\n throw new Error(`Module '${candidate}' does not export projectExtrasSchema.`);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Failed to load project config extension at '${candidate}': ${reason}`);\n }\n }\n\n return coreProjectExtrasSchema as z.AnyZodObject;\n}\n\nconst projectExtrasSchema = await loadProjectExtrasSchema();\nconst baseSchema = composeConfigSchema(unsCoreSchema, projectExtrasSchema).strict();\n\n// 1) JSON Schema for VS Code $schema\nconst jsonSchema = zodToJsonSchema(baseSchema, \"AppConfig\");\nwrite(path.resolve(\"config.schema.json\"), JSON.stringify(jsonSchema, null, 2));\n\n// 2) TypeScript `export type AppConfig = {...}`\n// Keep placeholder-backed values as plain strings in the generated TypeScript typings so\n// consuming code reflects the resolved shapes while the JSON schema still exposes full unions.\nconst renderAsString = (typescript: any) =>\n typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.StringKeyword);\n\nfor (const schema of [hostValueSchema, secretValueSchema]) {\n withGetType(schema, renderAsString);\n}\nconst { node } = zodToTs(baseSchema, \"AppConfig\");\nconst interfaceBody = printNode(node);\n\nconst tsContent = `/* Auto-generated. Do not edit by hand. */\\nexport interface ProjectAppConfig ${interfaceBody}\\n\\nexport interface AppConfig extends ProjectAppConfig {}\\n\\ntype GeneratedProjectAppConfig = ProjectAppConfig;\\ntype GeneratedAppConfig = AppConfig;\\n\\ndeclare module \"@uns-kit/core/config/app-config.js\" {\\n interface ProjectAppConfig extends GeneratedProjectAppConfig {}\\n interface AppConfig extends GeneratedAppConfig {}\\n}\\n`;\n\nwrite(path.resolve(\"./src/config/app-config.ts\"), tsContent);\n\nconsole.log(\"Generated config.schema.json and updated src/config/app-config.ts\");\n"]}
|
|
1
|
+
{"version":3,"file":"generate-config-schema.js","sourceRoot":"","sources":["../../src/tools/generate-config-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs\";\r\nimport path from \"node:path\";\r\nimport { pathToFileURL } from \"node:url\";\r\nimport { zodToJsonSchema } from \"zod-to-json-schema\";\r\nimport { zodToTs, printNode, withGetType } from \"zod-to-ts\";\r\nimport { z } from \"zod\";\r\n\r\nimport { composeConfigSchema } from \"../uns-config/schema-tools.js\";\r\nimport { unsCoreSchema } from \"../uns-config/uns-core-schema.js\";\r\nimport { projectExtrasSchema as coreProjectExtrasSchema } from \"../config/project.config.extension.js\";\r\nimport { hostValueSchema } from \"../uns-config/host-placeholders.js\";\r\nimport { secretValueSchema } from \"../uns-config/secret-placeholders.js\";\r\n\r\nfunction write(filePath: string, data: string) {\r\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\r\n fs.writeFileSync(filePath, data);\r\n}\r\n\r\nlet tsLoaderReady = false;\r\n\r\nasync function ensureTsLoader(): Promise<void> {\r\n if (tsLoaderReady) {\r\n return;\r\n }\r\n tsLoaderReady = true;\r\n try {\r\n await import(\"tsx/esm\");\r\n } catch (error) {\r\n throw new Error(\r\n \"Unable to load TypeScript project.config.extension. Install 'tsx' (e.g. pnpm add -D tsx) or provide a compiled JavaScript file.\",\r\n );\r\n }\r\n}\r\n\r\nasync function loadProjectExtrasSchema(): Promise<z.AnyZodObject> {\r\n const base = path.resolve(process.cwd(), \"src/config/project.config.extension\");\r\n const extensions = [\"\", \".ts\", \".mts\", \".tsx\", \".js\", \".mjs\", \".cjs\"];\r\n\r\n for (const ext of extensions) {\r\n const candidate = ext ? `${base}${ext}` : base;\r\n if (!fs.existsSync(candidate)) {\r\n continue;\r\n }\r\n\r\n const lowerExt = path.extname(candidate).toLowerCase();\r\n try {\r\n if (lowerExt === \".ts\" || lowerExt === \".mts\" || lowerExt === \".tsx\") {\r\n await ensureTsLoader();\r\n }\r\n\r\n const module = await import(pathToFileURL(candidate).href);\r\n if (module?.projectExtrasSchema) {\r\n return module.projectExtrasSchema as z.AnyZodObject;\r\n }\r\n\r\n throw new Error(`Module '${candidate}' does not export projectExtrasSchema.`);\r\n } catch (error) {\r\n const reason = error instanceof Error ? error.message : String(error);\r\n throw new Error(`Failed to load project config extension at '${candidate}': ${reason}`);\r\n }\r\n }\r\n\r\n return coreProjectExtrasSchema as z.AnyZodObject;\r\n}\r\n\r\nconst projectExtrasSchema = await loadProjectExtrasSchema();\r\nconst baseSchema = composeConfigSchema(unsCoreSchema, projectExtrasSchema).strict();\r\n\r\n// 1) JSON Schema for VS Code $schema\r\nconst jsonSchema = zodToJsonSchema(baseSchema, \"AppConfig\");\r\nwrite(path.resolve(\"config.schema.json\"), JSON.stringify(jsonSchema, null, 2));\r\n\r\n// 2) TypeScript `export type AppConfig = {...}`\r\n// Keep placeholder-backed values as plain strings in the generated TypeScript typings so\r\n// consuming code reflects the resolved shapes while the JSON schema still exposes full unions.\r\nconst renderAsString = (typescript: any) =>\r\n typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.StringKeyword);\r\n\r\nfor (const schema of [hostValueSchema, secretValueSchema]) {\r\n withGetType(schema, renderAsString);\r\n}\r\nconst { node } = zodToTs(baseSchema, \"AppConfig\");\r\nconst interfaceBody = printNode(node);\r\n\r\nconst tsContent = `/* Auto-generated. Do not edit by hand. */\\nexport interface ProjectAppConfig ${interfaceBody}\\n\\nexport interface AppConfig extends ProjectAppConfig {}\\n\\ntype GeneratedProjectAppConfig = ProjectAppConfig;\\ntype GeneratedAppConfig = AppConfig;\\n\\ndeclare module \"@uns-kit/core/config/app-config.js\" {\\n interface ProjectAppConfig extends GeneratedProjectAppConfig {}\\n interface AppConfig extends GeneratedAppConfig {}\\n}\\n`;\r\n\r\nwrite(path.resolve(\"./src/config/app-config.ts\"), tsContent);\r\n\r\nconsole.log(\"Generated config.schema.json and updated src/config/app-config.ts\");\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const packageJsonPath: string;
|
|
1
|
+
export declare const packageJsonPath: string;
|
|
2
2
|
//# sourceMappingURL=initialize.d.ts.map
|
package/dist/tools/initialize.js
CHANGED
|
@@ -1,104 +1,104 @@
|
|
|
1
|
-
import * as azdev from "azure-devops-node-api";
|
|
2
|
-
import chalk from "chalk";
|
|
3
|
-
import { readFile } from "fs/promises";
|
|
4
|
-
import readline from "node:readline";
|
|
5
|
-
import * as path from "path";
|
|
6
|
-
import { CleanOptions, simpleGit } from "simple-git";
|
|
7
|
-
import fs from "fs-extra";
|
|
8
|
-
import { basePath } from "./base-path.js";
|
|
9
|
-
const git = simpleGit("./").clean(CleanOptions.FORCE);
|
|
10
|
-
export const packageJsonPath = path.join(basePath, "package.json");
|
|
11
|
-
const orgUrl = "https://example-org@dev.azure.com/example-org";
|
|
12
|
-
const rl = readline.createInterface({
|
|
13
|
-
input: process.stdin,
|
|
14
|
-
output: process.stdout,
|
|
15
|
-
});
|
|
16
|
-
let token = "";
|
|
17
|
-
const packageJson = JSON.parse(await readFile(packageJsonPath, "utf8"));
|
|
18
|
-
const repoName = packageJson.name;
|
|
19
|
-
async function run() {
|
|
20
|
-
let repos;
|
|
21
|
-
let gitApi;
|
|
22
|
-
const project = "example-project";
|
|
23
|
-
try {
|
|
24
|
-
const authHandler = azdev.getPersonalAccessTokenHandler(token);
|
|
25
|
-
const connection = new azdev.WebApi(orgUrl, authHandler);
|
|
26
|
-
gitApi = await connection.getGitApi();
|
|
27
|
-
repos = await gitApi.getRepositories(project);
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
console.error("Your AZURE_PAT environment variable has probably expired.");
|
|
31
|
-
console.log("Please update your AZURE_PAT environment with a new one on.");
|
|
32
|
-
console.log("You can create a new one at[https://dev.azure.com/example-org/_usersSettings/tokens]");
|
|
33
|
-
}
|
|
34
|
-
if (repos.filter((x) => x.name == repoName).length > 0) {
|
|
35
|
-
console.log(chalk.red.bold(`Error: Repository ${repoName} in project ${project} already exists.`));
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
process.stdout.write(`Create ${repoName} in project ${project}`);
|
|
39
|
-
try {
|
|
40
|
-
await gitApi.createRepository({ name: repoName }, project);
|
|
41
|
-
console.log(chalk.green.bold(` ... OK`));
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
console.error(chalk.red.bold(`\n${error}`));
|
|
45
|
-
}
|
|
46
|
-
process.stdout.write(`Initialize local git repository on branch master`);
|
|
47
|
-
try {
|
|
48
|
-
await git.init();
|
|
49
|
-
await git.checkoutLocalBranch("master");
|
|
50
|
-
await git.add(".");
|
|
51
|
-
await git.commit("Initial commit");
|
|
52
|
-
console.log(chalk.green.bold(` ... OK`));
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
console.error(chalk.red.bold(`\n${error}`));
|
|
56
|
-
}
|
|
57
|
-
process.stdout.write(`Add remote origin.`);
|
|
58
|
-
try {
|
|
59
|
-
await git.remote([
|
|
60
|
-
"add",
|
|
61
|
-
"origin",
|
|
62
|
-
`git@ssh.dev.azure.com:v3/example-org/example-project/${repoName}`,
|
|
63
|
-
]);
|
|
64
|
-
console.log(chalk.green.bold(` ... OK`));
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
console.error(chalk.red.bold(`\n${error}`));
|
|
68
|
-
}
|
|
69
|
-
process.stdout.write(`Push master to remote`);
|
|
70
|
-
try {
|
|
71
|
-
await git.push("origin", "master");
|
|
72
|
-
console.log(chalk.green.bold(` ... OK`));
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
console.error(chalk.red.bold(`\n${error}`));
|
|
76
|
-
}
|
|
77
|
-
process.stdout.write(`Create default config.json from config-template.json`);
|
|
78
|
-
try {
|
|
79
|
-
fs.copyFileSync(path.join(basePath, 'config-template.json'), path.join(basePath, 'config.json'));
|
|
80
|
-
console.log(chalk.green.bold(` ... OK`));
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
console.error(chalk.red.bold(`\n${error}`));
|
|
84
|
-
}
|
|
85
|
-
console.log(chalk.green.bold(`\nNow you can add pipeline for ${repoName} in Azure DevOps pipelines for the project ${project}.`));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
console.log(chalk.green.bold(`Create new RTT: ${repoName}\n`));
|
|
89
|
-
const envPat = process.env.AZURE_PAT;
|
|
90
|
-
if (envPat && envPat.length > 10) {
|
|
91
|
-
rl.close();
|
|
92
|
-
console.log("Using PAT from your AZURE_PAT environment");
|
|
93
|
-
token = envPat;
|
|
94
|
-
run();
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
console.log("Could not find AZURE_PAT environment.");
|
|
98
|
-
rl.question(`Please enter your PAT, you can create one at [https://dev.azure.com/example-org/_usersSettings/tokens]: `, (newToken) => {
|
|
99
|
-
rl.close();
|
|
100
|
-
token = newToken;
|
|
101
|
-
run();
|
|
102
|
-
});
|
|
103
|
-
}
|
|
1
|
+
import * as azdev from "azure-devops-node-api";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { readFile } from "fs/promises";
|
|
4
|
+
import readline from "node:readline";
|
|
5
|
+
import * as path from "path";
|
|
6
|
+
import { CleanOptions, simpleGit } from "simple-git";
|
|
7
|
+
import fs from "fs-extra";
|
|
8
|
+
import { basePath } from "./base-path.js";
|
|
9
|
+
const git = simpleGit("./").clean(CleanOptions.FORCE);
|
|
10
|
+
export const packageJsonPath = path.join(basePath, "package.json");
|
|
11
|
+
const orgUrl = "https://example-org@dev.azure.com/example-org";
|
|
12
|
+
const rl = readline.createInterface({
|
|
13
|
+
input: process.stdin,
|
|
14
|
+
output: process.stdout,
|
|
15
|
+
});
|
|
16
|
+
let token = "";
|
|
17
|
+
const packageJson = JSON.parse(await readFile(packageJsonPath, "utf8"));
|
|
18
|
+
const repoName = packageJson.name;
|
|
19
|
+
async function run() {
|
|
20
|
+
let repos;
|
|
21
|
+
let gitApi;
|
|
22
|
+
const project = "example-project";
|
|
23
|
+
try {
|
|
24
|
+
const authHandler = azdev.getPersonalAccessTokenHandler(token);
|
|
25
|
+
const connection = new azdev.WebApi(orgUrl, authHandler);
|
|
26
|
+
gitApi = await connection.getGitApi();
|
|
27
|
+
repos = await gitApi.getRepositories(project);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error("Your AZURE_PAT environment variable has probably expired.");
|
|
31
|
+
console.log("Please update your AZURE_PAT environment with a new one on.");
|
|
32
|
+
console.log("You can create a new one at[https://dev.azure.com/example-org/_usersSettings/tokens]");
|
|
33
|
+
}
|
|
34
|
+
if (repos.filter((x) => x.name == repoName).length > 0) {
|
|
35
|
+
console.log(chalk.red.bold(`Error: Repository ${repoName} in project ${project} already exists.`));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
process.stdout.write(`Create ${repoName} in project ${project}`);
|
|
39
|
+
try {
|
|
40
|
+
await gitApi.createRepository({ name: repoName }, project);
|
|
41
|
+
console.log(chalk.green.bold(` ... OK`));
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error(chalk.red.bold(`\n${error}`));
|
|
45
|
+
}
|
|
46
|
+
process.stdout.write(`Initialize local git repository on branch master`);
|
|
47
|
+
try {
|
|
48
|
+
await git.init();
|
|
49
|
+
await git.checkoutLocalBranch("master");
|
|
50
|
+
await git.add(".");
|
|
51
|
+
await git.commit("Initial commit");
|
|
52
|
+
console.log(chalk.green.bold(` ... OK`));
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error(chalk.red.bold(`\n${error}`));
|
|
56
|
+
}
|
|
57
|
+
process.stdout.write(`Add remote origin.`);
|
|
58
|
+
try {
|
|
59
|
+
await git.remote([
|
|
60
|
+
"add",
|
|
61
|
+
"origin",
|
|
62
|
+
`git@ssh.dev.azure.com:v3/example-org/example-project/${repoName}`,
|
|
63
|
+
]);
|
|
64
|
+
console.log(chalk.green.bold(` ... OK`));
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error(chalk.red.bold(`\n${error}`));
|
|
68
|
+
}
|
|
69
|
+
process.stdout.write(`Push master to remote`);
|
|
70
|
+
try {
|
|
71
|
+
await git.push("origin", "master");
|
|
72
|
+
console.log(chalk.green.bold(` ... OK`));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error(chalk.red.bold(`\n${error}`));
|
|
76
|
+
}
|
|
77
|
+
process.stdout.write(`Create default config.json from config-template.json`);
|
|
78
|
+
try {
|
|
79
|
+
fs.copyFileSync(path.join(basePath, 'config-template.json'), path.join(basePath, 'config.json'));
|
|
80
|
+
console.log(chalk.green.bold(` ... OK`));
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.error(chalk.red.bold(`\n${error}`));
|
|
84
|
+
}
|
|
85
|
+
console.log(chalk.green.bold(`\nNow you can add pipeline for ${repoName} in Azure DevOps pipelines for the project ${project}.`));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
console.log(chalk.green.bold(`Create new RTT: ${repoName}\n`));
|
|
89
|
+
const envPat = process.env.AZURE_PAT;
|
|
90
|
+
if (envPat && envPat.length > 10) {
|
|
91
|
+
rl.close();
|
|
92
|
+
console.log("Using PAT from your AZURE_PAT environment");
|
|
93
|
+
token = envPat;
|
|
94
|
+
run();
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log("Could not find AZURE_PAT environment.");
|
|
98
|
+
rl.question(`Please enter your PAT, you can create one at [https://dev.azure.com/example-org/_usersSettings/tokens]: `, (newToken) => {
|
|
99
|
+
rl.close();
|
|
100
|
+
token = newToken;
|
|
101
|
+
run();
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
104
|
//# sourceMappingURL=initialize.js.map
|
package/dist/tools/make.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=make.d.ts.map
|
package/dist/tools/make.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import fs from "fs-extra";
|
|
2
|
-
import { basePath } from "./base-path.js";
|
|
3
|
-
import * as path from "path";
|
|
4
|
-
import { execSync } from 'child_process';
|
|
5
|
-
const binDir = path.join(basePath, 'bin/');
|
|
6
|
-
try {
|
|
7
|
-
const ua = process.env.npm_config_user_agent || "";
|
|
8
|
-
const pm = ua.startsWith("pnpm") ? "pnpm" : ua.startsWith("yarn") ? "yarn" : "npm";
|
|
9
|
-
execSync(`${pm} run build`, { stdio: 'inherit' });
|
|
10
|
-
fs.rmSync(binDir, {
|
|
11
|
-
recursive: true,
|
|
12
|
-
force: true,
|
|
13
|
-
});
|
|
14
|
-
fs.mkdirSync(binDir, { recursive: true });
|
|
15
|
-
fs.copyFileSync(path.join(basePath, 'LICENSE'), path.join(binDir, 'LICENSE'));
|
|
16
|
-
fs.copyFileSync(path.join(basePath, 'package.json'), path.join(binDir, 'package.json'));
|
|
17
|
-
fs.copySync(path.join(basePath, 'dist'), path.join(binDir, 'dist/'));
|
|
18
|
-
// After all files are copied, check for ../local-tools/make.js and run it if exists
|
|
19
|
-
const localToolsDir = path.resolve(basePath, 'dist/local-tools');
|
|
20
|
-
const makeJsPath = path.join(localToolsDir, 'make.js');
|
|
21
|
-
if (fs.existsSync(makeJsPath)) {
|
|
22
|
-
execSync(`node "${makeJsPath}"`, { stdio: 'inherit' });
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
console.log(`error: ${error}`);
|
|
27
|
-
}
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import { basePath } from "./base-path.js";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
const binDir = path.join(basePath, 'bin/');
|
|
6
|
+
try {
|
|
7
|
+
const ua = process.env.npm_config_user_agent || "";
|
|
8
|
+
const pm = ua.startsWith("pnpm") ? "pnpm" : ua.startsWith("yarn") ? "yarn" : "npm";
|
|
9
|
+
execSync(`${pm} run build`, { stdio: 'inherit' });
|
|
10
|
+
fs.rmSync(binDir, {
|
|
11
|
+
recursive: true,
|
|
12
|
+
force: true,
|
|
13
|
+
});
|
|
14
|
+
fs.mkdirSync(binDir, { recursive: true });
|
|
15
|
+
fs.copyFileSync(path.join(basePath, 'LICENSE'), path.join(binDir, 'LICENSE'));
|
|
16
|
+
fs.copyFileSync(path.join(basePath, 'package.json'), path.join(binDir, 'package.json'));
|
|
17
|
+
fs.copySync(path.join(basePath, 'dist'), path.join(binDir, 'dist/'));
|
|
18
|
+
// After all files are copied, check for ../local-tools/make.js and run it if exists
|
|
19
|
+
const localToolsDir = path.resolve(basePath, 'dist/local-tools');
|
|
20
|
+
const makeJsPath = path.join(localToolsDir, 'make.js');
|
|
21
|
+
if (fs.existsSync(makeJsPath)) {
|
|
22
|
+
execSync(`node "${makeJsPath}"`, { stdio: 'inherit' });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.log(`error: ${error}`);
|
|
27
|
+
}
|
|
28
28
|
//# sourceMappingURL=make.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-request.js","sourceRoot":"","sources":["../../src/tools/pull-request.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 { GitPullRequest } from \"azure-devops-node-api/interfaces/GitInterfaces.js\";\nimport { GitRepository } from \"azure-devops-node-api/interfaces/TfvcInterfaces\";\nimport chalk from \"chalk\";\nimport { execSync } from \"child_process\";\nimport fs from \"fs\";\nimport { readFile } from \"fs/promises\";\nimport { Buffer } from \"node:buffer\";\nimport readline from \"node:readline\";\nimport * as path from \"path\";\nimport * as prettier from \"prettier\";\nimport { CleanOptions, SimpleGit, simpleGit } from \"simple-git\";\nimport util from \"util\";\n\nimport { ConfigFile } from \"../config-file.js\";\nimport { basePath } from \"../base-path.js\";\n\nconst rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n});\nconst question = util.promisify(rl.question).bind(rl);\n\nprocess.env.GIT_TERMINAL_PROMPT = process.env.GIT_TERMINAL_PROMPT ?? \"0\";\nconst git: SimpleGit = simpleGit(\"./\").clean(CleanOptions.FORCE);\nconst packageJsonPath = path.join(basePath, \"package.json\");\n\nlet azureOrganization = \"\";\nlet azureProject = \"\";\ntry {\n const appConfig = ConfigFile.loadRawConfig();\n azureOrganization = appConfig.devops?.organization?.trim() || azureOrganization;\n azureProject = appConfig.devops?.project?.trim() || azureProject;\n} catch (error) {\n // Use default organization when config.json is missing\n}\n\nif (!azureOrganization) {\n throw new Error(\n \"Azure DevOps organization is not configured. Please set devops.organization in config.json (run `uns-kit configure-devops`).\",\n );\n}\n\nif (!azureProject) {\n throw new Error(\n \"Azure DevOps project is not configured. Please set devops.project in config.json (run `uns-kit configure-devops`).\",\n );\n}\n\nconst orgUrl = `https://${azureOrganization}@dev.azure.com/${azureOrganization}`;\nconst orgBaseUrl = `https://dev.azure.com/${azureOrganization}`;\nconst tokensUrl = `${orgBaseUrl}/_usersSettings/tokens`;\n\nconst packageJson = JSON.parse(await readFile(packageJsonPath, \"utf8\"));\nconst repoName: string = packageJson.name;\nconst version: string = packageJson.version;\n\nconst branches = await git.branchLocal();\nconst currentBranch = branches.current;\n\nconst gitStatus = await git.status();\n\nlet token: string = \"\";\nlet gitApi: ga.IGitApi | undefined;\nlet gitWithAuth: SimpleGit | undefined;\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 if (!gitStatus.isClean()) {\n throw new Error(`Repository needs to be clean. Please commit or stash the changes.`);\n } else { \n const envPat = process.env.AZURE_PAT;\n while (!token) {\n if (envPat && envPat.length > 10) {\n token = envPat;\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\n const connection = new azdev.WebApi(orgUrl, authHandler);\n try {\n console.log(\"Using PAT from your AZURE_PAT environment\");\n await connection.connect();\n gitApi = await connection.getGitApi();\n } catch (error) {\n console.log(\n \"The provided PAT is invalid or expired. Please provide a valid PAT.\",\n );\n token = \"\";\n }\n }\n if (!token) {\n token = await question(\n `Please enter your PAT, you can create one at ` + chalk.green.bold(`[${tokensUrl}]: `),\n );\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\n const connection = new azdev.WebApi(orgUrl, authHandler);\n try {\n await connection.connect();\n gitApi = await connection.getGitApi();\n } catch (error) {\n console.log(\n \"The provided PAT is invalid or expired. Please provide a valid PAT.\",\n );\n token = \"\";\n }\n }\n }\n\n const authHeader = buildGitAuthorizationHeader(token);\n gitWithAuth = simpleGit({\n baseDir: \"./\",\n config: [`http.extraheader=${authHeader}`],\n }).clean(CleanOptions.FORCE);\n\n await assertNotDefaultBranch();\n\n const version = await getVersion();\n await setVersion(version);\n await commitChanges(version);\n await pushChanges();\n await createPullRequest(version);\n }\n}\n\nasync function getVersion(): Promise<string> {\n const authenticatedGit = requireGitWithAuth();\n let versionExists = true;\n let newVersion = version;\n while (versionExists) {\n newVersion = await question(\n `Every PR needs a unique version, please accept current version or enter a new one [${version}]: `\n ) || version;\n\n const remoteTags = await authenticatedGit.listRemote([\"--tags\"]);\n if (remoteTags.indexOf(`refs/tags/${newVersion}`) > 0) {\n console.log(chalk.bold.red(`Version ${newVersion} already exists on the server`));\n } else {\n console.log(`Using version ${newVersion}`)\n versionExists = false;\n }\n }\n return newVersion;\n}\n\nasync function runMake() {\n execSync(\"npm run make\");\n}\n\nasync function commitChanges(newVersion: string) {\n process.stdout.write(`Commit changes to branch ${currentBranch} `);\n await git.add(\".\");\n await git.commit(`Set new production version: ${newVersion}`);\n console.log(chalk.green.bold(` ... OK`));\n}\n\nasync function pushChanges() {\n const authenticatedGit = requireGitWithAuth();\n process.stdout.write(`Push changes to remote branch ${currentBranch} `);\n await authenticatedGit.push(\"origin\", currentBranch);\n console.log(chalk.green.bold(` ... OK`));\n}\n\nasync function setVersion(newVersion: string) {\n packageJson.version = newVersion;\n const docString = await prettier.format(JSON.stringify(packageJson), {\n parser: \"json\",\n });\n fs.writeFileSync(\"package.json\", docString, \"utf8\");\n\n}\n\nasync function createPullRequest(tag: string) {\n const title = await question(\n `Title for the pull request: `,\n );\n const description = await question(\n `Description for the pull request: `,\n ); \n process.stdout.write(`Create new pull request from ${currentBranch} to master `);\n if (!gitApi) {\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\n const connection = new azdev.WebApi(orgUrl, authHandler);\n gitApi = await connection.getGitApi();\n }\n\n const project: string = azureProject;\n const repos: GitRepository[] = await gitApi.getRepositories(project);\n const repoId = repos.filter((x) => x.name == repoName)[0].id;\n const gitPullRequestToCreate: GitPullRequest = {\n sourceRefName: `refs/heads/${currentBranch}`,\n targetRefName: \"refs/heads/master\",\n title,\n description,\n labels: [{active: true, name:tag}]\n };\n gitApi.createPullRequest(gitPullRequestToCreate, repoId, project);\n console.log(chalk.green.bold(` ... OK`));\n console.log(`Pull request created at ` + chalk.green.bold(`[${orgBaseUrl}/${project}/_git/${repoName}/pullrequests]`));\n}\n\nasync function assertNotDefaultBranch(): Promise<void> {\n if (!gitApi) {\n return;\n }\n\n const project = azureProject.trim();\n if (!project) {\n return;\n }\n\n try {\n const repository = await gitApi.getRepository(repoName, project);\n const defaultBranch = normalizeBranchName(repository?.defaultBranch);\n\n if (defaultBranch && defaultBranch === currentBranch) {\n throw new Error(\n `You can not create a pull request from the default branch (${defaultBranch}). Please create a feature branch instead.`,\n );\n }\n } catch (error) {\n if (error instanceof Error) {\n const message = error.message || \"\";\n const protectedBranchPrefix = \"You can not create a pull request from the default branch\";\n if (message.startsWith(protectedBranchPrefix)) {\n throw error;\n }\n if (message) {\n console.log(`Warning: Unable to verify default branch: ${message}`);\n }\n }\n }\n}\n\nfunction normalizeBranchName(refName: string | undefined): string | undefined {\n if (!refName) {\n return undefined;\n }\n\n const prefix = \"refs/heads/\";\n return refName.startsWith(prefix) ? refName.slice(prefix.length) : refName;\n}\n\nfunction buildGitAuthorizationHeader(personalAccessToken: string): string {\n const encoded = Buffer.from(`:${personalAccessToken}`).toString(\"base64\");\n return `Authorization: Basic ${encoded}`;\n}\n\nfunction requireGitWithAuth(): SimpleGit {\n if (!gitWithAuth) {\n throw new Error(\"Git authentication is not initialized.\");\n }\n return gitWithAuth;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pull-request.js","sourceRoot":"","sources":["../../src/tools/pull-request.ts"],"names":[],"mappings":"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","sourcesContent":["import * as azdev from \"azure-devops-node-api\";\r\nimport * as ga from \"azure-devops-node-api/GitApi\";\r\nimport { GitPullRequest } from \"azure-devops-node-api/interfaces/GitInterfaces.js\";\r\nimport { GitRepository } from \"azure-devops-node-api/interfaces/TfvcInterfaces\";\r\nimport chalk from \"chalk\";\r\nimport { execSync } from \"child_process\";\r\nimport fs from \"fs\";\r\nimport { readFile } from \"fs/promises\";\r\nimport { Buffer } from \"node:buffer\";\r\nimport readline from \"node:readline\";\r\nimport * as path from \"path\";\r\nimport * as prettier from \"prettier\";\r\nimport { CleanOptions, SimpleGit, simpleGit } from \"simple-git\";\r\nimport util from \"util\";\r\n\r\nimport { ConfigFile } from \"../config-file.js\";\r\nimport { basePath } from \"../base-path.js\";\r\n\r\nconst rl = readline.createInterface({\r\n input: process.stdin,\r\n output: process.stdout,\r\n});\r\nconst question = util.promisify(rl.question).bind(rl);\r\n\r\nprocess.env.GIT_TERMINAL_PROMPT = process.env.GIT_TERMINAL_PROMPT ?? \"0\";\r\nconst git: SimpleGit = simpleGit(\"./\").clean(CleanOptions.FORCE);\r\nconst packageJsonPath = path.join(basePath, \"package.json\");\r\n\r\nlet azureOrganization = \"\";\r\nlet azureProject = \"\";\r\ntry {\r\n const appConfig = ConfigFile.loadRawConfig();\r\n azureOrganization = appConfig.devops?.organization?.trim() || azureOrganization;\r\n azureProject = appConfig.devops?.project?.trim() || azureProject;\r\n} catch (error) {\r\n // Use default organization when config.json is missing\r\n}\r\n\r\nif (!azureOrganization) {\r\n throw new Error(\r\n \"Azure DevOps organization is not configured. Please set devops.organization in config.json (run `uns-kit configure-devops`).\",\r\n );\r\n}\r\n\r\nif (!azureProject) {\r\n throw new Error(\r\n \"Azure DevOps project is not configured. Please set devops.project in config.json (run `uns-kit configure-devops`).\",\r\n );\r\n}\r\n\r\nconst orgUrl = `https://${azureOrganization}@dev.azure.com/${azureOrganization}`;\r\nconst orgBaseUrl = `https://dev.azure.com/${azureOrganization}`;\r\nconst tokensUrl = `${orgBaseUrl}/_usersSettings/tokens`;\r\n\r\nconst packageJson = JSON.parse(await readFile(packageJsonPath, \"utf8\"));\r\nconst repoName: string = packageJson.name;\r\nconst version: string = packageJson.version;\r\n\r\nconst branches = await git.branchLocal();\r\nconst currentBranch = branches.current;\r\n\r\nconst gitStatus = await git.status();\r\n\r\nlet token: string = \"\";\r\nlet gitApi: ga.IGitApi | undefined;\r\nlet gitWithAuth: SimpleGit | undefined;\r\n\r\n\r\ntry {\r\n await main();\r\n rl.close();\r\n} catch (error) {\r\n console.log(chalk.red.bold(`\\n${error}`));\r\n rl.close();\r\n}\r\n\r\nasync function main() {\r\n if (!gitStatus.isClean()) {\r\n throw new Error(`Repository needs to be clean. Please commit or stash the changes.`);\r\n } else { \r\n const envPat = process.env.AZURE_PAT;\r\n while (!token) {\r\n if (envPat && envPat.length > 10) {\r\n token = envPat;\r\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\r\n const connection = new azdev.WebApi(orgUrl, authHandler);\r\n try {\r\n console.log(\"Using PAT from your AZURE_PAT environment\");\r\n await connection.connect();\r\n gitApi = await connection.getGitApi();\r\n } catch (error) {\r\n console.log(\r\n \"The provided PAT is invalid or expired. Please provide a valid PAT.\",\r\n );\r\n token = \"\";\r\n }\r\n }\r\n if (!token) {\r\n token = await question(\r\n `Please enter your PAT, you can create one at ` + chalk.green.bold(`[${tokensUrl}]: `),\r\n );\r\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\r\n const connection = new azdev.WebApi(orgUrl, authHandler);\r\n try {\r\n await connection.connect();\r\n gitApi = await connection.getGitApi();\r\n } catch (error) {\r\n console.log(\r\n \"The provided PAT is invalid or expired. Please provide a valid PAT.\",\r\n );\r\n token = \"\";\r\n }\r\n }\r\n }\r\n\r\n const authHeader = buildGitAuthorizationHeader(token);\r\n gitWithAuth = simpleGit({\r\n baseDir: \"./\",\r\n config: [`http.extraheader=${authHeader}`],\r\n }).clean(CleanOptions.FORCE);\r\n\r\n await assertNotDefaultBranch();\r\n\r\n const version = await getVersion();\r\n await setVersion(version);\r\n await commitChanges(version);\r\n await pushChanges();\r\n await createPullRequest(version);\r\n }\r\n}\r\n\r\nasync function getVersion(): Promise<string> {\r\n const authenticatedGit = requireGitWithAuth();\r\n let versionExists = true;\r\n let newVersion = version;\r\n while (versionExists) {\r\n newVersion = await question(\r\n `Every PR needs a unique version, please accept current version or enter a new one [${version}]: `\r\n ) || version;\r\n\r\n const remoteTags = await authenticatedGit.listRemote([\"--tags\"]);\r\n if (remoteTags.indexOf(`refs/tags/${newVersion}`) > 0) {\r\n console.log(chalk.bold.red(`Version ${newVersion} already exists on the server`));\r\n } else {\r\n console.log(`Using version ${newVersion}`)\r\n versionExists = false;\r\n }\r\n }\r\n return newVersion;\r\n}\r\n\r\nasync function runMake() {\r\n execSync(\"npm run make\");\r\n}\r\n\r\nasync function commitChanges(newVersion: string) {\r\n process.stdout.write(`Commit changes to branch ${currentBranch} `);\r\n await git.add(\".\");\r\n await git.commit(`Set new production version: ${newVersion}`);\r\n console.log(chalk.green.bold(` ... OK`));\r\n}\r\n\r\nasync function pushChanges() {\r\n const authenticatedGit = requireGitWithAuth();\r\n process.stdout.write(`Push changes to remote branch ${currentBranch} `);\r\n await authenticatedGit.push(\"origin\", currentBranch);\r\n console.log(chalk.green.bold(` ... OK`));\r\n}\r\n\r\nasync function setVersion(newVersion: string) {\r\n packageJson.version = newVersion;\r\n const docString = await prettier.format(JSON.stringify(packageJson), {\r\n parser: \"json\",\r\n });\r\n fs.writeFileSync(\"package.json\", docString, \"utf8\");\r\n\r\n}\r\n\r\nasync function createPullRequest(tag: string) {\r\n const title = await question(\r\n `Title for the pull request: `,\r\n );\r\n const description = await question(\r\n `Description for the pull request: `,\r\n ); \r\n process.stdout.write(`Create new pull request from ${currentBranch} to master `);\r\n if (!gitApi) {\r\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\r\n const connection = new azdev.WebApi(orgUrl, authHandler);\r\n gitApi = await connection.getGitApi();\r\n }\r\n\r\n const project: string = azureProject;\r\n const repos: GitRepository[] = await gitApi.getRepositories(project);\r\n const repoId = repos.filter((x) => x.name == repoName)[0].id;\r\n const gitPullRequestToCreate: GitPullRequest = {\r\n sourceRefName: `refs/heads/${currentBranch}`,\r\n targetRefName: \"refs/heads/master\",\r\n title,\r\n description,\r\n labels: [{active: true, name:tag}]\r\n };\r\n gitApi.createPullRequest(gitPullRequestToCreate, repoId, project);\r\n console.log(chalk.green.bold(` ... OK`));\r\n console.log(`Pull request created at ` + chalk.green.bold(`[${orgBaseUrl}/${project}/_git/${repoName}/pullrequests]`));\r\n}\r\n\r\nasync function assertNotDefaultBranch(): Promise<void> {\r\n if (!gitApi) {\r\n return;\r\n }\r\n\r\n const project = azureProject.trim();\r\n if (!project) {\r\n return;\r\n }\r\n\r\n try {\r\n const repository = await gitApi.getRepository(repoName, project);\r\n const defaultBranch = normalizeBranchName(repository?.defaultBranch);\r\n\r\n if (defaultBranch && defaultBranch === currentBranch) {\r\n throw new Error(\r\n `You can not create a pull request from the default branch (${defaultBranch}). Please create a feature branch instead.`,\r\n );\r\n }\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n const message = error.message || \"\";\r\n const protectedBranchPrefix = \"You can not create a pull request from the default branch\";\r\n if (message.startsWith(protectedBranchPrefix)) {\r\n throw error;\r\n }\r\n if (message) {\r\n console.log(`Warning: Unable to verify default branch: ${message}`);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction normalizeBranchName(refName: string | undefined): string | undefined {\r\n if (!refName) {\r\n return undefined;\r\n }\r\n\r\n const prefix = \"refs/heads/\";\r\n return refName.startsWith(prefix) ? refName.slice(prefix.length) : refName;\r\n}\r\n\r\nfunction buildGitAuthorizationHeader(personalAccessToken: string): string {\r\n const encoded = Buffer.from(`:${personalAccessToken}`).toString(\"base64\");\r\n return `Authorization: Basic ${encoded}`;\r\n}\r\n\r\nfunction requireGitWithAuth(): SimpleGit {\r\n if (!gitWithAuth) {\r\n throw new Error(\"Git authentication is not initialized.\");\r\n }\r\n return gitWithAuth;\r\n}\r\n"]}
|
|
@@ -53,38 +53,38 @@ async function requestWithAuth(document) {
|
|
|
53
53
|
}
|
|
54
54
|
// Fetch and generate UnsTopics
|
|
55
55
|
async function refreshUnsTopics() {
|
|
56
|
-
const document = gql `
|
|
57
|
-
query GetTreeStructure {
|
|
58
|
-
GetTreeStructure {
|
|
59
|
-
id
|
|
60
|
-
parent
|
|
61
|
-
unsNode
|
|
62
|
-
children {
|
|
63
|
-
id
|
|
64
|
-
parent
|
|
65
|
-
unsNode
|
|
66
|
-
children {
|
|
67
|
-
id
|
|
68
|
-
parent
|
|
69
|
-
unsNode
|
|
70
|
-
children {
|
|
71
|
-
id
|
|
72
|
-
parent
|
|
73
|
-
unsNode
|
|
74
|
-
children {
|
|
75
|
-
id
|
|
76
|
-
parent
|
|
77
|
-
unsNode
|
|
78
|
-
children {
|
|
79
|
-
id
|
|
80
|
-
parent
|
|
81
|
-
unsNode
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
56
|
+
const document = gql `
|
|
57
|
+
query GetTreeStructure {
|
|
58
|
+
GetTreeStructure {
|
|
59
|
+
id
|
|
60
|
+
parent
|
|
61
|
+
unsNode
|
|
62
|
+
children {
|
|
63
|
+
id
|
|
64
|
+
parent
|
|
65
|
+
unsNode
|
|
66
|
+
children {
|
|
67
|
+
id
|
|
68
|
+
parent
|
|
69
|
+
unsNode
|
|
70
|
+
children {
|
|
71
|
+
id
|
|
72
|
+
parent
|
|
73
|
+
unsNode
|
|
74
|
+
children {
|
|
75
|
+
id
|
|
76
|
+
parent
|
|
77
|
+
unsNode
|
|
78
|
+
children {
|
|
79
|
+
id
|
|
80
|
+
parent
|
|
81
|
+
unsNode
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
88
|
}`;
|
|
89
89
|
const query = await requestWithAuth(document);
|
|
90
90
|
const tree = query.GetTreeStructure;
|
|
@@ -95,9 +95,9 @@ async function refreshUnsTopics() {
|
|
|
95
95
|
}
|
|
96
96
|
// Fetch and generate UnsTags
|
|
97
97
|
async function refreshUnsTags() {
|
|
98
|
-
const document = gql `
|
|
99
|
-
query Query {
|
|
100
|
-
GetTags
|
|
98
|
+
const document = gql `
|
|
99
|
+
query Query {
|
|
100
|
+
GetTags
|
|
101
101
|
}`;
|
|
102
102
|
const query = await requestWithAuth(document);
|
|
103
103
|
const tags = query.GetTags;
|
|
@@ -1 +1 @@
|
|
|
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 } 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\n// Execute the refresh processes\nasync function refresh() {\n await Promise.all([refreshUnsTopics(), refreshUnsTags()]);\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"]}
|
|
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\";\r\nimport { TreeStructure } from \"./schema.js\";\r\nimport * as path from \"path\";\r\nimport * as fs from 'fs';\r\nimport { mkdir } from \"fs/promises\";\r\nimport { ConfigFile } from \"../config-file.js\";\r\nimport { AuthClient } from \"./auth/index.js\";\r\n\r\n\r\nconst config = await ConfigFile.loadConfig();\r\n\r\n// Helper function to write content to a file\r\nasync function writeToFile(filePath: string, content: string) {\r\n return new Promise<void>((resolve, reject) => {\r\n fs.writeFile(filePath, content, (error: NodeJS.ErrnoException | null) => {\r\n if (error) {\r\n console.error('Error writing file:', error);\r\n return reject(error);\r\n }\r\n console.log(`${path.basename(filePath)} updated.`);\r\n resolve();\r\n });\r\n });\r\n}\r\n\r\n// Function to process tree structure recursively\r\nfunction generateUnsTopics(tree: TreeStructure[], currentPath: string): string {\r\n return tree\r\n .map(element => {\r\n const newPath = `${currentPath}${element.unsNode}/`;\r\n const childrenTopics = element.children?.length\r\n ? generateUnsTopics(element.children, newPath)\r\n : '';\r\n return `\"${newPath}\" |${childrenTopics}`;\r\n })\r\n .join('');\r\n}\r\n\r\n// Prepare GraphQL client with Authorization from auth library\r\nconst auth = await AuthClient.create();\r\nlet accessToken = await auth.getAccessToken();\r\nlet client = new GraphQLClient(config.uns.graphql, {\r\n headers: { Authorization: `Bearer ${accessToken}` },\r\n});\r\n\r\nasync function requestWithAuth<T>(document: any): Promise<T> {\r\n try {\r\n return await client.request<T>(document);\r\n } catch (err: any) {\r\n const isAuthErr = err instanceof ClientError && (err.response.status === 401 || err.response.status === 403);\r\n if (isAuthErr) {\r\n // Attempt to get a fresh token (will try refresh, then prompt)\r\n accessToken = await auth.getAccessToken();\r\n client.setHeader('Authorization', `Bearer ${accessToken}`);\r\n return await client.request<T>(document);\r\n }\r\n throw err;\r\n }\r\n}\r\n\r\n// Fetch and generate UnsTopics\r\nasync function refreshUnsTopics() {\r\n const document = gql`\r\n query GetTreeStructure {\r\n GetTreeStructure {\r\n id\r\n parent\r\n unsNode\r\n children {\r\n id\r\n parent\r\n unsNode\r\n children {\r\n id\r\n parent\r\n unsNode\r\n children {\r\n id\r\n parent\r\n unsNode\r\n children {\r\n id\r\n parent\r\n unsNode\r\n children {\r\n id\r\n parent\r\n unsNode\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n\r\n const query: any = await requestWithAuth(document);\r\n const tree: TreeStructure[] = query.GetTreeStructure;\r\n\r\n const vsebina = `export type UnsTopics = ${generateUnsTopics(tree, '')}\\n(string & {});`;\r\n const outputPath = path.resolve(process.cwd(), \"src/uns/uns-topics.ts\");\r\n await ensureDirectory(path.dirname(outputPath));\r\n await writeToFile(outputPath, vsebina);\r\n}\r\n\r\n// Fetch and generate UnsTags\r\nasync function refreshUnsTags() {\r\n const document = gql`\r\n query Query {\r\n GetTags\r\n }`;\r\n\r\n const query: any = await requestWithAuth(document);\r\n const tags: string[] = query.GetTags;\r\n\r\n const vsebina = `export type UnsTags = ${tags.map(tag => `\"${tag}\" |`).join('')}\\n(string & {});`;\r\n const outputPath = path.resolve(process.cwd(), \"src/uns/uns-tags.ts\");\r\n await ensureDirectory(path.dirname(outputPath));\r\n await writeToFile(outputPath, vsebina);\r\n}\r\n\r\n// Execute the refresh processes\r\nasync function refresh() {\r\n await Promise.all([refreshUnsTopics(), refreshUnsTags()]);\r\n}\r\n\r\nrefresh().catch(error => console.error('Error during refresh:', error));\r\n\r\nasync function ensureDirectory(dirPath: string): Promise<void> {\r\n await mkdir(dirPath, { recursive: true });\r\n}\r\n"]}
|
package/dist/tools/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"","sourcesContent":["export type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string; }\n String: { input: string; output: string; }\n Boolean: { input: boolean; output: boolean; }\n Int: { input: number; output: number; }\n Float: { input: number; output: number; }\n Date: { input: any; output: any; }\n};\n\nexport type ActivateMqttTranslation = {\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n sourceTag?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** MQTT Translator object. */\nexport type AddMqttTranslation = {\n description?: InputMaybe<Scalars['String']['input']>;\n sourceTag?: InputMaybe<Scalars['String']['input']>;\n sourceTopic?: InputMaybe<Scalars['String']['input']>;\n targetTag?: InputMaybe<Scalars['String']['input']>;\n targetTopic?: InputMaybe<Scalars['String']['input']>;\n uom?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type AddMqttTranslatorTopic = {\n sourceTopic?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type DeleteMqttTranslation = {\n sourceTag?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type DeleteMqttTranslatorTopic = {\n sourceTopic?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type InitMqttTranslation = {\n sourceTag?: InputMaybe<Scalars['String']['input']>;\n sourceTopic?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type InsertUnsNode = {\n parent?: InputMaybe<Scalars['Int']['input']>;\n unsNode?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ModifyMqttTranslation = {\n description?: InputMaybe<Scalars['String']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n sourceTag?: InputMaybe<Scalars['String']['input']>;\n targetTag?: InputMaybe<Scalars['String']['input']>;\n targetTopic?: InputMaybe<Scalars['String']['input']>;\n uom?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** MQTT Translator object. */\nexport type MqttTranslation = {\n __typename?: 'MqttTranslation';\n description?: Maybe<Scalars['String']['output']>;\n enabled?: Maybe<Scalars['Boolean']['output']>;\n sourceTag?: Maybe<Scalars['String']['output']>;\n sourceTopic?: Maybe<Scalars['String']['output']>;\n targetTag?: Maybe<Scalars['String']['output']>;\n targetTopic?: Maybe<Scalars['String']['output']>;\n uom?: Maybe<Scalars['String']['output']>;\n};\n\nexport type MqttTranslatorTopic = {\n __typename?: 'MqttTranslatorTopic';\n sourceTopic?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Mutation = {\n __typename?: 'Mutation';\n ActivateMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\n AddMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\n /** Add MQTT topic to be translated. */\n AddMqttTranslatorTopic?: Maybe<Scalars['Boolean']['output']>;\n AddUnsNode?: Maybe<Scalars['Boolean']['output']>;\n /** Add MQTT translation. */\n DeleteMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\n DeleteMqttTranslatorTopic?: Maybe<Scalars['Boolean']['output']>;\n DeleteRttNode?: Maybe<Scalars['Boolean']['output']>;\n DeleteUnsNode?: Maybe<Scalars['Boolean']['output']>;\n DeployRttNode?: Maybe<Scalars['Boolean']['output']>;\n /** Populate MQTT Translator table with sourceTag and sourceTopic. */\n InitMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\n /** Update MQTT Translator table with defined targetTopic. */\n ModifyMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\n ModifyUnsNode?: Maybe<Scalars['Boolean']['output']>;\n StartRttNode?: Maybe<Scalars['Boolean']['output']>;\n StopRttNode?: Maybe<Scalars['Boolean']['output']>;\n};\n\n\nexport type MutationActivateMqttTranslationArgs = {\n entry?: InputMaybe<ActivateMqttTranslation>;\n};\n\n\nexport type MutationAddMqttTranslationArgs = {\n entry?: InputMaybe<AddMqttTranslation>;\n};\n\n\nexport type MutationAddMqttTranslatorTopicArgs = {\n entry?: InputMaybe<AddMqttTranslatorTopic>;\n};\n\n\nexport type MutationAddUnsNodeArgs = {\n node?: InputMaybe<InsertUnsNode>;\n};\n\n\nexport type MutationDeleteMqttTranslationArgs = {\n entry?: InputMaybe<DeleteMqttTranslation>;\n};\n\n\nexport type MutationDeleteMqttTranslatorTopicArgs = {\n entry?: InputMaybe<DeleteMqttTranslatorTopic>;\n};\n\n\nexport type MutationDeleteRttNodeArgs = {\n rttNode?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationDeleteUnsNodeArgs = {\n id?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MutationDeployRttNodeArgs = {\n rttNode?: InputMaybe<Scalars['String']['input']>;\n tag?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationInitMqttTranslationArgs = {\n entry?: InputMaybe<InitMqttTranslation>;\n};\n\n\nexport type MutationModifyMqttTranslationArgs = {\n entry?: InputMaybe<ModifyMqttTranslation>;\n};\n\n\nexport type MutationModifyUnsNodeArgs = {\n id?: InputMaybe<Scalars['Int']['input']>;\n node?: InputMaybe<UpdateUnsNode>;\n};\n\n\nexport type MutationStartRttNodeArgs = {\n rttNode?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationStopRttNodeArgs = {\n rttNode?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** name: uns-datahub */\nexport type Query = {\n __typename?: 'Query';\n /** Get MQTT Translator translations. */\n GetMqttTranslations?: Maybe<Array<Maybe<MqttTranslation>>>;\n GetMqttTranslatorTopics?: Maybe<Array<Maybe<MqttTranslatorTopic>>>;\n GetRttNodes?: Maybe<Array<Maybe<RttNode>>>;\n GetTreeStructure?: Maybe<Array<Maybe<TreeStructure>>>;\n};\n\nexport type RttNode = {\n __typename?: 'RttNode';\n author?: Maybe<Scalars['String']['output']>;\n deployedVersions?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\n description?: Maybe<Scalars['String']['output']>;\n lastLog?: Maybe<Scalars['String']['output']>;\n latestDeployedVersion?: Maybe<Scalars['String']['output']>;\n memory?: Maybe<Scalars['Int']['output']>;\n pid?: Maybe<Scalars['Int']['output']>;\n restarts?: Maybe<Scalars['Int']['output']>;\n rttNode?: Maybe<Scalars['String']['output']>;\n runningVersion?: Maybe<Scalars['String']['output']>;\n status?: Maybe<Scalars['String']['output']>;\n uptime?: Maybe<Scalars['Int']['output']>;\n version?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TreeStructure = {\n __typename?: 'TreeStructure';\n children?: Maybe<Array<Maybe<TreeStructure>>>;\n id?: Maybe<Scalars['Int']['output']>;\n parent?: Maybe<Scalars['Int']['output']>;\n unsNode?: Maybe<Scalars['String']['output']>;\n};\n\nexport type UnsNode = {\n __typename?: 'UnsNode';\n id?: Maybe<Scalars['Int']['output']>;\n parent?: Maybe<Scalars['Int']['output']>;\n unsNode?: Maybe<Scalars['String']['output']>;\n};\n\nexport type UpdateUnsNode = {\n parent?: InputMaybe<Scalars['Int']['input']>;\n unsNode?: InputMaybe<Scalars['String']['input']>;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"","sourcesContent":["export type Maybe<T> = T | null;\r\nexport type InputMaybe<T> = Maybe<T>;\r\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\r\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\r\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\r\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\r\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\r\n/** All built-in and custom scalars, mapped to their actual values */\r\nexport type Scalars = {\r\n ID: { input: string; output: string; }\r\n String: { input: string; output: string; }\r\n Boolean: { input: boolean; output: boolean; }\r\n Int: { input: number; output: number; }\r\n Float: { input: number; output: number; }\r\n Date: { input: any; output: any; }\r\n};\r\n\r\nexport type ActivateMqttTranslation = {\r\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\r\n sourceTag?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\n/** MQTT Translator object. */\r\nexport type AddMqttTranslation = {\r\n description?: InputMaybe<Scalars['String']['input']>;\r\n sourceTag?: InputMaybe<Scalars['String']['input']>;\r\n sourceTopic?: InputMaybe<Scalars['String']['input']>;\r\n targetTag?: InputMaybe<Scalars['String']['input']>;\r\n targetTopic?: InputMaybe<Scalars['String']['input']>;\r\n uom?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\nexport type AddMqttTranslatorTopic = {\r\n sourceTopic?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\nexport type DeleteMqttTranslation = {\r\n sourceTag?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\nexport type DeleteMqttTranslatorTopic = {\r\n sourceTopic?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\nexport type InitMqttTranslation = {\r\n sourceTag?: InputMaybe<Scalars['String']['input']>;\r\n sourceTopic?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\nexport type InsertUnsNode = {\r\n parent?: InputMaybe<Scalars['Int']['input']>;\r\n unsNode?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\nexport type ModifyMqttTranslation = {\r\n description?: InputMaybe<Scalars['String']['input']>;\r\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\r\n sourceTag?: InputMaybe<Scalars['String']['input']>;\r\n targetTag?: InputMaybe<Scalars['String']['input']>;\r\n targetTopic?: InputMaybe<Scalars['String']['input']>;\r\n uom?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\n/** MQTT Translator object. */\r\nexport type MqttTranslation = {\r\n __typename?: 'MqttTranslation';\r\n description?: Maybe<Scalars['String']['output']>;\r\n enabled?: Maybe<Scalars['Boolean']['output']>;\r\n sourceTag?: Maybe<Scalars['String']['output']>;\r\n sourceTopic?: Maybe<Scalars['String']['output']>;\r\n targetTag?: Maybe<Scalars['String']['output']>;\r\n targetTopic?: Maybe<Scalars['String']['output']>;\r\n uom?: Maybe<Scalars['String']['output']>;\r\n};\r\n\r\nexport type MqttTranslatorTopic = {\r\n __typename?: 'MqttTranslatorTopic';\r\n sourceTopic?: Maybe<Scalars['String']['output']>;\r\n};\r\n\r\nexport type Mutation = {\r\n __typename?: 'Mutation';\r\n ActivateMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\r\n AddMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\r\n /** Add MQTT topic to be translated. */\r\n AddMqttTranslatorTopic?: Maybe<Scalars['Boolean']['output']>;\r\n AddUnsNode?: Maybe<Scalars['Boolean']['output']>;\r\n /** Add MQTT translation. */\r\n DeleteMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\r\n DeleteMqttTranslatorTopic?: Maybe<Scalars['Boolean']['output']>;\r\n DeleteRttNode?: Maybe<Scalars['Boolean']['output']>;\r\n DeleteUnsNode?: Maybe<Scalars['Boolean']['output']>;\r\n DeployRttNode?: Maybe<Scalars['Boolean']['output']>;\r\n /** Populate MQTT Translator table with sourceTag and sourceTopic. */\r\n InitMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\r\n /** Update MQTT Translator table with defined targetTopic. */\r\n ModifyMqttTranslation?: Maybe<Scalars['Boolean']['output']>;\r\n ModifyUnsNode?: Maybe<Scalars['Boolean']['output']>;\r\n StartRttNode?: Maybe<Scalars['Boolean']['output']>;\r\n StopRttNode?: Maybe<Scalars['Boolean']['output']>;\r\n};\r\n\r\n\r\nexport type MutationActivateMqttTranslationArgs = {\r\n entry?: InputMaybe<ActivateMqttTranslation>;\r\n};\r\n\r\n\r\nexport type MutationAddMqttTranslationArgs = {\r\n entry?: InputMaybe<AddMqttTranslation>;\r\n};\r\n\r\n\r\nexport type MutationAddMqttTranslatorTopicArgs = {\r\n entry?: InputMaybe<AddMqttTranslatorTopic>;\r\n};\r\n\r\n\r\nexport type MutationAddUnsNodeArgs = {\r\n node?: InputMaybe<InsertUnsNode>;\r\n};\r\n\r\n\r\nexport type MutationDeleteMqttTranslationArgs = {\r\n entry?: InputMaybe<DeleteMqttTranslation>;\r\n};\r\n\r\n\r\nexport type MutationDeleteMqttTranslatorTopicArgs = {\r\n entry?: InputMaybe<DeleteMqttTranslatorTopic>;\r\n};\r\n\r\n\r\nexport type MutationDeleteRttNodeArgs = {\r\n rttNode?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\n\r\nexport type MutationDeleteUnsNodeArgs = {\r\n id?: InputMaybe<Scalars['Int']['input']>;\r\n};\r\n\r\n\r\nexport type MutationDeployRttNodeArgs = {\r\n rttNode?: InputMaybe<Scalars['String']['input']>;\r\n tag?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\n\r\nexport type MutationInitMqttTranslationArgs = {\r\n entry?: InputMaybe<InitMqttTranslation>;\r\n};\r\n\r\n\r\nexport type MutationModifyMqttTranslationArgs = {\r\n entry?: InputMaybe<ModifyMqttTranslation>;\r\n};\r\n\r\n\r\nexport type MutationModifyUnsNodeArgs = {\r\n id?: InputMaybe<Scalars['Int']['input']>;\r\n node?: InputMaybe<UpdateUnsNode>;\r\n};\r\n\r\n\r\nexport type MutationStartRttNodeArgs = {\r\n rttNode?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\n\r\nexport type MutationStopRttNodeArgs = {\r\n rttNode?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\n/** name: uns-datahub */\r\nexport type Query = {\r\n __typename?: 'Query';\r\n /** Get MQTT Translator translations. */\r\n GetMqttTranslations?: Maybe<Array<Maybe<MqttTranslation>>>;\r\n GetMqttTranslatorTopics?: Maybe<Array<Maybe<MqttTranslatorTopic>>>;\r\n GetRttNodes?: Maybe<Array<Maybe<RttNode>>>;\r\n GetTreeStructure?: Maybe<Array<Maybe<TreeStructure>>>;\r\n};\r\n\r\nexport type RttNode = {\r\n __typename?: 'RttNode';\r\n author?: Maybe<Scalars['String']['output']>;\r\n deployedVersions?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\r\n description?: Maybe<Scalars['String']['output']>;\r\n lastLog?: Maybe<Scalars['String']['output']>;\r\n latestDeployedVersion?: Maybe<Scalars['String']['output']>;\r\n memory?: Maybe<Scalars['Int']['output']>;\r\n pid?: Maybe<Scalars['Int']['output']>;\r\n restarts?: Maybe<Scalars['Int']['output']>;\r\n rttNode?: Maybe<Scalars['String']['output']>;\r\n runningVersion?: Maybe<Scalars['String']['output']>;\r\n status?: Maybe<Scalars['String']['output']>;\r\n uptime?: Maybe<Scalars['Int']['output']>;\r\n version?: Maybe<Scalars['String']['output']>;\r\n};\r\n\r\nexport type TreeStructure = {\r\n __typename?: 'TreeStructure';\r\n children?: Maybe<Array<Maybe<TreeStructure>>>;\r\n id?: Maybe<Scalars['Int']['output']>;\r\n parent?: Maybe<Scalars['Int']['output']>;\r\n unsNode?: Maybe<Scalars['String']['output']>;\r\n};\r\n\r\nexport type UnsNode = {\r\n __typename?: 'UnsNode';\r\n id?: Maybe<Scalars['Int']['output']>;\r\n parent?: Maybe<Scalars['Int']['output']>;\r\n unsNode?: Maybe<Scalars['String']['output']>;\r\n};\r\n\r\nexport type UpdateUnsNode = {\r\n parent?: InputMaybe<Scalars['Int']['input']>;\r\n unsNode?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=update-rtt.d.ts.map
|