@uns-kit/core 3.0.9 → 3.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -12,4 +12,6 @@ export { AuthClient, ServiceTokenProvider } from "./tools/auth/index.js";
12
12
  export type { AccessTokenProvider, ServiceTokenProviderOptions } from "./tools/auth/index.js";
13
13
  export { UnsClient, LastValueResult, ClientError, RangeResult, BatchRangeTopicResult, BatchRangeResponse, } from "./tools/datahub/datahub-client.js";
14
14
  export type { LastValuePayload, CatchAllTimeField, CatchAllAggregate, RangeQueryOptions, RangeColumn, RangeStats, RangePayload, BatchRangeTopicPayload, BatchRangeResponsePayload, } from "./tools/datahub/datahub-client.js";
15
+ export { registerService } from "./tools/datahub/runtime-service-registration.js";
16
+ export type { RegisterServiceOptions, RuntimeServiceDescriptor, RuntimeServiceRegistration, RuntimeServiceRegistrationClient, } from "./tools/datahub/runtime-service-registration.js";
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EACV,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACzF,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EACL,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EACV,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACzF,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EACL,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,YAAY,EACV,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,iDAAiD,CAAC"}
package/dist/index.js CHANGED
@@ -8,4 +8,5 @@ export { resolveInfisicalConfig } from "./uns-config/secret-resolver.js";
8
8
  export { mqttChannelParameters, resolveMqttChannel } from "./uns-config/mqtt-channel.js";
9
9
  export { AuthClient, ServiceTokenProvider } from "./tools/auth/index.js";
10
10
  export { UnsClient, LastValueResult, ClientError, RangeResult, BatchRangeTopicResult, BatchRangeResponse, } from "./tools/datahub/datahub-client.js";
11
+ export { registerService } from "./tools/datahub/runtime-service-registration.js";
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAOxE,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEzF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EACL,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC","sourcesContent":["export { default as UnsProxyProcess } from \"./uns/uns-proxy-process.js\";\nexport type {\n UnsProxyProcessPlugin,\n UnsProxyProcessPluginApi,\n UnsProxyProcessPluginMethod,\n UnsProxyProcessPluginMethods,\n} from \"./uns/uns-proxy-process.js\";\nexport * from \"./uns/uns-interfaces.js\";\nexport * from \"./uns/service-metadata.js\";\nexport { ConfigFile } from \"./config-file.js\";\nexport { default as logger } from \"./logger.js\";\nexport { getLogger } from \"./logger.js\";\nexport { resolveInfisicalConfig } from \"./uns-config/secret-resolver.js\";\nexport { mqttChannelParameters, resolveMqttChannel } from \"./uns-config/mqtt-channel.js\";\nexport type { MqttChannelConfig, ResolvedMqttChannel } from \"./uns-config/mqtt-channel.js\";\nexport { AuthClient, ServiceTokenProvider } from \"./tools/auth/index.js\";\nexport type { AccessTokenProvider, ServiceTokenProviderOptions } from \"./tools/auth/index.js\";\nexport {\n UnsClient,\n LastValueResult,\n ClientError,\n RangeResult,\n BatchRangeTopicResult,\n BatchRangeResponse,\n} from \"./tools/datahub/datahub-client.js\";\nexport type {\n LastValuePayload,\n CatchAllTimeField,\n CatchAllAggregate,\n RangeQueryOptions,\n RangeColumn,\n RangeStats,\n RangePayload,\n BatchRangeTopicPayload,\n BatchRangeResponsePayload,\n} from \"./tools/datahub/datahub-client.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAOxE,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEzF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EACL,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAY3C,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC","sourcesContent":["export { default as UnsProxyProcess } from \"./uns/uns-proxy-process.js\";\nexport type {\n UnsProxyProcessPlugin,\n UnsProxyProcessPluginApi,\n UnsProxyProcessPluginMethod,\n UnsProxyProcessPluginMethods,\n} from \"./uns/uns-proxy-process.js\";\nexport * from \"./uns/uns-interfaces.js\";\nexport * from \"./uns/service-metadata.js\";\nexport { ConfigFile } from \"./config-file.js\";\nexport { default as logger } from \"./logger.js\";\nexport { getLogger } from \"./logger.js\";\nexport { resolveInfisicalConfig } from \"./uns-config/secret-resolver.js\";\nexport { mqttChannelParameters, resolveMqttChannel } from \"./uns-config/mqtt-channel.js\";\nexport type { MqttChannelConfig, ResolvedMqttChannel } from \"./uns-config/mqtt-channel.js\";\nexport { AuthClient, ServiceTokenProvider } from \"./tools/auth/index.js\";\nexport type { AccessTokenProvider, ServiceTokenProviderOptions } from \"./tools/auth/index.js\";\nexport {\n UnsClient,\n LastValueResult,\n ClientError,\n RangeResult,\n BatchRangeTopicResult,\n BatchRangeResponse,\n} from \"./tools/datahub/datahub-client.js\";\nexport type {\n LastValuePayload,\n CatchAllTimeField,\n CatchAllAggregate,\n RangeQueryOptions,\n RangeColumn,\n RangeStats,\n RangePayload,\n BatchRangeTopicPayload,\n BatchRangeResponsePayload,\n} from \"./tools/datahub/datahub-client.js\";\nexport { registerService } from \"./tools/datahub/runtime-service-registration.js\";\nexport type {\n RegisterServiceOptions,\n RuntimeServiceDescriptor,\n RuntimeServiceRegistration,\n RuntimeServiceRegistrationClient,\n} from \"./tools/datahub/runtime-service-registration.js\";\n"]}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Non-secret descriptor sent by a controller-managed RTT service after it has
3
+ * started. The controller derives identity and permissions from the bearer
4
+ * token; this descriptor can therefore never request additional access.
5
+ */
6
+ export type RuntimeServiceDescriptor = {
7
+ id: string;
8
+ version?: string;
9
+ capabilities?: string[];
10
+ healthContract?: string;
11
+ processName?: string;
12
+ };
13
+ export type RuntimeServiceRegistration = {
14
+ registered: true;
15
+ service: {
16
+ rttNode: string;
17
+ instanceId: string;
18
+ serviceVersion?: string;
19
+ };
20
+ controller: {
21
+ restPath: string;
22
+ graphqlPath: string;
23
+ };
24
+ };
25
+ export type RuntimeServiceRegistrationClient = {
26
+ post(endpoint: string, body?: Record<string, unknown>): Promise<Record<string, unknown>>;
27
+ };
28
+ export type RegisterServiceOptions = {
29
+ client: RuntimeServiceRegistrationClient;
30
+ service: RuntimeServiceDescriptor;
31
+ environment?: Partial<Pick<NodeJS.ProcessEnv, "RTT_NODE" | "RTT_INSTANCE_ID">>;
32
+ };
33
+ /**
34
+ * Registers a service only when it was launched by the controller's RTT
35
+ * manager. Direct development deliberately has no RTT instance identifiers
36
+ * and therefore returns null instead of pretending to be a managed service.
37
+ */
38
+ export declare function registerService(options: RegisterServiceOptions): Promise<RuntimeServiceRegistration | null>;
39
+ //# sourceMappingURL=runtime-service-registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-service-registration.d.ts","sourceRoot":"","sources":["../../../src/tools/datahub/runtime-service-registration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1F,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,gCAAgC,CAAC;IACzC,OAAO,EAAE,wBAAwB,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC;CAChF,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CA6B5C"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Registers a service only when it was launched by the controller's RTT
3
+ * manager. Direct development deliberately has no RTT instance identifiers
4
+ * and therefore returns null instead of pretending to be a managed service.
5
+ */
6
+ export async function registerService(options) {
7
+ const environment = options.environment ?? process.env;
8
+ const rttNode = normalizeRequired(environment.RTT_NODE);
9
+ const instanceId = normalizeRequired(environment.RTT_INSTANCE_ID);
10
+ if (!rttNode || !instanceId)
11
+ return null;
12
+ const serviceId = normalizeRequired(options.service.id);
13
+ if (!serviceId) {
14
+ throw new Error("Runtime service registration requires service.id.");
15
+ }
16
+ if (serviceId !== rttNode) {
17
+ throw new Error("Runtime service id does not match the controller-injected RTT_NODE.");
18
+ }
19
+ const payload = await options.client.post("runtime-services/register", {
20
+ rttNode,
21
+ instanceId,
22
+ ...(optionalString(options.service.version) ? { serviceVersion: optionalString(options.service.version) } : {}),
23
+ ...(normalizeStringList(options.service.capabilities).length > 0
24
+ ? { capabilities: normalizeStringList(options.service.capabilities) }
25
+ : {}),
26
+ ...(optionalString(options.service.healthContract)
27
+ ? { healthContract: optionalString(options.service.healthContract) }
28
+ : {}),
29
+ ...(optionalString(options.service.processName)
30
+ ? { processName: optionalString(options.service.processName) }
31
+ : {}),
32
+ });
33
+ return parseRegistration(payload);
34
+ }
35
+ function parseRegistration(payload) {
36
+ const service = asObject(payload.service);
37
+ const controller = asObject(payload.controller);
38
+ const rttNode = optionalString(service?.rttNode);
39
+ const instanceId = optionalString(service?.instanceId);
40
+ const restPath = optionalString(controller?.restPath);
41
+ const graphqlPath = optionalString(controller?.graphqlPath);
42
+ if (payload.registered !== true || !rttNode || !instanceId || !restPath || !graphqlPath) {
43
+ throw new Error("Controller returned an invalid runtime service registration response.");
44
+ }
45
+ const serviceVersion = optionalString(service?.serviceVersion);
46
+ return {
47
+ registered: true,
48
+ service: {
49
+ rttNode,
50
+ instanceId,
51
+ ...(serviceVersion ? { serviceVersion } : {}),
52
+ },
53
+ controller: { restPath, graphqlPath },
54
+ };
55
+ }
56
+ function asObject(value) {
57
+ return value && typeof value === "object" && !Array.isArray(value)
58
+ ? value
59
+ : null;
60
+ }
61
+ function optionalString(value) {
62
+ const normalized = typeof value === "string" ? value.trim() : "";
63
+ return normalized || undefined;
64
+ }
65
+ function normalizeRequired(value) {
66
+ return optionalString(value);
67
+ }
68
+ function normalizeStringList(values) {
69
+ return [...new Set((values ?? []).map((value) => optionalString(value)).filter((value) => Boolean(value)))];
70
+ }
71
+ //# sourceMappingURL=runtime-service-registration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-service-registration.js","sourceRoot":"","sources":["../../../src/tools/datahub/runtime-service-registration.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Non-secret descriptor sent by a controller-managed RTT service after it has\n * started. The controller derives identity and permissions from the bearer\n * token; this descriptor can therefore never request additional access.\n */\nexport type RuntimeServiceDescriptor = {\n id: string;\n version?: string;\n capabilities?: string[];\n healthContract?: string;\n processName?: string;\n};\n\nexport type RuntimeServiceRegistration = {\n registered: true;\n service: {\n rttNode: string;\n instanceId: string;\n serviceVersion?: string;\n };\n controller: {\n restPath: string;\n graphqlPath: string;\n };\n};\n\nexport type RuntimeServiceRegistrationClient = {\n post(endpoint: string, body?: Record<string, unknown>): Promise<Record<string, unknown>>;\n};\n\nexport type RegisterServiceOptions = {\n client: RuntimeServiceRegistrationClient;\n service: RuntimeServiceDescriptor;\n environment?: Partial<Pick<NodeJS.ProcessEnv, \"RTT_NODE\" | \"RTT_INSTANCE_ID\">>;\n};\n\n/**\n * Registers a service only when it was launched by the controller's RTT\n * manager. Direct development deliberately has no RTT instance identifiers\n * and therefore returns null instead of pretending to be a managed service.\n */\nexport async function registerService(\n options: RegisterServiceOptions,\n): Promise<RuntimeServiceRegistration | null> {\n const environment = options.environment ?? process.env;\n const rttNode = normalizeRequired(environment.RTT_NODE);\n const instanceId = normalizeRequired(environment.RTT_INSTANCE_ID);\n if (!rttNode || !instanceId) return null;\n\n const serviceId = normalizeRequired(options.service.id);\n if (!serviceId) {\n throw new Error(\"Runtime service registration requires service.id.\");\n }\n if (serviceId !== rttNode) {\n throw new Error(\"Runtime service id does not match the controller-injected RTT_NODE.\");\n }\n\n const payload = await options.client.post(\"runtime-services/register\", {\n rttNode,\n instanceId,\n ...(optionalString(options.service.version) ? { serviceVersion: optionalString(options.service.version) } : {}),\n ...(normalizeStringList(options.service.capabilities).length > 0\n ? { capabilities: normalizeStringList(options.service.capabilities) }\n : {}),\n ...(optionalString(options.service.healthContract)\n ? { healthContract: optionalString(options.service.healthContract) }\n : {}),\n ...(optionalString(options.service.processName)\n ? { processName: optionalString(options.service.processName) }\n : {}),\n });\n return parseRegistration(payload);\n}\n\nfunction parseRegistration(payload: Record<string, unknown>): RuntimeServiceRegistration {\n const service = asObject(payload.service);\n const controller = asObject(payload.controller);\n const rttNode = optionalString(service?.rttNode);\n const instanceId = optionalString(service?.instanceId);\n const restPath = optionalString(controller?.restPath);\n const graphqlPath = optionalString(controller?.graphqlPath);\n if (payload.registered !== true || !rttNode || !instanceId || !restPath || !graphqlPath) {\n throw new Error(\"Controller returned an invalid runtime service registration response.\");\n }\n const serviceVersion = optionalString(service?.serviceVersion);\n return {\n registered: true,\n service: {\n rttNode,\n instanceId,\n ...(serviceVersion ? { serviceVersion } : {}),\n },\n controller: { restPath, graphqlPath },\n };\n}\n\nfunction asObject(value: unknown): Record<string, unknown> | null {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? value as Record<string, unknown>\n : null;\n}\n\nfunction optionalString(value: unknown): string | undefined {\n const normalized = typeof value === \"string\" ? value.trim() : \"\";\n return normalized || undefined;\n}\n\nfunction normalizeRequired(value: unknown): string | undefined {\n return optionalString(value);\n}\n\nfunction normalizeStringList(values: string[] | undefined): string[] {\n return [...new Set((values ?? []).map((value) => optionalString(value)).filter((value): value is string => Boolean(value)))];\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uns-kit/core",
3
- "version": "3.0.9",
3
+ "version": "3.0.10",
4
4
  "description": "Core utilities and runtime building blocks for UNS-based realtime transformers.",
5
5
  "type": "module",
6
6
  "license": "MIT",