@uns-kit/core 2.0.20 → 2.0.22

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 (80) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +130 -130
  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/app-config.d.ts +140 -135
  7. package/dist/config/app-config.d.ts.map +1 -1
  8. package/dist/config/app-config.js.map +1 -1
  9. package/dist/config/project.config.extension.js.map +1 -1
  10. package/dist/config-file.js.map +1 -1
  11. package/dist/graphql/schema.js.map +1 -1
  12. package/dist/index.d.ts +7 -6
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +6 -5
  15. package/dist/index.js.map +1 -1
  16. package/dist/logger.d.ts +3 -2
  17. package/dist/logger.d.ts.map +1 -1
  18. package/dist/logger.js +80 -18
  19. package/dist/logger.js.map +1 -1
  20. package/dist/tools/auth/auth-client.js.map +1 -1
  21. package/dist/tools/auth/index.js.map +1 -1
  22. package/dist/tools/auth/secure-store.js.map +1 -1
  23. package/dist/tools/base-path.js.map +1 -1
  24. package/dist/tools/file-utils.js.map +1 -1
  25. package/dist/tools/generate-config-schema.js.map +1 -1
  26. package/dist/tools/generate-uns-dictionary.js +7 -7
  27. package/dist/tools/generate-uns-dictionary.js.map +1 -1
  28. package/dist/tools/generate-uns-measurements.js +7 -7
  29. package/dist/tools/generate-uns-measurements.js.map +1 -1
  30. package/dist/tools/generate-uns-reference.js +9 -9
  31. package/dist/tools/generate-uns-reference.js.map +1 -1
  32. package/dist/tools/pull-request.js.map +1 -1
  33. package/dist/tools/refresh-uns.js +50 -50
  34. package/dist/tools/refresh-uns.js.map +1 -1
  35. package/dist/tools/schema.js.map +1 -1
  36. package/dist/tools/sync-uns-schema.js +14 -14
  37. package/dist/tools/sync-uns-schema.js.map +1 -1
  38. package/dist/uns/handover-manager-event-emitter.js.map +1 -1
  39. package/dist/uns/handover-manager.js.map +1 -1
  40. package/dist/uns/process-config.js.map +1 -1
  41. package/dist/uns/process-name-service.js.map +1 -1
  42. package/dist/uns/status-monitor.js.map +1 -1
  43. package/dist/uns/uns-asset.js.map +1 -1
  44. package/dist/uns/uns-attributes.js.map +1 -1
  45. package/dist/uns/uns-dictionary-registry.js.map +1 -1
  46. package/dist/uns/uns-dictionary.generated.js.map +1 -1
  47. package/dist/uns/uns-event-emitter.js.map +1 -1
  48. package/dist/uns/uns-interfaces.js.map +1 -1
  49. package/dist/uns/uns-measurements.generated.js.map +1 -1
  50. package/dist/uns/uns-measurements.js.map +1 -1
  51. package/dist/uns/uns-object.js.map +1 -1
  52. package/dist/uns/uns-packet.js.map +1 -1
  53. package/dist/uns/uns-path.js.map +1 -1
  54. package/dist/uns/uns-proxy-process.js.map +1 -1
  55. package/dist/uns/uns-proxy.js.map +1 -1
  56. package/dist/uns/uns-tags.js.map +1 -1
  57. package/dist/uns/uns-topic-matcher.js.map +1 -1
  58. package/dist/uns/uns-topics.js.map +1 -1
  59. package/dist/uns-config/config-schema.js.map +1 -1
  60. package/dist/uns-config/host-placeholders.js.map +1 -1
  61. package/dist/uns-config/schema-tolls.js.map +1 -1
  62. package/dist/uns-config/schema-tools.js.map +1 -1
  63. package/dist/uns-config/secret-placeholders.js.map +1 -1
  64. package/dist/uns-config/secret-resolver.js.map +1 -1
  65. package/dist/uns-config/uns-core-schema.d.ts +3271 -3150
  66. package/dist/uns-config/uns-core-schema.d.ts.map +1 -1
  67. package/dist/uns-config/uns-core-schema.js +76 -71
  68. package/dist/uns-config/uns-core-schema.js.map +1 -1
  69. package/dist/uns-grpc/uns-gateway-cli.js.map +1 -1
  70. package/dist/uns-grpc/uns-gateway-server.js.map +1 -1
  71. package/dist/uns-grpc/uns-gateway.proto +104 -104
  72. package/dist/uns-mqtt/mqtt-interfaces.js.map +1 -1
  73. package/dist/uns-mqtt/mqtt-proxy.js.map +1 -1
  74. package/dist/uns-mqtt/mqtt-topic-builder.js.map +1 -1
  75. package/dist/uns-mqtt/mqtt-worker-init.js.map +1 -1
  76. package/dist/uns-mqtt/mqtt-worker.js.map +1 -1
  77. package/dist/uns-mqtt/throttled-queue.js.map +1 -1
  78. package/dist/uns-mqtt/uns-mqtt-proxy.js.map +1 -1
  79. package/dist/uns-mqtt/ws-proxy.js.map +1 -1
  80. package/package.json +9 -8
@@ -1 +1 @@
1
- {"version":3,"file":"handover-manager.js","sourceRoot":"","sources":["../../src/uns/handover-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { UnsEvents } from \"./uns-interfaces.js\";\nimport logger from \"../logger.js\";\nimport { HandoverManagerEventEmitter } from \"./handover-manager-event-emitter.js\";\nimport { HandoverManagerEvents } from \"../uns-mqtt/mqtt-interfaces.js\";\nimport MqttProxy from \"../uns-mqtt/mqtt-proxy.js\";\nimport { MqttTopicBuilder } from \"../uns-mqtt/mqtt-topic-builder.js\";\nimport { ACTIVE_TIMEOUT, PACKAGE_INFO } from \"./process-config.js\";\nimport UnsMqttProxy from \"../uns-mqtt/uns-mqtt-proxy.js\";\n\n/**\n * HandoverManager is responsible for all handover-related logic,\n * including handling incoming MQTT messages, issuing handover requests,\n * and processing handover responses.\n */\nexport class HandoverManager {\n public event: HandoverManagerEventEmitter<HandoverManagerEvents> = new HandoverManagerEventEmitter<HandoverManagerEvents>();\n private processName: string;\n private processId: string;\n private mqttProxy: MqttProxy;\n private unsMqttProxies: UnsMqttProxy[];\n private requestingHandover: boolean = false;\n private handoverInProgress: boolean = false;\n private topicBuilder: MqttTopicBuilder;\n private activeTimeout: NodeJS.Timeout | undefined;\n private active: boolean = false;\n public handoverRequestEnabled: boolean = false;\n public handoverEnabled: boolean = true;\n public forceStartEnabled: boolean = false;\n\n constructor(processName: string, processId: string, mqttProxy: MqttProxy, unsMqttProxies: UnsMqttProxy[], handoverRequestEnabled: boolean, handoverEnabled: boolean, forceStartEnabled: boolean) {\n this.processName = processName;\n this.processId = processId;\n this.mqttProxy = mqttProxy;\n this.unsMqttProxies = unsMqttProxies;\n this.handoverRequestEnabled = handoverRequestEnabled;\n this.handoverEnabled = handoverEnabled;\n this.forceStartEnabled = forceStartEnabled;\n\n // Instantiate the topic builder.\n const packageName = PACKAGE_INFO.name;\n const version = PACKAGE_INFO.version;\n this.topicBuilder = new MqttTopicBuilder(`uns-infra/${MqttTopicBuilder.sanitizeTopicPart(packageName)}/${MqttTopicBuilder.sanitizeTopicPart(version)}/${MqttTopicBuilder.sanitizeTopicPart(this.processName)}/`);\n\n // Set status as active after a timeout if no other active process are detected.\n this.activeTimeout = setTimeout(() => {\n logger.info(`${this.processName} - No active message received within timeout. Assuming no other process is running.`);\n this.active = true;\n this.event.emit(\"handoverManager\", { active: this.active });\n // Activate all UNS proxy instance publishers and subscribers.\n this.unsMqttProxies.forEach((unsProxy) => {\n unsProxy.setPublisherActive();\n unsProxy.setSubscriberActive();\n });\n }, ACTIVE_TIMEOUT);\n }\n\n private getUserProperties(): Record<string, string> {\n return {\n processName: this.processName,\n processId: this.processId,\n };\n }\n\n private getSourceProcessId(event: UnsEvents[\"input\"]): string | undefined {\n return event.packet?.properties?.userProperties?.processId;\n }\n\n private parseActiveValue(message: string): boolean | null {\n try {\n const parsed = JSON.parse(message);\n const value = parsed?.message?.data?.value ?? parsed?.data?.value;\n if (value === 1 || value === \"1\" || value === true || value === \"true\") {\n return true;\n }\n if (value === 0 || value === \"0\" || value === false || value === \"false\") {\n return false;\n }\n return null;\n } catch {\n return null;\n }\n }\n\n private isProcessActiveTopic(topic: string): boolean {\n const parts = topic.split(\"/\");\n if (parts.length !== 5) return false;\n const [root, pkg, , process, tail] = parts;\n if (root !== \"uns-infra\" || tail !== \"active\") return false;\n const expectedPackage = MqttTopicBuilder.sanitizeTopicPart(PACKAGE_INFO.name);\n const expectedProcess = MqttTopicBuilder.sanitizeTopicPart(this.processName);\n return pkg === expectedPackage && process === expectedProcess;\n }\n\n /**\n * Main entry point for handling incoming MQTT messages.\n * It checks the topic and delegates to the corresponding handler.\n */\n public async handleMqttMessage(event: UnsEvents[\"input\"]): Promise<void> {\n try {\n // Check if the packet is active messages from other processes and this process is not active.\n if (\n this.isProcessActiveTopic(event.topic) &&\n this.requestingHandover === false &&\n this.active === false &&\n this.handoverInProgress === false\n ) {\n const sourceProcessId = this.getSourceProcessId(event);\n if (sourceProcessId === this.processId) {\n return;\n }\n const activeValue = this.parseActiveValue(event.message.toString());\n if (activeValue !== true) {\n return;\n }\n const sourceInfo = sourceProcessId ? ` (processId=${sourceProcessId})` : \"\";\n logger.info(`${this.processName} - Another process is active${sourceInfo} on ${event.topic}.`);\n\n if (this.handoverRequestEnabled && this.handoverEnabled) {\n // Requester process\n // Publish a handover request message after 10 seconds to the handover topic.\n clearTimeout(this.activeTimeout); // Clear the active timeout if it exists - prevent this process from becoming active after a timeout.\n this.activeTimeout = undefined;\n this.event.emit(\"handoverManager\", { active: this.active });\n this.requestingHandover = true;\n const eventHandoverTopic = new MqttTopicBuilder(MqttTopicBuilder.extractBaseTopic(event.topic)).getHandoverTopic();\n await this.mqttProxy.publish(eventHandoverTopic, JSON.stringify({ type: \"handover_intent\" }), {\n retain: false,\n properties: {\n userProperties: this.getUserProperties(),\n },\n });\n logger.info(`${this.processName} - Requesting handover in 10 seconds.`);\n setTimeout(async () => {\n logger.info(`${this.processName} - Requesting handover ${eventHandoverTopic}.`);\n this.handoverInProgress = true;\n await this.mqttProxy.publish(eventHandoverTopic, JSON.stringify({ type: \"handover_request\" }), {\n retain: false,\n properties: {\n responseTopic: this.topicBuilder.getHandoverTopic(),\n userProperties: this.getUserProperties(),\n },\n });\n }, 10000);\n } else {\n if (this.forceStartEnabled) {\n // Force start the process even if another process is active.\n logger.info(`${this.processName} - Force starting the process.`);\n logger.warn(`${this.processName} - Warning: Source and destination being the same may lead to duplicate messages.`);\n clearTimeout(this.activeTimeout); // Clear the active timeout if it exists - prevent this process from becoming active after a timeout.\n this.activeTimeout = undefined;\n this.active = true;\n this.event.emit(\"handoverManager\", { active: this.active });\n // Activate all UNS proxy instance publishers and subscribers.\n this.unsMqttProxies.forEach((unsProxy) => {\n unsProxy.setPublisherActive();\n unsProxy.setSubscriberActive();\n }\n );\n }\n else {\n logger.info(`${this.processName} - Waiting for the other process on topic ${event.topic} to become passive.`);\n this.activeTimeout?.refresh();\n }\n }\n }\n\n // Check if the packet is an handover message, sent to a handover topic.\n if (event.topic === this.topicBuilder.getHandoverTopic() && this.handoverEnabled) {\n const sourceProcessId = this.getSourceProcessId(event);\n if (sourceProcessId !== this.processId) {\n await this.handleHandover(event);\n }\n }\n } catch (error) {\n logger.error(`${this.processName} - Error processing MQTT message: ${error.message}`);\n return;\n }\n }\n\n /**\n * Handles handovers.\n */\n private async handleHandover(event: UnsEvents[\"input\"]): Promise<void> {\n try {\n const response = JSON.parse(event.message.toString());\n // Responder process\n // Check if the message is a handover request and publish MULTIPLE handover_subscriber messages\n if (response.type === \"handover_request\") {\n logger.info(\n `${this.processName} - Received handover request from ${event.packet?.properties?.userProperties?.processName}. Accepting handover.`,\n );\n\n // Set all UNS proxy instance subscribers to passive and drain the queue.\n const mqttWorkerData: UnsEvents[\"mqttWorker\"][] = [];\n for (let i = 0; i < this.unsMqttProxies.length; i++) {\n const unsProxy = this.unsMqttProxies[i];\n const workerData = await unsProxy.setSubscriberPassiveAndDrainQueue();\n mqttWorkerData.push(workerData);\n }\n logger.info(`${this.processName} - Handover request accepted. Sending handover_subscriber messages.`);\n\n // Publish handover_subscriber messages for each instance that has processed some data.\n for (let i = 0; i < mqttWorkerData.length; i++) {\n const workerData = mqttWorkerData[i];\n if (workerData.batchSize > 0) {\n await this.mqttProxy.publish(\n event.packet.properties?.responseTopic ?? \"\",\n JSON.stringify({\n type: \"handover_subscriber\",\n batchSize: workerData.batchSize,\n referenceHash: workerData.referenceHash,\n instanceName: workerData.instanceName,\n }),\n {\n retain: false,\n properties: {\n responseTopic: this.topicBuilder.getHandoverTopic(),\n userProperties: this.getUserProperties(),\n },\n },\n );\n }\n }\n logger.info(`${this.processName} - Handover subscriber messages sent.`);\n\n // Publish a single handover acknowledgment only when all\n // handover_subscriber messages have been sent\n this.active = false;\n this.event.emit(\"handoverManager\", { active: this.active });\n await this.mqttProxy.publish(\n event.packet.properties?.responseTopic ?? \"\",\n JSON.stringify({\n type: \"handover_fin\",\n }),\n {\n retain: false,\n properties: {\n responseTopic: this.topicBuilder.getHandoverTopic(),\n userProperties: this.getUserProperties(),\n },\n },\n );\n logger.info(`${this.processName} - Handover fin message sent.`);\n\n this.handoverInProgress = false;\n this.requestingHandover = false;\n\n this.unsMqttProxies.forEach((unsProxy: UnsMqttProxy) => {\n unsProxy.stop();\n });\n }\n\n // Requestor process\n // Check if the message is one of the handover_subscriber message in response to handover_request\n // and publish a handover_ack message\n if (response.type === \"handover_subscriber\") {\n // Find correct unsProxy instance for handover_subscriber and set it active\n this.unsMqttProxies.forEach((unsProxy: UnsMqttProxy) => {\n if (unsProxy.instanceName === response.instanceName) {\n unsProxy.setSubscriberActive(response.batchSize, response.referenceHash);\n }\n });\n }\n\n // Requestor process\n // Check if the message is a handover_fin at the end of handover_subscriber messages\n if (response.type === \"handover_fin\") {\n logger.info(`${this.processName} - Received handover fin from ${event.packet?.properties?.userProperties?.processName}.`);\n\n // Maybe we should count the number of requests that were allrady made TODO\n // this.handoverInProgress = false;\n // this.requestingHandover = false;\n\n this.active = true;\n this.event.emit(\"handoverManager\", { active: this.active });\n logger.info(`${this.processName} - Handover completed.`);\n // Activate all UNS proxy instance publishers and subscribers.\n this.unsMqttProxies.forEach((unsProxy) => {\n unsProxy.setPublisherActive();\n unsProxy.setSubscriberActive();\n });\n\n // Maybe we should reply with handover_ack.\n await this.mqttProxy.publish(\n event.packet.properties?.responseTopic ?? \"\",\n JSON.stringify({\n type: \"handover_ack\",\n }),\n {\n retain: false,\n properties: {\n responseTopic: this.topicBuilder.getHandoverTopic(),\n userProperties: this.getUserProperties(),\n },\n },\n );\n logger.info(`${this.processName} - Handover ack message sent.`);\n }\n\n // Responder process\n // Check if the message is a handover_ack at the end of handover_fin messages\n if (response.type === \"handover_ack\") {\n logger.info(`${this.processName} - Received handover ack from ${event.packet?.properties?.userProperties?.processName}.`);\n this.handoverInProgress = false;\n this.requestingHandover = false;\n\n logger.info(`${this.processName} - Handover completed. Exiting process.`);\n process.exit(0);\n }\n } catch (error) {\n logger.error(`${this.processName} - Error processing handover response: ${error.message}`);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"handover-manager.js","sourceRoot":"","sources":["../../src/uns/handover-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { UnsEvents } from \"./uns-interfaces.js\";\r\nimport logger from \"../logger.js\";\r\nimport { HandoverManagerEventEmitter } from \"./handover-manager-event-emitter.js\";\r\nimport { HandoverManagerEvents } from \"../uns-mqtt/mqtt-interfaces.js\";\r\nimport MqttProxy from \"../uns-mqtt/mqtt-proxy.js\";\r\nimport { MqttTopicBuilder } from \"../uns-mqtt/mqtt-topic-builder.js\";\r\nimport { ACTIVE_TIMEOUT, PACKAGE_INFO } from \"./process-config.js\";\r\nimport UnsMqttProxy from \"../uns-mqtt/uns-mqtt-proxy.js\";\r\n\r\n/**\r\n * HandoverManager is responsible for all handover-related logic,\r\n * including handling incoming MQTT messages, issuing handover requests,\r\n * and processing handover responses.\r\n */\r\nexport class HandoverManager {\r\n public event: HandoverManagerEventEmitter<HandoverManagerEvents> = new HandoverManagerEventEmitter<HandoverManagerEvents>();\r\n private processName: string;\r\n private processId: string;\r\n private mqttProxy: MqttProxy;\r\n private unsMqttProxies: UnsMqttProxy[];\r\n private requestingHandover: boolean = false;\r\n private handoverInProgress: boolean = false;\r\n private topicBuilder: MqttTopicBuilder;\r\n private activeTimeout: NodeJS.Timeout | undefined;\r\n private active: boolean = false;\r\n public handoverRequestEnabled: boolean = false;\r\n public handoverEnabled: boolean = true;\r\n public forceStartEnabled: boolean = false;\r\n\r\n constructor(processName: string, processId: string, mqttProxy: MqttProxy, unsMqttProxies: UnsMqttProxy[], handoverRequestEnabled: boolean, handoverEnabled: boolean, forceStartEnabled: boolean) {\r\n this.processName = processName;\r\n this.processId = processId;\r\n this.mqttProxy = mqttProxy;\r\n this.unsMqttProxies = unsMqttProxies;\r\n this.handoverRequestEnabled = handoverRequestEnabled;\r\n this.handoverEnabled = handoverEnabled;\r\n this.forceStartEnabled = forceStartEnabled;\r\n\r\n // Instantiate the topic builder.\r\n const packageName = PACKAGE_INFO.name;\r\n const version = PACKAGE_INFO.version;\r\n this.topicBuilder = new MqttTopicBuilder(`uns-infra/${MqttTopicBuilder.sanitizeTopicPart(packageName)}/${MqttTopicBuilder.sanitizeTopicPart(version)}/${MqttTopicBuilder.sanitizeTopicPart(this.processName)}/`);\r\n\r\n // Set status as active after a timeout if no other active process are detected.\r\n this.activeTimeout = setTimeout(() => {\r\n logger.info(`${this.processName} - No active message received within timeout. Assuming no other process is running.`);\r\n this.active = true;\r\n this.event.emit(\"handoverManager\", { active: this.active });\r\n // Activate all UNS proxy instance publishers and subscribers.\r\n this.unsMqttProxies.forEach((unsProxy) => {\r\n unsProxy.setPublisherActive();\r\n unsProxy.setSubscriberActive();\r\n });\r\n }, ACTIVE_TIMEOUT);\r\n }\r\n\r\n private getUserProperties(): Record<string, string> {\r\n return {\r\n processName: this.processName,\r\n processId: this.processId,\r\n };\r\n }\r\n\r\n private getSourceProcessId(event: UnsEvents[\"input\"]): string | undefined {\r\n return event.packet?.properties?.userProperties?.processId;\r\n }\r\n\r\n private parseActiveValue(message: string): boolean | null {\r\n try {\r\n const parsed = JSON.parse(message);\r\n const value = parsed?.message?.data?.value ?? parsed?.data?.value;\r\n if (value === 1 || value === \"1\" || value === true || value === \"true\") {\r\n return true;\r\n }\r\n if (value === 0 || value === \"0\" || value === false || value === \"false\") {\r\n return false;\r\n }\r\n return null;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private isProcessActiveTopic(topic: string): boolean {\r\n const parts = topic.split(\"/\");\r\n if (parts.length !== 5) return false;\r\n const [root, pkg, , process, tail] = parts;\r\n if (root !== \"uns-infra\" || tail !== \"active\") return false;\r\n const expectedPackage = MqttTopicBuilder.sanitizeTopicPart(PACKAGE_INFO.name);\r\n const expectedProcess = MqttTopicBuilder.sanitizeTopicPart(this.processName);\r\n return pkg === expectedPackage && process === expectedProcess;\r\n }\r\n\r\n /**\r\n * Main entry point for handling incoming MQTT messages.\r\n * It checks the topic and delegates to the corresponding handler.\r\n */\r\n public async handleMqttMessage(event: UnsEvents[\"input\"]): Promise<void> {\r\n try {\r\n // Check if the packet is active messages from other processes and this process is not active.\r\n if (\r\n this.isProcessActiveTopic(event.topic) &&\r\n this.requestingHandover === false &&\r\n this.active === false &&\r\n this.handoverInProgress === false\r\n ) {\r\n const sourceProcessId = this.getSourceProcessId(event);\r\n if (sourceProcessId === this.processId) {\r\n return;\r\n }\r\n const activeValue = this.parseActiveValue(event.message.toString());\r\n if (activeValue !== true) {\r\n return;\r\n }\r\n const sourceInfo = sourceProcessId ? ` (processId=${sourceProcessId})` : \"\";\r\n logger.info(`${this.processName} - Another process is active${sourceInfo} on ${event.topic}.`);\r\n\r\n if (this.handoverRequestEnabled && this.handoverEnabled) {\r\n // Requester process\r\n // Publish a handover request message after 10 seconds to the handover topic.\r\n clearTimeout(this.activeTimeout); // Clear the active timeout if it exists - prevent this process from becoming active after a timeout.\r\n this.activeTimeout = undefined;\r\n this.event.emit(\"handoverManager\", { active: this.active });\r\n this.requestingHandover = true;\r\n const eventHandoverTopic = new MqttTopicBuilder(MqttTopicBuilder.extractBaseTopic(event.topic)).getHandoverTopic();\r\n await this.mqttProxy.publish(eventHandoverTopic, JSON.stringify({ type: \"handover_intent\" }), {\r\n retain: false,\r\n properties: {\r\n userProperties: this.getUserProperties(),\r\n },\r\n });\r\n logger.info(`${this.processName} - Requesting handover in 10 seconds.`);\r\n setTimeout(async () => {\r\n logger.info(`${this.processName} - Requesting handover ${eventHandoverTopic}.`);\r\n this.handoverInProgress = true;\r\n await this.mqttProxy.publish(eventHandoverTopic, JSON.stringify({ type: \"handover_request\" }), {\r\n retain: false,\r\n properties: {\r\n responseTopic: this.topicBuilder.getHandoverTopic(),\r\n userProperties: this.getUserProperties(),\r\n },\r\n });\r\n }, 10000);\r\n } else {\r\n if (this.forceStartEnabled) {\r\n // Force start the process even if another process is active.\r\n logger.info(`${this.processName} - Force starting the process.`);\r\n logger.warn(`${this.processName} - Warning: Source and destination being the same may lead to duplicate messages.`);\r\n clearTimeout(this.activeTimeout); // Clear the active timeout if it exists - prevent this process from becoming active after a timeout.\r\n this.activeTimeout = undefined;\r\n this.active = true;\r\n this.event.emit(\"handoverManager\", { active: this.active });\r\n // Activate all UNS proxy instance publishers and subscribers.\r\n this.unsMqttProxies.forEach((unsProxy) => {\r\n unsProxy.setPublisherActive();\r\n unsProxy.setSubscriberActive();\r\n }\r\n );\r\n }\r\n else {\r\n logger.info(`${this.processName} - Waiting for the other process on topic ${event.topic} to become passive.`);\r\n this.activeTimeout?.refresh();\r\n }\r\n }\r\n }\r\n\r\n // Check if the packet is an handover message, sent to a handover topic.\r\n if (event.topic === this.topicBuilder.getHandoverTopic() && this.handoverEnabled) {\r\n const sourceProcessId = this.getSourceProcessId(event);\r\n if (sourceProcessId !== this.processId) {\r\n await this.handleHandover(event);\r\n }\r\n }\r\n } catch (error) {\r\n logger.error(`${this.processName} - Error processing MQTT message: ${error.message}`);\r\n return;\r\n }\r\n }\r\n\r\n /**\r\n * Handles handovers.\r\n */\r\n private async handleHandover(event: UnsEvents[\"input\"]): Promise<void> {\r\n try {\r\n const response = JSON.parse(event.message.toString());\r\n // Responder process\r\n // Check if the message is a handover request and publish MULTIPLE handover_subscriber messages\r\n if (response.type === \"handover_request\") {\r\n logger.info(\r\n `${this.processName} - Received handover request from ${event.packet?.properties?.userProperties?.processName}. Accepting handover.`,\r\n );\r\n\r\n // Set all UNS proxy instance subscribers to passive and drain the queue.\r\n const mqttWorkerData: UnsEvents[\"mqttWorker\"][] = [];\r\n for (let i = 0; i < this.unsMqttProxies.length; i++) {\r\n const unsProxy = this.unsMqttProxies[i];\r\n const workerData = await unsProxy.setSubscriberPassiveAndDrainQueue();\r\n mqttWorkerData.push(workerData);\r\n }\r\n logger.info(`${this.processName} - Handover request accepted. Sending handover_subscriber messages.`);\r\n\r\n // Publish handover_subscriber messages for each instance that has processed some data.\r\n for (let i = 0; i < mqttWorkerData.length; i++) {\r\n const workerData = mqttWorkerData[i];\r\n if (workerData.batchSize > 0) {\r\n await this.mqttProxy.publish(\r\n event.packet.properties?.responseTopic ?? \"\",\r\n JSON.stringify({\r\n type: \"handover_subscriber\",\r\n batchSize: workerData.batchSize,\r\n referenceHash: workerData.referenceHash,\r\n instanceName: workerData.instanceName,\r\n }),\r\n {\r\n retain: false,\r\n properties: {\r\n responseTopic: this.topicBuilder.getHandoverTopic(),\r\n userProperties: this.getUserProperties(),\r\n },\r\n },\r\n );\r\n }\r\n }\r\n logger.info(`${this.processName} - Handover subscriber messages sent.`);\r\n\r\n // Publish a single handover acknowledgment only when all\r\n // handover_subscriber messages have been sent\r\n this.active = false;\r\n this.event.emit(\"handoverManager\", { active: this.active });\r\n await this.mqttProxy.publish(\r\n event.packet.properties?.responseTopic ?? \"\",\r\n JSON.stringify({\r\n type: \"handover_fin\",\r\n }),\r\n {\r\n retain: false,\r\n properties: {\r\n responseTopic: this.topicBuilder.getHandoverTopic(),\r\n userProperties: this.getUserProperties(),\r\n },\r\n },\r\n );\r\n logger.info(`${this.processName} - Handover fin message sent.`);\r\n\r\n this.handoverInProgress = false;\r\n this.requestingHandover = false;\r\n\r\n this.unsMqttProxies.forEach((unsProxy: UnsMqttProxy) => {\r\n unsProxy.stop();\r\n });\r\n }\r\n\r\n // Requestor process\r\n // Check if the message is one of the handover_subscriber message in response to handover_request\r\n // and publish a handover_ack message\r\n if (response.type === \"handover_subscriber\") {\r\n // Find correct unsProxy instance for handover_subscriber and set it active\r\n this.unsMqttProxies.forEach((unsProxy: UnsMqttProxy) => {\r\n if (unsProxy.instanceName === response.instanceName) {\r\n unsProxy.setSubscriberActive(response.batchSize, response.referenceHash);\r\n }\r\n });\r\n }\r\n\r\n // Requestor process\r\n // Check if the message is a handover_fin at the end of handover_subscriber messages\r\n if (response.type === \"handover_fin\") {\r\n logger.info(`${this.processName} - Received handover fin from ${event.packet?.properties?.userProperties?.processName}.`);\r\n\r\n // Maybe we should count the number of requests that were allrady made TODO\r\n // this.handoverInProgress = false;\r\n // this.requestingHandover = false;\r\n\r\n this.active = true;\r\n this.event.emit(\"handoverManager\", { active: this.active });\r\n logger.info(`${this.processName} - Handover completed.`);\r\n // Activate all UNS proxy instance publishers and subscribers.\r\n this.unsMqttProxies.forEach((unsProxy) => {\r\n unsProxy.setPublisherActive();\r\n unsProxy.setSubscriberActive();\r\n });\r\n\r\n // Maybe we should reply with handover_ack.\r\n await this.mqttProxy.publish(\r\n event.packet.properties?.responseTopic ?? \"\",\r\n JSON.stringify({\r\n type: \"handover_ack\",\r\n }),\r\n {\r\n retain: false,\r\n properties: {\r\n responseTopic: this.topicBuilder.getHandoverTopic(),\r\n userProperties: this.getUserProperties(),\r\n },\r\n },\r\n );\r\n logger.info(`${this.processName} - Handover ack message sent.`);\r\n }\r\n\r\n // Responder process\r\n // Check if the message is a handover_ack at the end of handover_fin messages\r\n if (response.type === \"handover_ack\") {\r\n logger.info(`${this.processName} - Received handover ack from ${event.packet?.properties?.userProperties?.processName}.`);\r\n this.handoverInProgress = false;\r\n this.requestingHandover = false;\r\n\r\n logger.info(`${this.processName} - Handover completed. Exiting process.`);\r\n process.exit(0);\r\n }\r\n } catch (error) {\r\n logger.error(`${this.processName} - Error processing handover response: ${error.message}`);\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"process-config.js","sourceRoot":"","sources":["../../src/uns/process-config.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAQrE,MAAM,cAAc,GAAgB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,GAAG,cAAc;IACjB,IAAI,EAAE,cAAc,CAAC,IAAI;CAC1B,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,kBAAkB;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,kBAAkB","sourcesContent":["// process-config.ts\nimport * as path from \"path\";\nimport { readFileSync } from \"fs\";\nimport { basePath } from \"../base-path.js\";\n\n// Path to package.json to retrieve package name and version\nexport const PACKAGE_JSON_PATH = path.join(basePath, \"package.json\");\n\n// Read package.json and export as an object\ninterface PackageInfo {\n name: string;\n version: string;\n}\n\nconst rawPackageInfo: PackageInfo = JSON.parse(readFileSync(PACKAGE_JSON_PATH, \"utf8\"));\n\nexport const PACKAGE_INFO: PackageInfo = {\n ...rawPackageInfo,\n name: rawPackageInfo.name\n};\n\n// Other configuration values (update intervals, timeouts, etc.)\nexport const MQTT_UPDATE_INTERVAL = 10000; // in milliseconds\nexport const ACTIVE_TIMEOUT = 10000; // in milliseconds\n"]}
1
+ {"version":3,"file":"process-config.js","sourceRoot":"","sources":["../../src/uns/process-config.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAQrE,MAAM,cAAc,GAAgB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,GAAG,cAAc;IACjB,IAAI,EAAE,cAAc,CAAC,IAAI;CAC1B,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,kBAAkB;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,kBAAkB","sourcesContent":["// process-config.ts\r\nimport * as path from \"path\";\r\nimport { readFileSync } from \"fs\";\r\nimport { basePath } from \"../base-path.js\";\r\n\r\n// Path to package.json to retrieve package name and version\r\nexport const PACKAGE_JSON_PATH = path.join(basePath, \"package.json\");\r\n\r\n// Read package.json and export as an object\r\ninterface PackageInfo {\r\n name: string;\r\n version: string;\r\n}\r\n\r\nconst rawPackageInfo: PackageInfo = JSON.parse(readFileSync(PACKAGE_JSON_PATH, \"utf8\"));\r\n\r\nexport const PACKAGE_INFO: PackageInfo = {\r\n ...rawPackageInfo,\r\n name: rawPackageInfo.name\r\n};\r\n\r\n// Other configuration values (update intervals, timeouts, etc.)\r\nexport const MQTT_UPDATE_INTERVAL = 10000; // in milliseconds\r\nexport const ACTIVE_TIMEOUT = 10000; // in milliseconds\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"process-name-service.js","sourceRoot":"","sources":["../../src/uns/process-name-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,cAAc;IAC5B,4DAA4D;IAC5D,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;QAC/C,MAAM,KAAK,GAAG,sCAAsC,CAAC;QACrD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CACpD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CACvD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEX,yDAAyD;QACzD,IAAI,CAAC;YACH,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC","sourcesContent":["import { readFileSync, writeFileSync } from \"fs\";\nimport { PROCESS_NAME_FILE } from \"./process-config.js\";\nimport logger from \"../logger.js\";\n\n/**\n * Retrieves a persistent process name.\n * - Checks if a process name is provided via command-line args.\n * - Otherwise, reads the process name from a file.\n * - If the file does not exist, generates a new name and stores it.\n */\nexport function getProcessName(): string {\n // Try to read the process name from the configuration file.\n try {\n return readFileSync(PROCESS_NAME_FILE, \"utf8\").trim();\n } catch {\n // Generate a new process name if reading fails\n const chars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n const newProcessName = Array.from({ length: 6 }, () =>\n chars.charAt(Math.floor(Math.random() * chars.length))\n ).join(\"\");\n\n // Write the new process name to the file for persistence\n try {\n writeFileSync(PROCESS_NAME_FILE, newProcessName, \"utf8\");\n } catch (err) {\n logger.error(\"Failed to write process name file:\", err);\n }\n\n return newProcessName;\n }\n}\n"]}
1
+ {"version":3,"file":"process-name-service.js","sourceRoot":"","sources":["../../src/uns/process-name-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,cAAc;IAC5B,4DAA4D;IAC5D,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;QAC/C,MAAM,KAAK,GAAG,sCAAsC,CAAC;QACrD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CACpD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CACvD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEX,yDAAyD;QACzD,IAAI,CAAC;YACH,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC","sourcesContent":["import { readFileSync, writeFileSync } from \"fs\";\r\nimport { PROCESS_NAME_FILE } from \"./process-config.js\";\r\nimport logger from \"../logger.js\";\r\n\r\n/**\r\n * Retrieves a persistent process name.\r\n * - Checks if a process name is provided via command-line args.\r\n * - Otherwise, reads the process name from a file.\r\n * - If the file does not exist, generates a new name and stores it.\r\n */\r\nexport function getProcessName(): string {\r\n // Try to read the process name from the configuration file.\r\n try {\r\n return readFileSync(PROCESS_NAME_FILE, \"utf8\").trim();\r\n } catch {\r\n // Generate a new process name if reading fails\r\n const chars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\r\n const newProcessName = Array.from({ length: 6 }, () =>\r\n chars.charAt(Math.floor(Math.random() * chars.length))\r\n ).join(\"\");\r\n\r\n // Write the new process name to the file for persistence\r\n try {\r\n writeFileSync(PROCESS_NAME_FILE, newProcessName, \"utf8\");\r\n } catch (err) {\r\n logger.error(\"Failed to write process name file:\", err);\r\n }\r\n\r\n return newProcessName;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"status-monitor.js","sourceRoot":"","sources":["../../src/uns/status-monitor.ts"],"names":[],"mappings":"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","sourcesContent":["// status-monitor.ts\nimport logger from \"../logger.js\";\nimport { IUnsMessage } from \"./uns-interfaces.js\";\nimport { DataSizeMeasurements } from \"./uns-measurements.js\";\nimport { UnsPacket } from \"./uns-packet.js\";\nimport type MqttProxy from \"../uns-mqtt/mqtt-proxy.js\";\n\nexport class StatusMonitor {\n private memoryInterval?: NodeJS.Timeout;\n private statusInterval?: NodeJS.Timeout;\n\n /**\n * @param mqttProxy The MQTT proxy used to publish messages.\n * @param processStatusTopic The base topic for the process (ending with a slash).\n * @param activeSupplier A function returning the current active state (boolean).\n * @param memoryIntervalMs Interval in milliseconds for publishing memory status.\n * @param statusIntervalMs Interval in milliseconds for publishing active status.\n * @param processIdentity Optional identity to attach to active status messages.\n */\n constructor(\n private mqttProxy: MqttProxy,\n private processStatusTopic: string,\n private activeSupplier: () => boolean,\n private memoryIntervalMs: number,\n private statusIntervalMs: number,\n private processIdentity?: { processName: string; processId: string },\n ) {}\n\n /**\n * Starts the periodic memory and status updates.\n */\n public start(): void {\n this.memoryInterval = setInterval(() => this.publishMemoryUpdates(), this.memoryIntervalMs);\n this.statusInterval = setInterval(() => this.publishStatusUpdates(), this.statusIntervalMs);\n }\n\n /**\n * Stops the periodic updates.\n */\n public stop(): void {\n if (this.memoryInterval) {\n clearInterval(this.memoryInterval);\n this.memoryInterval = undefined;\n }\n if (this.statusInterval) {\n clearInterval(this.statusInterval);\n this.statusInterval = undefined;\n }\n }\n\n /**\n * Publishes memory usage updates via MQTT.\n * In this example, only the `heapUsed` metric is published.\n */\n private async publishMemoryUpdates(): Promise<void> {\n try {\n const time = UnsPacket.formatToISO8601(new Date());\n const memoryUsage = process.memoryUsage();\n const heapUsedMessage: IUnsMessage = { data: { time, value: Math.round(memoryUsage.heapUsed/1048576), uom: DataSizeMeasurements.MegaByte } };\n let packet = await UnsPacket.unsPacketFromUnsMessage(heapUsedMessage);\n this.mqttProxy.publish(\n `${this.processStatusTopic}heap-used`,\n JSON.stringify(packet)\n );\n\n const heapTotalMessage: IUnsMessage = { data: { time, value: Math.round(memoryUsage.heapTotal/1048576), uom: DataSizeMeasurements.MegaByte } };\n packet = await UnsPacket.unsPacketFromUnsMessage(heapTotalMessage);\n this.mqttProxy.publish(\n `${this.processStatusTopic}heap-total`,\n JSON.stringify(packet)\n );\n\n } catch (error: any) {\n logger.error(`StatusMonitor - Error publishing memory updates: ${error.message}`);\n }\n }\n\n /**\n * Publishes the process active status via MQTT.\n */\n private async publishStatusUpdates(): Promise<void> {\n try {\n const time = UnsPacket.formatToISO8601(new Date());\n const activeMessage: IUnsMessage = {\n data: { time, value: Number(this.activeSupplier()) },\n };\n const packet = await UnsPacket.unsPacketFromUnsMessage(activeMessage);\n this.mqttProxy.publish(\n `${this.processStatusTopic}active`,\n JSON.stringify(packet),\n {\n retain: false,\n properties: this.processIdentity\n ? {\n userProperties: {\n processName: this.processIdentity.processName,\n processId: this.processIdentity.processId,\n },\n }\n : undefined,\n },\n );\n } catch (error: any) {\n logger.error(`StatusMonitor - Error publishing status updates: ${error.message}`);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"status-monitor.js","sourceRoot":"","sources":["../../src/uns/status-monitor.ts"],"names":[],"mappings":"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","sourcesContent":["// status-monitor.ts\r\nimport logger from \"../logger.js\";\r\nimport { IUnsMessage } from \"./uns-interfaces.js\";\r\nimport { DataSizeMeasurements } from \"./uns-measurements.js\";\r\nimport { UnsPacket } from \"./uns-packet.js\";\r\nimport type MqttProxy from \"../uns-mqtt/mqtt-proxy.js\";\r\n\r\nexport class StatusMonitor {\r\n private memoryInterval?: NodeJS.Timeout;\r\n private statusInterval?: NodeJS.Timeout;\r\n\r\n /**\r\n * @param mqttProxy The MQTT proxy used to publish messages.\r\n * @param processStatusTopic The base topic for the process (ending with a slash).\r\n * @param activeSupplier A function returning the current active state (boolean).\r\n * @param memoryIntervalMs Interval in milliseconds for publishing memory status.\r\n * @param statusIntervalMs Interval in milliseconds for publishing active status.\r\n * @param processIdentity Optional identity to attach to active status messages.\r\n */\r\n constructor(\r\n private mqttProxy: MqttProxy,\r\n private processStatusTopic: string,\r\n private activeSupplier: () => boolean,\r\n private memoryIntervalMs: number,\r\n private statusIntervalMs: number,\r\n private processIdentity?: { processName: string; processId: string },\r\n ) {}\r\n\r\n /**\r\n * Starts the periodic memory and status updates.\r\n */\r\n public start(): void {\r\n this.memoryInterval = setInterval(() => this.publishMemoryUpdates(), this.memoryIntervalMs);\r\n this.statusInterval = setInterval(() => this.publishStatusUpdates(), this.statusIntervalMs);\r\n }\r\n\r\n /**\r\n * Stops the periodic updates.\r\n */\r\n public stop(): void {\r\n if (this.memoryInterval) {\r\n clearInterval(this.memoryInterval);\r\n this.memoryInterval = undefined;\r\n }\r\n if (this.statusInterval) {\r\n clearInterval(this.statusInterval);\r\n this.statusInterval = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Publishes memory usage updates via MQTT.\r\n * In this example, only the `heapUsed` metric is published.\r\n */\r\n private async publishMemoryUpdates(): Promise<void> {\r\n try {\r\n const time = UnsPacket.formatToISO8601(new Date());\r\n const memoryUsage = process.memoryUsage();\r\n const heapUsedMessage: IUnsMessage = { data: { time, value: Math.round(memoryUsage.heapUsed/1048576), uom: DataSizeMeasurements.MegaByte } };\r\n let packet = await UnsPacket.unsPacketFromUnsMessage(heapUsedMessage);\r\n this.mqttProxy.publish(\r\n `${this.processStatusTopic}heap-used`,\r\n JSON.stringify(packet)\r\n );\r\n\r\n const heapTotalMessage: IUnsMessage = { data: { time, value: Math.round(memoryUsage.heapTotal/1048576), uom: DataSizeMeasurements.MegaByte } };\r\n packet = await UnsPacket.unsPacketFromUnsMessage(heapTotalMessage);\r\n this.mqttProxy.publish(\r\n `${this.processStatusTopic}heap-total`,\r\n JSON.stringify(packet)\r\n );\r\n\r\n } catch (error: any) {\r\n logger.error(`StatusMonitor - Error publishing memory updates: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Publishes the process active status via MQTT.\r\n */\r\n private async publishStatusUpdates(): Promise<void> {\r\n try {\r\n const time = UnsPacket.formatToISO8601(new Date());\r\n const activeMessage: IUnsMessage = {\r\n data: { time, value: Number(this.activeSupplier()) },\r\n };\r\n const packet = await UnsPacket.unsPacketFromUnsMessage(activeMessage);\r\n this.mqttProxy.publish(\r\n `${this.processStatusTopic}active`,\r\n JSON.stringify(packet),\r\n {\r\n retain: false,\r\n properties: this.processIdentity\r\n ? {\r\n userProperties: {\r\n processName: this.processIdentity.processName,\r\n processId: this.processIdentity.processId,\r\n },\r\n }\r\n : undefined,\r\n },\r\n );\r\n } catch (error: any) {\r\n logger.error(`StatusMonitor - Error publishing status updates: ${error.message}`);\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-asset.js","sourceRoot":"","sources":["../../src/uns/uns-asset.ts"],"names":[],"mappings":"","sourcesContent":["export type UnsAsset = \"\" | (string & {});\n"]}
1
+ {"version":3,"file":"uns-asset.js","sourceRoot":"","sources":["../../src/uns/uns-asset.ts"],"names":[],"mappings":"","sourcesContent":["export type UnsAsset = \"\" | (string & {});\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-attributes.js","sourceRoot":"","sources":["../../src/uns/uns-attributes.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAOrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAEpE,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,CACL,2BAA2B,CAAC,IAAI,CAAC;QAChC,qBAA4D,CAAC,IAAI,CAAC,CACpE,CAAC;AACJ,CAAC","sourcesContent":["// Slimmed: use generated dictionary as the source of attributes.\nimport { GeneratedAttributes, GeneratedAttributeDescriptions } from \"./uns-dictionary.generated.js\";\nimport { resolveAttributeDescription } from \"./uns-dictionary-registry.js\";\n\nexport const knownUnsAttributes = Object.values(GeneratedAttributes);\n\nexport type KnownUnsAttributeName = typeof GeneratedAttributes[keyof typeof GeneratedAttributes];\n\n// Allow known attribute names while still allowing arbitrary strings.\nexport type UnsAttribute = \"\" | KnownUnsAttributeName | (string & {});\n\nexport const AttributeDescriptions = GeneratedAttributeDescriptions;\n\nexport function getAttributeDescription(name: string): string | undefined {\n return (\n resolveAttributeDescription(name) ??\n (AttributeDescriptions as Record<string, string | undefined>)[name]\n );\n}\n"]}
1
+ {"version":3,"file":"uns-attributes.js","sourceRoot":"","sources":["../../src/uns/uns-attributes.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAOrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAEpE,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,CACL,2BAA2B,CAAC,IAAI,CAAC;QAChC,qBAA4D,CAAC,IAAI,CAAC,CACpE,CAAC;AACJ,CAAC","sourcesContent":["// Slimmed: use generated dictionary as the source of attributes.\r\nimport { GeneratedAttributes, GeneratedAttributeDescriptions } from \"./uns-dictionary.generated.js\";\r\nimport { resolveAttributeDescription } from \"./uns-dictionary-registry.js\";\r\n\r\nexport const knownUnsAttributes = Object.values(GeneratedAttributes);\r\n\r\nexport type KnownUnsAttributeName = typeof GeneratedAttributes[keyof typeof GeneratedAttributes];\r\n\r\n// Allow known attribute names while still allowing arbitrary strings.\r\nexport type UnsAttribute = \"\" | KnownUnsAttributeName | (string & {});\r\n\r\nexport const AttributeDescriptions = GeneratedAttributeDescriptions;\r\n\r\nexport function getAttributeDescription(name: string): string | undefined {\r\n return (\r\n resolveAttributeDescription(name) ??\r\n (AttributeDescriptions as Record<string, string | undefined>)[name]\r\n );\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-dictionary-registry.js","sourceRoot":"","sources":["../../src/uns/uns-dictionary-registry.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,oDAAoD;AAEpD,IAAI,sBAAsB,GAA2B,EAAE,CAAC;AACxD,IAAI,qBAAqB,GAA2B,EAAE,CAAC;AAEvD,MAAM,UAAU,8BAA8B,CAAC,GAA2B;IACxE,sBAAsB,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,GAAG,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,GAA2B;IACvE,qBAAqB,GAAG,EAAE,GAAG,qBAAqB,EAAE,GAAG,GAAG,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAwB;IACnE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAwB;IAClE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC","sourcesContent":["// Simple registry to allow projects to provide additional descriptions at runtime\n// without coupling core to project-generated files.\n\nlet objectTypeDescriptions: Record<string, string> = {};\nlet attributeDescriptions: Record<string, string> = {};\n\nexport function registerObjectTypeDescriptions(map: Record<string, string>): void {\n objectTypeDescriptions = { ...objectTypeDescriptions, ...map };\n}\n\nexport function registerAttributeDescriptions(map: Record<string, string>): void {\n attributeDescriptions = { ...attributeDescriptions, ...map };\n}\n\nexport function resolveObjectTypeDescription(name: string | undefined): string | undefined {\n if (!name) return undefined;\n return objectTypeDescriptions[name];\n}\n\nexport function resolveAttributeDescription(name: string | undefined): string | undefined {\n if (!name) return undefined;\n return attributeDescriptions[name];\n}\n"]}
1
+ {"version":3,"file":"uns-dictionary-registry.js","sourceRoot":"","sources":["../../src/uns/uns-dictionary-registry.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,oDAAoD;AAEpD,IAAI,sBAAsB,GAA2B,EAAE,CAAC;AACxD,IAAI,qBAAqB,GAA2B,EAAE,CAAC;AAEvD,MAAM,UAAU,8BAA8B,CAAC,GAA2B;IACxE,sBAAsB,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,GAAG,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,GAA2B;IACvE,qBAAqB,GAAG,EAAE,GAAG,qBAAqB,EAAE,GAAG,GAAG,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAwB;IACnE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAwB;IAClE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC","sourcesContent":["// Simple registry to allow projects to provide additional descriptions at runtime\r\n// without coupling core to project-generated files.\r\n\r\nlet objectTypeDescriptions: Record<string, string> = {};\r\nlet attributeDescriptions: Record<string, string> = {};\r\n\r\nexport function registerObjectTypeDescriptions(map: Record<string, string>): void {\r\n objectTypeDescriptions = { ...objectTypeDescriptions, ...map };\r\n}\r\n\r\nexport function registerAttributeDescriptions(map: Record<string, string>): void {\r\n attributeDescriptions = { ...attributeDescriptions, ...map };\r\n}\r\n\r\nexport function resolveObjectTypeDescription(name: string | undefined): string | undefined {\r\n if (!name) return undefined;\r\n return objectTypeDescriptions[name];\r\n}\r\n\r\nexport function resolveAttributeDescription(name: string | undefined): string | undefined {\r\n if (!name) return undefined;\r\n return attributeDescriptions[name];\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-dictionary.generated.js","sourceRoot":"","sources":["../../src/uns/uns-dictionary.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* Auto-generated by generate-uns-dictionary.ts. Do not edit by hand. */\nexport const GeneratedObjectTypes = {\n /**\n * Maziva, olja, čistila, ki se porabijo in niso del izdelka.\n */\n \"consumable-resource\": \"consumable-resource\",\n /**\n * Merilno mesto za aktivno/jalovo energijo in moč.\n */\n \"energy-meter\": \"energy-meter\",\n /**\n * Energija (elektrika, para, plin).\n */\n \"energy-resource\": \"energy-resource\",\n /**\n * Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.\n */\n \"equipment\": \"equipment\",\n /**\n * Tekočine in plini, ki niso energenti.\n */\n \"fluid-resource\": \"fluid-resource\",\n /**\n * Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike.\n */\n \"material\": \"material\",\n /**\n * Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.\n */\n \"personnel\": \"personnel\",\n /**\n * Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.\n */\n \"process-segment\": \"process-segment\",\n /**\n * Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije.\n */\n \"product-definition\": \"product-definition\",\n /**\n * Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).\n */\n \"product-quality\": \"product-quality\",\n /**\n * Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo.\n */\n \"resource-status\": \"resource-status\",\n /**\n * Utility viri (voda, zrak, dušik, stisnjeni plini).\n */\n \"utility-resource\": \"utility-resource\",\n /**\n * Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.\n */\n \"work-definition\": \"work-definition\",\n} as const;\n\nexport const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {\n \"consumable-resource\": \"Maziva, olja, čistila, ki se porabijo in niso del izdelka.\",\n \"energy-meter\": \"Merilno mesto za aktivno/jalovo energijo in moč.\",\n \"energy-resource\": \"Energija (elektrika, para, plin).\",\n \"equipment\": \"Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.\",\n \"fluid-resource\": \"Tekočine in plini, ki niso energenti.\",\n \"material\": \"Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike.\",\n \"personnel\": \"Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.\",\n \"process-segment\": \"Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.\",\n \"product-definition\": \"Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije.\",\n \"product-quality\": \"Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).\",\n \"resource-status\": \"Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo.\",\n \"utility-resource\": \"Utility viri (voda, zrak, dušik, stisnjeni plini).\",\n \"work-definition\": \"Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.\",\n};\n\nexport type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;\n\nexport function getGeneratedObjectTypeDescription(name: string): string | undefined {\n return (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[name];\n}\n\nexport const GeneratedAttributes = {\n /**\n * Oddana delovna energija (izvoz).\n */\n \"active-energy-delivered\": \"active-energy-delivered\",\n /**\n * Prejeta delovna energija (uvoz).\n */\n \"active-energy-received\": \"active-energy-received\",\n /**\n * Alarmni signal.\n */\n \"alarm\": \"alarm\",\n /**\n * Dodeljeno osebi ali ekipi.\n */\n \"assigned-to\": \"assigned-to\",\n /**\n * Nivo pooblastil.\n */\n \"authorization-level\": \"authorization-level\",\n /**\n * Razpoložljivost vira.\n */\n \"availability\": \"availability\",\n /**\n * Številka serije (batch).\n */\n \"batch-number\": \"batch-number\",\n /**\n * Prevodnost.\n */\n \"conductivity\": \"conductivity\",\n /**\n * Poraba.\n */\n \"consumption\": \"consumption\",\n /**\n * Hitrost porabe.\n */\n \"consumption-rate\": \"consumption-rate\",\n /**\n * Strošek.\n */\n \"cost\": \"cost\",\n /**\n * Tok.\n */\n \"current\": \"current\",\n /**\n * Odstopanje od specifikacije.\n */\n \"deviation\": \"deviation\",\n /**\n * Zastoj/izpad.\n */\n \"downtime\": \"downtime\",\n /**\n * Trajanje faze ali naloge.\n */\n \"duration\": \"duration\",\n /**\n * Čas zaključka.\n */\n \"end-time\": \"end-time\",\n /**\n * Energija.\n */\n \"energy\": \"energy\",\n /**\n * Poraba energije.\n */\n \"energy-consumption\": \"energy-consumption\",\n /**\n * Koda napake.\n */\n \"fault-code\": \"fault-code\",\n /**\n * Pretok.\n */\n \"flow\": \"flow\",\n /**\n * Frekvenca.\n */\n \"frequency\": \"frequency\",\n /**\n * Trdota materiala.\n */\n \"hardness\": \"hardness\",\n /**\n * Rezultat pregleda.\n */\n \"inspection-result\": \"inspection-result\",\n /**\n * Povezava do navodil.\n */\n \"instruction-url\": \"instruction-url\",\n /**\n * Zadnje polnjenje.\n */\n \"last-refill\": \"last-refill\",\n /**\n * Nivo zaloge ali rezervoarja.\n */\n \"level\": \"level\",\n /**\n * Lokacija materiala ali opreme.\n */\n \"location\": \"location\",\n /**\n * Identifikator lota.\n */\n \"lot-id\": \"lot-id\",\n /**\n * Stanje vzdrževanja.\n */\n \"maintenance-status\": \"maintenance-status\",\n /**\n * Sestava materiala.\n */\n \"material-composition\": \"material-composition\",\n /**\n * Tip materiala.\n */\n \"material-type\": \"material-type\",\n /**\n * Število obratovalnih ur.\n */\n \"operating-hours\": \"operating-hours\",\n /**\n * Identifikator operaterja.\n */\n \"operator-id\": \"operator-id\",\n /**\n * Izhodna količina.\n */\n \"output-quantity\": \"output-quantity\",\n /**\n * Uspešno/neuspešno (pass/fail).\n */\n \"pass-fail\": \"pass-fail\",\n /**\n * pH vrednost.\n */\n \"ph\": \"ph\",\n /**\n * Planirani zaključek.\n */\n \"planned-end\": \"planned-end\",\n /**\n * Planirani začetek.\n */\n \"planned-start\": \"planned-start\",\n /**\n * Moč.\n */\n \"power\": \"power\",\n /**\n * Prisotnost osebja.\n */\n \"presence\": \"presence\",\n /**\n * Tlak.\n */\n \"pressure\": \"pressure\",\n /**\n * Koda izdelka.\n */\n \"product-code\": \"product-code\",\n /**\n * Količina materiala.\n */\n \"quantity\": \"quantity\",\n /**\n * Oddana jalova energija (izvoz).\n */\n \"reactive-energy-delivered\": \"reactive-energy-delivered\",\n /**\n * Prejeta jalova energija (uvoz).\n */\n \"reactive-energy-received\": \"reactive-energy-received\",\n /**\n * Potrebno dolivanje/dopolnitev.\n */\n \"refill-required\": \"refill-required\",\n /**\n * Revizija izdelka.\n */\n \"revision\": \"revision\",\n /**\n * Vloga osebja.\n */\n \"role\": \"role\",\n /**\n * Tehnične specifikacije.\n */\n \"specification\": \"specification\",\n /**\n * Hitrost delovanja.\n */\n \"speed\": \"speed\",\n /**\n * Čas začetka.\n */\n \"start-time\": \"start-time\",\n /**\n * Trenutno stanje vira ali opreme.\n */\n \"status\": \"status\",\n /**\n * Površinska napaka.\n */\n \"surface-defect\": \"surface-defect\",\n /**\n * Ciljni parametri izdelka ali procesa.\n */\n \"target-parameters\": \"target-parameters\",\n /**\n * Identifikator naloge.\n */\n \"task-id\": \"task-id\",\n /**\n * Seznam nalog.\n */\n \"task-list\": \"task-list\",\n /**\n * Temperatura vira/opreme.\n */\n \"temperature\": \"temperature\",\n /**\n * Natezna trdnost.\n */\n \"tensile-strength\": \"tensile-strength\",\n /**\n * Skupni pretok.\n */\n \"total-flow\": \"total-flow\",\n /**\n * Izraba vira.\n */\n \"utilization\": \"utilization\",\n /**\n * Zgodovina verzij.\n */\n \"version-history\": \"version-history\",\n /**\n * Merjena vibracija.\n */\n \"vibration\": \"vibration\",\n /**\n * Napetost.\n */\n \"voltage\": \"voltage\",\n /**\n * Identifikator delovnega naloga.\n */\n \"work-order-id\": \"work-order-id\",\n} as const;\n\nexport const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {\n \"active-energy-delivered\": \"Oddana delovna energija (izvoz).\",\n \"active-energy-received\": \"Prejeta delovna energija (uvoz).\",\n \"alarm\": \"Alarmni signal.\",\n \"assigned-to\": \"Dodeljeno osebi ali ekipi.\",\n \"authorization-level\": \"Nivo pooblastil.\",\n \"availability\": \"Razpoložljivost vira.\",\n \"batch-number\": \"Številka serije (batch).\",\n \"conductivity\": \"Prevodnost.\",\n \"consumption\": \"Poraba.\",\n \"consumption-rate\": \"Hitrost porabe.\",\n \"cost\": \"Strošek.\",\n \"current\": \"Tok.\",\n \"deviation\": \"Odstopanje od specifikacije.\",\n \"downtime\": \"Zastoj/izpad.\",\n \"duration\": \"Trajanje faze ali naloge.\",\n \"end-time\": \"Čas zaključka.\",\n \"energy\": \"Energija.\",\n \"energy-consumption\": \"Poraba energije.\",\n \"fault-code\": \"Koda napake.\",\n \"flow\": \"Pretok.\",\n \"frequency\": \"Frekvenca.\",\n \"hardness\": \"Trdota materiala.\",\n \"inspection-result\": \"Rezultat pregleda.\",\n \"instruction-url\": \"Povezava do navodil.\",\n \"last-refill\": \"Zadnje polnjenje.\",\n \"level\": \"Nivo zaloge ali rezervoarja.\",\n \"location\": \"Lokacija materiala ali opreme.\",\n \"lot-id\": \"Identifikator lota.\",\n \"maintenance-status\": \"Stanje vzdrževanja.\",\n \"material-composition\": \"Sestava materiala.\",\n \"material-type\": \"Tip materiala.\",\n \"operating-hours\": \"Število obratovalnih ur.\",\n \"operator-id\": \"Identifikator operaterja.\",\n \"output-quantity\": \"Izhodna količina.\",\n \"pass-fail\": \"Uspešno/neuspešno (pass/fail).\",\n \"ph\": \"pH vrednost.\",\n \"planned-end\": \"Planirani zaključek.\",\n \"planned-start\": \"Planirani začetek.\",\n \"power\": \"Moč.\",\n \"presence\": \"Prisotnost osebja.\",\n \"pressure\": \"Tlak.\",\n \"product-code\": \"Koda izdelka.\",\n \"quantity\": \"Količina materiala.\",\n \"reactive-energy-delivered\": \"Oddana jalova energija (izvoz).\",\n \"reactive-energy-received\": \"Prejeta jalova energija (uvoz).\",\n \"refill-required\": \"Potrebno dolivanje/dopolnitev.\",\n \"revision\": \"Revizija izdelka.\",\n \"role\": \"Vloga osebja.\",\n \"specification\": \"Tehnične specifikacije.\",\n \"speed\": \"Hitrost delovanja.\",\n \"start-time\": \"Čas začetka.\",\n \"status\": \"Trenutno stanje vira ali opreme.\",\n \"surface-defect\": \"Površinska napaka.\",\n \"target-parameters\": \"Ciljni parametri izdelka ali procesa.\",\n \"task-id\": \"Identifikator naloge.\",\n \"task-list\": \"Seznam nalog.\",\n \"temperature\": \"Temperatura vira/opreme.\",\n \"tensile-strength\": \"Natezna trdnost.\",\n \"total-flow\": \"Skupni pretok.\",\n \"utilization\": \"Izraba vira.\",\n \"version-history\": \"Zgodovina verzij.\",\n \"vibration\": \"Merjena vibracija.\",\n \"voltage\": \"Napetost.\",\n \"work-order-id\": \"Identifikator delovnega naloga.\",\n};\n\nconst GeneratedAttributesByTypeBase = {\n \"consumable-resource\": {\n /**\n * Nivo zaloge ali rezervoarja.\n */\n \"level\": \"level\",\n /**\n * Hitrost porabe.\n */\n \"consumption-rate\": \"consumption-rate\",\n /**\n * Potrebno dolivanje/dopolnitev.\n */\n \"refill-required\": \"refill-required\",\n /**\n * Zadnje polnjenje.\n */\n \"last-refill\": \"last-refill\",\n /**\n * Trenutno stanje vira ali opreme.\n */\n \"status\": \"status\",\n },\n \"energy-meter\": {\n /**\n * Moč.\n */\n \"power\": \"power\",\n /**\n * Oddana delovna energija (izvoz).\n */\n \"active-energy-delivered\": \"active-energy-delivered\",\n /**\n * Prejeta delovna energija (uvoz).\n */\n \"active-energy-received\": \"active-energy-received\",\n /**\n * Oddana jalova energija (izvoz).\n */\n \"reactive-energy-delivered\": \"reactive-energy-delivered\",\n /**\n * Prejeta jalova energija (uvoz).\n */\n \"reactive-energy-received\": \"reactive-energy-received\",\n /**\n * Napetost.\n */\n \"voltage\": \"voltage\",\n /**\n * Tok.\n */\n \"current\": \"current\",\n /**\n * Frekvenca.\n */\n \"frequency\": \"frequency\",\n },\n \"energy-resource\": {\n /**\n * Moč.\n */\n \"power\": \"power\",\n /**\n * Energija.\n */\n \"energy\": \"energy\",\n /**\n * Oddana delovna energija (izvoz).\n */\n \"active-energy-delivered\": \"active-energy-delivered\",\n /**\n * Prejeta delovna energija (uvoz).\n */\n \"active-energy-received\": \"active-energy-received\",\n /**\n * Oddana jalova energija (izvoz).\n */\n \"reactive-energy-delivered\": \"reactive-energy-delivered\",\n /**\n * Prejeta jalova energija (uvoz).\n */\n \"reactive-energy-received\": \"reactive-energy-received\",\n /**\n * Napetost.\n */\n \"voltage\": \"voltage\",\n /**\n * Tok.\n */\n \"current\": \"current\",\n /**\n * Frekvenca.\n */\n \"frequency\": \"frequency\",\n /**\n * Strošek.\n */\n \"cost\": \"cost\",\n },\n \"equipment\": {\n /**\n * Trenutno stanje vira ali opreme.\n */\n \"status\": \"status\",\n /**\n * Temperatura vira/opreme.\n */\n \"temperature\": \"temperature\",\n /**\n * Merjena vibracija.\n */\n \"vibration\": \"vibration\",\n /**\n * Število obratovalnih ur.\n */\n \"operating-hours\": \"operating-hours\",\n /**\n * Koda napake.\n */\n \"fault-code\": \"fault-code\",\n /**\n * Hitrost delovanja.\n */\n \"speed\": \"speed\",\n /**\n * Poraba energije.\n */\n \"energy-consumption\": \"energy-consumption\",\n },\n \"fluid-resource\": {\n /**\n * Pretok.\n */\n \"flow\": \"flow\",\n /**\n * Tlak.\n */\n \"pressure\": \"pressure\",\n /**\n * Temperatura vira/opreme.\n */\n \"temperature\": \"temperature\",\n /**\n * Skupni pretok.\n */\n \"total-flow\": \"total-flow\",\n /**\n * Prevodnost.\n */\n \"conductivity\": \"conductivity\",\n /**\n * pH vrednost.\n */\n \"ph\": \"ph\",\n },\n \"material\": {\n /**\n * Identifikator lota.\n */\n \"lot-id\": \"lot-id\",\n /**\n * Številka serije (batch).\n */\n \"batch-number\": \"batch-number\",\n /**\n * Tip materiala.\n */\n \"material-type\": \"material-type\",\n /**\n * Količina materiala.\n */\n \"quantity\": \"quantity\",\n /**\n * Lokacija materiala ali opreme.\n */\n \"location\": \"location\",\n /**\n * Trenutno stanje vira ali opreme.\n */\n \"status\": \"status\",\n },\n \"personnel\": {\n /**\n * Prisotnost osebja.\n */\n \"presence\": \"presence\",\n /**\n * Identifikator naloge.\n */\n \"task-id\": \"task-id\",\n /**\n * Vloga osebja.\n */\n \"role\": \"role\",\n /**\n * Trenutno stanje vira ali opreme.\n */\n \"status\": \"status\",\n },\n \"process-segment\": {\n /**\n * Čas začetka.\n */\n \"start-time\": \"start-time\",\n /**\n * Čas zaključka.\n */\n \"end-time\": \"end-time\",\n /**\n * Trajanje faze ali naloge.\n */\n \"duration\": \"duration\",\n /**\n * Trenutno stanje vira ali opreme.\n */\n \"status\": \"status\",\n /**\n * Izhodna količina.\n */\n \"output-quantity\": \"output-quantity\",\n },\n \"product-definition\": {\n /**\n * Koda izdelka.\n */\n \"product-code\": \"product-code\",\n /**\n * Revizija izdelka.\n */\n \"revision\": \"revision\",\n /**\n * Tehnične specifikacije.\n */\n \"specification\": \"specification\",\n /**\n * Ciljni parametri izdelka ali procesa.\n */\n \"target-parameters\": \"target-parameters\",\n /**\n * Sestava materiala.\n */\n \"material-composition\": \"material-composition\",\n /**\n * Zgodovina verzij.\n */\n \"version-history\": \"version-history\",\n },\n \"product-quality\": {\n /**\n * Rezultat pregleda.\n */\n \"inspection-result\": \"inspection-result\",\n /**\n * Odstopanje od specifikacije.\n */\n \"deviation\": \"deviation\",\n /**\n * Uspešno/neuspešno (pass/fail).\n */\n \"pass-fail\": \"pass-fail\",\n /**\n * Površinska napaka.\n */\n \"surface-defect\": \"surface-defect\",\n /**\n * Trdota materiala.\n */\n \"hardness\": \"hardness\",\n /**\n * Natezna trdnost.\n */\n \"tensile-strength\": \"tensile-strength\",\n },\n \"resource-status\": {\n /**\n * Razpoložljivost vira.\n */\n \"availability\": \"availability\",\n /**\n * Izraba vira.\n */\n \"utilization\": \"utilization\",\n /**\n * Zastoj/izpad.\n */\n \"downtime\": \"downtime\",\n /**\n * Trenutno stanje vira ali opreme.\n */\n \"status\": \"status\",\n /**\n * Stanje vzdrževanja.\n */\n \"maintenance-status\": \"maintenance-status\",\n },\n \"utility-resource\": {\n /**\n * Tlak.\n */\n \"pressure\": \"pressure\",\n /**\n * Pretok.\n */\n \"flow\": \"flow\",\n /**\n * Poraba.\n */\n \"consumption\": \"consumption\",\n /**\n * Trenutno stanje vira ali opreme.\n */\n \"status\": \"status\",\n /**\n * Alarmni signal.\n */\n \"alarm\": \"alarm\",\n },\n \"work-definition\": {\n /**\n * Identifikator delovnega naloga.\n */\n \"work-order-id\": \"work-order-id\",\n /**\n * Seznam nalog.\n */\n \"task-list\": \"task-list\",\n /**\n * Planirani začetek.\n */\n \"planned-start\": \"planned-start\",\n /**\n * Planirani zaključek.\n */\n \"planned-end\": \"planned-end\",\n /**\n * Dodeljeno osebi ali ekipi.\n */\n \"assigned-to\": \"assigned-to\",\n /**\n * Povezava do navodil.\n */\n \"instruction-url\": \"instruction-url\",\n },\n} as const;\n\nexport const GeneratedAttributesByType = GeneratedAttributesByTypeBase;\n\nexport type GeneratedAttributeName = keyof typeof GeneratedAttributes;\n\nexport type GeneratedAttributesFor<T extends keyof typeof GeneratedAttributesByType> = keyof typeof GeneratedAttributesByType[T];\n\nexport function getGeneratedAttributeDescription(name: string): string | undefined {\n return (GeneratedAttributeDescriptions as Record<string, string | undefined>)[name];\n}\n"]}
1
+ {"version":3,"file":"uns-dictionary.generated.js","sourceRoot":"","sources":["../../src/uns/uns-dictionary.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* Auto-generated by generate-uns-dictionary.ts. Do not edit by hand. */\r\nexport const GeneratedObjectTypes = {\r\n /**\r\n * Maziva, olja, čistila, ki se porabijo in niso del izdelka.\r\n */\r\n \"consumable-resource\": \"consumable-resource\",\r\n /**\r\n * Merilno mesto za aktivno/jalovo energijo in moč.\r\n */\r\n \"energy-meter\": \"energy-meter\",\r\n /**\r\n * Energija (elektrika, para, plin).\r\n */\r\n \"energy-resource\": \"energy-resource\",\r\n /**\r\n * Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.\r\n */\r\n \"equipment\": \"equipment\",\r\n /**\r\n * Tekočine in plini, ki niso energenti.\r\n */\r\n \"fluid-resource\": \"fluid-resource\",\r\n /**\r\n * Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike.\r\n */\r\n \"material\": \"material\",\r\n /**\r\n * Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.\r\n */\r\n \"personnel\": \"personnel\",\r\n /**\r\n * Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.\r\n */\r\n \"process-segment\": \"process-segment\",\r\n /**\r\n * Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije.\r\n */\r\n \"product-definition\": \"product-definition\",\r\n /**\r\n * Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).\r\n */\r\n \"product-quality\": \"product-quality\",\r\n /**\r\n * Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo.\r\n */\r\n \"resource-status\": \"resource-status\",\r\n /**\r\n * Utility viri (voda, zrak, dušik, stisnjeni plini).\r\n */\r\n \"utility-resource\": \"utility-resource\",\r\n /**\r\n * Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.\r\n */\r\n \"work-definition\": \"work-definition\",\r\n} as const;\r\n\r\nexport const GeneratedObjectTypeDescriptions: Record<keyof typeof GeneratedObjectTypes, string> = {\r\n \"consumable-resource\": \"Maziva, olja, čistila, ki se porabijo in niso del izdelka.\",\r\n \"energy-meter\": \"Merilno mesto za aktivno/jalovo energijo in moč.\",\r\n \"energy-resource\": \"Energija (elektrika, para, plin).\",\r\n \"equipment\": \"Fizična oprema (stroji, peči, senzorji). Uporablja se za spremljanje stanja, meritev in dogodkov.\",\r\n \"fluid-resource\": \"Tekočine in plini, ki niso energenti.\",\r\n \"material\": \"Materialne enote (loti, serije, surovine, polizdelki). Za sledljivost, količine in premike.\",\r\n \"personnel\": \"Osebje (operaterji, nadzorniki, tehnologi). Za prisotnost, naloge in status.\",\r\n \"process-segment\": \"Posamezen korak v procesu (npr. valjanje, hlajenje, analiza). Za faze ali aktivnosti procesa.\",\r\n \"product-definition\": \"Definicija izdelka, recepture, tehnični opisi. Za metapodatke izdelka in revizije.\",\r\n \"product-quality\": \"Kazalniki kakovosti izdelka (odstopanja, ocene, rezultati meritev).\",\r\n \"resource-status\": \"Status kateregakoli vira (material, osebje, oprema). Za razpoložljivost, okvare, izrabo.\",\r\n \"utility-resource\": \"Utility viri (voda, zrak, dušik, stisnjeni plini).\",\r\n \"work-definition\": \"Definicija nalog ali delovnih tokov. Za planirane operacije in navodila.\",\r\n};\r\n\r\nexport type GeneratedObjectTypeName = keyof typeof GeneratedObjectTypes;\r\n\r\nexport function getGeneratedObjectTypeDescription(name: string): string | undefined {\r\n return (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[name];\r\n}\r\n\r\nexport const GeneratedAttributes = {\r\n /**\r\n * Oddana delovna energija (izvoz).\r\n */\r\n \"active-energy-delivered\": \"active-energy-delivered\",\r\n /**\r\n * Prejeta delovna energija (uvoz).\r\n */\r\n \"active-energy-received\": \"active-energy-received\",\r\n /**\r\n * Alarmni signal.\r\n */\r\n \"alarm\": \"alarm\",\r\n /**\r\n * Dodeljeno osebi ali ekipi.\r\n */\r\n \"assigned-to\": \"assigned-to\",\r\n /**\r\n * Nivo pooblastil.\r\n */\r\n \"authorization-level\": \"authorization-level\",\r\n /**\r\n * Razpoložljivost vira.\r\n */\r\n \"availability\": \"availability\",\r\n /**\r\n * Številka serije (batch).\r\n */\r\n \"batch-number\": \"batch-number\",\r\n /**\r\n * Prevodnost.\r\n */\r\n \"conductivity\": \"conductivity\",\r\n /**\r\n * Poraba.\r\n */\r\n \"consumption\": \"consumption\",\r\n /**\r\n * Hitrost porabe.\r\n */\r\n \"consumption-rate\": \"consumption-rate\",\r\n /**\r\n * Strošek.\r\n */\r\n \"cost\": \"cost\",\r\n /**\r\n * Tok.\r\n */\r\n \"current\": \"current\",\r\n /**\r\n * Odstopanje od specifikacije.\r\n */\r\n \"deviation\": \"deviation\",\r\n /**\r\n * Zastoj/izpad.\r\n */\r\n \"downtime\": \"downtime\",\r\n /**\r\n * Trajanje faze ali naloge.\r\n */\r\n \"duration\": \"duration\",\r\n /**\r\n * Čas zaključka.\r\n */\r\n \"end-time\": \"end-time\",\r\n /**\r\n * Energija.\r\n */\r\n \"energy\": \"energy\",\r\n /**\r\n * Poraba energije.\r\n */\r\n \"energy-consumption\": \"energy-consumption\",\r\n /**\r\n * Koda napake.\r\n */\r\n \"fault-code\": \"fault-code\",\r\n /**\r\n * Pretok.\r\n */\r\n \"flow\": \"flow\",\r\n /**\r\n * Frekvenca.\r\n */\r\n \"frequency\": \"frequency\",\r\n /**\r\n * Trdota materiala.\r\n */\r\n \"hardness\": \"hardness\",\r\n /**\r\n * Rezultat pregleda.\r\n */\r\n \"inspection-result\": \"inspection-result\",\r\n /**\r\n * Povezava do navodil.\r\n */\r\n \"instruction-url\": \"instruction-url\",\r\n /**\r\n * Zadnje polnjenje.\r\n */\r\n \"last-refill\": \"last-refill\",\r\n /**\r\n * Nivo zaloge ali rezervoarja.\r\n */\r\n \"level\": \"level\",\r\n /**\r\n * Lokacija materiala ali opreme.\r\n */\r\n \"location\": \"location\",\r\n /**\r\n * Identifikator lota.\r\n */\r\n \"lot-id\": \"lot-id\",\r\n /**\r\n * Stanje vzdrževanja.\r\n */\r\n \"maintenance-status\": \"maintenance-status\",\r\n /**\r\n * Sestava materiala.\r\n */\r\n \"material-composition\": \"material-composition\",\r\n /**\r\n * Tip materiala.\r\n */\r\n \"material-type\": \"material-type\",\r\n /**\r\n * Število obratovalnih ur.\r\n */\r\n \"operating-hours\": \"operating-hours\",\r\n /**\r\n * Identifikator operaterja.\r\n */\r\n \"operator-id\": \"operator-id\",\r\n /**\r\n * Izhodna količina.\r\n */\r\n \"output-quantity\": \"output-quantity\",\r\n /**\r\n * Uspešno/neuspešno (pass/fail).\r\n */\r\n \"pass-fail\": \"pass-fail\",\r\n /**\r\n * pH vrednost.\r\n */\r\n \"ph\": \"ph\",\r\n /**\r\n * Planirani zaključek.\r\n */\r\n \"planned-end\": \"planned-end\",\r\n /**\r\n * Planirani začetek.\r\n */\r\n \"planned-start\": \"planned-start\",\r\n /**\r\n * Moč.\r\n */\r\n \"power\": \"power\",\r\n /**\r\n * Prisotnost osebja.\r\n */\r\n \"presence\": \"presence\",\r\n /**\r\n * Tlak.\r\n */\r\n \"pressure\": \"pressure\",\r\n /**\r\n * Koda izdelka.\r\n */\r\n \"product-code\": \"product-code\",\r\n /**\r\n * Količina materiala.\r\n */\r\n \"quantity\": \"quantity\",\r\n /**\r\n * Oddana jalova energija (izvoz).\r\n */\r\n \"reactive-energy-delivered\": \"reactive-energy-delivered\",\r\n /**\r\n * Prejeta jalova energija (uvoz).\r\n */\r\n \"reactive-energy-received\": \"reactive-energy-received\",\r\n /**\r\n * Potrebno dolivanje/dopolnitev.\r\n */\r\n \"refill-required\": \"refill-required\",\r\n /**\r\n * Revizija izdelka.\r\n */\r\n \"revision\": \"revision\",\r\n /**\r\n * Vloga osebja.\r\n */\r\n \"role\": \"role\",\r\n /**\r\n * Tehnične specifikacije.\r\n */\r\n \"specification\": \"specification\",\r\n /**\r\n * Hitrost delovanja.\r\n */\r\n \"speed\": \"speed\",\r\n /**\r\n * Čas začetka.\r\n */\r\n \"start-time\": \"start-time\",\r\n /**\r\n * Trenutno stanje vira ali opreme.\r\n */\r\n \"status\": \"status\",\r\n /**\r\n * Površinska napaka.\r\n */\r\n \"surface-defect\": \"surface-defect\",\r\n /**\r\n * Ciljni parametri izdelka ali procesa.\r\n */\r\n \"target-parameters\": \"target-parameters\",\r\n /**\r\n * Identifikator naloge.\r\n */\r\n \"task-id\": \"task-id\",\r\n /**\r\n * Seznam nalog.\r\n */\r\n \"task-list\": \"task-list\",\r\n /**\r\n * Temperatura vira/opreme.\r\n */\r\n \"temperature\": \"temperature\",\r\n /**\r\n * Natezna trdnost.\r\n */\r\n \"tensile-strength\": \"tensile-strength\",\r\n /**\r\n * Skupni pretok.\r\n */\r\n \"total-flow\": \"total-flow\",\r\n /**\r\n * Izraba vira.\r\n */\r\n \"utilization\": \"utilization\",\r\n /**\r\n * Zgodovina verzij.\r\n */\r\n \"version-history\": \"version-history\",\r\n /**\r\n * Merjena vibracija.\r\n */\r\n \"vibration\": \"vibration\",\r\n /**\r\n * Napetost.\r\n */\r\n \"voltage\": \"voltage\",\r\n /**\r\n * Identifikator delovnega naloga.\r\n */\r\n \"work-order-id\": \"work-order-id\",\r\n} as const;\r\n\r\nexport const GeneratedAttributeDescriptions: Record<keyof typeof GeneratedAttributes, string> = {\r\n \"active-energy-delivered\": \"Oddana delovna energija (izvoz).\",\r\n \"active-energy-received\": \"Prejeta delovna energija (uvoz).\",\r\n \"alarm\": \"Alarmni signal.\",\r\n \"assigned-to\": \"Dodeljeno osebi ali ekipi.\",\r\n \"authorization-level\": \"Nivo pooblastil.\",\r\n \"availability\": \"Razpoložljivost vira.\",\r\n \"batch-number\": \"Številka serije (batch).\",\r\n \"conductivity\": \"Prevodnost.\",\r\n \"consumption\": \"Poraba.\",\r\n \"consumption-rate\": \"Hitrost porabe.\",\r\n \"cost\": \"Strošek.\",\r\n \"current\": \"Tok.\",\r\n \"deviation\": \"Odstopanje od specifikacije.\",\r\n \"downtime\": \"Zastoj/izpad.\",\r\n \"duration\": \"Trajanje faze ali naloge.\",\r\n \"end-time\": \"Čas zaključka.\",\r\n \"energy\": \"Energija.\",\r\n \"energy-consumption\": \"Poraba energije.\",\r\n \"fault-code\": \"Koda napake.\",\r\n \"flow\": \"Pretok.\",\r\n \"frequency\": \"Frekvenca.\",\r\n \"hardness\": \"Trdota materiala.\",\r\n \"inspection-result\": \"Rezultat pregleda.\",\r\n \"instruction-url\": \"Povezava do navodil.\",\r\n \"last-refill\": \"Zadnje polnjenje.\",\r\n \"level\": \"Nivo zaloge ali rezervoarja.\",\r\n \"location\": \"Lokacija materiala ali opreme.\",\r\n \"lot-id\": \"Identifikator lota.\",\r\n \"maintenance-status\": \"Stanje vzdrževanja.\",\r\n \"material-composition\": \"Sestava materiala.\",\r\n \"material-type\": \"Tip materiala.\",\r\n \"operating-hours\": \"Število obratovalnih ur.\",\r\n \"operator-id\": \"Identifikator operaterja.\",\r\n \"output-quantity\": \"Izhodna količina.\",\r\n \"pass-fail\": \"Uspešno/neuspešno (pass/fail).\",\r\n \"ph\": \"pH vrednost.\",\r\n \"planned-end\": \"Planirani zaključek.\",\r\n \"planned-start\": \"Planirani začetek.\",\r\n \"power\": \"Moč.\",\r\n \"presence\": \"Prisotnost osebja.\",\r\n \"pressure\": \"Tlak.\",\r\n \"product-code\": \"Koda izdelka.\",\r\n \"quantity\": \"Količina materiala.\",\r\n \"reactive-energy-delivered\": \"Oddana jalova energija (izvoz).\",\r\n \"reactive-energy-received\": \"Prejeta jalova energija (uvoz).\",\r\n \"refill-required\": \"Potrebno dolivanje/dopolnitev.\",\r\n \"revision\": \"Revizija izdelka.\",\r\n \"role\": \"Vloga osebja.\",\r\n \"specification\": \"Tehnične specifikacije.\",\r\n \"speed\": \"Hitrost delovanja.\",\r\n \"start-time\": \"Čas začetka.\",\r\n \"status\": \"Trenutno stanje vira ali opreme.\",\r\n \"surface-defect\": \"Površinska napaka.\",\r\n \"target-parameters\": \"Ciljni parametri izdelka ali procesa.\",\r\n \"task-id\": \"Identifikator naloge.\",\r\n \"task-list\": \"Seznam nalog.\",\r\n \"temperature\": \"Temperatura vira/opreme.\",\r\n \"tensile-strength\": \"Natezna trdnost.\",\r\n \"total-flow\": \"Skupni pretok.\",\r\n \"utilization\": \"Izraba vira.\",\r\n \"version-history\": \"Zgodovina verzij.\",\r\n \"vibration\": \"Merjena vibracija.\",\r\n \"voltage\": \"Napetost.\",\r\n \"work-order-id\": \"Identifikator delovnega naloga.\",\r\n};\r\n\r\nconst GeneratedAttributesByTypeBase = {\r\n \"consumable-resource\": {\r\n /**\r\n * Nivo zaloge ali rezervoarja.\r\n */\r\n \"level\": \"level\",\r\n /**\r\n * Hitrost porabe.\r\n */\r\n \"consumption-rate\": \"consumption-rate\",\r\n /**\r\n * Potrebno dolivanje/dopolnitev.\r\n */\r\n \"refill-required\": \"refill-required\",\r\n /**\r\n * Zadnje polnjenje.\r\n */\r\n \"last-refill\": \"last-refill\",\r\n /**\r\n * Trenutno stanje vira ali opreme.\r\n */\r\n \"status\": \"status\",\r\n },\r\n \"energy-meter\": {\r\n /**\r\n * Moč.\r\n */\r\n \"power\": \"power\",\r\n /**\r\n * Oddana delovna energija (izvoz).\r\n */\r\n \"active-energy-delivered\": \"active-energy-delivered\",\r\n /**\r\n * Prejeta delovna energija (uvoz).\r\n */\r\n \"active-energy-received\": \"active-energy-received\",\r\n /**\r\n * Oddana jalova energija (izvoz).\r\n */\r\n \"reactive-energy-delivered\": \"reactive-energy-delivered\",\r\n /**\r\n * Prejeta jalova energija (uvoz).\r\n */\r\n \"reactive-energy-received\": \"reactive-energy-received\",\r\n /**\r\n * Napetost.\r\n */\r\n \"voltage\": \"voltage\",\r\n /**\r\n * Tok.\r\n */\r\n \"current\": \"current\",\r\n /**\r\n * Frekvenca.\r\n */\r\n \"frequency\": \"frequency\",\r\n },\r\n \"energy-resource\": {\r\n /**\r\n * Moč.\r\n */\r\n \"power\": \"power\",\r\n /**\r\n * Energija.\r\n */\r\n \"energy\": \"energy\",\r\n /**\r\n * Oddana delovna energija (izvoz).\r\n */\r\n \"active-energy-delivered\": \"active-energy-delivered\",\r\n /**\r\n * Prejeta delovna energija (uvoz).\r\n */\r\n \"active-energy-received\": \"active-energy-received\",\r\n /**\r\n * Oddana jalova energija (izvoz).\r\n */\r\n \"reactive-energy-delivered\": \"reactive-energy-delivered\",\r\n /**\r\n * Prejeta jalova energija (uvoz).\r\n */\r\n \"reactive-energy-received\": \"reactive-energy-received\",\r\n /**\r\n * Napetost.\r\n */\r\n \"voltage\": \"voltage\",\r\n /**\r\n * Tok.\r\n */\r\n \"current\": \"current\",\r\n /**\r\n * Frekvenca.\r\n */\r\n \"frequency\": \"frequency\",\r\n /**\r\n * Strošek.\r\n */\r\n \"cost\": \"cost\",\r\n },\r\n \"equipment\": {\r\n /**\r\n * Trenutno stanje vira ali opreme.\r\n */\r\n \"status\": \"status\",\r\n /**\r\n * Temperatura vira/opreme.\r\n */\r\n \"temperature\": \"temperature\",\r\n /**\r\n * Merjena vibracija.\r\n */\r\n \"vibration\": \"vibration\",\r\n /**\r\n * Število obratovalnih ur.\r\n */\r\n \"operating-hours\": \"operating-hours\",\r\n /**\r\n * Koda napake.\r\n */\r\n \"fault-code\": \"fault-code\",\r\n /**\r\n * Hitrost delovanja.\r\n */\r\n \"speed\": \"speed\",\r\n /**\r\n * Poraba energije.\r\n */\r\n \"energy-consumption\": \"energy-consumption\",\r\n },\r\n \"fluid-resource\": {\r\n /**\r\n * Pretok.\r\n */\r\n \"flow\": \"flow\",\r\n /**\r\n * Tlak.\r\n */\r\n \"pressure\": \"pressure\",\r\n /**\r\n * Temperatura vira/opreme.\r\n */\r\n \"temperature\": \"temperature\",\r\n /**\r\n * Skupni pretok.\r\n */\r\n \"total-flow\": \"total-flow\",\r\n /**\r\n * Prevodnost.\r\n */\r\n \"conductivity\": \"conductivity\",\r\n /**\r\n * pH vrednost.\r\n */\r\n \"ph\": \"ph\",\r\n },\r\n \"material\": {\r\n /**\r\n * Identifikator lota.\r\n */\r\n \"lot-id\": \"lot-id\",\r\n /**\r\n * Številka serije (batch).\r\n */\r\n \"batch-number\": \"batch-number\",\r\n /**\r\n * Tip materiala.\r\n */\r\n \"material-type\": \"material-type\",\r\n /**\r\n * Količina materiala.\r\n */\r\n \"quantity\": \"quantity\",\r\n /**\r\n * Lokacija materiala ali opreme.\r\n */\r\n \"location\": \"location\",\r\n /**\r\n * Trenutno stanje vira ali opreme.\r\n */\r\n \"status\": \"status\",\r\n },\r\n \"personnel\": {\r\n /**\r\n * Prisotnost osebja.\r\n */\r\n \"presence\": \"presence\",\r\n /**\r\n * Identifikator naloge.\r\n */\r\n \"task-id\": \"task-id\",\r\n /**\r\n * Vloga osebja.\r\n */\r\n \"role\": \"role\",\r\n /**\r\n * Trenutno stanje vira ali opreme.\r\n */\r\n \"status\": \"status\",\r\n },\r\n \"process-segment\": {\r\n /**\r\n * Čas začetka.\r\n */\r\n \"start-time\": \"start-time\",\r\n /**\r\n * Čas zaključka.\r\n */\r\n \"end-time\": \"end-time\",\r\n /**\r\n * Trajanje faze ali naloge.\r\n */\r\n \"duration\": \"duration\",\r\n /**\r\n * Trenutno stanje vira ali opreme.\r\n */\r\n \"status\": \"status\",\r\n /**\r\n * Izhodna količina.\r\n */\r\n \"output-quantity\": \"output-quantity\",\r\n },\r\n \"product-definition\": {\r\n /**\r\n * Koda izdelka.\r\n */\r\n \"product-code\": \"product-code\",\r\n /**\r\n * Revizija izdelka.\r\n */\r\n \"revision\": \"revision\",\r\n /**\r\n * Tehnične specifikacije.\r\n */\r\n \"specification\": \"specification\",\r\n /**\r\n * Ciljni parametri izdelka ali procesa.\r\n */\r\n \"target-parameters\": \"target-parameters\",\r\n /**\r\n * Sestava materiala.\r\n */\r\n \"material-composition\": \"material-composition\",\r\n /**\r\n * Zgodovina verzij.\r\n */\r\n \"version-history\": \"version-history\",\r\n },\r\n \"product-quality\": {\r\n /**\r\n * Rezultat pregleda.\r\n */\r\n \"inspection-result\": \"inspection-result\",\r\n /**\r\n * Odstopanje od specifikacije.\r\n */\r\n \"deviation\": \"deviation\",\r\n /**\r\n * Uspešno/neuspešno (pass/fail).\r\n */\r\n \"pass-fail\": \"pass-fail\",\r\n /**\r\n * Površinska napaka.\r\n */\r\n \"surface-defect\": \"surface-defect\",\r\n /**\r\n * Trdota materiala.\r\n */\r\n \"hardness\": \"hardness\",\r\n /**\r\n * Natezna trdnost.\r\n */\r\n \"tensile-strength\": \"tensile-strength\",\r\n },\r\n \"resource-status\": {\r\n /**\r\n * Razpoložljivost vira.\r\n */\r\n \"availability\": \"availability\",\r\n /**\r\n * Izraba vira.\r\n */\r\n \"utilization\": \"utilization\",\r\n /**\r\n * Zastoj/izpad.\r\n */\r\n \"downtime\": \"downtime\",\r\n /**\r\n * Trenutno stanje vira ali opreme.\r\n */\r\n \"status\": \"status\",\r\n /**\r\n * Stanje vzdrževanja.\r\n */\r\n \"maintenance-status\": \"maintenance-status\",\r\n },\r\n \"utility-resource\": {\r\n /**\r\n * Tlak.\r\n */\r\n \"pressure\": \"pressure\",\r\n /**\r\n * Pretok.\r\n */\r\n \"flow\": \"flow\",\r\n /**\r\n * Poraba.\r\n */\r\n \"consumption\": \"consumption\",\r\n /**\r\n * Trenutno stanje vira ali opreme.\r\n */\r\n \"status\": \"status\",\r\n /**\r\n * Alarmni signal.\r\n */\r\n \"alarm\": \"alarm\",\r\n },\r\n \"work-definition\": {\r\n /**\r\n * Identifikator delovnega naloga.\r\n */\r\n \"work-order-id\": \"work-order-id\",\r\n /**\r\n * Seznam nalog.\r\n */\r\n \"task-list\": \"task-list\",\r\n /**\r\n * Planirani začetek.\r\n */\r\n \"planned-start\": \"planned-start\",\r\n /**\r\n * Planirani zaključek.\r\n */\r\n \"planned-end\": \"planned-end\",\r\n /**\r\n * Dodeljeno osebi ali ekipi.\r\n */\r\n \"assigned-to\": \"assigned-to\",\r\n /**\r\n * Povezava do navodil.\r\n */\r\n \"instruction-url\": \"instruction-url\",\r\n },\r\n} as const;\r\n\r\nexport const GeneratedAttributesByType = GeneratedAttributesByTypeBase;\r\n\r\nexport type GeneratedAttributeName = keyof typeof GeneratedAttributes;\r\n\r\nexport type GeneratedAttributesFor<T extends keyof typeof GeneratedAttributesByType> = keyof typeof GeneratedAttributesByType[T];\r\n\r\nexport function getGeneratedAttributeDescription(name: string): string | undefined {\r\n return (GeneratedAttributeDescriptions as Record<string, string | undefined>)[name];\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-event-emitter.js","sourceRoot":"","sources":["../../src/uns/uns-event-emitter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAe;IAClB,SAAS,GAEb,EAAE,CAAC;IAEP,EAAE,CACA,SAAY,EACZ,QAAoC;QAEpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CACD,SAAY,EACZ,QAAoC;QAEpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO;QACvC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAE,CAAC,MAAM,CAC3D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CACtB,CAAC;IACJ,CAAC;IAED,IAAI,CAAyB,SAAY,EAAE,KAAgB;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO;QACvC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;CACF","sourcesContent":["export class UnsEventEmitter<Events extends Record<string, any>> {\n private listeners: {\n [K in keyof Events]?: Array<(event: Events[K]) => void>;\n } = {};\n\n on<K extends keyof Events>(\n eventName: K,\n listener: (event: Events[K]) => void,\n ): void {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName]!.push(listener);\n }\n\n off<K extends keyof Events>(\n eventName: K,\n listener: (event: Events[K]) => void,\n ): void {\n if (!this.listeners[eventName]) return;\n this.listeners[eventName] = this.listeners[eventName]!.filter(\n (l) => l !== listener,\n );\n }\n\n emit<K extends keyof Events>(eventName: K, event: Events[K]): void {\n if (!this.listeners[eventName]) return;\n this.listeners[eventName]!.forEach((listener) => listener(event));\n }\n}"]}
1
+ {"version":3,"file":"uns-event-emitter.js","sourceRoot":"","sources":["../../src/uns/uns-event-emitter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAe;IAClB,SAAS,GAEb,EAAE,CAAC;IAEP,EAAE,CACA,SAAY,EACZ,QAAoC;QAEpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CACD,SAAY,EACZ,QAAoC;QAEpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO;QACvC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAE,CAAC,MAAM,CAC3D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CACtB,CAAC;IACJ,CAAC;IAED,IAAI,CAAyB,SAAY,EAAE,KAAgB;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO;QACvC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;CACF","sourcesContent":["export class UnsEventEmitter<Events extends Record<string, any>> {\r\n private listeners: {\r\n [K in keyof Events]?: Array<(event: Events[K]) => void>;\r\n } = {};\r\n\r\n on<K extends keyof Events>(\r\n eventName: K,\r\n listener: (event: Events[K]) => void,\r\n ): void {\r\n if (!this.listeners[eventName]) {\r\n this.listeners[eventName] = [];\r\n }\r\n this.listeners[eventName]!.push(listener);\r\n }\r\n\r\n off<K extends keyof Events>(\r\n eventName: K,\r\n listener: (event: Events[K]) => void,\r\n ): void {\r\n if (!this.listeners[eventName]) return;\r\n this.listeners[eventName] = this.listeners[eventName]!.filter(\r\n (l) => l !== listener,\r\n );\r\n }\r\n\r\n emit<K extends keyof Events>(eventName: K, event: Events[K]): void {\r\n if (!this.listeners[eventName]) return;\r\n this.listeners[eventName]!.forEach((listener) => listener(event));\r\n }\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-interfaces.js","sourceRoot":"","sources":["../../src/uns/uns-interfaces.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,YAAY,GAAG,+CAA+C,CAAC;IACrE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAID,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAIxD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,WAAW;IACX,cAAc;IACd,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;CACD,CAAC;AAEX,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAS,qBAAqB,CAAC,CAAC;AACvE,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AACnD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AACnD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAW3C,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9B,CAAC;AACJ,CAAC","sourcesContent":["import { UnsAttributeType } from \"../graphql/schema.js\";\nimport { MeasurementUnit } from \"./uns-measurements.js\";\nimport { UnsTags } from \"./uns-tags.js\";\nimport type { UnsObjectId, UnsObjectType } from \"./uns-object.js\";\nimport type { UnsAsset } from \"./uns-asset.js\";\nimport type { IMqttConnectProperties, IMqttPublishOptions, IMqttServerConfig, MqttProtocol } from \"../uns-mqtt/mqtt-interfaces.js\";\nimport { UnsTopics } from \"./uns-topics.js\";\nimport { knownUnsAttributes, type KnownUnsAttributeName } from \"./uns-attributes.js\";\n\nexport type ISO8601 = `${number}-${string}-${string}T${string}:${string}:${string}.${string}Z`;\nexport function isIOS8601Type(value: string): value is ISO8601 {\n const iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n return iso8601Regex.test(value);\n}\n// Known attribute names (with IntelliSense) while still allowing arbitrary strings.\nexport type UnsAttribute = KnownUnsAttributeName | (string & {});\n\nexport const valueTypes = [\"string\", \"number\"] as const;\nexport type ValueTypeString = (typeof valueTypes)[number];\nexport type ValueType = string | number;\n\nexport const questDbPrimitiveTypes = [\n \"boolean\",\n \"ipv4\",\n \"byte\",\n \"short\",\n \"char\",\n \"int\",\n \"float\",\n \"symbol\",\n \"varchar\",\n \"string\",\n \"long\",\n \"date\",\n \"timestamp\",\n \"timestamp_ns\",\n \"double\",\n \"uuid\",\n \"binary\",\n \"long256\",\n] as const;\n\nconst questDbPrimitiveTypeSet = new Set<string>(questDbPrimitiveTypes);\nconst questDbGeohashRegex = /^geohash\\(\\d+[bc]\\)$/;\nconst questDbDecimalRegex = /^decimal\\(\\d+,\\d+\\)$/;\nconst questDbArrayRegex = /^array<[^>]+>$/;\n\nexport type QuestDbPrimitiveType = (typeof questDbPrimitiveTypes)[number];\n\n// Supported QuestDB column types for UNS tables.\nexport type QuestDbType =\n | QuestDbPrimitiveType\n | `geohash(${number}${\"b\" | \"c\"})`\n | `decimal(${number},${number})`\n | `array<${string}>`;\n\nexport function isQuestDbType(value: unknown): value is QuestDbType {\n if (typeof value !== \"string\") {\n return false;\n }\n if (questDbPrimitiveTypeSet.has(value)) {\n return true;\n }\n return (\n questDbGeohashRegex.test(value) ||\n questDbDecimalRegex.test(value) ||\n questDbArrayRegex.test(value)\n );\n}\n\nexport interface IUnsParameters {\n mqttSubToTopics?: string | string[];\n username?: string;\n password?: string;\n mqttSSL?: boolean;\n publishThrottlingDelay?: number; // Delay in milliseconds; default is 1ms\n subscribeThrottlingDelay?: number; // Delay in milliseconds; default is 1ms\n rejectUnauthorized?: boolean;\n clientId?: string;\n hosts?: string[];\n servers?: IMqttServerConfig[];\n port?: number;\n protocol?: MqttProtocol;\n keepalive?: number;\n clean?: boolean;\n connectTimeout?: number;\n reconnectPeriod?: number;\n reconnectOnConnackError?: boolean;\n resubscribe?: boolean;\n queueQoSZero?: boolean;\n properties?: IMqttConnectProperties;\n ca?: string;\n cert?: string;\n key?: string;\n servername?: string;\n /**\n * Default MQTT publish options applied to all outgoing messages\n * (e.g., qos, retain, messageExpiryInterval).\n */\n defaultPublishOptions?: IMqttPublishOptions;\n}\n\nexport interface IUnsProcessParameters {\n processName: string;\n mqttSubToTopics?: string | string[];\n username?: string;\n password?: string;\n mqttSSL?: boolean;\n clientId?: string;\n hosts?: string[];\n servers?: IMqttServerConfig[];\n port?: number;\n protocol?: MqttProtocol;\n keepalive?: number;\n clean?: boolean;\n connectTimeout?: number;\n reconnectPeriod?: number;\n reconnectOnConnackError?: boolean;\n resubscribe?: boolean;\n queueQoSZero?: boolean;\n rejectUnauthorized?: boolean;\n properties?: IMqttConnectProperties;\n ca?: string;\n cert?: string;\n key?: string;\n servername?: string;\n}\n\nexport interface UnsEvents {\n // Emitters in MqttProxy, UnsMqttProxy\n input: { topic: string; message: string, packet: any };\n mqttProxyStatus: { event: string, value: number, uom: MeasurementUnit, statusTopic: string };\n \n // Emitters in MqttProxy\n error: { code: number; message: string };\n \n // Emitters in UnsMqttProxy\n mqttWorker: { command: string, instanceName: string; batchSize: number, referenceHash: string };\n\n // Emitter in UnsCronProxy\n cronEvent: { event?: string; cronExpression?: string };\n\n // Emitters in UnsApiProxy\n apiGetEvent: {req: any, res: any};\n\n // Emitters in UnsProxy\n unsProxyProducedTopics: { producedTopics: ITopicObject[], statusTopic: string };\n\n // Emitters in UnsProxy\n unsProxyProducedApiEndpoints: { producedApiEndpoints: IApiObject[], statusTopic: string };\n\n // Emitters in UnsProxy\n unsProxyProducedApiCatchAll: { producedCatchall: IApiCatchallMapping[], statusTopic: string };\n}\n\nexport interface IUnsExtendedData extends IUnsData {\n valueType: ValueTypeString;\n}\n\nexport interface IUnsData {\n time: ISO8601;\n value: ValueType;\n dataGroup?: string;\n uom?: MeasurementUnit;\n foreignEventKey?: string;\n intervalStart?: ISO8601 | number;\n intervalEnd?: ISO8601 | number;\n windowStart?: ISO8601 | number;\n windowEnd?: ISO8601 | number;\n eventId?: string;\n deleted?: boolean;\n deletedAt?: ISO8601 | number;\n lastSeen?: ISO8601 | number;\n}\n\nexport interface IUnsTableColumn {\n name: string;\n type: QuestDbType;\n value: string | number | boolean | null;\n uom?: MeasurementUnit;\n}\n\nexport interface IUnsTable {\n time: ISO8601;\n dataGroup?: string;\n columns: IUnsTableColumn[];\n intervalStart?: ISO8601 | number;\n intervalEnd?: ISO8601 | number;\n windowStart?: ISO8601 | number;\n windowEnd?: ISO8601 | number;\n eventId?: string;\n deleted?: boolean;\n deletedAt?: ISO8601 | number;\n lastSeen?: ISO8601 | number;\n}\n\nexport interface IMqttAttributeMessage {\n attribute: UnsAttribute;\n description?: string;\n tags?: UnsTags[];\n attributeNeedsPersistence?: boolean | null;\n}\n\ntype AttributePayload =\n | { message: IUnsMessage; data?: never; table?: never; createdAt?: never; expiresAt?: never }\n | { message?: never; data: IUnsData; table?: never; createdAt?: ISO8601; expiresAt?: ISO8601 }\n | { message?: never; data?: never; table: IUnsTable; createdAt?: ISO8601; expiresAt?: ISO8601 };\n\nexport type IMqttAttributeEntry = IMqttAttributeMessage & AttributePayload;\n\nexport interface IMqttPublishRequest {\n topic: UnsTopics;\n asset: UnsAsset;\n assetDescription?: string;\n objectType: UnsObjectType;\n objectTypeDescription?: string;\n objectId: UnsObjectId;\n attributes: IMqttAttributeEntry | IMqttAttributeEntry[];\n}\n\n// This interface represents a packet for a UNS system\nexport interface IUnsPacket {\n // The message object of the packet\n message: IUnsExtendedMessage;\n \n // The HMAC signature of the message\n messageSignature?: string;\n\n // Automatically calculated interval between two packets in ms\n interval?: number;\n\n // Current library version\n readonly version: string;\n\n // Autogenerated sequence number\n sequenceId?: number;\n}\n\nexport interface IUnsPackatParameters {\n\n}\n\nexport interface IUnsMessage {\n data?: IUnsData;\n table?: IUnsTable;\n expiresAt?: ISO8601;\n createdAt?: ISO8601;\n}\n\nexport interface IUnsExtendedMessage extends IUnsMessage {\n data?: IUnsExtendedData;\n}\n\nexport interface ITopicObject {\n timestamp: string;\n attribute:string;\n attributeType: UnsAttributeType;\n topic:string;\n description:string;\n dataGroup:string;\n tags:string[] | null;\n attributeNeedsPersistence: boolean | null;\n asset: UnsAsset;\n assetDescription?: string;\n objectType: UnsObjectType;\n objectTypeDescription?: string;\n objectId: UnsObjectId;\n}\n\n// API Interfaces below\nexport interface IApiObject {\n timestamp: string;\n attribute:string;\n topic:string;\n attributeType: UnsAttributeType;\n apiDescription?: string; // Optional description for the API endpoint\n apiHost: string; // Hostname of the service\n apiEndpoint: string; // API endpoint for virtual topics\n apiSwaggerEndpoint: string; // Swagger endpoint for API documentation\n apiMethod: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\"; // HTTP method for API endpoint\n apiQueryParams: QueryParamDef[]; // query parameters for the API endpoint\n asset: UnsAsset;\n objectType: UnsObjectType;\n objectId: UnsObjectId;\n controllerName?: string;\n controllerHost?: string;\n controllerPort?: string;\n controllerPublicBase?: string;\n}\n\nexport interface IApiCatchallMapping {\n topic: string;\n apiBase: string;\n apiBasePath: string;\n swaggerPath: string;\n}\n\nexport interface QueryParamDef {\n name: string;\n type: \"string\" | \"number\" | \"boolean\";\n required?: boolean;\n description?: string;\n /**\n * Optional canonical chat alias used by assistant tooling.\n * Typical values: from, to, limit, topic, timezone, summaryOnly.\n */\n chatCanonical?: string;\n /**\n * Optional default query value. Included in generated OpenAPI metadata.\n */\n defaultValue?: string | number | boolean;\n}\n\nexport interface ApiChatDefaults {\n from?: string;\n to?: string;\n limit?: number;\n topic?: string;\n timezone?: string;\n summaryOnly?: boolean;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface IApiProxyOptions {\n jwtSecret?: string;\n jwks?: {\n wellKnownJwksUrl: string;\n activeKidUrl?: string;\n cacheTtlMs?: number;\n algorithms?: (\"RS256\" | \"RS384\" | \"RS512\")[];\n };\n /**\n * Optional base prefixes to mount the API and swagger JSON under (e.g. \"/archiver-3\").\n * Defaults to \"/api\" when not provided.\n */\n apiBasePath?: string;\n swaggerBasePath?: string;\n /**\n * Skip mounting the default \"/api\" route. Useful when rebasing entirely under a custom prefix.\n */\n disableDefaultApiMount?: boolean;\n}\n\nexport interface IGetEndpointOptions {\n apiDescription?: string;\n tags?: string[];\n queryParams?: QueryParamDef[];\n /**\n * Optional defaults consumed by chat tooling (published as OpenAPI vendor extension x-uns-chat.defaults).\n */\n chatDefaults?: ApiChatDefaults;\n}\n"]}
1
+ {"version":3,"file":"uns-interfaces.js","sourceRoot":"","sources":["../../src/uns/uns-interfaces.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,YAAY,GAAG,+CAA+C,CAAC;IACrE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAID,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAIxD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,WAAW;IACX,cAAc;IACd,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;CACD,CAAC;AAEX,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAS,qBAAqB,CAAC,CAAC;AACvE,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AACnD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AACnD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAW3C,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9B,CAAC;AACJ,CAAC","sourcesContent":["import { UnsAttributeType } from \"../graphql/schema.js\";\r\nimport { MeasurementUnit } from \"./uns-measurements.js\";\r\nimport { UnsTags } from \"./uns-tags.js\";\r\nimport type { UnsObjectId, UnsObjectType } from \"./uns-object.js\";\r\nimport type { UnsAsset } from \"./uns-asset.js\";\r\nimport type { IMqttConnectProperties, IMqttPublishOptions, IMqttServerConfig, MqttProtocol } from \"../uns-mqtt/mqtt-interfaces.js\";\r\nimport { UnsTopics } from \"./uns-topics.js\";\r\nimport { knownUnsAttributes, type KnownUnsAttributeName } from \"./uns-attributes.js\";\r\n\r\nexport type ISO8601 = `${number}-${string}-${string}T${string}:${string}:${string}.${string}Z`;\r\nexport function isIOS8601Type(value: string): value is ISO8601 {\r\n const iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\r\n return iso8601Regex.test(value);\r\n}\r\n// Known attribute names (with IntelliSense) while still allowing arbitrary strings.\r\nexport type UnsAttribute = KnownUnsAttributeName | (string & {});\r\n\r\nexport const valueTypes = [\"string\", \"number\"] as const;\r\nexport type ValueTypeString = (typeof valueTypes)[number];\r\nexport type ValueType = string | number;\r\n\r\nexport const questDbPrimitiveTypes = [\r\n \"boolean\",\r\n \"ipv4\",\r\n \"byte\",\r\n \"short\",\r\n \"char\",\r\n \"int\",\r\n \"float\",\r\n \"symbol\",\r\n \"varchar\",\r\n \"string\",\r\n \"long\",\r\n \"date\",\r\n \"timestamp\",\r\n \"timestamp_ns\",\r\n \"double\",\r\n \"uuid\",\r\n \"binary\",\r\n \"long256\",\r\n] as const;\r\n\r\nconst questDbPrimitiveTypeSet = new Set<string>(questDbPrimitiveTypes);\r\nconst questDbGeohashRegex = /^geohash\\(\\d+[bc]\\)$/;\r\nconst questDbDecimalRegex = /^decimal\\(\\d+,\\d+\\)$/;\r\nconst questDbArrayRegex = /^array<[^>]+>$/;\r\n\r\nexport type QuestDbPrimitiveType = (typeof questDbPrimitiveTypes)[number];\r\n\r\n// Supported QuestDB column types for UNS tables.\r\nexport type QuestDbType =\r\n | QuestDbPrimitiveType\r\n | `geohash(${number}${\"b\" | \"c\"})`\r\n | `decimal(${number},${number})`\r\n | `array<${string}>`;\r\n\r\nexport function isQuestDbType(value: unknown): value is QuestDbType {\r\n if (typeof value !== \"string\") {\r\n return false;\r\n }\r\n if (questDbPrimitiveTypeSet.has(value)) {\r\n return true;\r\n }\r\n return (\r\n questDbGeohashRegex.test(value) ||\r\n questDbDecimalRegex.test(value) ||\r\n questDbArrayRegex.test(value)\r\n );\r\n}\r\n\r\nexport interface IUnsParameters {\r\n mqttSubToTopics?: string | string[];\r\n username?: string;\r\n password?: string;\r\n mqttSSL?: boolean;\r\n publishThrottlingDelay?: number; // Delay in milliseconds; default is 1ms\r\n subscribeThrottlingDelay?: number; // Delay in milliseconds; default is 1ms\r\n rejectUnauthorized?: boolean;\r\n clientId?: string;\r\n hosts?: string[];\r\n servers?: IMqttServerConfig[];\r\n port?: number;\r\n protocol?: MqttProtocol;\r\n keepalive?: number;\r\n clean?: boolean;\r\n connectTimeout?: number;\r\n reconnectPeriod?: number;\r\n reconnectOnConnackError?: boolean;\r\n resubscribe?: boolean;\r\n queueQoSZero?: boolean;\r\n properties?: IMqttConnectProperties;\r\n ca?: string;\r\n cert?: string;\r\n key?: string;\r\n servername?: string;\r\n /**\r\n * Default MQTT publish options applied to all outgoing messages\r\n * (e.g., qos, retain, messageExpiryInterval).\r\n */\r\n defaultPublishOptions?: IMqttPublishOptions;\r\n}\r\n\r\nexport interface IUnsProcessParameters {\r\n processName: string;\r\n mqttSubToTopics?: string | string[];\r\n username?: string;\r\n password?: string;\r\n mqttSSL?: boolean;\r\n clientId?: string;\r\n hosts?: string[];\r\n servers?: IMqttServerConfig[];\r\n port?: number;\r\n protocol?: MqttProtocol;\r\n keepalive?: number;\r\n clean?: boolean;\r\n connectTimeout?: number;\r\n reconnectPeriod?: number;\r\n reconnectOnConnackError?: boolean;\r\n resubscribe?: boolean;\r\n queueQoSZero?: boolean;\r\n rejectUnauthorized?: boolean;\r\n properties?: IMqttConnectProperties;\r\n ca?: string;\r\n cert?: string;\r\n key?: string;\r\n servername?: string;\r\n}\r\n\r\nexport interface UnsEvents {\r\n // Emitters in MqttProxy, UnsMqttProxy\r\n input: { topic: string; message: string, packet: any };\r\n mqttProxyStatus: { event: string, value: number, uom: MeasurementUnit, statusTopic: string };\r\n \r\n // Emitters in MqttProxy\r\n error: { code: number; message: string };\r\n \r\n // Emitters in UnsMqttProxy\r\n mqttWorker: { command: string, instanceName: string; batchSize: number, referenceHash: string };\r\n\r\n // Emitter in UnsCronProxy\r\n cronEvent: { event?: string; cronExpression?: string };\r\n\r\n // Emitters in UnsApiProxy\r\n apiGetEvent: {req: any, res: any};\r\n\r\n // Emitters in UnsProxy\r\n unsProxyProducedTopics: { producedTopics: ITopicObject[], statusTopic: string };\r\n\r\n // Emitters in UnsProxy\r\n unsProxyProducedApiEndpoints: { producedApiEndpoints: IApiObject[], statusTopic: string };\r\n\r\n // Emitters in UnsProxy\r\n unsProxyProducedApiCatchAll: { producedCatchall: IApiCatchallMapping[], statusTopic: string };\r\n}\r\n\r\nexport interface IUnsExtendedData extends IUnsData {\r\n valueType: ValueTypeString;\r\n}\r\n\r\nexport interface IUnsData {\r\n time: ISO8601;\r\n value: ValueType;\r\n dataGroup?: string;\r\n uom?: MeasurementUnit;\r\n foreignEventKey?: string;\r\n intervalStart?: ISO8601 | number;\r\n intervalEnd?: ISO8601 | number;\r\n windowStart?: ISO8601 | number;\r\n windowEnd?: ISO8601 | number;\r\n eventId?: string;\r\n deleted?: boolean;\r\n deletedAt?: ISO8601 | number;\r\n lastSeen?: ISO8601 | number;\r\n}\r\n\r\nexport interface IUnsTableColumn {\r\n name: string;\r\n type: QuestDbType;\r\n value: string | number | boolean | null;\r\n uom?: MeasurementUnit;\r\n}\r\n\r\nexport interface IUnsTable {\r\n time: ISO8601;\r\n dataGroup?: string;\r\n columns: IUnsTableColumn[];\r\n intervalStart?: ISO8601 | number;\r\n intervalEnd?: ISO8601 | number;\r\n windowStart?: ISO8601 | number;\r\n windowEnd?: ISO8601 | number;\r\n eventId?: string;\r\n deleted?: boolean;\r\n deletedAt?: ISO8601 | number;\r\n lastSeen?: ISO8601 | number;\r\n}\r\n\r\nexport interface IMqttAttributeMessage {\r\n attribute: UnsAttribute;\r\n description?: string;\r\n tags?: UnsTags[];\r\n attributeNeedsPersistence?: boolean | null;\r\n}\r\n\r\ntype AttributePayload =\r\n | { message: IUnsMessage; data?: never; table?: never; createdAt?: never; expiresAt?: never }\r\n | { message?: never; data: IUnsData; table?: never; createdAt?: ISO8601; expiresAt?: ISO8601 }\r\n | { message?: never; data?: never; table: IUnsTable; createdAt?: ISO8601; expiresAt?: ISO8601 };\r\n\r\nexport type IMqttAttributeEntry = IMqttAttributeMessage & AttributePayload;\r\n\r\nexport interface IMqttPublishRequest {\r\n topic: UnsTopics;\r\n asset: UnsAsset;\r\n assetDescription?: string;\r\n objectType: UnsObjectType;\r\n objectTypeDescription?: string;\r\n objectId: UnsObjectId;\r\n attributes: IMqttAttributeEntry | IMqttAttributeEntry[];\r\n}\r\n\r\n// This interface represents a packet for a UNS system\r\nexport interface IUnsPacket {\r\n // The message object of the packet\r\n message: IUnsExtendedMessage;\r\n \r\n // The HMAC signature of the message\r\n messageSignature?: string;\r\n\r\n // Automatically calculated interval between two packets in ms\r\n interval?: number;\r\n\r\n // Current library version\r\n readonly version: string;\r\n\r\n // Autogenerated sequence number\r\n sequenceId?: number;\r\n}\r\n\r\nexport interface IUnsPackatParameters {\r\n\r\n}\r\n\r\nexport interface IUnsMessage {\r\n data?: IUnsData;\r\n table?: IUnsTable;\r\n expiresAt?: ISO8601;\r\n createdAt?: ISO8601;\r\n}\r\n\r\nexport interface IUnsExtendedMessage extends IUnsMessage {\r\n data?: IUnsExtendedData;\r\n}\r\n\r\nexport interface ITopicObject {\r\n timestamp: string;\r\n attribute:string;\r\n attributeType: UnsAttributeType;\r\n topic:string;\r\n description:string;\r\n dataGroup:string;\r\n tags:string[] | null;\r\n attributeNeedsPersistence: boolean | null;\r\n asset: UnsAsset;\r\n assetDescription?: string;\r\n objectType: UnsObjectType;\r\n objectTypeDescription?: string;\r\n objectId: UnsObjectId;\r\n}\r\n\r\n// API Interfaces below\r\nexport interface IApiObject {\r\n timestamp: string;\r\n attribute:string;\r\n topic:string;\r\n attributeType: UnsAttributeType;\r\n apiDescription?: string; // Optional description for the API endpoint\r\n apiHost: string; // Hostname of the service\r\n apiEndpoint: string; // API endpoint for virtual topics\r\n apiSwaggerEndpoint: string; // Swagger endpoint for API documentation\r\n apiMethod: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\"; // HTTP method for API endpoint\r\n apiQueryParams: QueryParamDef[]; // query parameters for the API endpoint\r\n asset: UnsAsset;\r\n objectType: UnsObjectType;\r\n objectId: UnsObjectId;\r\n controllerName?: string;\r\n controllerHost?: string;\r\n controllerPort?: string;\r\n controllerPublicBase?: string;\r\n}\r\n\r\nexport interface IApiCatchallMapping {\r\n topic: string;\r\n apiBase: string;\r\n apiBasePath: string;\r\n swaggerPath: string;\r\n}\r\n\r\nexport interface QueryParamDef {\r\n name: string;\r\n type: \"string\" | \"number\" | \"boolean\";\r\n required?: boolean;\r\n description?: string;\r\n /**\r\n * Optional canonical chat alias used by assistant tooling.\r\n * Typical values: from, to, limit, topic, timezone, summaryOnly.\r\n */\r\n chatCanonical?: string;\r\n /**\r\n * Optional default query value. Included in generated OpenAPI metadata.\r\n */\r\n defaultValue?: string | number | boolean;\r\n}\r\n\r\nexport interface ApiChatDefaults {\r\n from?: string;\r\n to?: string;\r\n limit?: number;\r\n topic?: string;\r\n timezone?: string;\r\n summaryOnly?: boolean;\r\n [key: string]: string | number | boolean | undefined;\r\n}\r\n\r\nexport interface IApiProxyOptions {\r\n jwtSecret?: string;\r\n jwks?: {\r\n wellKnownJwksUrl: string;\r\n activeKidUrl?: string;\r\n cacheTtlMs?: number;\r\n algorithms?: (\"RS256\" | \"RS384\" | \"RS512\")[];\r\n };\r\n /**\r\n * Optional base prefixes to mount the API and swagger JSON under (e.g. \"/archiver-3\").\r\n * Defaults to \"/api\" when not provided.\r\n */\r\n apiBasePath?: string;\r\n swaggerBasePath?: string;\r\n /**\r\n * Skip mounting the default \"/api\" route. Useful when rebasing entirely under a custom prefix.\r\n */\r\n disableDefaultApiMount?: boolean;\r\n}\r\n\r\nexport interface IGetEndpointOptions {\r\n apiDescription?: string;\r\n tags?: string[];\r\n queryParams?: QueryParamDef[];\r\n /**\r\n * Optional defaults consumed by chat tooling (published as OpenAPI vendor extension x-uns-chat.defaults).\r\n */\r\n chatDefaults?: ApiChatDefaults;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-measurements.generated.js","sourceRoot":"","sources":["../../src/uns/uns-measurements.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* Auto-generated by generate-uns-measurements.ts. Do not edit by hand. */\nexport const GeneratedPhysicalMeasurements = {\n /**\n * Amper\n */\n \"Ampere\": \"A\",\n /**\n * Bajti\n */\n \"B\": \"B\",\n /**\n * Bar\n */\n \"Bar\": \"bar\",\n /**\n * Bit\n */\n \"Bit\": \"bit\",\n /**\n * Bajt\n */\n \"Byte\": \"byte\",\n /**\n * Stopinje Celzija\n */\n \"Celsius\": \"°C\",\n /**\n * Centimeter na sekundo\n */\n \"CentiMeterPerSecond\": \"cm/s\",\n /**\n * Kubični meter\n */\n \"CubicMeter\": \"m^3\",\n /**\n * Kubični meter na uro\n */\n \"CubicMeterPerHour\": \"m^3/h\",\n /**\n * Kubični meter na sekundo\n */\n \"CubicMeterPerSecond\": \"m^3/s\",\n /**\n * Dan\n */\n \"Day\": \"day\",\n /**\n * Decibel\n */\n \"Decibel\": \"dB\",\n /**\n * Stopinja\n */\n \"Degree\": \"°\",\n /**\n * Stopinje Fahrenheita\n */\n \"Fahrenheit\": \"°F\",\n /**\n * Čevlji\n */\n \"Feet\": \"ft\",\n /**\n * Galona\n */\n \"Gallon\": \"gal\",\n /**\n * Gigadžul\n */\n \"Gigajoule\": \"GJ\",\n /**\n * Gram\n */\n \"Gram\": \"g\",\n /**\n * Herc\n */\n \"Hertz\": \"Hz\",\n /**\n * Ura\n */\n \"Hour\": \"h\",\n /**\n * Džul\n */\n \"Joule\": \"J\",\n /**\n * Kelvin\n */\n \"Kelvin\": \"K\",\n /**\n * Kiloamper\n */\n \"KiloAmpere\": \"kA\",\n /**\n * Kilogram\n */\n \"Kilogram\": \"kg\",\n /**\n * Kilodžul\n */\n \"Kilojoule\": \"kJ\",\n /**\n * Kilometer\n */\n \"KiloMeter\": \"km\",\n /**\n * Kilometer na uro\n */\n \"KilometerPerHour\": \"km/h\",\n /**\n * Kilovolt\n */\n \"KiloVolt\": \"kV\",\n /**\n * Kilovolt-amper\n */\n \"KiloVoltAmpere\": \"kVA\",\n /**\n * Kilovolt-reaktivni amper\n */\n \"KiloVoltAmpereReactive\": \"kVAR\",\n /**\n * Kilowatt\n */\n \"KiloWatt\": \"kW\",\n /**\n * Kilowattna ura\n */\n \"KiloWattHour\": \"kWh\",\n /**\n * Liter\n */\n \"Liter\": \"l\",\n /**\n * Megaamper\n */\n \"MegaAmpere\": \"MA\",\n /**\n * Megagram na uro\n */\n \"MegaGramPerHour\": \"Mg/h\",\n /**\n * Megadžul\n */\n \"Megajoule\": \"MJ\",\n /**\n * Megavolt\n */\n \"MegaVolt\": \"MV\",\n /**\n * Megavolt-amper\n */\n \"MegaVoltAmpere\": \"MVA\",\n /**\n * Megavolt-reaktivni amper\n */\n \"MegaVoltAmpereReactive\": \"MVAR\",\n /**\n * Megawatt\n */\n \"MegaWatt\": \"MW\",\n /**\n * Megawattna ura\n */\n \"MegaWattHour\": \"MWh\",\n /**\n * Meter\n */\n \"Meter\": \"m\",\n /**\n * Meter na uro\n */\n \"MeterPerHour\": \"m/h\",\n /**\n * Meter na minuto\n */\n \"MeterPerMinute\": \"m/min\",\n /**\n * Meter na sekundo\n */\n \"MeterPerSecond\": \"m/s\",\n /**\n * Tona\n */\n \"MetricTon\": \"t\",\n /**\n * Tona na uro\n */\n \"MetricTonPerHour\": \"t/h\",\n /**\n * Miliamper\n */\n \"MiliAmpere\": \"mA\",\n /**\n * Miligram\n */\n \"Miligram\": \"mg\",\n /**\n * Milidžul\n */\n \"Milijoule\": \"mJ\",\n /**\n * Milimeter\n */\n \"MiliMeter\": \"mm\",\n /**\n * Milimeter na sekundo\n */\n \"MilimeterPerSecond\": \"mm/s\",\n /**\n * Milivolt\n */\n \"MiliVolt\": \"mV\",\n /**\n * Milivolt-amper\n */\n \"MiliVoltAmpere\": \"mVA\",\n /**\n * Milivolt-reaktivni amper\n */\n \"MiliVoltAmpereReactive\": \"mVAR\",\n /**\n * Miliwatt\n */\n \"MiliWatt\": \"mW\",\n /**\n * Miliwattna ura\n */\n \"MiliWattHour\": \"mWh\",\n /**\n * Minuta\n */\n \"Minute\": \"min\",\n /**\n * Njuton\n */\n \"Newton\": \"N\",\n /**\n * Brez enote\n */\n \"None\": \"\",\n /**\n * Delci na milijardo\n */\n \"PartsPerBillion\": \"ppb\",\n /**\n * Delci na milijon\n */\n \"PartsPerMillion\": \"ppm\",\n /**\n * Delci na trilijon\n */\n \"PartsPerTrillion\": \"ppt\",\n /**\n * Pascal\n */\n \"Pascal\": \"Pa\",\n /**\n * Odstotek\n */\n \"Percent\": \"percent\",\n /**\n * Funt na kvadratni palec\n */\n \"Psi\": \"psi\",\n /**\n * Radian\n */\n \"Radian\": \"rad\",\n /**\n * Obratov na minuto\n */\n \"RevolutionsPerMinute\": \"rpm\",\n /**\n * Sekunda\n */\n \"Second\": \"s\",\n /**\n * Teradžul\n */\n \"Terajoule\": \"TJ\",\n /**\n * Volt\n */\n \"Volt\": \"V\",\n /**\n * Volt-amper\n */\n \"VoltAmpere\": \"VA\",\n /**\n * Volt-reaktivni amper\n */\n \"VoltAmpereReactive\": \"VAR\",\n /**\n * Watt\n */\n \"Watt\": \"W\",\n /**\n * Wattna ura\n */\n \"WattHour\": \"Wh\",\n} as const;\n\nexport const GeneratedDataSizeMeasurements = {\n /**\n * Bit\n */\n \"Bit\": \"bit\",\n /**\n * Bajt\n */\n \"Byte\": \"B\",\n /**\n * Eksabajt\n */\n \"ExaByte\": \"EB\",\n /**\n * Gigabajt\n */\n \"GigaByte\": \"GB\",\n /**\n * Kilobajt\n */\n \"KiloByte\": \"kB\",\n /**\n * Megabajt\n */\n \"MegaByte\": \"MB\",\n /**\n * Petabajt\n */\n \"PetaByte\": \"PB\",\n /**\n * Terabajt\n */\n \"TeraByte\": \"TB\",\n /**\n * Jotabajt\n */\n \"YottaByte\": \"YB\",\n /**\n * Zetabajt\n */\n \"ZettaByte\": \"ZB\",\n} as const;\n\nexport const GeneratedCounterMeasurements = {\n /**\n * Giga\n */\n \"Giga\": \"G\",\n /**\n * Kilo\n */\n \"Kilo\": \"k\",\n /**\n * Mega\n */\n \"Mega\": \"M\",\n} as const;\n\nexport type GeneratedPhysicalMeasurement = typeof GeneratedPhysicalMeasurements[keyof typeof GeneratedPhysicalMeasurements];\nexport type GeneratedDataSizeMeasurement = typeof GeneratedDataSizeMeasurements[keyof typeof GeneratedDataSizeMeasurements];\nexport type GeneratedCounterMeasurement = typeof GeneratedCounterMeasurements[keyof typeof GeneratedCounterMeasurements];\nexport type GeneratedMeasurementUnit = GeneratedPhysicalMeasurement | GeneratedDataSizeMeasurement | GeneratedCounterMeasurement | (string & {});\n"]}
1
+ {"version":3,"file":"uns-measurements.generated.js","sourceRoot":"","sources":["../../src/uns/uns-measurements.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/* Auto-generated by generate-uns-measurements.ts. Do not edit by hand. */\r\nexport const GeneratedPhysicalMeasurements = {\r\n /**\r\n * Amper\r\n */\r\n \"Ampere\": \"A\",\r\n /**\r\n * Bajti\r\n */\r\n \"B\": \"B\",\r\n /**\r\n * Bar\r\n */\r\n \"Bar\": \"bar\",\r\n /**\r\n * Bit\r\n */\r\n \"Bit\": \"bit\",\r\n /**\r\n * Bajt\r\n */\r\n \"Byte\": \"byte\",\r\n /**\r\n * Stopinje Celzija\r\n */\r\n \"Celsius\": \"°C\",\r\n /**\r\n * Centimeter na sekundo\r\n */\r\n \"CentiMeterPerSecond\": \"cm/s\",\r\n /**\r\n * Kubični meter\r\n */\r\n \"CubicMeter\": \"m^3\",\r\n /**\r\n * Kubični meter na uro\r\n */\r\n \"CubicMeterPerHour\": \"m^3/h\",\r\n /**\r\n * Kubični meter na sekundo\r\n */\r\n \"CubicMeterPerSecond\": \"m^3/s\",\r\n /**\r\n * Dan\r\n */\r\n \"Day\": \"day\",\r\n /**\r\n * Decibel\r\n */\r\n \"Decibel\": \"dB\",\r\n /**\r\n * Stopinja\r\n */\r\n \"Degree\": \"°\",\r\n /**\r\n * Stopinje Fahrenheita\r\n */\r\n \"Fahrenheit\": \"°F\",\r\n /**\r\n * Čevlji\r\n */\r\n \"Feet\": \"ft\",\r\n /**\r\n * Galona\r\n */\r\n \"Gallon\": \"gal\",\r\n /**\r\n * Gigadžul\r\n */\r\n \"Gigajoule\": \"GJ\",\r\n /**\r\n * Gram\r\n */\r\n \"Gram\": \"g\",\r\n /**\r\n * Herc\r\n */\r\n \"Hertz\": \"Hz\",\r\n /**\r\n * Ura\r\n */\r\n \"Hour\": \"h\",\r\n /**\r\n * Džul\r\n */\r\n \"Joule\": \"J\",\r\n /**\r\n * Kelvin\r\n */\r\n \"Kelvin\": \"K\",\r\n /**\r\n * Kiloamper\r\n */\r\n \"KiloAmpere\": \"kA\",\r\n /**\r\n * Kilogram\r\n */\r\n \"Kilogram\": \"kg\",\r\n /**\r\n * Kilodžul\r\n */\r\n \"Kilojoule\": \"kJ\",\r\n /**\r\n * Kilometer\r\n */\r\n \"KiloMeter\": \"km\",\r\n /**\r\n * Kilometer na uro\r\n */\r\n \"KilometerPerHour\": \"km/h\",\r\n /**\r\n * Kilovolt\r\n */\r\n \"KiloVolt\": \"kV\",\r\n /**\r\n * Kilovolt-amper\r\n */\r\n \"KiloVoltAmpere\": \"kVA\",\r\n /**\r\n * Kilovolt-reaktivni amper\r\n */\r\n \"KiloVoltAmpereReactive\": \"kVAR\",\r\n /**\r\n * Kilowatt\r\n */\r\n \"KiloWatt\": \"kW\",\r\n /**\r\n * Kilowattna ura\r\n */\r\n \"KiloWattHour\": \"kWh\",\r\n /**\r\n * Liter\r\n */\r\n \"Liter\": \"l\",\r\n /**\r\n * Megaamper\r\n */\r\n \"MegaAmpere\": \"MA\",\r\n /**\r\n * Megagram na uro\r\n */\r\n \"MegaGramPerHour\": \"Mg/h\",\r\n /**\r\n * Megadžul\r\n */\r\n \"Megajoule\": \"MJ\",\r\n /**\r\n * Megavolt\r\n */\r\n \"MegaVolt\": \"MV\",\r\n /**\r\n * Megavolt-amper\r\n */\r\n \"MegaVoltAmpere\": \"MVA\",\r\n /**\r\n * Megavolt-reaktivni amper\r\n */\r\n \"MegaVoltAmpereReactive\": \"MVAR\",\r\n /**\r\n * Megawatt\r\n */\r\n \"MegaWatt\": \"MW\",\r\n /**\r\n * Megawattna ura\r\n */\r\n \"MegaWattHour\": \"MWh\",\r\n /**\r\n * Meter\r\n */\r\n \"Meter\": \"m\",\r\n /**\r\n * Meter na uro\r\n */\r\n \"MeterPerHour\": \"m/h\",\r\n /**\r\n * Meter na minuto\r\n */\r\n \"MeterPerMinute\": \"m/min\",\r\n /**\r\n * Meter na sekundo\r\n */\r\n \"MeterPerSecond\": \"m/s\",\r\n /**\r\n * Tona\r\n */\r\n \"MetricTon\": \"t\",\r\n /**\r\n * Tona na uro\r\n */\r\n \"MetricTonPerHour\": \"t/h\",\r\n /**\r\n * Miliamper\r\n */\r\n \"MiliAmpere\": \"mA\",\r\n /**\r\n * Miligram\r\n */\r\n \"Miligram\": \"mg\",\r\n /**\r\n * Milidžul\r\n */\r\n \"Milijoule\": \"mJ\",\r\n /**\r\n * Milimeter\r\n */\r\n \"MiliMeter\": \"mm\",\r\n /**\r\n * Milimeter na sekundo\r\n */\r\n \"MilimeterPerSecond\": \"mm/s\",\r\n /**\r\n * Milivolt\r\n */\r\n \"MiliVolt\": \"mV\",\r\n /**\r\n * Milivolt-amper\r\n */\r\n \"MiliVoltAmpere\": \"mVA\",\r\n /**\r\n * Milivolt-reaktivni amper\r\n */\r\n \"MiliVoltAmpereReactive\": \"mVAR\",\r\n /**\r\n * Miliwatt\r\n */\r\n \"MiliWatt\": \"mW\",\r\n /**\r\n * Miliwattna ura\r\n */\r\n \"MiliWattHour\": \"mWh\",\r\n /**\r\n * Minuta\r\n */\r\n \"Minute\": \"min\",\r\n /**\r\n * Njuton\r\n */\r\n \"Newton\": \"N\",\r\n /**\r\n * Brez enote\r\n */\r\n \"None\": \"\",\r\n /**\r\n * Delci na milijardo\r\n */\r\n \"PartsPerBillion\": \"ppb\",\r\n /**\r\n * Delci na milijon\r\n */\r\n \"PartsPerMillion\": \"ppm\",\r\n /**\r\n * Delci na trilijon\r\n */\r\n \"PartsPerTrillion\": \"ppt\",\r\n /**\r\n * Pascal\r\n */\r\n \"Pascal\": \"Pa\",\r\n /**\r\n * Odstotek\r\n */\r\n \"Percent\": \"percent\",\r\n /**\r\n * Funt na kvadratni palec\r\n */\r\n \"Psi\": \"psi\",\r\n /**\r\n * Radian\r\n */\r\n \"Radian\": \"rad\",\r\n /**\r\n * Obratov na minuto\r\n */\r\n \"RevolutionsPerMinute\": \"rpm\",\r\n /**\r\n * Sekunda\r\n */\r\n \"Second\": \"s\",\r\n /**\r\n * Teradžul\r\n */\r\n \"Terajoule\": \"TJ\",\r\n /**\r\n * Volt\r\n */\r\n \"Volt\": \"V\",\r\n /**\r\n * Volt-amper\r\n */\r\n \"VoltAmpere\": \"VA\",\r\n /**\r\n * Volt-reaktivni amper\r\n */\r\n \"VoltAmpereReactive\": \"VAR\",\r\n /**\r\n * Watt\r\n */\r\n \"Watt\": \"W\",\r\n /**\r\n * Wattna ura\r\n */\r\n \"WattHour\": \"Wh\",\r\n} as const;\r\n\r\nexport const GeneratedDataSizeMeasurements = {\r\n /**\r\n * Bit\r\n */\r\n \"Bit\": \"bit\",\r\n /**\r\n * Bajt\r\n */\r\n \"Byte\": \"B\",\r\n /**\r\n * Eksabajt\r\n */\r\n \"ExaByte\": \"EB\",\r\n /**\r\n * Gigabajt\r\n */\r\n \"GigaByte\": \"GB\",\r\n /**\r\n * Kilobajt\r\n */\r\n \"KiloByte\": \"kB\",\r\n /**\r\n * Megabajt\r\n */\r\n \"MegaByte\": \"MB\",\r\n /**\r\n * Petabajt\r\n */\r\n \"PetaByte\": \"PB\",\r\n /**\r\n * Terabajt\r\n */\r\n \"TeraByte\": \"TB\",\r\n /**\r\n * Jotabajt\r\n */\r\n \"YottaByte\": \"YB\",\r\n /**\r\n * Zetabajt\r\n */\r\n \"ZettaByte\": \"ZB\",\r\n} as const;\r\n\r\nexport const GeneratedCounterMeasurements = {\r\n /**\r\n * Giga\r\n */\r\n \"Giga\": \"G\",\r\n /**\r\n * Kilo\r\n */\r\n \"Kilo\": \"k\",\r\n /**\r\n * Mega\r\n */\r\n \"Mega\": \"M\",\r\n} as const;\r\n\r\nexport type GeneratedPhysicalMeasurement = typeof GeneratedPhysicalMeasurements[keyof typeof GeneratedPhysicalMeasurements];\r\nexport type GeneratedDataSizeMeasurement = typeof GeneratedDataSizeMeasurements[keyof typeof GeneratedDataSizeMeasurements];\r\nexport type GeneratedCounterMeasurement = typeof GeneratedCounterMeasurements[keyof typeof GeneratedCounterMeasurements];\r\nexport type GeneratedMeasurementUnit = GeneratedPhysicalMeasurement | GeneratedDataSizeMeasurement | GeneratedCounterMeasurement | (string & {});\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-measurements.js","sourceRoot":"","sources":["../../src/uns/uns-measurements.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,4BAA4B,EAE5B,6BAA6B,EAG7B,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,6BAA6B,CAAC;AAGlE,MAAM,CAAC,MAAM,oBAAoB,GAAG,6BAA6B,CAAC;AAGlE,MAAM,CAAC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC","sourcesContent":["import {\n GeneratedCounterMeasurement,\n GeneratedCounterMeasurements,\n GeneratedDataSizeMeasurement,\n GeneratedDataSizeMeasurements,\n GeneratedMeasurementUnit,\n GeneratedPhysicalMeasurement,\n GeneratedPhysicalMeasurements,\n} from \"./uns-measurements.generated.js\";\n\nexport const PhysicalMeasurements = GeneratedPhysicalMeasurements;\nexport type PhysicalMeasurements = GeneratedPhysicalMeasurement;\n\nexport const DataSizeMeasurements = GeneratedDataSizeMeasurements;\nexport type DataSizeMeasurements = GeneratedDataSizeMeasurement;\n\nexport const CounterMeasurements = GeneratedCounterMeasurements;\nexport type CounterMeasurements = GeneratedCounterMeasurement;\n\nexport type MeasurementUnit = GeneratedMeasurementUnit;\n"]}
1
+ {"version":3,"file":"uns-measurements.js","sourceRoot":"","sources":["../../src/uns/uns-measurements.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,4BAA4B,EAE5B,6BAA6B,EAG7B,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,6BAA6B,CAAC;AAGlE,MAAM,CAAC,MAAM,oBAAoB,GAAG,6BAA6B,CAAC;AAGlE,MAAM,CAAC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC","sourcesContent":["import {\r\n GeneratedCounterMeasurement,\r\n GeneratedCounterMeasurements,\r\n GeneratedDataSizeMeasurement,\r\n GeneratedDataSizeMeasurements,\r\n GeneratedMeasurementUnit,\r\n GeneratedPhysicalMeasurement,\r\n GeneratedPhysicalMeasurements,\r\n} from \"./uns-measurements.generated.js\";\r\n\r\nexport const PhysicalMeasurements = GeneratedPhysicalMeasurements;\r\nexport type PhysicalMeasurements = GeneratedPhysicalMeasurement;\r\n\r\nexport const DataSizeMeasurements = GeneratedDataSizeMeasurements;\r\nexport type DataSizeMeasurements = GeneratedDataSizeMeasurement;\r\n\r\nexport const CounterMeasurements = GeneratedCounterMeasurements;\r\nexport type CounterMeasurements = GeneratedCounterMeasurement;\r\n\r\nexport type MeasurementUnit = GeneratedMeasurementUnit;\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"uns-object.js","sourceRoot":"","sources":["../../src/uns/uns-object.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,8EAA8E;AAC9E,OAAO,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AACtG,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAShD,MAAM,UAAU,wBAAwB,CAAC,UAAyB;IAChE,OAAO,CACL,4BAA4B,CAAC,UAAU,CAAC;QACvC,+BAAsE,CAAC,UAAU,CAAC,CACpF,CAAC;AACJ,CAAC","sourcesContent":["// Slimmed: use generated dictionary as the source of object types.\n// Ensure generate-uns-dictionary is run (or provide your own generated file).\nimport { GeneratedObjectTypes, GeneratedObjectTypeDescriptions } from \"./uns-dictionary.generated.js\";\nimport { resolveObjectTypeDescription } from \"./uns-dictionary-registry.js\";\n\nexport const ObjectTypes = GeneratedObjectTypes;\n\nexport type KnownUnsObjectTypeName = keyof typeof GeneratedObjectTypes;\n\nexport type UnsObjectType = \"\" | KnownUnsObjectTypeName | (string & {});\n\n// Default object id is \"main\" when none is provided.\nexport type UnsObjectId = \"main\" | \"\" | (string & {});\n\nexport function getObjectTypeDescription(objectType: UnsObjectType): string | undefined {\n return (\n resolveObjectTypeDescription(objectType) ??\n (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[objectType]\n );\n}\n"]}
1
+ {"version":3,"file":"uns-object.js","sourceRoot":"","sources":["../../src/uns/uns-object.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,8EAA8E;AAC9E,OAAO,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AACtG,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAShD,MAAM,UAAU,wBAAwB,CAAC,UAAyB;IAChE,OAAO,CACL,4BAA4B,CAAC,UAAU,CAAC;QACvC,+BAAsE,CAAC,UAAU,CAAC,CACpF,CAAC;AACJ,CAAC","sourcesContent":["// Slimmed: use generated dictionary as the source of object types.\r\n// Ensure generate-uns-dictionary is run (or provide your own generated file).\r\nimport { GeneratedObjectTypes, GeneratedObjectTypeDescriptions } from \"./uns-dictionary.generated.js\";\r\nimport { resolveObjectTypeDescription } from \"./uns-dictionary-registry.js\";\r\n\r\nexport const ObjectTypes = GeneratedObjectTypes;\r\n\r\nexport type KnownUnsObjectTypeName = keyof typeof GeneratedObjectTypes;\r\n\r\nexport type UnsObjectType = \"\" | KnownUnsObjectTypeName | (string & {});\r\n\r\n// Default object id is \"main\" when none is provided.\r\nexport type UnsObjectId = \"main\" | \"\" | (string & {});\r\n\r\nexport function getObjectTypeDescription(objectType: UnsObjectType): string | undefined {\r\n return (\r\n resolveObjectTypeDescription(objectType) ??\r\n (GeneratedObjectTypeDescriptions as Record<string, string | undefined>)[objectType]\r\n );\r\n}\r\n"]}