@uns-kit/core 2.0.22 → 2.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +130 -130
- package/dist/base-path.js.map +1 -1
- package/dist/config/app-config.d.ts +140 -140
- package/dist/config/project.config.extension.js.map +1 -1
- package/dist/config-file.js.map +1 -1
- package/dist/graphql/schema.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +3 -3
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +88 -80
- package/dist/logger.js.map +1 -1
- package/dist/tools/auth/auth-client.js.map +1 -1
- package/dist/tools/auth/index.js.map +1 -1
- package/dist/tools/auth/secure-store.js.map +1 -1
- package/dist/tools/base-path.js.map +1 -1
- package/dist/tools/file-utils.js.map +1 -1
- package/dist/tools/generate-config-schema.js.map +1 -1
- package/dist/tools/generate-uns-dictionary.js +7 -7
- package/dist/tools/generate-uns-dictionary.js.map +1 -1
- package/dist/tools/generate-uns-measurements.js +7 -7
- package/dist/tools/generate-uns-measurements.js.map +1 -1
- package/dist/tools/generate-uns-reference.js +9 -9
- package/dist/tools/generate-uns-reference.js.map +1 -1
- package/dist/tools/pull-request.js.map +1 -1
- package/dist/tools/refresh-uns.js +50 -50
- package/dist/tools/refresh-uns.js.map +1 -1
- package/dist/tools/schema.js.map +1 -1
- package/dist/tools/sync-uns-schema.js +14 -14
- package/dist/tools/sync-uns-schema.js.map +1 -1
- package/dist/uns/handover-manager-event-emitter.js.map +1 -1
- package/dist/uns/handover-manager.js.map +1 -1
- package/dist/uns/process-config.js.map +1 -1
- package/dist/uns/process-name-service.js.map +1 -1
- package/dist/uns/status-monitor.js.map +1 -1
- package/dist/uns/uns-asset.js.map +1 -1
- package/dist/uns/uns-attributes.d.ts +2 -2
- package/dist/uns/uns-attributes.js.map +1 -1
- package/dist/uns/uns-dictionary-registry.js.map +1 -1
- package/dist/uns/uns-dictionary.generated.js.map +1 -1
- package/dist/uns/uns-event-emitter.js.map +1 -1
- package/dist/uns/uns-interfaces.js.map +1 -1
- package/dist/uns/uns-measurements.generated.js.map +1 -1
- package/dist/uns/uns-measurements.js.map +1 -1
- package/dist/uns/uns-object.js.map +1 -1
- package/dist/uns/uns-packet.js.map +1 -1
- package/dist/uns/uns-path.js.map +1 -1
- package/dist/uns/uns-proxy-process.js.map +1 -1
- package/dist/uns/uns-proxy.js.map +1 -1
- package/dist/uns/uns-tags.js.map +1 -1
- package/dist/uns/uns-topic-matcher.js.map +1 -1
- package/dist/uns/uns-topics.js.map +1 -1
- package/dist/uns-config/config-schema.js.map +1 -1
- package/dist/uns-config/host-placeholders.js.map +1 -1
- package/dist/uns-config/schema-tolls.js.map +1 -1
- package/dist/uns-config/schema-tools.js.map +1 -1
- package/dist/uns-config/secret-placeholders.js.map +1 -1
- package/dist/uns-config/secret-resolver.js.map +1 -1
- package/dist/uns-config/uns-core-schema.d.ts +3271 -3271
- package/dist/uns-config/uns-core-schema.js +76 -76
- package/dist/uns-config/uns-core-schema.js.map +1 -1
- package/dist/uns-grpc/uns-gateway-cli.js.map +1 -1
- package/dist/uns-grpc/uns-gateway-server.js.map +1 -1
- package/dist/uns-grpc/uns-gateway.proto +104 -104
- package/dist/uns-mqtt/mqtt-interfaces.js.map +1 -1
- package/dist/uns-mqtt/mqtt-proxy.d.ts +7 -0
- package/dist/uns-mqtt/mqtt-proxy.d.ts.map +1 -1
- package/dist/uns-mqtt/mqtt-proxy.js +70 -25
- package/dist/uns-mqtt/mqtt-proxy.js.map +1 -1
- package/dist/uns-mqtt/mqtt-topic-builder.js.map +1 -1
- package/dist/uns-mqtt/mqtt-worker-init.js.map +1 -1
- package/dist/uns-mqtt/mqtt-worker.js.map +1 -1
- package/dist/uns-mqtt/throttled-queue.js.map +1 -1
- package/dist/uns-mqtt/uns-mqtt-proxy.js.map +1 -1
- package/dist/uns-mqtt/ws-proxy.js.map +1 -1
- package/package.json +1 -1
- package/dist/app-config.d.ts.map +0 -1
- package/dist/app-config.js.map +0 -1
|
@@ -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. */\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
|
+
{"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 +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>> {\
|
|
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 +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\";\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
|
+
{"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 +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. */\
|
|
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 +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 {\
|
|
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 +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.\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uns-packet.js","sourceRoot":"","sources":["../../src/uns/uns-packet.ts"],"names":[],"mappings":"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","sourcesContent":["import * as crypto from \"crypto\";\r\nimport * as zlib from \"zlib\";\r\nimport logger from '../logger.js';\r\nimport {\r\n IUnsPacket,\r\n ISO8601, \r\n IUnsData,\r\n IUnsMessage,\r\n isIOS8601Type,\r\n IUnsPackatParameters,\r\n IUnsExtendedMessage,\r\n IUnsExtendedData,\r\n IUnsTable,\r\n isQuestDbType,\r\n valueTypes\r\n} from \"./uns-interfaces.js\";\r\n\r\n// Version of the packet library\r\nconst unsPacketVersion = \"1.3.0\";\r\n\r\nexport class UnsPacket {\r\n /**\r\n * The given TypeScript function parseMqttPacket is used to parse an MQTT packet,\r\n * which is presumed to be in JSON format. The goal is to transform this string into\r\n * a structured object that adheres to the IUnsPacket interface, or return null\r\n * if parsing fails.\r\n *\r\n * @param mqttPacket\r\n * @param instanceName \r\n * @returns IUnsPacket\r\n */\r\n public static parseMqttPacket(mqttPacket: string, instanceName?: string): IUnsPacket | null {\r\n try {\r\n const parsedMqttPacket: any = JSON.parse(mqttPacket);\r\n\r\n // Check uns packet\r\n if (parsedMqttPacket && parsedMqttPacket.version) {\r\n const version = parsedMqttPacket.version;\r\n const data: IUnsExtendedData | undefined = parsedMqttPacket.message.data;\r\n const table: IUnsTable | undefined = parsedMqttPacket.message.table;\r\n const expiresAt: ISO8601 | undefined =\r\n parsedMqttPacket.message.expiresAt;\r\n const createdAt: ISO8601 | undefined =\r\n parsedMqttPacket.message.createdAt;\r\n\r\n // Validate data and table objects\r\n UnsPacket.validateMessageComponents(data, table);\r\n\r\n const message: IUnsExtendedMessage = {\r\n ...(data !== undefined && { data }),\r\n ...(table !== undefined && { table }),\r\n ...(expiresAt !== undefined && { expiresAt }),\r\n ...(createdAt !== undefined && { createdAt }),\r\n };\r\n const messageSignature = parsedMqttPacket.messageSignature;\r\n\r\n const interval: number | undefined = parsedMqttPacket.interval;\r\n\r\n const unsPacket: IUnsPacket = {\r\n message,\r\n messageSignature,\r\n version,\r\n interval\r\n };\r\n\r\n return unsPacket;\r\n } else {\r\n logger.debug(\"Version number not specified in the mqtt packet\");\r\n }\r\n } catch (error) {\r\n if (instanceName) {\r\n logger.error(`${instanceName} - Could not parse packet: ${error}`);\r\n } else {\r\n logger.error(`Could not parse packet: ${error}`);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates the data and table objects to ensure they have the required properties\r\n * and that those properties have the correct types.\r\n * \r\n * @param data - The data object to validate\r\n * @param table - The table object to validate\r\n * @returns boolean | null\r\n */\r\n private static validateMessageComponents(data?: IUnsData, table?: IUnsTable): boolean | null {\r\n const isIsoOrEpoch = (value: any): boolean => {\r\n if (value === null || value === undefined) return true;\r\n if (typeof value === \"number\") return Number.isFinite(value);\r\n return isIOS8601Type(value);\r\n };\r\n\r\n if (data) {\r\n if (data.dataGroup) {\r\n if (!/^[A-Za-z0-9_]+$/.test(data.dataGroup)) {\r\n throw new Error(`dataGroup must be a valid name (alphanumeric and underscores only, no spaces or special characters)`);\r\n }\r\n }\r\n\r\n if (!data.time)\r\n throw new Error(`Time is not defined in data object`);\r\n if (!isIOS8601Type(data.time))\r\n throw new Error(`Time is not ISO8601`);\r\n if (data.value === undefined) {\r\n throw new Error(`Value is not defined in data object`);\r\n }\r\n if (!valueTypes.includes(typeof data.value as (typeof valueTypes)[number])) {\r\n throw new Error(`Value in data object must be string or number`);\r\n }\r\n if (data.intervalStart !== undefined && !isIsoOrEpoch(data.intervalStart)) {\r\n throw new Error(`intervalStart is not ISO8601 or epoch ms`);\r\n }\r\n if (data.intervalEnd !== undefined && !isIsoOrEpoch(data.intervalEnd)) {\r\n throw new Error(`intervalEnd is not ISO8601 or epoch ms`);\r\n }\r\n if ((data as any).windowStart !== undefined && !isIsoOrEpoch((data as any).windowStart)) {\r\n throw new Error(`windowStart is not ISO8601 or epoch ms`);\r\n }\r\n if ((data as any).windowEnd !== undefined && !isIsoOrEpoch((data as any).windowEnd)) {\r\n throw new Error(`windowEnd is not ISO8601 or epoch ms`);\r\n }\r\n if (data.lastSeen !== undefined && !isIsoOrEpoch(data.lastSeen)) {\r\n throw new Error(`lastSeen is not ISO8601 or epoch ms`);\r\n }\r\n if (data.deletedAt !== undefined && !isIsoOrEpoch(data.deletedAt)) {\r\n throw new Error(`deletedAt is not ISO8601 or epoch ms`);\r\n }\r\n if (data.eventId && typeof data.eventId !== \"string\") {\r\n throw new Error(`eventId must be a string`);\r\n }\r\n if (data.deleted !== undefined && typeof data.deleted !== \"boolean\") {\r\n throw new Error(`deleted must be a boolean`);\r\n }\r\n }\r\n\r\n // Check table object\r\n if (table) {\r\n if (table.dataGroup) {\r\n if (!/^[A-Za-z0-9_]+$/.test(table.dataGroup)) {\r\n throw new Error(`dataGroup must be a valid name (alphanumeric and underscores only, no spaces or special characters)`);\r\n }\r\n }\r\n\r\n if (!table.time) {\r\n throw new Error(`Time is not defined in data object`);\r\n }\r\n if (!isIOS8601Type(table.time)) {\r\n throw new Error(`Time is not ISO8601`);\r\n }\r\n if (table.intervalStart !== undefined && !isIsoOrEpoch(table.intervalStart)) {\r\n throw new Error(`intervalStart is not ISO8601 or epoch ms`);\r\n }\r\n if (table.intervalEnd !== undefined && !isIsoOrEpoch(table.intervalEnd)) {\r\n throw new Error(`intervalEnd is not ISO8601 or epoch ms`);\r\n }\r\n if ((table as any).windowStart !== undefined && !isIsoOrEpoch((table as any).windowStart)) {\r\n throw new Error(`windowStart is not ISO8601 or epoch ms`);\r\n }\r\n if ((table as any).windowEnd !== undefined && !isIsoOrEpoch((table as any).windowEnd)) {\r\n throw new Error(`windowEnd is not ISO8601 or epoch ms`);\r\n }\r\n if (table.lastSeen !== undefined && !isIsoOrEpoch(table.lastSeen)) {\r\n throw new Error(`lastSeen is not ISO8601 or epoch ms`);\r\n }\r\n if (table.deletedAt !== undefined && !isIsoOrEpoch(table.deletedAt)) {\r\n throw new Error(`deletedAt is not ISO8601 or epoch ms`);\r\n }\r\n if (table.eventId && typeof table.eventId !== \"string\") {\r\n throw new Error(`eventId must be a string`);\r\n }\r\n if (table.deleted !== undefined && typeof table.deleted !== \"boolean\") {\r\n throw new Error(`deleted must be a boolean`);\r\n }\r\n\r\n if (!Array.isArray(table.columns) || table.columns.length === 0) {\r\n throw new Error(`Table.columns must be a non-empty array`);\r\n }\r\n\r\n table.columns.forEach((column, index) => {\r\n if (!column.name) {\r\n throw new Error(`Column at index ${index} is missing a name`);\r\n }\r\n if (!column.type) {\r\n throw new Error(`Column '${column.name}' is missing a QuestDB type`);\r\n }\r\n if (!isQuestDbType(column.type)) {\r\n throw new Error(`Column '${column.name}' has invalid QuestDB type '${column.type}'`);\r\n }\r\n const value = column.value;\r\n if (\r\n typeof value !== \"number\" &&\r\n typeof value !== \"string\" &&\r\n typeof value !== \"boolean\" &&\r\n value !== null\r\n ) {\r\n throw new Error(\r\n `Value for column '${column.name}' must be number, string, boolean, or null`\r\n );\r\n }\r\n });\r\n }\r\n\r\n return true;\r\n }\r\n\r\n static async unsPacketFromUnsMessage(\r\n message: IUnsMessage,\r\n unsPackatParameters?: IUnsPackatParameters,\r\n ): Promise<IUnsPacket> {\r\n try {\r\n // Validate the packet in message\r\n if (UnsPacket.validateMessageComponents(message.data, message.table)) {\r\n\r\n // HMAC\r\n // const algorithm = \"sha256\";\r\n // const key = \"your-secret-key\";\r\n // const packetMessage = JSON.stringify(message);\r\n // const hmacHash = this.generateHmac(algorithm, key, packetMessage);\r\n \r\n // const unsPacket: IUnsPacket = {\r\n // message,\r\n // messageSignature: hmacHash,\r\n // version: unsPacketVersion\r\n // };\r\n\r\n let data: IUnsExtendedData = undefined;\r\n\r\n if (message.data && message.data.value !== undefined) {\r\n const valueType = typeof message.data.value;\r\n if (!valueTypes.includes(valueType as (typeof valueTypes)[number])) {\r\n throw new Error(`Value in data object must be string or number`);\r\n }\r\n data = {\r\n ...message.data,\r\n valueType: valueType as (typeof valueTypes)[number]\r\n }\r\n };\r\n\r\n const extendedMessage: IUnsExtendedMessage = {\r\n data,\r\n table: message.table,\r\n expiresAt: message.expiresAt,\r\n createdAt: message.createdAt,\r\n };\r\n\r\n const unsPacket: IUnsPacket = {\r\n message: extendedMessage,\r\n version: unsPacketVersion,\r\n };\r\n \r\n return unsPacket; \r\n }\r\n } catch (error) {\r\n logger.error(`Could not create packet from message: ${error}`);\r\n }\r\n\r\n }\r\n\r\n private static generateHmac(\r\n algorithm: string,\r\n key: string,\r\n data: string,\r\n ): string {\r\n const hmac = crypto.createHmac(algorithm, key);\r\n hmac.update(data);\r\n return hmac.digest(\"hex\");\r\n }\r\n\r\n static formatToISO8601(date: Date): ISO8601 {\r\n const year = date.getUTCFullYear();\r\n const month = String(date.getUTCMonth() + 1).padStart(2, \"0\");\r\n const day = String(date.getUTCDate()).padStart(2, \"0\");\r\n const hours = String(date.getUTCHours()).padStart(2, \"0\");\r\n const minutes = String(date.getUTCMinutes()).padStart(2, \"0\");\r\n const seconds = String(date.getUTCSeconds()).padStart(2, \"0\");\r\n const milliseconds = String(date.getUTCMilliseconds()).padStart(3, \"0\");\r\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}Z`;\r\n }\r\n\r\n private static compressString(input: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n zlib.deflate(input, (err, buffer) => {\r\n if (err) {\r\n reject(err);\r\n } else {\r\n const base64String = buffer.toString(\"base64\");\r\n resolve(base64String);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Function to decompress a Buffer back to a string\r\n private static decompressString(base64Compressed: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n // Decode the base64 string to a Buffer\r\n const compressedBuffer = Buffer.from(base64Compressed, \"base64\");\r\n\r\n zlib.inflate(compressedBuffer, (err, buffer) => {\r\n if (err) {\r\n reject(err);\r\n } else {\r\n resolve(buffer.toString());\r\n }\r\n });\r\n });\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"uns-packet.js","sourceRoot":"","sources":["../../src/uns/uns-packet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAKL,aAAa,EAKb,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAC;AAE7B,gCAAgC;AAChC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,OAAO,SAAS;IACpB;;;;;;;;;OASG;IACI,MAAM,CAAC,eAAe,CAAC,UAAkB,EAAE,YAAqB;QACrE,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAErD,mBAAmB;YACnB,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;gBACzC,MAAM,IAAI,GAAiC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;gBACzE,MAAM,KAAK,GAA0B,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;gBACpE,MAAM,SAAS,GACb,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;gBACrC,MAAM,SAAS,GACb,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;gBAErC,kCAAkC;gBAClC,SAAS,CAAC,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAEjD,MAAM,OAAO,GAAwB;oBACnC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;oBACnC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;oBACrC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;oBAC7C,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;iBAC9C,CAAC;gBACF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;gBAE3D,MAAM,QAAQ,GAAuB,gBAAgB,CAAC,QAAQ,CAAC;gBAE/D,MAAM,SAAS,GAAe;oBAC5B,OAAO;oBACP,gBAAgB;oBAChB,OAAO;oBACP,QAAQ;iBACT,CAAC;gBAEF,OAAO,SAAS,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,8BAA8B,KAAK,EAAE,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,yBAAyB,CAAC,IAAe,EAAE,KAAiB;QACzE,MAAM,YAAY,GAAG,CAAC,KAAU,EAAW,EAAE;YAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7D,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC,CAAC;gBACzH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,IAAI;gBACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,KAAoC,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,IAAK,IAAY,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,YAAY,CAAE,IAAY,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxF,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,IAAK,IAAY,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,YAAY,CAAE,IAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpF,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC,CAAC;gBACzH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,IAAK,KAAa,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,YAAY,CAAE,KAAa,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1F,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,IAAK,KAAa,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,YAAY,CAAE,KAAa,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtF,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YAED,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,oBAAoB,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,IAAI,6BAA6B,CAAC,CAAC;gBACvE,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,IAAI,+BAA+B,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;gBACvF,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,IACE,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,KAAK,KAAK,SAAS;oBAC1B,KAAK,KAAK,IAAI,EACd,CAAC;oBACD,MAAM,IAAI,KAAK,CACb,qBAAqB,MAAM,CAAC,IAAI,4CAA4C,CAC7E,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAClC,OAAoB,EACpB,mBAA0C;QAE1C,IAAI,CAAC;YACH,iCAAiC;YACjC,IAAI,SAAS,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAErE,OAAO;gBACP,8BAA8B;gBAC9B,iCAAiC;gBACjC,iDAAiD;gBACjD,qEAAqE;gBAErE,kCAAkC;gBAClC,aAAa;gBACb,gCAAgC;gBAChC,8BAA8B;gBAC9B,KAAK;gBAEL,IAAI,IAAI,GAAqB,SAAS,CAAC;gBAEvC,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBACrD,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAwC,CAAC,EAAE,CAAC;wBACnE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBACnE,CAAC;oBACD,IAAI,GAAG;wBACL,GAAG,OAAO,CAAC,IAAI;wBACf,SAAS,EAAE,SAAwC;qBACpD,CAAA;gBACH,CAAC;gBAAA,CAAC;gBAEF,MAAM,eAAe,GAAwB;oBAC3C,IAAI;oBACJ,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B,CAAC;gBAEF,MAAM,SAAS,GAAe;oBAC5B,OAAO,EAAE,eAAe;oBACxB,OAAO,EAAE,gBAAgB;iBAC1B,CAAC;gBAEF,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,yCAAyC,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;IAEH,CAAC;IAEO,MAAM,CAAC,YAAY,CACzB,SAAiB,EACjB,GAAW,EACX,IAAY;QAEZ,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAU;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,IAAI,YAAY,GAAG,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,KAAa;QACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBAClC,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC/C,OAAO,CAAC,YAAY,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mDAAmD;IAC3C,MAAM,CAAC,gBAAgB,CAAC,gBAAwB;QACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,uCAAuC;YACvC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEjE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC7C,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import * as crypto from \"crypto\";\nimport * as zlib from \"zlib\";\nimport logger from '../logger.js';\nimport {\n IUnsPacket,\n ISO8601, \n IUnsData,\n IUnsMessage,\n isIOS8601Type,\n IUnsPackatParameters,\n IUnsExtendedMessage,\n IUnsExtendedData,\n IUnsTable,\n isQuestDbType,\n valueTypes\n} from \"./uns-interfaces.js\";\n\n// Version of the packet library\nconst unsPacketVersion = \"1.3.0\";\n\nexport class UnsPacket {\n /**\n * The given TypeScript function parseMqttPacket is used to parse an MQTT packet,\n * which is presumed to be in JSON format. The goal is to transform this string into\n * a structured object that adheres to the IUnsPacket interface, or return null\n * if parsing fails.\n *\n * @param mqttPacket\n * @param instanceName \n * @returns IUnsPacket\n */\n public static parseMqttPacket(mqttPacket: string, instanceName?: string): IUnsPacket | null {\n try {\n const parsedMqttPacket: any = JSON.parse(mqttPacket);\n\n // Check uns packet\n if (parsedMqttPacket && parsedMqttPacket.version) {\n const version = parsedMqttPacket.version;\n const data: IUnsExtendedData | undefined = parsedMqttPacket.message.data;\n const table: IUnsTable | undefined = parsedMqttPacket.message.table;\n const expiresAt: ISO8601 | undefined =\n parsedMqttPacket.message.expiresAt;\n const createdAt: ISO8601 | undefined =\n parsedMqttPacket.message.createdAt;\n\n // Validate data and table objects\n UnsPacket.validateMessageComponents(data, table);\n\n const message: IUnsExtendedMessage = {\n ...(data !== undefined && { data }),\n ...(table !== undefined && { table }),\n ...(expiresAt !== undefined && { expiresAt }),\n ...(createdAt !== undefined && { createdAt }),\n };\n const messageSignature = parsedMqttPacket.messageSignature;\n\n const interval: number | undefined = parsedMqttPacket.interval;\n\n const unsPacket: IUnsPacket = {\n message,\n messageSignature,\n version,\n interval\n };\n\n return unsPacket;\n } else {\n logger.debug(\"Version number not specified in the mqtt packet\");\n }\n } catch (error) {\n if (instanceName) {\n logger.error(`${instanceName} - Could not parse packet: ${error}`);\n } else {\n logger.error(`Could not parse packet: ${error}`);\n }\n }\n }\n\n /**\n * Validates the data and table objects to ensure they have the required properties\n * and that those properties have the correct types.\n * \n * @param data - The data object to validate\n * @param table - The table object to validate\n * @returns boolean | null\n */\n private static validateMessageComponents(data?: IUnsData, table?: IUnsTable): boolean | null {\n const isIsoOrEpoch = (value: any): boolean => {\n if (value === null || value === undefined) return true;\n if (typeof value === \"number\") return Number.isFinite(value);\n return isIOS8601Type(value);\n };\n\n if (data) {\n if (data.dataGroup) {\n if (!/^[A-Za-z0-9_]+$/.test(data.dataGroup)) {\n throw new Error(`dataGroup must be a valid name (alphanumeric and underscores only, no spaces or special characters)`);\n }\n }\n\n if (!data.time)\n throw new Error(`Time is not defined in data object`);\n if (!isIOS8601Type(data.time))\n throw new Error(`Time is not ISO8601`);\n if (data.value === undefined) {\n throw new Error(`Value is not defined in data object`);\n }\n if (!valueTypes.includes(typeof data.value as (typeof valueTypes)[number])) {\n throw new Error(`Value in data object must be string or number`);\n }\n if (data.intervalStart !== undefined && !isIsoOrEpoch(data.intervalStart)) {\n throw new Error(`intervalStart is not ISO8601 or epoch ms`);\n }\n if (data.intervalEnd !== undefined && !isIsoOrEpoch(data.intervalEnd)) {\n throw new Error(`intervalEnd is not ISO8601 or epoch ms`);\n }\n if ((data as any).windowStart !== undefined && !isIsoOrEpoch((data as any).windowStart)) {\n throw new Error(`windowStart is not ISO8601 or epoch ms`);\n }\n if ((data as any).windowEnd !== undefined && !isIsoOrEpoch((data as any).windowEnd)) {\n throw new Error(`windowEnd is not ISO8601 or epoch ms`);\n }\n if (data.lastSeen !== undefined && !isIsoOrEpoch(data.lastSeen)) {\n throw new Error(`lastSeen is not ISO8601 or epoch ms`);\n }\n if (data.deletedAt !== undefined && !isIsoOrEpoch(data.deletedAt)) {\n throw new Error(`deletedAt is not ISO8601 or epoch ms`);\n }\n if (data.eventId && typeof data.eventId !== \"string\") {\n throw new Error(`eventId must be a string`);\n }\n if (data.deleted !== undefined && typeof data.deleted !== \"boolean\") {\n throw new Error(`deleted must be a boolean`);\n }\n }\n\n // Check table object\n if (table) {\n if (table.dataGroup) {\n if (!/^[A-Za-z0-9_]+$/.test(table.dataGroup)) {\n throw new Error(`dataGroup must be a valid name (alphanumeric and underscores only, no spaces or special characters)`);\n }\n }\n\n if (!table.time) {\n throw new Error(`Time is not defined in data object`);\n }\n if (!isIOS8601Type(table.time)) {\n throw new Error(`Time is not ISO8601`);\n }\n if (table.intervalStart !== undefined && !isIsoOrEpoch(table.intervalStart)) {\n throw new Error(`intervalStart is not ISO8601 or epoch ms`);\n }\n if (table.intervalEnd !== undefined && !isIsoOrEpoch(table.intervalEnd)) {\n throw new Error(`intervalEnd is not ISO8601 or epoch ms`);\n }\n if ((table as any).windowStart !== undefined && !isIsoOrEpoch((table as any).windowStart)) {\n throw new Error(`windowStart is not ISO8601 or epoch ms`);\n }\n if ((table as any).windowEnd !== undefined && !isIsoOrEpoch((table as any).windowEnd)) {\n throw new Error(`windowEnd is not ISO8601 or epoch ms`);\n }\n if (table.lastSeen !== undefined && !isIsoOrEpoch(table.lastSeen)) {\n throw new Error(`lastSeen is not ISO8601 or epoch ms`);\n }\n if (table.deletedAt !== undefined && !isIsoOrEpoch(table.deletedAt)) {\n throw new Error(`deletedAt is not ISO8601 or epoch ms`);\n }\n if (table.eventId && typeof table.eventId !== \"string\") {\n throw new Error(`eventId must be a string`);\n }\n if (table.deleted !== undefined && typeof table.deleted !== \"boolean\") {\n throw new Error(`deleted must be a boolean`);\n }\n\n if (!Array.isArray(table.columns) || table.columns.length === 0) {\n throw new Error(`Table.columns must be a non-empty array`);\n }\n\n table.columns.forEach((column, index) => {\n if (!column.name) {\n throw new Error(`Column at index ${index} is missing a name`);\n }\n if (!column.type) {\n throw new Error(`Column '${column.name}' is missing a QuestDB type`);\n }\n if (!isQuestDbType(column.type)) {\n throw new Error(`Column '${column.name}' has invalid QuestDB type '${column.type}'`);\n }\n const value = column.value;\n if (\n typeof value !== \"number\" &&\n typeof value !== \"string\" &&\n typeof value !== \"boolean\" &&\n value !== null\n ) {\n throw new Error(\n `Value for column '${column.name}' must be number, string, boolean, or null`\n );\n }\n });\n }\n\n return true;\n }\n\n static async unsPacketFromUnsMessage(\n message: IUnsMessage,\n unsPackatParameters?: IUnsPackatParameters,\n ): Promise<IUnsPacket> {\n try {\n // Validate the packet in message\n if (UnsPacket.validateMessageComponents(message.data, message.table)) {\n\n // HMAC\n // const algorithm = \"sha256\";\n // const key = \"your-secret-key\";\n // const packetMessage = JSON.stringify(message);\n // const hmacHash = this.generateHmac(algorithm, key, packetMessage);\n \n // const unsPacket: IUnsPacket = {\n // message,\n // messageSignature: hmacHash,\n // version: unsPacketVersion\n // };\n\n let data: IUnsExtendedData = undefined;\n\n if (message.data && message.data.value !== undefined) {\n const valueType = typeof message.data.value;\n if (!valueTypes.includes(valueType as (typeof valueTypes)[number])) {\n throw new Error(`Value in data object must be string or number`);\n }\n data = {\n ...message.data,\n valueType: valueType as (typeof valueTypes)[number]\n }\n };\n\n const extendedMessage: IUnsExtendedMessage = {\n data,\n table: message.table,\n expiresAt: message.expiresAt,\n createdAt: message.createdAt,\n };\n\n const unsPacket: IUnsPacket = {\n message: extendedMessage,\n version: unsPacketVersion,\n };\n \n return unsPacket; \n }\n } catch (error) {\n logger.error(`Could not create packet from message: ${error}`);\n }\n\n }\n\n private static generateHmac(\n algorithm: string,\n key: string,\n data: string,\n ): string {\n const hmac = crypto.createHmac(algorithm, key);\n hmac.update(data);\n return hmac.digest(\"hex\");\n }\n\n static formatToISO8601(date: Date): ISO8601 {\n const year = date.getUTCFullYear();\n const month = String(date.getUTCMonth() + 1).padStart(2, \"0\");\n const day = String(date.getUTCDate()).padStart(2, \"0\");\n const hours = String(date.getUTCHours()).padStart(2, \"0\");\n const minutes = String(date.getUTCMinutes()).padStart(2, \"0\");\n const seconds = String(date.getUTCSeconds()).padStart(2, \"0\");\n const milliseconds = String(date.getUTCMilliseconds()).padStart(3, \"0\");\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}Z`;\n }\n\n private static compressString(input: string): Promise<string> {\n return new Promise((resolve, reject) => {\n zlib.deflate(input, (err, buffer) => {\n if (err) {\n reject(err);\n } else {\n const base64String = buffer.toString(\"base64\");\n resolve(base64String);\n }\n });\n });\n }\n\n // Function to decompress a Buffer back to a string\n private static decompressString(base64Compressed: string): Promise<string> {\n return new Promise((resolve, reject) => {\n // Decode the base64 string to a Buffer\n const compressedBuffer = Buffer.from(base64Compressed, \"base64\");\n\n zlib.inflate(compressedBuffer, (err, buffer) => {\n if (err) {\n reject(err);\n } else {\n resolve(buffer.toString());\n }\n });\n });\n }\n}\n"]}
|
package/dist/uns/uns-path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uns-path.js","sourceRoot":"","sources":["../../src/uns/uns-path.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAE3F,MAAM,UAAU,oBAAoB,CAAC,GAAG,QAAkB;IACxD,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;SACzD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SACvC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAG,QAAkB;IACrD,OAAO,IAAI,oBAAoB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC","sourcesContent":["const normalizeSegment = (value: string): string => value.trim().replace(/^\\/+|\\/+$/g, \"\");\
|
|
1
|
+
{"version":3,"file":"uns-path.js","sourceRoot":"","sources":["../../src/uns/uns-path.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAE3F,MAAM,UAAU,oBAAoB,CAAC,GAAG,QAAkB;IACxD,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;SACzD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SACvC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAG,QAAkB;IACrD,OAAO,IAAI,oBAAoB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC","sourcesContent":["const normalizeSegment = (value: string): string => value.trim().replace(/^\\/+|\\/+$/g, \"\");\n\nexport function buildUnsIdentityPath(...segments: string[]): string {\n return segments\n .map((segment) => normalizeSegment(String(segment ?? \"\")))\n .filter((segment) => segment.length > 0)\n .join(\"/\");\n}\n\nexport function buildUnsRoutePath(...segments: string[]): string {\n return `/${buildUnsIdentityPath(...segments)}`.replace(/\\/{2,}/g, \"/\");\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uns-proxy-process.js","sourceRoot":"","sources":["../../src/uns/uns-proxy-process.ts"],"names":[],"mappings":"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","sourcesContent":["import logger from \"../logger.js\";\r\nimport { randomBytes } from \"crypto\";\r\nimport { IUnsMessage, IUnsParameters, IUnsProcessParameters, UnsEvents } from \"./uns-interfaces.js\";\r\nimport { IMqttParameters } from \"../uns-mqtt/mqtt-interfaces.js\";\r\nimport MqttProxy from \"../uns-mqtt/mqtt-proxy.js\";\r\nimport UnsMqttProxy from \"../uns-mqtt/uns-mqtt-proxy.js\";\r\nimport { HandoverManager } from \"./handover-manager.js\";\r\n\r\n// Import configuration and initialization modules.\r\nimport { PACKAGE_INFO, MQTT_UPDATE_INTERVAL } from \"./process-config.js\";\r\nimport { MqttTopicBuilder } from \"../uns-mqtt/mqtt-topic-builder.js\";\r\nimport { StatusMonitor } from \"./status-monitor.js\";\r\nimport { UnsPacket } from \"./uns-packet.js\";\r\n\r\n\r\n/**\r\n * UnsProxyProcess is responsible for managing the process lifecycle,\r\n * configuring MQTT (subscriptions and publishing for status updates), and\r\n * handling UNS proxy instances.\r\n *\r\n * It leverages HandoverManager for handover events and StatusMonitor for health reporting.\r\n */\r\nexport type UnsProxyProcessPluginMethod = (this: UnsProxyProcess, ...args: unknown[]) => unknown;\r\n\r\nexport type UnsProxyProcessPluginMethods = Record<string, UnsProxyProcessPluginMethod>;\r\n\r\nexport interface UnsProxyProcessPluginApi {\r\n version: number;\r\n define(methods: UnsProxyProcessPluginMethods): void;\r\n UnsProxyProcess: typeof UnsProxyProcess;\r\n}\r\n\r\nexport type UnsProxyProcessPlugin = (api: UnsProxyProcessPluginApi) => void;\r\n\r\nclass UnsProxyProcess {\r\n private active: boolean = false;\r\n private processStatusTopic: string;\r\n private processName: string;\r\n private processId: string;\r\n private unsMqttProxies: UnsMqttProxy[];\r\n private unsApiProxies: unknown[];\r\n private unsTemporalProxies: unknown[];\r\n private processMqttProxy: MqttProxy;\r\n private handoverManager: HandoverManager;\r\n private statusMonitor: StatusMonitor;\r\n\r\n // Plugin\r\n static pluginApiVersion = 1;\r\n private static registered = new Set<UnsProxyProcessPlugin>();\r\n private static registeredMethodNames = new Set<string>();\r\n private static applied = false;\r\n\r\n static use(plugin: UnsProxyProcessPlugin) {\r\n if (this.registered.has(plugin)) return this;\r\n this.registered.add(plugin);\r\n if (this.applied) this.applyPlugin(plugin);\r\n return this;\r\n }\r\n\r\n private static applyPlugin(plugin: UnsProxyProcessPlugin) {\r\n const define: UnsProxyProcessPluginApi[\"define\"] = (methods) => {\r\n for (const [name, fn] of Object.entries(methods)) {\r\n if (typeof fn !== \"function\") {\r\n throw new TypeError(`UnsProxyProcess plugin attempted to register non-function member \\\"${name}\\\".`);\r\n }\r\n if (this.registeredMethodNames.has(name) || Reflect.has(this.prototype, name)) {\r\n throw new Error(`UnsProxyProcess plugin attempted to overwrite existing member \\\"${name}\\\".`);\r\n }\r\n Object.defineProperty(this.prototype, name, {\r\n value: fn,\r\n writable: true,\r\n configurable: true,\r\n enumerable: false,\r\n });\r\n this.registeredMethodNames.add(name);\r\n }\r\n };\r\n\r\n plugin({\r\n define,\r\n version: this.pluginApiVersion,\r\n UnsProxyProcess: this,\r\n });\r\n }\r\n\r\n private static applyAll() {\r\n if (this.applied) return;\r\n this.applied = true;\r\n for (const p of this.registered) this.applyPlugin(p);\r\n }\r\n\r\n // References for cleanup.\r\n private mqttInputHandler: (event: any) => void;\r\n\r\n constructor(mqttHost: string, unsProxyProcessParameters: IUnsProcessParameters) {\r\n (this.constructor as typeof UnsProxyProcess).applyAll(); // Activate all the plugins\r\n\r\n this.unsMqttProxies = [];\r\n this.unsApiProxies = [];\r\n this.unsTemporalProxies = [];\r\n if (!unsProxyProcessParameters?.processName) {\r\n throw new Error(\"UnsProxyProcess requires a processName in configuration.\");\r\n }\r\n this.processName = unsProxyProcessParameters.processName;\r\n this.processId = randomBytes(16).toString(\"hex\");\r\n const { name: packageName, version } = PACKAGE_INFO;\r\n\r\n // Instantiate the topic builder.\r\n const topicBuilder = new MqttTopicBuilder(`uns-infra/${MqttTopicBuilder.sanitizeTopicPart(packageName)}/${MqttTopicBuilder.sanitizeTopicPart(version)}/${MqttTopicBuilder.sanitizeTopicPart(this.processName)}/`);\r\n\r\n // Generate topics.\r\n const processStatusTopic = topicBuilder.getProcessStatusTopic();\r\n const handoverTopic = topicBuilder.getHandoverTopic();\r\n const wildcardActiveTopic = topicBuilder.getWildcardActiveTopic();\r\n\r\n this.processStatusTopic = processStatusTopic;\r\n\r\n // Configure MQTT topics for subscription.\r\n const mqttSubToTopics = unsProxyProcessParameters?.mqttSubToTopics ?? [\r\n wildcardActiveTopic,\r\n handoverTopic,\r\n ];\r\n const mqttParameters: IMqttParameters = {\r\n mqttSubToTopics,\r\n username: unsProxyProcessParameters?.username ?? \"\",\r\n password: unsProxyProcessParameters?.password ?? \"\",\r\n mqttSSL: unsProxyProcessParameters?.mqttSSL ?? false,\r\n statusTopic: this.processStatusTopic,\r\n clientId: unsProxyProcessParameters?.clientId ?? `${this.processName}-${this.processId}`,\r\n hosts: unsProxyProcessParameters?.hosts,\r\n servers: unsProxyProcessParameters?.servers,\r\n port: unsProxyProcessParameters?.port,\r\n protocol: unsProxyProcessParameters?.protocol,\r\n keepalive: unsProxyProcessParameters?.keepalive,\r\n clean: unsProxyProcessParameters?.clean,\r\n connectTimeout: unsProxyProcessParameters?.connectTimeout,\r\n reconnectPeriod: unsProxyProcessParameters?.reconnectPeriod,\r\n reconnectOnConnackError: unsProxyProcessParameters?.reconnectOnConnackError,\r\n resubscribe: unsProxyProcessParameters?.resubscribe,\r\n queueQoSZero: unsProxyProcessParameters?.queueQoSZero,\r\n rejectUnauthorized: unsProxyProcessParameters?.rejectUnauthorized ?? false,\r\n properties: unsProxyProcessParameters?.properties,\r\n ca: unsProxyProcessParameters?.ca,\r\n cert: unsProxyProcessParameters?.cert,\r\n key: unsProxyProcessParameters?.key,\r\n servername: unsProxyProcessParameters?.servername,\r\n };\r\n\r\n // Initialize MQTT proxy and start connection.\r\n this.processMqttProxy = new MqttProxy(mqttHost, this.processName, mqttParameters);\r\n this.processMqttProxy.start();\r\n\r\n // Instantiate and start the StatusMonitor for memory and status updates.\r\n this.statusMonitor = new StatusMonitor(\r\n this.processMqttProxy,\r\n this.processStatusTopic,\r\n () => this.active,\r\n MQTT_UPDATE_INTERVAL,\r\n MQTT_UPDATE_INTERVAL,\r\n { processName: this.processName, processId: this.processId },\r\n );\r\n this.statusMonitor.start();\r\n }\r\n\r\n /**\r\n * Initializes the HandoverManager instance and sets up event listeners for handover and MQTT input events.\r\n * Determines handover and force start modes based on process arguments.\r\n */\r\n private initHandoverManager(instanceMode: string, handover: boolean) {\r\n\r\n const handoverRequestEnabled = instanceMode == \"handover\" ? true : false;\r\n const forceStartEnabled = instanceMode == \"force\" ? true : false;\r\n\r\n this.handoverManager = new HandoverManager(\r\n this.processName,\r\n this.processId,\r\n this.processMqttProxy,\r\n this.unsMqttProxies,\r\n handoverRequestEnabled,\r\n handover ?? true,\r\n forceStartEnabled\r\n );\r\n\r\n // Listen for handover events.\r\n this.handoverManager.event.on(\"handoverManager\", (event) => {\r\n this.active = event.active;\r\n });\r\n\r\n // Delegate MQTT events to the HandoverManager.\r\n this.mqttInputHandler = async (event: UnsEvents[\"input\"]) => {\r\n await this.handoverManager.handleMqttMessage(event);\r\n };\r\n this.processMqttProxy.event.on(\"input\", this.mqttInputHandler);\r\n }\r\n\r\n /**\r\n * Creates a new UNS proxy instance and stores it for future management.\r\n */\r\n public async createUnsMqttProxy(\r\n mqttHost: string, \r\n instanceName: string,\r\n instanceMode: string,\r\n handover: boolean,\r\n unsParameters?: IUnsParameters): Promise<UnsMqttProxy> {\r\n // Wait until the MQTT connection is established before proceeding.\r\n await this.waitForProcessConnection();\r\n\r\n // Currently handover manager can handle only mqtt events\r\n if (!this.handoverManager) {\r\n this.initHandoverManager(instanceMode, handover);\r\n }\r\n\r\n const resolvedUnsParameters: IUnsParameters = {\r\n ...(unsParameters ?? {}),\r\n clientId: unsParameters?.clientId ?? `${this.processName}-${instanceName}-${this.processId}`,\r\n };\r\n const unsMqttProxy = new UnsMqttProxy(mqttHost, this.processName, instanceName, resolvedUnsParameters);\r\n \r\n // Listen for UNS proxy producing topics and publish them via MQTT.\r\n unsMqttProxy.event.on(\"unsProxyProducedTopics\", (event) => {\r\n this.processMqttProxy.publish(\r\n event.statusTopic,\r\n JSON.stringify(event.producedTopics),\r\n {\r\n retain: true,\r\n properties: { messageExpiryInterval: 120000 },\r\n },\r\n );\r\n });\r\n\r\n // Listen for UNS proxy status events and publish them via MQTT.\r\n unsMqttProxy.event.on(\"mqttProxyStatus\", (event) => {\r\n const time = UnsPacket.formatToISO8601(new Date());\r\n const unsMessage: IUnsMessage = { data: { time, value: event.value, uom: event.uom } };\r\n UnsPacket.unsPacketFromUnsMessage(unsMessage).then((packet) => {\r\n this.processMqttProxy.publish(\r\n event.statusTopic,\r\n JSON.stringify(packet),\r\n );\r\n });\r\n });\r\n\r\n this.unsMqttProxies.push(unsMqttProxy);\r\n return unsMqttProxy;\r\n }\r\n\r\n public async waitForProcessConnection(): Promise<void> {\r\n while (!this.processMqttProxy?.isConnected) {\r\n await new Promise((resolve) => setTimeout(resolve, 100));\r\n }\r\n }\r\n\r\n /**\r\n * Shuts down the process by clearing intervals, timeouts, and removing\r\n * MQTT event listeners, and stopping the StatusMonitor.\r\n */\r\n public shutdown(): void {\r\n logger.info(`${this.processName} - Shutting down UnsProxyProcess...`);\r\n try {\r\n this.statusMonitor.stop();\r\n } catch (e: any) {\r\n logger.error(`${this.processName} - Error stopping StatusMonitor: ${e.message}`);\r\n }\r\n \r\n if (this.mqttInputHandler) {\r\n this.processMqttProxy.event.off(\"input\", this.mqttInputHandler);\r\n }\r\n \r\n try {\r\n if (typeof this.processMqttProxy.stop === \"function\") {\r\n this.processMqttProxy.stop();\r\n }\r\n } catch (e: any) {\r\n logger.error(`${this.processName} - Error stopping MQTT proxy: ${e.message}`);\r\n }\r\n \r\n logger.info(`${this.processName} - Shutdown complete.`);\r\n }\r\n \r\n}\r\n\r\ninterface UnsProxyProcess {}\r\n\r\nexport default UnsProxyProcess;\r\nexport { UnsProxyProcess };\r\n"]}
|
|
1
|
+
{"version":3,"file":"uns-proxy-process.js","sourceRoot":"","sources":["../../src/uns/uns-proxy-process.ts"],"names":[],"mappings":"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","sourcesContent":["import logger from \"../logger.js\";\nimport { randomBytes } from \"crypto\";\nimport { IUnsMessage, IUnsParameters, IUnsProcessParameters, UnsEvents } from \"./uns-interfaces.js\";\nimport { IMqttParameters } from \"../uns-mqtt/mqtt-interfaces.js\";\nimport MqttProxy from \"../uns-mqtt/mqtt-proxy.js\";\nimport UnsMqttProxy from \"../uns-mqtt/uns-mqtt-proxy.js\";\nimport { HandoverManager } from \"./handover-manager.js\";\n\n// Import configuration and initialization modules.\nimport { PACKAGE_INFO, MQTT_UPDATE_INTERVAL } from \"./process-config.js\";\nimport { MqttTopicBuilder } from \"../uns-mqtt/mqtt-topic-builder.js\";\nimport { StatusMonitor } from \"./status-monitor.js\";\nimport { UnsPacket } from \"./uns-packet.js\";\n\n\n/**\n * UnsProxyProcess is responsible for managing the process lifecycle,\n * configuring MQTT (subscriptions and publishing for status updates), and\n * handling UNS proxy instances.\n *\n * It leverages HandoverManager for handover events and StatusMonitor for health reporting.\n */\nexport type UnsProxyProcessPluginMethod = (this: UnsProxyProcess, ...args: unknown[]) => unknown;\n\nexport type UnsProxyProcessPluginMethods = Record<string, UnsProxyProcessPluginMethod>;\n\nexport interface UnsProxyProcessPluginApi {\n version: number;\n define(methods: UnsProxyProcessPluginMethods): void;\n UnsProxyProcess: typeof UnsProxyProcess;\n}\n\nexport type UnsProxyProcessPlugin = (api: UnsProxyProcessPluginApi) => void;\n\nclass UnsProxyProcess {\n private active: boolean = false;\n private processStatusTopic: string;\n private processName: string;\n private processId: string;\n private unsMqttProxies: UnsMqttProxy[];\n private unsApiProxies: unknown[];\n private unsTemporalProxies: unknown[];\n private processMqttProxy: MqttProxy;\n private handoverManager: HandoverManager;\n private statusMonitor: StatusMonitor;\n\n // Plugin\n static pluginApiVersion = 1;\n private static registered = new Set<UnsProxyProcessPlugin>();\n private static registeredMethodNames = new Set<string>();\n private static applied = false;\n\n static use(plugin: UnsProxyProcessPlugin) {\n if (this.registered.has(plugin)) return this;\n this.registered.add(plugin);\n if (this.applied) this.applyPlugin(plugin);\n return this;\n }\n\n private static applyPlugin(plugin: UnsProxyProcessPlugin) {\n const define: UnsProxyProcessPluginApi[\"define\"] = (methods) => {\n for (const [name, fn] of Object.entries(methods)) {\n if (typeof fn !== \"function\") {\n throw new TypeError(`UnsProxyProcess plugin attempted to register non-function member \\\"${name}\\\".`);\n }\n if (this.registeredMethodNames.has(name) || Reflect.has(this.prototype, name)) {\n throw new Error(`UnsProxyProcess plugin attempted to overwrite existing member \\\"${name}\\\".`);\n }\n Object.defineProperty(this.prototype, name, {\n value: fn,\n writable: true,\n configurable: true,\n enumerable: false,\n });\n this.registeredMethodNames.add(name);\n }\n };\n\n plugin({\n define,\n version: this.pluginApiVersion,\n UnsProxyProcess: this,\n });\n }\n\n private static applyAll() {\n if (this.applied) return;\n this.applied = true;\n for (const p of this.registered) this.applyPlugin(p);\n }\n\n // References for cleanup.\n private mqttInputHandler: (event: any) => void;\n\n constructor(mqttHost: string, unsProxyProcessParameters: IUnsProcessParameters) {\n (this.constructor as typeof UnsProxyProcess).applyAll(); // Activate all the plugins\n\n this.unsMqttProxies = [];\n this.unsApiProxies = [];\n this.unsTemporalProxies = [];\n if (!unsProxyProcessParameters?.processName) {\n throw new Error(\"UnsProxyProcess requires a processName in configuration.\");\n }\n this.processName = unsProxyProcessParameters.processName;\n this.processId = randomBytes(16).toString(\"hex\");\n const { name: packageName, version } = PACKAGE_INFO;\n\n // Instantiate the topic builder.\n const topicBuilder = new MqttTopicBuilder(`uns-infra/${MqttTopicBuilder.sanitizeTopicPart(packageName)}/${MqttTopicBuilder.sanitizeTopicPart(version)}/${MqttTopicBuilder.sanitizeTopicPart(this.processName)}/`);\n\n // Generate topics.\n const processStatusTopic = topicBuilder.getProcessStatusTopic();\n const handoverTopic = topicBuilder.getHandoverTopic();\n const wildcardActiveTopic = topicBuilder.getWildcardActiveTopic();\n\n this.processStatusTopic = processStatusTopic;\n\n // Configure MQTT topics for subscription.\n const mqttSubToTopics = unsProxyProcessParameters?.mqttSubToTopics ?? [\n wildcardActiveTopic,\n handoverTopic,\n ];\n const mqttParameters: IMqttParameters = {\n mqttSubToTopics,\n username: unsProxyProcessParameters?.username ?? \"\",\n password: unsProxyProcessParameters?.password ?? \"\",\n mqttSSL: unsProxyProcessParameters?.mqttSSL ?? false,\n statusTopic: this.processStatusTopic,\n clientId: unsProxyProcessParameters?.clientId ?? `${this.processName}-${this.processId}`,\n hosts: unsProxyProcessParameters?.hosts,\n servers: unsProxyProcessParameters?.servers,\n port: unsProxyProcessParameters?.port,\n protocol: unsProxyProcessParameters?.protocol,\n keepalive: unsProxyProcessParameters?.keepalive,\n clean: unsProxyProcessParameters?.clean,\n connectTimeout: unsProxyProcessParameters?.connectTimeout,\n reconnectPeriod: unsProxyProcessParameters?.reconnectPeriod,\n reconnectOnConnackError: unsProxyProcessParameters?.reconnectOnConnackError,\n resubscribe: unsProxyProcessParameters?.resubscribe,\n queueQoSZero: unsProxyProcessParameters?.queueQoSZero,\n rejectUnauthorized: unsProxyProcessParameters?.rejectUnauthorized ?? false,\n properties: unsProxyProcessParameters?.properties,\n ca: unsProxyProcessParameters?.ca,\n cert: unsProxyProcessParameters?.cert,\n key: unsProxyProcessParameters?.key,\n servername: unsProxyProcessParameters?.servername,\n };\n\n // Initialize MQTT proxy and start connection.\n this.processMqttProxy = new MqttProxy(mqttHost, this.processName, mqttParameters);\n this.processMqttProxy.start();\n\n // Instantiate and start the StatusMonitor for memory and status updates.\n this.statusMonitor = new StatusMonitor(\n this.processMqttProxy,\n this.processStatusTopic,\n () => this.active,\n MQTT_UPDATE_INTERVAL,\n MQTT_UPDATE_INTERVAL,\n { processName: this.processName, processId: this.processId },\n );\n this.statusMonitor.start();\n }\n\n /**\n * Initializes the HandoverManager instance and sets up event listeners for handover and MQTT input events.\n * Determines handover and force start modes based on process arguments.\n */\n private initHandoverManager(instanceMode: string, handover: boolean) {\n\n const handoverRequestEnabled = instanceMode == \"handover\" ? true : false;\n const forceStartEnabled = instanceMode == \"force\" ? true : false;\n\n this.handoverManager = new HandoverManager(\n this.processName,\n this.processId,\n this.processMqttProxy,\n this.unsMqttProxies,\n handoverRequestEnabled,\n handover ?? true,\n forceStartEnabled\n );\n\n // Listen for handover events.\n this.handoverManager.event.on(\"handoverManager\", (event) => {\n this.active = event.active;\n });\n\n // Delegate MQTT events to the HandoverManager.\n this.mqttInputHandler = async (event: UnsEvents[\"input\"]) => {\n await this.handoverManager.handleMqttMessage(event);\n };\n this.processMqttProxy.event.on(\"input\", this.mqttInputHandler);\n }\n\n /**\n * Creates a new UNS proxy instance and stores it for future management.\n */\n public async createUnsMqttProxy(\n mqttHost: string, \n instanceName: string,\n instanceMode: string,\n handover: boolean,\n unsParameters?: IUnsParameters): Promise<UnsMqttProxy> {\n // Wait until the MQTT connection is established before proceeding.\n await this.waitForProcessConnection();\n\n // Currently handover manager can handle only mqtt events\n if (!this.handoverManager) {\n this.initHandoverManager(instanceMode, handover);\n }\n\n const resolvedUnsParameters: IUnsParameters = {\n ...(unsParameters ?? {}),\n clientId: unsParameters?.clientId ?? `${this.processName}-${instanceName}-${this.processId}`,\n };\n const unsMqttProxy = new UnsMqttProxy(mqttHost, this.processName, instanceName, resolvedUnsParameters);\n \n // Listen for UNS proxy producing topics and publish them via MQTT.\n unsMqttProxy.event.on(\"unsProxyProducedTopics\", (event) => {\n this.processMqttProxy.publish(\n event.statusTopic,\n JSON.stringify(event.producedTopics),\n {\n retain: true,\n properties: { messageExpiryInterval: 120000 },\n },\n );\n });\n\n // Listen for UNS proxy status events and publish them via MQTT.\n unsMqttProxy.event.on(\"mqttProxyStatus\", (event) => {\n const time = UnsPacket.formatToISO8601(new Date());\n const unsMessage: IUnsMessage = { data: { time, value: event.value, uom: event.uom } };\n UnsPacket.unsPacketFromUnsMessage(unsMessage).then((packet) => {\n this.processMqttProxy.publish(\n event.statusTopic,\n JSON.stringify(packet),\n );\n });\n });\n\n this.unsMqttProxies.push(unsMqttProxy);\n return unsMqttProxy;\n }\n\n public async waitForProcessConnection(): Promise<void> {\n while (!this.processMqttProxy?.isConnected) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n /**\n * Shuts down the process by clearing intervals, timeouts, and removing\n * MQTT event listeners, and stopping the StatusMonitor.\n */\n public shutdown(): void {\n logger.info(`${this.processName} - Shutting down UnsProxyProcess...`);\n try {\n this.statusMonitor.stop();\n } catch (e: any) {\n logger.error(`${this.processName} - Error stopping StatusMonitor: ${e.message}`);\n }\n \n if (this.mqttInputHandler) {\n this.processMqttProxy.event.off(\"input\", this.mqttInputHandler);\n }\n \n try {\n if (typeof this.processMqttProxy.stop === \"function\") {\n this.processMqttProxy.stop();\n }\n } catch (e: any) {\n logger.error(`${this.processName} - Error stopping MQTT proxy: ${e.message}`);\n }\n \n logger.info(`${this.processName} - Shutdown complete.`);\n }\n \n}\n\ninterface UnsProxyProcess {}\n\nexport default UnsProxyProcess;\nexport { UnsProxyProcess };\n"]}
|