@uns-kit/core 2.0.41 → 2.0.42

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.
Files changed (69) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +185 -185
  3. package/dist/app-config.d.ts.map +1 -0
  4. package/dist/app-config.js.map +1 -0
  5. package/dist/base-path.js.map +1 -1
  6. package/dist/config/project.config.extension.js.map +1 -1
  7. package/dist/config-file.js.map +1 -1
  8. package/dist/graphql/schema.js.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/logger.js.map +1 -1
  11. package/dist/tools/auth/auth-client.js.map +1 -1
  12. package/dist/tools/auth/index.js.map +1 -1
  13. package/dist/tools/auth/secure-store.js.map +1 -1
  14. package/dist/tools/base-path.js.map +1 -1
  15. package/dist/tools/datahub/datahub-client.js.map +1 -1
  16. package/dist/tools/file-utils.js.map +1 -1
  17. package/dist/tools/generate-config-schema.js.map +1 -1
  18. package/dist/tools/generate-uns-dictionary.js +7 -7
  19. package/dist/tools/generate-uns-dictionary.js.map +1 -1
  20. package/dist/tools/generate-uns-measurements.js +7 -7
  21. package/dist/tools/generate-uns-measurements.js.map +1 -1
  22. package/dist/tools/generate-uns-reference.js +9 -9
  23. package/dist/tools/generate-uns-reference.js.map +1 -1
  24. package/dist/tools/pull-request.js.map +1 -1
  25. package/dist/tools/refresh-uns.js +50 -50
  26. package/dist/tools/refresh-uns.js.map +1 -1
  27. package/dist/tools/schema.js.map +1 -1
  28. package/dist/tools/sync-uns-schema.js +17 -17
  29. package/dist/tools/sync-uns-schema.js.map +1 -1
  30. package/dist/uns/handover-manager-event-emitter.js.map +1 -1
  31. package/dist/uns/handover-manager.js.map +1 -1
  32. package/dist/uns/process-config.js.map +1 -1
  33. package/dist/uns/service-metadata.js.map +1 -1
  34. package/dist/uns/status-monitor.js.map +1 -1
  35. package/dist/uns/uns-asset.js.map +1 -1
  36. package/dist/uns/uns-attributes.js.map +1 -1
  37. package/dist/uns/uns-dictionary-registry.js.map +1 -1
  38. package/dist/uns/uns-dictionary.generated.js.map +1 -1
  39. package/dist/uns/uns-event-emitter.js.map +1 -1
  40. package/dist/uns/uns-interfaces.js.map +1 -1
  41. package/dist/uns/uns-measurements.generated.js.map +1 -1
  42. package/dist/uns/uns-measurements.js.map +1 -1
  43. package/dist/uns/uns-object.js.map +1 -1
  44. package/dist/uns/uns-packet.js.map +1 -1
  45. package/dist/uns/uns-path.js.map +1 -1
  46. package/dist/uns/uns-proxy-process.js.map +1 -1
  47. package/dist/uns/uns-proxy.js.map +1 -1
  48. package/dist/uns/uns-tags.js.map +1 -1
  49. package/dist/uns/uns-topic-matcher.js.map +1 -1
  50. package/dist/uns/uns-topics.js.map +1 -1
  51. package/dist/uns-config/config-schema.js.map +1 -1
  52. package/dist/uns-config/host-placeholders.js.map +1 -1
  53. package/dist/uns-config/schema-tolls.js.map +1 -1
  54. package/dist/uns-config/schema-tools.js.map +1 -1
  55. package/dist/uns-config/secret-placeholders.js.map +1 -1
  56. package/dist/uns-config/secret-resolver.js.map +1 -1
  57. package/dist/uns-config/uns-core-schema.js.map +1 -1
  58. package/dist/uns-grpc/uns-gateway-cli.js.map +1 -1
  59. package/dist/uns-grpc/uns-gateway-server.js.map +1 -1
  60. package/dist/uns-grpc/uns-gateway.proto +104 -104
  61. package/dist/uns-mqtt/mqtt-interfaces.js.map +1 -1
  62. package/dist/uns-mqtt/mqtt-proxy.js.map +1 -1
  63. package/dist/uns-mqtt/mqtt-topic-builder.js.map +1 -1
  64. package/dist/uns-mqtt/mqtt-worker-init.js.map +1 -1
  65. package/dist/uns-mqtt/mqtt-worker.js.map +1 -1
  66. package/dist/uns-mqtt/throttled-queue.js.map +1 -1
  67. package/dist/uns-mqtt/uns-mqtt-proxy.js.map +1 -1
  68. package/dist/uns-mqtt/ws-proxy.js.map +1 -1
  69. package/package.json +1 -1
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 Aljoša Vister
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Aljoša Vister
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,185 +1,185 @@
1
- # @uns-kit/core
2
-
3
- Core utilities and runtime building blocks for Unified Namespace (UNS) applications. The package bundles the process lifecycle manager, MQTT integrations, gRPC gateway helpers, configuration tooling, and shared type definitions that power the UNS ecosystem.
4
-
5
- Note: Apps built with uns-kit are intended to be managed by the **UNS Datahub controller**.
6
-
7
- ## uns-kit in context
8
-
9
- | Package | Description |
10
- | --- | --- |
11
- | [`@uns-kit/core`](https://github.com/uns-datahub/uns-kit/tree/main/packages/uns-core) | Base runtime (UnsProxyProcess, MQTT helpers, config tooling, gRPC gateway). |
12
- | [`@uns-kit/api`](https://github.com/uns-datahub/uns-kit/tree/main/packages/uns-api) | Express plugin — HTTP endpoints, JWT/JWKS auth, Swagger, UNS metadata. |
13
- | [`@uns-kit/cron`](https://github.com/uns-datahub/uns-kit/tree/main/packages/uns-cron) | Cron-driven scheduler that emits UNS events on a fixed cadence. |
14
- | [`@uns-kit/cli`](https://github.com/uns-datahub/uns-kit/tree/main/packages/uns-cli) | CLI for scaffolding new UNS applications. |
15
-
16
- ## Installation
17
-
18
- ```bash
19
- pnpm add @uns-kit/core
20
- # or
21
- npm install @uns-kit/core
22
- ```
23
-
24
- ## Key concepts
25
-
26
- - **UnsProxyProcess** — the central runtime class. It manages the MQTT connection, plugin lifecycle, and the instance status topic. Plugins (`@uns-kit/api`, `@uns-kit/cron`) augment it with domain-specific proxy factories.
27
- - **UnsProxy** — base class extended by all plugin proxies. Tracks produced topics, API endpoints, and catch-all mappings; re-publishes them to the controller on a 60-second cadence.
28
- - **ConfigFile** — loads and validates `config.json` at startup. On a real server this file is provided by the UNS Datahub controller; in development you maintain it yourself.
29
- - **MQTT helpers** — resilient publishers, topic builders, throttled queues, and handover support.
30
- - **gRPC gateway** — infrastructure to bridge Python workers into the UNS message fabric.
31
-
32
- ## Basic usage
33
-
34
- ```ts
35
- import UnsProxyProcess from "@uns-kit/core/uns/uns-proxy-process";
36
- import { ConfigFile } from "@uns-kit/core";
37
-
38
- const config = await ConfigFile.loadConfig();
39
-
40
- // Connect to MQTT broker; processName identifies this service in the controller.
41
- const proc = new UnsProxyProcess(config.infra.host!, { processName: config.uns.processName });
42
- ```
43
-
44
- Publish retained service metadata when a runtime should be discoverable by the
45
- controller as a core service, addon, or built-in capability:
46
-
47
- ```ts
48
- await proc.publishServiceMetadata({
49
- serviceId: "uns-bridge-mqtt",
50
- kind: "addon",
51
- addonId: "uns-bridge-mqtt",
52
- capabilities: ["mqtt-source-browser", "runtime-mappings"],
53
- apiRoutes: [
54
- {
55
- path: "/api/system/bridge/mqtt/runtime/service/bridge/health",
56
- kind: "health",
57
- },
58
- ],
59
- });
60
- ```
61
-
62
- The metadata is retained on
63
- `uns-infra/<package>/<version>/<processName>/service-metadata`. Controllers
64
- combine this identity/capability payload with live process telemetry and route
65
- health before marking a service healthy.
66
-
67
- Extend it with plugins:
68
-
69
- ```ts
70
- import "@uns-kit/api";
71
- import "@uns-kit/cron";
72
- import { type UnsProxyProcessWithApi } from "@uns-kit/api";
73
- import { type UnsProxyProcessWithCron } from "@uns-kit/cron";
74
-
75
- const proc = new UnsProxyProcess(config.infra.host!, { processName: config.uns.processName })
76
- as UnsProxyProcessWithApi & UnsProxyProcessWithCron;
77
-
78
- const api = await proc.createApiProxy("my-service", { jwtSecret: "CHANGEME" });
79
- const cron = await proc.createCrontabProxy("*/5 * * * *", { event: "tick" });
80
- ```
81
-
82
- ## Datahub client (last value)
83
-
84
- `UnsClient` provides a minimal REST client for the UNS Datahub API, including the batch last-value endpoint. Prefer a long-lived service token if available; you can pass it directly and skip username/password auth.
85
-
86
- ```ts
87
- import { UnsClient } from "@uns-kit/core";
88
-
89
- const client = new UnsClient("https://datahub.example.com", {
90
- token: process.env.UNS_SERVICE_TOKEN,
91
- });
92
-
93
- const values = await client.lastValue([
94
- "raw/data/line-1/motor/main/temperature",
95
- "raw/data/line-1/motor/main/status",
96
- ]);
97
- console.log(values);
98
- ```
99
-
100
- ## Validity / Liveliness
101
-
102
- UNS attributes can declare how the controller decides whether they are live or stale; in most apps this is primarily used to drive UI liveliness/activity indicators. In app-level modeling we use two modes only:
103
-
104
- - `interval`: continuously refreshed values (stale after ~2× `expectedIntervalMs`)
105
- - `lifecycle`: event-driven activity that stays active until a defined end value (`lifecycleEndValue`)
106
-
107
- ```ts
108
- await proxy.publishMqttMessage({
109
- topic: "raw/data/",
110
- asset: "line-1",
111
- objectType: "motor",
112
- objectId: "main",
113
- attributes: {
114
- attribute: "status",
115
- data: { time: new Date().toISOString(), value: "RUNNING" },
116
- validityMode: "lifecycle",
117
- lifecycleEndValue: "STOPPED",
118
- },
119
- });
120
- ```
121
-
122
- ## Sync UNS schema from the controller
123
-
124
- `sync-uns-schema` fetches the canonical UNS dictionary and measurements from the controller REST API and refreshes local JSON files and generated TypeScript artifacts.
125
-
126
- ```bash
127
- # Run inside a generated microservice project:
128
- pnpm run sync-uns-schema
129
-
130
- # The controller URL is read from config.json (uns.rest) automatically.
131
- # You will be prompted for the bearer token if not set via env var.
132
- ```
133
-
134
- Or with explicit options:
135
-
136
- ```bash
137
- pnpm run sync-uns-schema --controller-url http://localhost:3200 --token <bearer-token>
138
- ```
139
-
140
- **What it updates (inside a generated project):**
141
- - `uns-dictionary.json`
142
- - `uns-measurements.json`
143
- - `src/uns/uns-dictionary.generated.ts`
144
- - `src/uns/uns-measurements.generated.ts`
145
-
146
- **Options:**
147
-
148
- | Flag | Default | Description |
149
- |---|---|---|
150
- | `--controller-url` | from `config.json` `uns.rest` or `UNS_CONTROLLER_URL` | Controller base URL |
151
- | `--token` | interactive prompt or `UNS_CONTROLLER_TOKEN` | Admin bearer token |
152
- | `--status` | `active` | Dictionary filter: `active`, `draft`, `deprecated`, `all` |
153
- | `--dry-run` | — | Report changes without writing |
154
- | `--dictionary-only` | — | Skip measurements sync |
155
- | `--measurements-only` | — | Skip dictionary sync |
156
- | `--skip-generate` | — | Skip TS regeneration |
157
- | `--project-root <dir>` | auto-detect | Target project root |
158
-
159
- ## Config schema generation
160
-
161
- Edit `src/config/project.config.extension.ts` inside your project and run:
162
-
163
- ```bash
164
- pnpm run generate-config-schema
165
- ```
166
-
167
- This regenerates `config.schema.json` and `src/config/app-config.ts`, keeping editor completions and runtime types in sync with your config extensions.
168
-
169
- ## Infisical secret resolution
170
-
171
- - Looks for `INFISICAL_TOKEN` / `INFISICAL_PERSONAL_TOKEN`, then `/run/secrets/infisical_token`.
172
- - If unavailable, logs a warning and returns `default` (or `undefined` for `optional: true` secrets).
173
- - Required secrets throw with the original error message when Infisical is unreachable.
174
- - Call `resolveInfisicalConfig()` to inspect the resolved token/projectId/siteUrl.
175
-
176
- ## Development
177
-
178
- ```bash
179
- pnpm run typecheck # type-check sources
180
- pnpm run build # emit JS + declarations to dist/
181
- ```
182
-
183
- ## License
184
-
185
- MIT © Aljoša Vister
1
+ # @uns-kit/core
2
+
3
+ Core utilities and runtime building blocks for Unified Namespace (UNS) applications. The package bundles the process lifecycle manager, MQTT integrations, gRPC gateway helpers, configuration tooling, and shared type definitions that power the UNS ecosystem.
4
+
5
+ Note: Apps built with uns-kit are intended to be managed by the **UNS Datahub controller**.
6
+
7
+ ## uns-kit in context
8
+
9
+ | Package | Description |
10
+ | --- | --- |
11
+ | [`@uns-kit/core`](https://github.com/uns-datahub/uns-kit/tree/main/packages/uns-core) | Base runtime (UnsProxyProcess, MQTT helpers, config tooling, gRPC gateway). |
12
+ | [`@uns-kit/api`](https://github.com/uns-datahub/uns-kit/tree/main/packages/uns-api) | Express plugin — HTTP endpoints, JWT/JWKS auth, Swagger, UNS metadata. |
13
+ | [`@uns-kit/cron`](https://github.com/uns-datahub/uns-kit/tree/main/packages/uns-cron) | Cron-driven scheduler that emits UNS events on a fixed cadence. |
14
+ | [`@uns-kit/cli`](https://github.com/uns-datahub/uns-kit/tree/main/packages/uns-cli) | CLI for scaffolding new UNS applications. |
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ pnpm add @uns-kit/core
20
+ # or
21
+ npm install @uns-kit/core
22
+ ```
23
+
24
+ ## Key concepts
25
+
26
+ - **UnsProxyProcess** — the central runtime class. It manages the MQTT connection, plugin lifecycle, and the instance status topic. Plugins (`@uns-kit/api`, `@uns-kit/cron`) augment it with domain-specific proxy factories.
27
+ - **UnsProxy** — base class extended by all plugin proxies. Tracks produced topics, API endpoints, and catch-all mappings; re-publishes them to the controller on a 60-second cadence.
28
+ - **ConfigFile** — loads and validates `config.json` at startup. On a real server this file is provided by the UNS Datahub controller; in development you maintain it yourself.
29
+ - **MQTT helpers** — resilient publishers, topic builders, throttled queues, and handover support.
30
+ - **gRPC gateway** — infrastructure to bridge Python workers into the UNS message fabric.
31
+
32
+ ## Basic usage
33
+
34
+ ```ts
35
+ import UnsProxyProcess from "@uns-kit/core/uns/uns-proxy-process";
36
+ import { ConfigFile } from "@uns-kit/core";
37
+
38
+ const config = await ConfigFile.loadConfig();
39
+
40
+ // Connect to MQTT broker; processName identifies this service in the controller.
41
+ const proc = new UnsProxyProcess(config.infra.host!, { processName: config.uns.processName });
42
+ ```
43
+
44
+ Publish retained service metadata when a runtime should be discoverable by the
45
+ controller as a core service, addon, or built-in capability:
46
+
47
+ ```ts
48
+ await proc.publishServiceMetadata({
49
+ serviceId: "uns-bridge-mqtt",
50
+ kind: "addon",
51
+ addonId: "uns-bridge-mqtt",
52
+ capabilities: ["mqtt-source-browser", "runtime-mappings"],
53
+ apiRoutes: [
54
+ {
55
+ path: "/api/system/bridge/mqtt/runtime/service/bridge/health",
56
+ kind: "health",
57
+ },
58
+ ],
59
+ });
60
+ ```
61
+
62
+ The metadata is retained on
63
+ `uns-infra/<package>/<version>/<processName>/service-metadata`. Controllers
64
+ combine this identity/capability payload with live process telemetry and route
65
+ health before marking a service healthy.
66
+
67
+ Extend it with plugins:
68
+
69
+ ```ts
70
+ import "@uns-kit/api";
71
+ import "@uns-kit/cron";
72
+ import { type UnsProxyProcessWithApi } from "@uns-kit/api";
73
+ import { type UnsProxyProcessWithCron } from "@uns-kit/cron";
74
+
75
+ const proc = new UnsProxyProcess(config.infra.host!, { processName: config.uns.processName })
76
+ as UnsProxyProcessWithApi & UnsProxyProcessWithCron;
77
+
78
+ const api = await proc.createApiProxy("my-service", { jwtSecret: "CHANGEME" });
79
+ const cron = await proc.createCrontabProxy("*/5 * * * *", { event: "tick" });
80
+ ```
81
+
82
+ ## Datahub client (last value)
83
+
84
+ `UnsClient` provides a minimal REST client for the UNS Datahub API, including the batch last-value endpoint. Prefer a long-lived service token if available; you can pass it directly and skip username/password auth.
85
+
86
+ ```ts
87
+ import { UnsClient } from "@uns-kit/core";
88
+
89
+ const client = new UnsClient("https://datahub.example.com", {
90
+ token: process.env.UNS_SERVICE_TOKEN,
91
+ });
92
+
93
+ const values = await client.lastValue([
94
+ "raw/data/line-1/motor/main/temperature",
95
+ "raw/data/line-1/motor/main/status",
96
+ ]);
97
+ console.log(values);
98
+ ```
99
+
100
+ ## Validity / Liveliness
101
+
102
+ UNS attributes can declare how the controller decides whether they are live or stale; in most apps this is primarily used to drive UI liveliness/activity indicators. In app-level modeling we use two modes only:
103
+
104
+ - `interval`: continuously refreshed values (stale after ~2× `expectedIntervalMs`)
105
+ - `lifecycle`: event-driven activity that stays active until a defined end value (`lifecycleEndValue`)
106
+
107
+ ```ts
108
+ await proxy.publishMqttMessage({
109
+ topic: "raw/data/",
110
+ asset: "line-1",
111
+ objectType: "motor",
112
+ objectId: "main",
113
+ attributes: {
114
+ attribute: "status",
115
+ data: { time: new Date().toISOString(), value: "RUNNING" },
116
+ validityMode: "lifecycle",
117
+ lifecycleEndValue: "STOPPED",
118
+ },
119
+ });
120
+ ```
121
+
122
+ ## Sync UNS schema from the controller
123
+
124
+ `sync-uns-schema` fetches the canonical UNS dictionary and measurements from the controller REST API and refreshes local JSON files and generated TypeScript artifacts.
125
+
126
+ ```bash
127
+ # Run inside a generated microservice project:
128
+ pnpm run sync-uns-schema
129
+
130
+ # The controller URL is read from config.json (uns.rest) automatically.
131
+ # You will be prompted for the bearer token if not set via env var.
132
+ ```
133
+
134
+ Or with explicit options:
135
+
136
+ ```bash
137
+ pnpm run sync-uns-schema --controller-url http://localhost:3200 --token <bearer-token>
138
+ ```
139
+
140
+ **What it updates (inside a generated project):**
141
+ - `uns-dictionary.json`
142
+ - `uns-measurements.json`
143
+ - `src/uns/uns-dictionary.generated.ts`
144
+ - `src/uns/uns-measurements.generated.ts`
145
+
146
+ **Options:**
147
+
148
+ | Flag | Default | Description |
149
+ |---|---|---|
150
+ | `--controller-url` | from `config.json` `uns.rest` or `UNS_CONTROLLER_URL` | Controller base URL |
151
+ | `--token` | interactive prompt or `UNS_CONTROLLER_TOKEN` | Admin bearer token |
152
+ | `--status` | `active` | Dictionary filter: `active`, `draft`, `deprecated`, `all` |
153
+ | `--dry-run` | — | Report changes without writing |
154
+ | `--dictionary-only` | — | Skip measurements sync |
155
+ | `--measurements-only` | — | Skip dictionary sync |
156
+ | `--skip-generate` | — | Skip TS regeneration |
157
+ | `--project-root <dir>` | auto-detect | Target project root |
158
+
159
+ ## Config schema generation
160
+
161
+ Edit `src/config/project.config.extension.ts` inside your project and run:
162
+
163
+ ```bash
164
+ pnpm run generate-config-schema
165
+ ```
166
+
167
+ This regenerates `config.schema.json` and `src/config/app-config.ts`, keeping editor completions and runtime types in sync with your config extensions.
168
+
169
+ ## Infisical secret resolution
170
+
171
+ - Looks for `INFISICAL_TOKEN` / `INFISICAL_PERSONAL_TOKEN`, then `/run/secrets/infisical_token`.
172
+ - If unavailable, logs a warning and returns `default` (or `undefined` for `optional: true` secrets).
173
+ - Required secrets throw with the original error message when Infisical is unreachable.
174
+ - Call `resolveInfisicalConfig()` to inspect the resolved token/projectId/siteUrl.
175
+
176
+ ## Development
177
+
178
+ ```bash
179
+ pnpm run typecheck # type-check sources
180
+ pnpm run build # emit JS + declarations to dist/
181
+ ```
182
+
183
+ ## License
184
+
185
+ MIT © Aljoša Vister
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"","sourcesContent":["/* Auto-generated. Do not edit by hand. */\r\nexport type AppConfig = {\r\n uns: {\r\n graphql: string;\r\n rest: string;\r\n instanceMode?: \"wait\" | \"force\" | \"handover\";\r\n processName?: string | undefined;\r\n handover?: boolean;\r\n jwksWellKnownUrl?: string | undefined;\r\n kidWellKnownUrl?: string | undefined;\r\n env?: \"dev\" | \"staging\" | \"test\" | \"prod\";\r\n };\r\n input?: {\r\n host: string | ({\r\n /** Use the supplied host or IP address. */\r\n provider: \"inline\";\r\n /** Host or IP address that should be used directly. */\r\n value: string;\r\n } | {\r\n /** Resolve the host from an external mapping. */\r\n provider: \"external\";\r\n /** Identifier used when resolving the host from HostResolverOptions. */\r\n key: string;\r\n /** Allow the external host to be missing without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback host when optional is true and the external entry is missing. */\r\n default?: string | undefined;\r\n } | {\r\n /** Resolve the host from local network interfaces. */\r\n provider: \"system\";\r\n /** Address family to return when scanning interfaces. */\r\n family?: \"IPv4\" | \"IPv6\";\r\n /** Specific interface to read (falls back to the first match when omitted). */\r\n interfaceName?: string | undefined;\r\n /** Allow the interface lookup to fail without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback host/IP when optional is true and no interface matches. */\r\n default?: string | undefined;\r\n });\r\n username?: string | undefined;\r\n password?: (string | ({\r\n /** Load the secret from an environment variable. */\r\n provider: \"env\";\r\n /** Name of the environment variable to read. */\r\n key: string;\r\n /** Allow the variable to be absent without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback value when optional is true and the variable is missing. */\r\n default?: string | undefined;\r\n } | {\r\n /** Load the secret from Infisical. */\r\n provider: \"infisical\";\r\n /** Secret folder path in Infisical, e.g. '/app/database'. */\r\n path: string;\r\n /** Secret key/name inside the given path. */\r\n key: string;\r\n /** Allow the secret to be absent without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Infisical environment override (defaults to current mode if omitted). */\r\n environment?: string | undefined;\r\n /** Optional Infisical project identifier when not using the default. */\r\n projectId?: string | undefined;\r\n /** Fallback value when the secret is missing and optional resolution is allowed. */\r\n default?: string | undefined;\r\n })) | undefined;\r\n clientId?: string | undefined;\r\n } | undefined;\r\n output?: {\r\n host: string | ({\r\n /** Use the supplied host or IP address. */\r\n provider: \"inline\";\r\n /** Host or IP address that should be used directly. */\r\n value: string;\r\n } | {\r\n /** Resolve the host from an external mapping. */\r\n provider: \"external\";\r\n /** Identifier used when resolving the host from HostResolverOptions. */\r\n key: string;\r\n /** Allow the external host to be missing without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback host when optional is true and the external entry is missing. */\r\n default?: string | undefined;\r\n } | {\r\n /** Resolve the host from local network interfaces. */\r\n provider: \"system\";\r\n /** Address family to return when scanning interfaces. */\r\n family?: \"IPv4\" | \"IPv6\";\r\n /** Specific interface to read (falls back to the first match when omitted). */\r\n interfaceName?: string | undefined;\r\n /** Allow the interface lookup to fail without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback host/IP when optional is true and no interface matches. */\r\n default?: string | undefined;\r\n });\r\n username?: string | undefined;\r\n password?: (string | ({\r\n /** Load the secret from an environment variable. */\r\n provider: \"env\";\r\n /** Name of the environment variable to read. */\r\n key: string;\r\n /** Allow the variable to be absent without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback value when optional is true and the variable is missing. */\r\n default?: string | undefined;\r\n } | {\r\n /** Load the secret from Infisical. */\r\n provider: \"infisical\";\r\n /** Secret folder path in Infisical, e.g. '/app/database'. */\r\n path: string;\r\n /** Secret key/name inside the given path. */\r\n key: string;\r\n /** Allow the secret to be absent without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Infisical environment override (defaults to current mode if omitted). */\r\n environment?: string | undefined;\r\n /** Optional Infisical project identifier when not using the default. */\r\n projectId?: string | undefined;\r\n /** Fallback value when the secret is missing and optional resolution is allowed. */\r\n default?: string | undefined;\r\n })) | undefined;\r\n clientId?: string | undefined;\r\n } | undefined;\r\n infra: {\r\n host: string | ({\r\n /** Use the supplied host or IP address. */\r\n provider: \"inline\";\r\n /** Host or IP address that should be used directly. */\r\n value: string;\r\n } | {\r\n /** Resolve the host from an external mapping. */\r\n provider: \"external\";\r\n /** Identifier used when resolving the host from HostResolverOptions. */\r\n key: string;\r\n /** Allow the external host to be missing without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback host when optional is true and the external entry is missing. */\r\n default?: string | undefined;\r\n } | {\r\n /** Resolve the host from local network interfaces. */\r\n provider: \"system\";\r\n /** Address family to return when scanning interfaces. */\r\n family?: \"IPv4\" | \"IPv6\";\r\n /** Specific interface to read (falls back to the first match when omitted). */\r\n interfaceName?: string | undefined;\r\n /** Allow the interface lookup to fail without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback host/IP when optional is true and no interface matches. */\r\n default?: string | undefined;\r\n });\r\n username?: string | undefined;\r\n password?: (string | ({\r\n /** Load the secret from an environment variable. */\r\n provider: \"env\";\r\n /** Name of the environment variable to read. */\r\n key: string;\r\n /** Allow the variable to be absent without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Fallback value when optional is true and the variable is missing. */\r\n default?: string | undefined;\r\n } | {\r\n /** Load the secret from Infisical. */\r\n provider: \"infisical\";\r\n /** Secret folder path in Infisical, e.g. '/app/database'. */\r\n path: string;\r\n /** Secret key/name inside the given path. */\r\n key: string;\r\n /** Allow the secret to be absent without throwing during resolution. */\r\n optional?: boolean | undefined;\r\n /** Infisical environment override (defaults to current mode if omitted). */\r\n environment?: string | undefined;\r\n /** Optional Infisical project identifier when not using the default. */\r\n projectId?: string | undefined;\r\n /** Fallback value when the secret is missing and optional resolution is allowed. */\r\n default?: string | undefined;\r\n })) | undefined;\r\n clientId?: string | undefined;\r\n };\r\n devops?: {\r\n provider?: string | undefined;\r\n organization: string;\r\n project?: string | undefined;\r\n } | undefined;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"base-path.js","sourceRoot":"","sources":["../src/base-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhE,MAAM,uBAAuB,GAAG,oBAAsF,CAAC;AAEvH,MAAM,YAAY,GAAG,CAAC,KAAa,EAAsB,EAAE;IACzD,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE7B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,SAAkB,EAAsB,EAAE;IAClE,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAErC,IAAI,OAAO,uBAAuB,KAAK,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AAC9C,CAAC,CAAC;AAQF,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAErG,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,WAAW,IAAI,SAAS,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IAE3E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC","sourcesContent":["import { fileURLToPath } from \"url\";\nimport { dirname, resolve, join } from \"path\";\nimport { existsSync } from \"fs\";\nimport { packageDirectorySync } from \"pkg-dir\";\n\nconst moduleDirectory = dirname(fileURLToPath(import.meta.url));\n\nconst packageDirectorySyncAny = packageDirectorySync as unknown as ((arg?: unknown) => string | undefined) | undefined;\n\nconst fallbackFind = (start: string): string | undefined => {\n let current = resolve(start);\n\n while (true) {\n if (existsSync(join(current, \"package.json\"))) {\n return current;\n }\n\n const parent = dirname(current);\n if (parent === current) {\n return undefined;\n }\n\n current = parent;\n }\n};\n\nconst resolveCandidate = (candidate?: string): string | undefined => {\n if (!candidate) return undefined;\n\n const directory = resolve(candidate);\n\n if (typeof packageDirectorySyncAny === \"function\") {\n try {\n const result = packageDirectorySyncAny({ cwd: directory });\n if (typeof result === \"string\") {\n return result;\n }\n } catch {\n // ignore – fall back to alternate invocation style\n }\n\n try {\n const result = packageDirectorySyncAny(directory);\n if (typeof result === \"string\") {\n return result;\n }\n } catch {\n // ignore – fall back to manual search\n }\n }\n\n return fallbackFind(directory) ?? directory;\n};\n\nexport interface ResolveBasePathOptions {\n start?: string;\n envBasePath?: string | null;\n cwd?: string;\n}\n\nexport function resolveBasePath(options: ResolveBasePathOptions = {}): string {\n const { start, envBasePath = process.env.UNS_BASE_PATH ?? undefined, cwd = process.cwd() } = options;\n\n const candidates = [start, envBasePath ?? undefined, cwd, moduleDirectory];\n\n for (const candidate of candidates) {\n const resolved = resolveCandidate(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n return resolve(moduleDirectory, \"..\");\n}\n\nexport const basePath = resolveBasePath();\n"]}
1
+ {"version":3,"file":"base-path.js","sourceRoot":"","sources":["../src/base-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhE,MAAM,uBAAuB,GAAG,oBAAsF,CAAC;AAEvH,MAAM,YAAY,GAAG,CAAC,KAAa,EAAsB,EAAE;IACzD,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE7B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,SAAkB,EAAsB,EAAE;IAClE,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAErC,IAAI,OAAO,uBAAuB,KAAK,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AAC9C,CAAC,CAAC;AAQF,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAErG,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,WAAW,IAAI,SAAS,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IAE3E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC","sourcesContent":["import { fileURLToPath } from \"url\";\r\nimport { dirname, resolve, join } from \"path\";\r\nimport { existsSync } from \"fs\";\r\nimport { packageDirectorySync } from \"pkg-dir\";\r\n\r\nconst moduleDirectory = dirname(fileURLToPath(import.meta.url));\r\n\r\nconst packageDirectorySyncAny = packageDirectorySync as unknown as ((arg?: unknown) => string | undefined) | undefined;\r\n\r\nconst fallbackFind = (start: string): string | undefined => {\r\n let current = resolve(start);\r\n\r\n while (true) {\r\n if (existsSync(join(current, \"package.json\"))) {\r\n return current;\r\n }\r\n\r\n const parent = dirname(current);\r\n if (parent === current) {\r\n return undefined;\r\n }\r\n\r\n current = parent;\r\n }\r\n};\r\n\r\nconst resolveCandidate = (candidate?: string): string | undefined => {\r\n if (!candidate) return undefined;\r\n\r\n const directory = resolve(candidate);\r\n\r\n if (typeof packageDirectorySyncAny === \"function\") {\r\n try {\r\n const result = packageDirectorySyncAny({ cwd: directory });\r\n if (typeof result === \"string\") {\r\n return result;\r\n }\r\n } catch {\r\n // ignore – fall back to alternate invocation style\r\n }\r\n\r\n try {\r\n const result = packageDirectorySyncAny(directory);\r\n if (typeof result === \"string\") {\r\n return result;\r\n }\r\n } catch {\r\n // ignore – fall back to manual search\r\n }\r\n }\r\n\r\n return fallbackFind(directory) ?? directory;\r\n};\r\n\r\nexport interface ResolveBasePathOptions {\r\n start?: string;\r\n envBasePath?: string | null;\r\n cwd?: string;\r\n}\r\n\r\nexport function resolveBasePath(options: ResolveBasePathOptions = {}): string {\r\n const { start, envBasePath = process.env.UNS_BASE_PATH ?? undefined, cwd = process.cwd() } = options;\r\n\r\n const candidates = [start, envBasePath ?? undefined, cwd, moduleDirectory];\r\n\r\n for (const candidate of candidates) {\r\n const resolved = resolveCandidate(candidate);\r\n if (resolved) {\r\n return resolved;\r\n }\r\n }\r\n\r\n return resolve(moduleDirectory, \"..\");\r\n}\r\n\r\nexport const basePath = resolveBasePath();\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"project.config.extension.js","sourceRoot":"","sources":["../../src/config/project.config.extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kCAAkC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\n// Exported constant in PascalCase\nexport const projectExtrasSchema = z.object({});\n\nexport type ProjectExtras = z.infer<typeof projectExtrasSchema>;\n"]}
1
+ {"version":3,"file":"project.config.extension.js","sourceRoot":"","sources":["../../src/config/project.config.extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kCAAkC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\r\n\r\n// Exported constant in PascalCase\r\nexport const projectExtrasSchema = z.object({});\r\n\r\nexport type ProjectExtras = z.infer<typeof projectExtrasSchema>;\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAGrB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,UAAU,GAAG,CAAC,OAA+B,EAAW,EAAE,CAC9D,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAEzE,MAAM,OAAO,UAAU;IACb,MAAM,CAAC,QAAQ,CAAa;IAC5B,MAAM,CAAC,OAAO,CAAU;IACxB,MAAM,CAAC,aAAa,CAAqB;IAEjD,MAAM,CAAC,aAAa,CAAC,UAAmB;QACtC,MAAM,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC,CAAC,wBAAwB;YACtE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,GAAG;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,UAAmB,EACnB,OAA+B;QAE/B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,OAA+B;QAE/B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,UAAU;QACf,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,yBAAyB,EAAE,CAAC;IAC9B,CAAC;CACF","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { AppConfig } from \"./config/app-config.js\";\nimport {\n clearSecretResolverCaches,\n resolveConfigSecrets,\n type ResolvedAppConfig,\n type SecretResolverOptions,\n} from \"./uns-config/secret-resolver.js\";\n\nconst hasOptions = (options?: SecretResolverOptions): boolean =>\n !!options && Object.values(options).some(value => value !== undefined);\n\nexport class ConfigFile {\n private static rawCache?: AppConfig;\n private static rawPath?: string;\n private static resolvedCache?: ResolvedAppConfig;\n\n static loadRawConfig(configPath?: string): AppConfig {\n const p = configPath ?? path.resolve(process.cwd(), \"config.json\");\n if (!this.rawCache || this.rawPath !== p) {\n const raw = fs.readFileSync(p, \"utf8\");\n this.rawCache = JSON.parse(raw) as AppConfig; // no runtime validation\n this.rawPath = p;\n this.resolvedCache = undefined;\n }\n return this.rawCache;\n }\n\n static get(): AppConfig {\n if (!this.rawCache) {\n throw new Error(\"Config not loaded. Call ConfigFile.loadConfig() first.\");\n }\n return this.rawCache;\n }\n\n static async loadConfig(\n configPath?: string,\n options?: SecretResolverOptions\n ): Promise<ResolvedAppConfig> {\n const raw = this.loadRawConfig(configPath);\n\n if (!this.resolvedCache) {\n this.resolvedCache = await resolveConfigSecrets(raw, options);\n }\n\n return this.resolvedCache;\n }\n\n static async loadResolvedConfig(\n options?: SecretResolverOptions\n ): Promise<ResolvedAppConfig> {\n return this.loadConfig(undefined, options);\n }\n\n static clearCache(): void {\n this.rawCache = undefined;\n this.resolvedCache = undefined;\n this.rawPath = undefined;\n clearSecretResolverCaches();\n }\n}\n"]}
1
+ {"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAGrB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,UAAU,GAAG,CAAC,OAA+B,EAAW,EAAE,CAC9D,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAEzE,MAAM,OAAO,UAAU;IACb,MAAM,CAAC,QAAQ,CAAa;IAC5B,MAAM,CAAC,OAAO,CAAU;IACxB,MAAM,CAAC,aAAa,CAAqB;IAEjD,MAAM,CAAC,aAAa,CAAC,UAAmB;QACtC,MAAM,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC,CAAC,wBAAwB;YACtE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,GAAG;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,UAAmB,EACnB,OAA+B;QAE/B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,OAA+B;QAE/B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,UAAU;QACf,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,yBAAyB,EAAE,CAAC;IAC9B,CAAC;CACF","sourcesContent":["import fs from \"node:fs\";\r\nimport path from \"node:path\";\r\nimport type { AppConfig } from \"./config/app-config.js\";\r\nimport {\r\n clearSecretResolverCaches,\r\n resolveConfigSecrets,\r\n type ResolvedAppConfig,\r\n type SecretResolverOptions,\r\n} from \"./uns-config/secret-resolver.js\";\r\n\r\nconst hasOptions = (options?: SecretResolverOptions): boolean =>\r\n !!options && Object.values(options).some(value => value !== undefined);\r\n\r\nexport class ConfigFile {\r\n private static rawCache?: AppConfig;\r\n private static rawPath?: string;\r\n private static resolvedCache?: ResolvedAppConfig;\r\n\r\n static loadRawConfig(configPath?: string): AppConfig {\r\n const p = configPath ?? path.resolve(process.cwd(), \"config.json\");\r\n if (!this.rawCache || this.rawPath !== p) {\r\n const raw = fs.readFileSync(p, \"utf8\");\r\n this.rawCache = JSON.parse(raw) as AppConfig; // no runtime validation\r\n this.rawPath = p;\r\n this.resolvedCache = undefined;\r\n }\r\n return this.rawCache;\r\n }\r\n\r\n static get(): AppConfig {\r\n if (!this.rawCache) {\r\n throw new Error(\"Config not loaded. Call ConfigFile.loadConfig() first.\");\r\n }\r\n return this.rawCache;\r\n }\r\n\r\n static async loadConfig(\r\n configPath?: string,\r\n options?: SecretResolverOptions\r\n ): Promise<ResolvedAppConfig> {\r\n const raw = this.loadRawConfig(configPath);\r\n\r\n if (!this.resolvedCache) {\r\n this.resolvedCache = await resolveConfigSecrets(raw, options);\r\n }\r\n\r\n return this.resolvedCache;\r\n }\r\n\r\n static async loadResolvedConfig(\r\n options?: SecretResolverOptions\r\n ): Promise<ResolvedAppConfig> {\r\n return this.loadConfig(undefined, options);\r\n }\r\n\r\n static clearCache(): void {\r\n this.rawCache = undefined;\r\n this.resolvedCache = undefined;\r\n this.rawPath = undefined;\r\n clearSecretResolverCaches();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/graphql/schema.ts"],"names":[],"mappings":"AA0KA,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,+BAAW,CAAA;IACX,iCAAa,CAAA;IACb,mCAAe,CAAA;AACjB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAqBD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,sCAAuB,CAAA;IACvB,4CAA6B,CAAA;IAC7B,8BAAe,CAAA;AACjB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB","sourcesContent":["import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql';\nexport 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 Timestamp: { input: any; output: any; }\n};\n\nexport type InitUnsTopic = {\n topic?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type InsertUnsNode = {\n apiDescription?: InputMaybe<Scalars['String']['input']>;\n apiEndpoint?: InputMaybe<Scalars['String']['input']>;\n apiMethod?: InputMaybe<Scalars['String']['input']>;\n attributeNeedsPersistance?: InputMaybe<Scalars['Boolean']['input']>;\n attributeTags?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;\n attributeTimestamp?: InputMaybe<Scalars['Timestamp']['input']>;\n attributeType?: InputMaybe<UnsAttributeType>;\n description?: InputMaybe<Scalars['String']['input']>;\n fullTopic?: InputMaybe<Scalars['String']['input']>;\n parent: Scalars['Int']['input'];\n processName?: InputMaybe<Scalars['String']['input']>;\n processVersion?: InputMaybe<Scalars['String']['input']>;\n type?: InputMaybe<UnsNodeType>;\n unsNode?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Mutation = {\n __typename?: 'Mutation';\n AddUnsNode?: Maybe<Scalars['Int']['output']>;\n DeleteRttNode?: Maybe<Scalars['Boolean']['output']>;\n DeleteUnsNode?: Maybe<Scalars['Boolean']['output']>;\n DeployRttNode?: Maybe<Scalars['Boolean']['output']>;\n ModifyUnsNode?: Maybe<Scalars['Boolean']['output']>;\n /** Purge all nodes that are older the maxAge in hours */\n PurgeOldNodes?: Maybe<Scalars['Boolean']['output']>;\n SetRttNodeConfig?: Maybe<Scalars['Boolean']['output']>;\n StartRttNode?: Maybe<Scalars['Boolean']['output']>;\n StopRttNode?: Maybe<Scalars['Boolean']['output']>;\n};\n\n\nexport type MutationAddUnsNodeArgs = {\n node?: InputMaybe<InsertUnsNode>;\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 MutationModifyUnsNodeArgs = {\n id?: InputMaybe<Scalars['Int']['input']>;\n node?: InputMaybe<UpdateUnsNode>;\n};\n\n\nexport type MutationPurgeOldNodesArgs = {\n maxAge?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MutationSetRttNodeConfigArgs = {\n configuration?: InputMaybe<Scalars['String']['input']>;\n rttNode?: InputMaybe<Scalars['String']['input']>;\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 GetRepositories?: Maybe<Array<Maybe<Repository>>>;\n GetRttNodeConfig?: Maybe<Scalars['String']['output']>;\n GetRttNodes?: Maybe<Array<Maybe<RttNode>>>;\n GetTags?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\n GetTreeStructure?: Maybe<Array<Maybe<TreeStructure>>>;\n GetUnsNodes?: Maybe<Array<Maybe<UnsNode>>>;\n};\n\n\n/** name: uns-datahub */\nexport type QueryGetRttNodeConfigArgs = {\n rttNode?: InputMaybe<Scalars['String']['input']>;\n};\n\n\n/** name: uns-datahub */\nexport type QueryGetTreeStructureArgs = {\n attributeTags?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;\n};\n\nexport type Repository = {\n __typename?: 'Repository';\n name?: Maybe<Scalars['String']['output']>;\n tags?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\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 lastErrLog?: 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 topics?: Maybe<Array<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 apiDescription?: Maybe<Scalars['String']['output']>;\n apiEndpoint?: Maybe<Scalars['String']['output']>;\n apiMethod?: Maybe<Scalars['String']['output']>;\n attributeNeedsPersistance?: Maybe<Scalars['Boolean']['output']>;\n attributeTags?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\n attributeTimestamp?: Maybe<Scalars['Timestamp']['output']>;\n attributeType?: Maybe<UnsAttributeType>;\n children?: Maybe<Array<Maybe<TreeStructure>>>;\n description?: Maybe<Scalars['String']['output']>;\n fullTopic?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['Int']['output']>;\n parent?: Maybe<Scalars['Int']['output']>;\n processName?: Maybe<Scalars['String']['output']>;\n processVersion?: Maybe<Scalars['String']['output']>;\n type?: Maybe<UnsNodeType>;\n unsNode?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum UnsAttributeType {\n Api = 'Api',\n Data = 'Data',\n Table = 'Table'\n}\n\nexport type UnsNode = {\n __typename?: 'UnsNode';\n apiDescription?: Maybe<Scalars['String']['output']>;\n apiEndpoint?: Maybe<Scalars['String']['output']>;\n apiMethod?: Maybe<Scalars['String']['output']>;\n attributeNeedsPersistance?: Maybe<Scalars['Boolean']['output']>;\n attributeTags?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\n attributeTimestamp?: Maybe<Scalars['Timestamp']['output']>;\n attributeType?: Maybe<UnsAttributeType>;\n description?: Maybe<Scalars['String']['output']>;\n fullTopic?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['Int']['output']>;\n parent?: Maybe<Scalars['Int']['output']>;\n processName?: Maybe<Scalars['String']['output']>;\n processVersion?: Maybe<Scalars['String']['output']>;\n type?: Maybe<UnsNodeType>;\n unsNode?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum UnsNodeType {\n Attribute = 'Attribute',\n DynamicTopic = 'DynamicTopic',\n Topic = 'Topic'\n}\n\nexport type UpdateUnsNode = {\n apiDescription?: InputMaybe<Scalars['String']['input']>;\n apiEndpoint?: InputMaybe<Scalars['String']['input']>;\n apiMethod?: InputMaybe<Scalars['String']['input']>;\n attributeNeedsPersistance?: InputMaybe<Scalars['Boolean']['input']>;\n attributeTags?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;\n attributeTimestamp?: InputMaybe<Scalars['Timestamp']['input']>;\n attributeType?: InputMaybe<UnsAttributeType>;\n description?: InputMaybe<Scalars['String']['input']>;\n fullTopic?: InputMaybe<Scalars['String']['input']>;\n parent?: InputMaybe<Scalars['Int']['input']>;\n processName?: InputMaybe<Scalars['String']['input']>;\n processVersion?: InputMaybe<Scalars['String']['input']>;\n type?: InputMaybe<UnsNodeType>;\n unsNode?: InputMaybe<Scalars['String']['input']>;\n};\n\n\n\nexport type ResolverTypeWrapper<T> = Promise<T> | T;\n\n\nexport type ResolverWithResolve<TResult, TParent, TContext, TArgs> = {\n resolve: ResolverFn<TResult, TParent, TContext, TArgs>;\n};\nexport type Resolver<TResult, TParent = {}, TContext = {}, TArgs = {}> = ResolverFn<TResult, TParent, TContext, TArgs> | ResolverWithResolve<TResult, TParent, TContext, TArgs>;\n\nexport type ResolverFn<TResult, TParent, TContext, TArgs> = (\n parent: TParent,\n args: TArgs,\n context: TContext,\n info: GraphQLResolveInfo\n) => Promise<TResult> | TResult;\n\nexport type SubscriptionSubscribeFn<TResult, TParent, TContext, TArgs> = (\n parent: TParent,\n args: TArgs,\n context: TContext,\n info: GraphQLResolveInfo\n) => AsyncIterable<TResult> | Promise<AsyncIterable<TResult>>;\n\nexport type SubscriptionResolveFn<TResult, TParent, TContext, TArgs> = (\n parent: TParent,\n args: TArgs,\n context: TContext,\n info: GraphQLResolveInfo\n) => TResult | Promise<TResult>;\n\nexport interface SubscriptionSubscriberObject<TResult, TKey extends string, TParent, TContext, TArgs> {\n subscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>;\n resolve?: SubscriptionResolveFn<TResult, { [key in TKey]: TResult }, TContext, TArgs>;\n}\n\nexport interface SubscriptionResolverObject<TResult, TParent, TContext, TArgs> {\n subscribe: SubscriptionSubscribeFn<any, TParent, TContext, TArgs>;\n resolve: SubscriptionResolveFn<TResult, any, TContext, TArgs>;\n}\n\nexport type SubscriptionObject<TResult, TKey extends string, TParent, TContext, TArgs> =\n | SubscriptionSubscriberObject<TResult, TKey, TParent, TContext, TArgs>\n | SubscriptionResolverObject<TResult, TParent, TContext, TArgs>;\n\nexport type SubscriptionResolver<TResult, TKey extends string, TParent = {}, TContext = {}, TArgs = {}> =\n | ((...args: any[]) => SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>)\n | SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>;\n\nexport type TypeResolveFn<TTypes, TParent = {}, TContext = {}> = (\n parent: TParent,\n context: TContext,\n info: GraphQLResolveInfo\n) => Maybe<TTypes> | Promise<Maybe<TTypes>>;\n\nexport type IsTypeOfResolverFn<T = {}, TContext = {}> = (obj: T, context: TContext, info: GraphQLResolveInfo) => boolean | Promise<boolean>;\n\nexport type NextResolverFn<T> = () => Promise<T>;\n\nexport type DirectiveResolverFn<TResult = {}, TParent = {}, TContext = {}, TArgs = {}> = (\n next: NextResolverFn<TResult>,\n parent: TParent,\n args: TArgs,\n context: TContext,\n info: GraphQLResolveInfo\n) => TResult | Promise<TResult>;\n\n\n\n/** Mapping between all available schema types and the resolvers types */\nexport type ResolversTypes = {\n Boolean: ResolverTypeWrapper<Scalars['Boolean']['output']>;\n Date: ResolverTypeWrapper<Scalars['Date']['output']>;\n InitUnsTopic: InitUnsTopic;\n InsertUnsNode: InsertUnsNode;\n Int: ResolverTypeWrapper<Scalars['Int']['output']>;\n Mutation: ResolverTypeWrapper<{}>;\n Query: ResolverTypeWrapper<{}>;\n Repository: ResolverTypeWrapper<Repository>;\n RttNode: ResolverTypeWrapper<RttNode>;\n String: ResolverTypeWrapper<Scalars['String']['output']>;\n Timestamp: ResolverTypeWrapper<Scalars['Timestamp']['output']>;\n TreeStructure: ResolverTypeWrapper<TreeStructure>;\n UnsAttributeType: UnsAttributeType;\n UnsNode: ResolverTypeWrapper<UnsNode>;\n UnsNodeType: UnsNodeType;\n UpdateUnsNode: UpdateUnsNode;\n};\n\n/** Mapping between all available schema types and the resolvers parents */\nexport type ResolversParentTypes = {\n Boolean: Scalars['Boolean']['output'];\n Date: Scalars['Date']['output'];\n InitUnsTopic: InitUnsTopic;\n InsertUnsNode: InsertUnsNode;\n Int: Scalars['Int']['output'];\n Mutation: {};\n Query: {};\n Repository: Repository;\n RttNode: RttNode;\n String: Scalars['String']['output'];\n Timestamp: Scalars['Timestamp']['output'];\n TreeStructure: TreeStructure;\n UnsNode: UnsNode;\n UpdateUnsNode: UpdateUnsNode;\n};\n\nexport interface DateScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Date'], any> {\n name: 'Date';\n}\n\nexport type MutationResolvers<ContextType = any, ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation']> = {\n AddUnsNode?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType, Partial<MutationAddUnsNodeArgs>>;\n DeleteRttNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationDeleteRttNodeArgs>>;\n DeleteUnsNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationDeleteUnsNodeArgs>>;\n DeployRttNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationDeployRttNodeArgs>>;\n ModifyUnsNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationModifyUnsNodeArgs>>;\n PurgeOldNodes?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationPurgeOldNodesArgs>>;\n SetRttNodeConfig?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationSetRttNodeConfigArgs>>;\n StartRttNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationStartRttNodeArgs>>;\n StopRttNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationStopRttNodeArgs>>;\n};\n\nexport type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = {\n GetRepositories?: Resolver<Maybe<Array<Maybe<ResolversTypes['Repository']>>>, ParentType, ContextType>;\n GetRttNodeConfig?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType, Partial<QueryGetRttNodeConfigArgs>>;\n GetRttNodes?: Resolver<Maybe<Array<Maybe<ResolversTypes['RttNode']>>>, ParentType, ContextType>;\n GetTags?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\n GetTreeStructure?: Resolver<Maybe<Array<Maybe<ResolversTypes['TreeStructure']>>>, ParentType, ContextType, Partial<QueryGetTreeStructureArgs>>;\n GetUnsNodes?: Resolver<Maybe<Array<Maybe<ResolversTypes['UnsNode']>>>, ParentType, ContextType>;\n};\n\nexport type RepositoryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Repository'] = ResolversParentTypes['Repository']> = {\n name?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n tags?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\n __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;\n};\n\nexport type RttNodeResolvers<ContextType = any, ParentType extends ResolversParentTypes['RttNode'] = ResolversParentTypes['RttNode']> = {\n author?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n deployedVersions?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\n description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n lastErrLog?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n lastLog?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n latestDeployedVersion?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n memory?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\n pid?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\n restarts?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\n rttNode?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n runningVersion?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n status?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n topics?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\n uptime?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\n version?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;\n};\n\nexport interface TimestampScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Timestamp'], any> {\n name: 'Timestamp';\n}\n\nexport type TreeStructureResolvers<ContextType = any, ParentType extends ResolversParentTypes['TreeStructure'] = ResolversParentTypes['TreeStructure']> = {\n apiDescription?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n apiEndpoint?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n apiMethod?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n attributeNeedsPersistance?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;\n attributeTags?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\n attributeTimestamp?: Resolver<Maybe<ResolversTypes['Timestamp']>, ParentType, ContextType>;\n attributeType?: Resolver<Maybe<ResolversTypes['UnsAttributeType']>, ParentType, ContextType>;\n children?: Resolver<Maybe<Array<Maybe<ResolversTypes['TreeStructure']>>>, ParentType, ContextType>;\n description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n fullTopic?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n id?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\n parent?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\n processName?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n processVersion?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n type?: Resolver<Maybe<ResolversTypes['UnsNodeType']>, ParentType, ContextType>;\n unsNode?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;\n};\n\nexport type UnsNodeResolvers<ContextType = any, ParentType extends ResolversParentTypes['UnsNode'] = ResolversParentTypes['UnsNode']> = {\n apiDescription?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n apiEndpoint?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n apiMethod?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n attributeNeedsPersistance?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;\n attributeTags?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\n attributeTimestamp?: Resolver<Maybe<ResolversTypes['Timestamp']>, ParentType, ContextType>;\n attributeType?: Resolver<Maybe<ResolversTypes['UnsAttributeType']>, ParentType, ContextType>;\n description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n fullTopic?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n id?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\n parent?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\n processName?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n processVersion?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n type?: Resolver<Maybe<ResolversTypes['UnsNodeType']>, ParentType, ContextType>;\n unsNode?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\n __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;\n};\n\nexport type Resolvers<ContextType = any> = {\n Date?: GraphQLScalarType;\n Mutation?: MutationResolvers<ContextType>;\n Query?: QueryResolvers<ContextType>;\n Repository?: RepositoryResolvers<ContextType>;\n RttNode?: RttNodeResolvers<ContextType>;\n Timestamp?: GraphQLScalarType;\n TreeStructure?: TreeStructureResolvers<ContextType>;\n UnsNode?: UnsNodeResolvers<ContextType>;\n};\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/graphql/schema.ts"],"names":[],"mappings":"AA0KA,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,+BAAW,CAAA;IACX,iCAAa,CAAA;IACb,mCAAe,CAAA;AACjB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAqBD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,sCAAuB,CAAA;IACvB,4CAA6B,CAAA;IAC7B,8BAAe,CAAA;AACjB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB","sourcesContent":["import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql';\r\nexport 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 Timestamp: { input: any; output: any; }\r\n};\r\n\r\nexport type InitUnsTopic = {\r\n topic?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\nexport type InsertUnsNode = {\r\n apiDescription?: InputMaybe<Scalars['String']['input']>;\r\n apiEndpoint?: InputMaybe<Scalars['String']['input']>;\r\n apiMethod?: InputMaybe<Scalars['String']['input']>;\r\n attributeNeedsPersistance?: InputMaybe<Scalars['Boolean']['input']>;\r\n attributeTags?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;\r\n attributeTimestamp?: InputMaybe<Scalars['Timestamp']['input']>;\r\n attributeType?: InputMaybe<UnsAttributeType>;\r\n description?: InputMaybe<Scalars['String']['input']>;\r\n fullTopic?: InputMaybe<Scalars['String']['input']>;\r\n parent: Scalars['Int']['input'];\r\n processName?: InputMaybe<Scalars['String']['input']>;\r\n processVersion?: InputMaybe<Scalars['String']['input']>;\r\n type?: InputMaybe<UnsNodeType>;\r\n unsNode?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\nexport type Mutation = {\r\n __typename?: 'Mutation';\r\n AddUnsNode?: Maybe<Scalars['Int']['output']>;\r\n DeleteRttNode?: Maybe<Scalars['Boolean']['output']>;\r\n DeleteUnsNode?: Maybe<Scalars['Boolean']['output']>;\r\n DeployRttNode?: Maybe<Scalars['Boolean']['output']>;\r\n ModifyUnsNode?: Maybe<Scalars['Boolean']['output']>;\r\n /** Purge all nodes that are older the maxAge in hours */\r\n PurgeOldNodes?: Maybe<Scalars['Boolean']['output']>;\r\n SetRttNodeConfig?: 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 MutationAddUnsNodeArgs = {\r\n node?: InputMaybe<InsertUnsNode>;\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 MutationModifyUnsNodeArgs = {\r\n id?: InputMaybe<Scalars['Int']['input']>;\r\n node?: InputMaybe<UpdateUnsNode>;\r\n};\r\n\r\n\r\nexport type MutationPurgeOldNodesArgs = {\r\n maxAge?: InputMaybe<Scalars['Int']['input']>;\r\n};\r\n\r\n\r\nexport type MutationSetRttNodeConfigArgs = {\r\n configuration?: InputMaybe<Scalars['String']['input']>;\r\n rttNode?: InputMaybe<Scalars['String']['input']>;\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 GetRepositories?: Maybe<Array<Maybe<Repository>>>;\r\n GetRttNodeConfig?: Maybe<Scalars['String']['output']>;\r\n GetRttNodes?: Maybe<Array<Maybe<RttNode>>>;\r\n GetTags?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\r\n GetTreeStructure?: Maybe<Array<Maybe<TreeStructure>>>;\r\n GetUnsNodes?: Maybe<Array<Maybe<UnsNode>>>;\r\n};\r\n\r\n\r\n/** name: uns-datahub */\r\nexport type QueryGetRttNodeConfigArgs = {\r\n rttNode?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\n\r\n/** name: uns-datahub */\r\nexport type QueryGetTreeStructureArgs = {\r\n attributeTags?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;\r\n};\r\n\r\nexport type Repository = {\r\n __typename?: 'Repository';\r\n name?: Maybe<Scalars['String']['output']>;\r\n tags?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\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 lastErrLog?: 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 topics?: Maybe<Array<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 apiDescription?: Maybe<Scalars['String']['output']>;\r\n apiEndpoint?: Maybe<Scalars['String']['output']>;\r\n apiMethod?: Maybe<Scalars['String']['output']>;\r\n attributeNeedsPersistance?: Maybe<Scalars['Boolean']['output']>;\r\n attributeTags?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\r\n attributeTimestamp?: Maybe<Scalars['Timestamp']['output']>;\r\n attributeType?: Maybe<UnsAttributeType>;\r\n children?: Maybe<Array<Maybe<TreeStructure>>>;\r\n description?: Maybe<Scalars['String']['output']>;\r\n fullTopic?: Maybe<Scalars['String']['output']>;\r\n id?: Maybe<Scalars['Int']['output']>;\r\n parent?: Maybe<Scalars['Int']['output']>;\r\n processName?: Maybe<Scalars['String']['output']>;\r\n processVersion?: Maybe<Scalars['String']['output']>;\r\n type?: Maybe<UnsNodeType>;\r\n unsNode?: Maybe<Scalars['String']['output']>;\r\n};\r\n\r\nexport enum UnsAttributeType {\r\n Api = 'Api',\r\n Data = 'Data',\r\n Table = 'Table'\r\n}\r\n\r\nexport type UnsNode = {\r\n __typename?: 'UnsNode';\r\n apiDescription?: Maybe<Scalars['String']['output']>;\r\n apiEndpoint?: Maybe<Scalars['String']['output']>;\r\n apiMethod?: Maybe<Scalars['String']['output']>;\r\n attributeNeedsPersistance?: Maybe<Scalars['Boolean']['output']>;\r\n attributeTags?: Maybe<Array<Maybe<Scalars['String']['output']>>>;\r\n attributeTimestamp?: Maybe<Scalars['Timestamp']['output']>;\r\n attributeType?: Maybe<UnsAttributeType>;\r\n description?: Maybe<Scalars['String']['output']>;\r\n fullTopic?: Maybe<Scalars['String']['output']>;\r\n id?: Maybe<Scalars['Int']['output']>;\r\n parent?: Maybe<Scalars['Int']['output']>;\r\n processName?: Maybe<Scalars['String']['output']>;\r\n processVersion?: Maybe<Scalars['String']['output']>;\r\n type?: Maybe<UnsNodeType>;\r\n unsNode?: Maybe<Scalars['String']['output']>;\r\n};\r\n\r\nexport enum UnsNodeType {\r\n Attribute = 'Attribute',\r\n DynamicTopic = 'DynamicTopic',\r\n Topic = 'Topic'\r\n}\r\n\r\nexport type UpdateUnsNode = {\r\n apiDescription?: InputMaybe<Scalars['String']['input']>;\r\n apiEndpoint?: InputMaybe<Scalars['String']['input']>;\r\n apiMethod?: InputMaybe<Scalars['String']['input']>;\r\n attributeNeedsPersistance?: InputMaybe<Scalars['Boolean']['input']>;\r\n attributeTags?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;\r\n attributeTimestamp?: InputMaybe<Scalars['Timestamp']['input']>;\r\n attributeType?: InputMaybe<UnsAttributeType>;\r\n description?: InputMaybe<Scalars['String']['input']>;\r\n fullTopic?: InputMaybe<Scalars['String']['input']>;\r\n parent?: InputMaybe<Scalars['Int']['input']>;\r\n processName?: InputMaybe<Scalars['String']['input']>;\r\n processVersion?: InputMaybe<Scalars['String']['input']>;\r\n type?: InputMaybe<UnsNodeType>;\r\n unsNode?: InputMaybe<Scalars['String']['input']>;\r\n};\r\n\r\n\r\n\r\nexport type ResolverTypeWrapper<T> = Promise<T> | T;\r\n\r\n\r\nexport type ResolverWithResolve<TResult, TParent, TContext, TArgs> = {\r\n resolve: ResolverFn<TResult, TParent, TContext, TArgs>;\r\n};\r\nexport type Resolver<TResult, TParent = {}, TContext = {}, TArgs = {}> = ResolverFn<TResult, TParent, TContext, TArgs> | ResolverWithResolve<TResult, TParent, TContext, TArgs>;\r\n\r\nexport type ResolverFn<TResult, TParent, TContext, TArgs> = (\r\n parent: TParent,\r\n args: TArgs,\r\n context: TContext,\r\n info: GraphQLResolveInfo\r\n) => Promise<TResult> | TResult;\r\n\r\nexport type SubscriptionSubscribeFn<TResult, TParent, TContext, TArgs> = (\r\n parent: TParent,\r\n args: TArgs,\r\n context: TContext,\r\n info: GraphQLResolveInfo\r\n) => AsyncIterable<TResult> | Promise<AsyncIterable<TResult>>;\r\n\r\nexport type SubscriptionResolveFn<TResult, TParent, TContext, TArgs> = (\r\n parent: TParent,\r\n args: TArgs,\r\n context: TContext,\r\n info: GraphQLResolveInfo\r\n) => TResult | Promise<TResult>;\r\n\r\nexport interface SubscriptionSubscriberObject<TResult, TKey extends string, TParent, TContext, TArgs> {\r\n subscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>;\r\n resolve?: SubscriptionResolveFn<TResult, { [key in TKey]: TResult }, TContext, TArgs>;\r\n}\r\n\r\nexport interface SubscriptionResolverObject<TResult, TParent, TContext, TArgs> {\r\n subscribe: SubscriptionSubscribeFn<any, TParent, TContext, TArgs>;\r\n resolve: SubscriptionResolveFn<TResult, any, TContext, TArgs>;\r\n}\r\n\r\nexport type SubscriptionObject<TResult, TKey extends string, TParent, TContext, TArgs> =\r\n | SubscriptionSubscriberObject<TResult, TKey, TParent, TContext, TArgs>\r\n | SubscriptionResolverObject<TResult, TParent, TContext, TArgs>;\r\n\r\nexport type SubscriptionResolver<TResult, TKey extends string, TParent = {}, TContext = {}, TArgs = {}> =\r\n | ((...args: any[]) => SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>)\r\n | SubscriptionObject<TResult, TKey, TParent, TContext, TArgs>;\r\n\r\nexport type TypeResolveFn<TTypes, TParent = {}, TContext = {}> = (\r\n parent: TParent,\r\n context: TContext,\r\n info: GraphQLResolveInfo\r\n) => Maybe<TTypes> | Promise<Maybe<TTypes>>;\r\n\r\nexport type IsTypeOfResolverFn<T = {}, TContext = {}> = (obj: T, context: TContext, info: GraphQLResolveInfo) => boolean | Promise<boolean>;\r\n\r\nexport type NextResolverFn<T> = () => Promise<T>;\r\n\r\nexport type DirectiveResolverFn<TResult = {}, TParent = {}, TContext = {}, TArgs = {}> = (\r\n next: NextResolverFn<TResult>,\r\n parent: TParent,\r\n args: TArgs,\r\n context: TContext,\r\n info: GraphQLResolveInfo\r\n) => TResult | Promise<TResult>;\r\n\r\n\r\n\r\n/** Mapping between all available schema types and the resolvers types */\r\nexport type ResolversTypes = {\r\n Boolean: ResolverTypeWrapper<Scalars['Boolean']['output']>;\r\n Date: ResolverTypeWrapper<Scalars['Date']['output']>;\r\n InitUnsTopic: InitUnsTopic;\r\n InsertUnsNode: InsertUnsNode;\r\n Int: ResolverTypeWrapper<Scalars['Int']['output']>;\r\n Mutation: ResolverTypeWrapper<{}>;\r\n Query: ResolverTypeWrapper<{}>;\r\n Repository: ResolverTypeWrapper<Repository>;\r\n RttNode: ResolverTypeWrapper<RttNode>;\r\n String: ResolverTypeWrapper<Scalars['String']['output']>;\r\n Timestamp: ResolverTypeWrapper<Scalars['Timestamp']['output']>;\r\n TreeStructure: ResolverTypeWrapper<TreeStructure>;\r\n UnsAttributeType: UnsAttributeType;\r\n UnsNode: ResolverTypeWrapper<UnsNode>;\r\n UnsNodeType: UnsNodeType;\r\n UpdateUnsNode: UpdateUnsNode;\r\n};\r\n\r\n/** Mapping between all available schema types and the resolvers parents */\r\nexport type ResolversParentTypes = {\r\n Boolean: Scalars['Boolean']['output'];\r\n Date: Scalars['Date']['output'];\r\n InitUnsTopic: InitUnsTopic;\r\n InsertUnsNode: InsertUnsNode;\r\n Int: Scalars['Int']['output'];\r\n Mutation: {};\r\n Query: {};\r\n Repository: Repository;\r\n RttNode: RttNode;\r\n String: Scalars['String']['output'];\r\n Timestamp: Scalars['Timestamp']['output'];\r\n TreeStructure: TreeStructure;\r\n UnsNode: UnsNode;\r\n UpdateUnsNode: UpdateUnsNode;\r\n};\r\n\r\nexport interface DateScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Date'], any> {\r\n name: 'Date';\r\n}\r\n\r\nexport type MutationResolvers<ContextType = any, ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation']> = {\r\n AddUnsNode?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType, Partial<MutationAddUnsNodeArgs>>;\r\n DeleteRttNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationDeleteRttNodeArgs>>;\r\n DeleteUnsNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationDeleteUnsNodeArgs>>;\r\n DeployRttNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationDeployRttNodeArgs>>;\r\n ModifyUnsNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationModifyUnsNodeArgs>>;\r\n PurgeOldNodes?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationPurgeOldNodesArgs>>;\r\n SetRttNodeConfig?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationSetRttNodeConfigArgs>>;\r\n StartRttNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationStartRttNodeArgs>>;\r\n StopRttNode?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<MutationStopRttNodeArgs>>;\r\n};\r\n\r\nexport type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = {\r\n GetRepositories?: Resolver<Maybe<Array<Maybe<ResolversTypes['Repository']>>>, ParentType, ContextType>;\r\n GetRttNodeConfig?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType, Partial<QueryGetRttNodeConfigArgs>>;\r\n GetRttNodes?: Resolver<Maybe<Array<Maybe<ResolversTypes['RttNode']>>>, ParentType, ContextType>;\r\n GetTags?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\r\n GetTreeStructure?: Resolver<Maybe<Array<Maybe<ResolversTypes['TreeStructure']>>>, ParentType, ContextType, Partial<QueryGetTreeStructureArgs>>;\r\n GetUnsNodes?: Resolver<Maybe<Array<Maybe<ResolversTypes['UnsNode']>>>, ParentType, ContextType>;\r\n};\r\n\r\nexport type RepositoryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Repository'] = ResolversParentTypes['Repository']> = {\r\n name?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n tags?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\r\n __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;\r\n};\r\n\r\nexport type RttNodeResolvers<ContextType = any, ParentType extends ResolversParentTypes['RttNode'] = ResolversParentTypes['RttNode']> = {\r\n author?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n deployedVersions?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\r\n description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n lastErrLog?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n lastLog?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n latestDeployedVersion?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n memory?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\r\n pid?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\r\n restarts?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\r\n rttNode?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n runningVersion?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n status?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n topics?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\r\n uptime?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\r\n version?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;\r\n};\r\n\r\nexport interface TimestampScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes['Timestamp'], any> {\r\n name: 'Timestamp';\r\n}\r\n\r\nexport type TreeStructureResolvers<ContextType = any, ParentType extends ResolversParentTypes['TreeStructure'] = ResolversParentTypes['TreeStructure']> = {\r\n apiDescription?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n apiEndpoint?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n apiMethod?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n attributeNeedsPersistance?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;\r\n attributeTags?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\r\n attributeTimestamp?: Resolver<Maybe<ResolversTypes['Timestamp']>, ParentType, ContextType>;\r\n attributeType?: Resolver<Maybe<ResolversTypes['UnsAttributeType']>, ParentType, ContextType>;\r\n children?: Resolver<Maybe<Array<Maybe<ResolversTypes['TreeStructure']>>>, ParentType, ContextType>;\r\n description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n fullTopic?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n id?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\r\n parent?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\r\n processName?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n processVersion?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n type?: Resolver<Maybe<ResolversTypes['UnsNodeType']>, ParentType, ContextType>;\r\n unsNode?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;\r\n};\r\n\r\nexport type UnsNodeResolvers<ContextType = any, ParentType extends ResolversParentTypes['UnsNode'] = ResolversParentTypes['UnsNode']> = {\r\n apiDescription?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n apiEndpoint?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n apiMethod?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n attributeNeedsPersistance?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;\r\n attributeTags?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;\r\n attributeTimestamp?: Resolver<Maybe<ResolversTypes['Timestamp']>, ParentType, ContextType>;\r\n attributeType?: Resolver<Maybe<ResolversTypes['UnsAttributeType']>, ParentType, ContextType>;\r\n description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n fullTopic?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n id?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\r\n parent?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;\r\n processName?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n processVersion?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n type?: Resolver<Maybe<ResolversTypes['UnsNodeType']>, ParentType, ContextType>;\r\n unsNode?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;\r\n __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;\r\n};\r\n\r\nexport type Resolvers<ContextType = any> = {\r\n Date?: GraphQLScalarType;\r\n Mutation?: MutationResolvers<ContextType>;\r\n Query?: QueryResolvers<ContextType>;\r\n Repository?: RepositoryResolvers<ContextType>;\r\n RttNode?: RttNodeResolvers<ContextType>;\r\n Timestamp?: GraphQLScalarType;\r\n TreeStructure?: TreeStructureResolvers<ContextType>;\r\n UnsNode?: UnsNodeResolvers<ContextType>;\r\n};\r\n"]}