kuzzle-device-manager 2.0.0-rc8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/fixtures/application/app.d.ts +1 -0
- package/dist/features/fixtures/application/app.js +70 -0
- package/dist/features/fixtures/application/app.js.map +1 -0
- package/dist/features/fixtures/application/assets/Container.d.ts +1 -0
- package/dist/features/fixtures/application/assets/Container.js +14 -0
- package/dist/features/fixtures/application/assets/Container.js.map +1 -0
- package/dist/features/fixtures/application/decoders/DummyTempDecoder.d.ts +11 -0
- package/dist/features/fixtures/application/decoders/DummyTempDecoder.js +51 -0
- package/dist/features/fixtures/application/decoders/DummyTempDecoder.js.map +1 -0
- package/dist/features/fixtures/application/decoders/DummyTempPositionDecoder.d.ts +16 -0
- package/dist/features/fixtures/application/decoders/DummyTempPositionDecoder.js +49 -0
- package/dist/features/fixtures/application/decoders/DummyTempPositionDecoder.js.map +1 -0
- package/dist/features/fixtures/application/decoders/index.d.ts +2 -0
- package/{lib/utils → dist/features/fixtures/application/decoders}/index.js +2 -1
- package/dist/features/fixtures/application/decoders/index.js.map +1 -0
- package/dist/features/fixtures/application/testPipes.d.ts +2 -0
- package/dist/features/fixtures/application/testPipes.js +75 -0
- package/dist/features/fixtures/application/testPipes.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/{lib/types → dist/lib/core}/DeviceManagerConfiguration.d.ts +17 -8
- package/{lib/types → dist/lib/core}/DeviceManagerConfiguration.js +0 -0
- package/dist/lib/core/DeviceManagerConfiguration.js.map +1 -0
- package/dist/lib/core/DeviceManagerEngine.d.ts +32 -0
- package/dist/lib/core/DeviceManagerEngine.js +162 -0
- package/dist/lib/core/DeviceManagerEngine.js.map +1 -0
- package/dist/lib/core/DeviceManagerPlugin.d.ts +115 -0
- package/dist/lib/core/DeviceManagerPlugin.js +336 -0
- package/dist/lib/core/DeviceManagerPlugin.js.map +1 -0
- package/dist/lib/core/InternalCollection.d.ts +8 -0
- package/{lib → dist/lib/core}/InternalCollection.js +3 -0
- package/dist/lib/core/InternalCollection.js.map +1 -0
- package/dist/lib/core/exports.d.ts +2 -0
- package/{lib/models/index.js → dist/lib/core/exports.js} +3 -3
- package/dist/lib/core/exports.js.map +1 -0
- package/dist/lib/core/index.d.ts +4 -0
- package/dist/lib/core/index.js +21 -0
- package/dist/lib/core/index.js.map +1 -0
- package/{lib/core-classes → dist/lib/core}/registers/DecodersRegister.d.ts +6 -13
- package/{lib/core-classes → dist/lib/core}/registers/DecodersRegister.js +45 -66
- package/dist/lib/core/registers/DecodersRegister.js.map +1 -0
- package/dist/lib/core/registers/ModelsRegister.d.ts +18 -0
- package/dist/lib/core/registers/ModelsRegister.js +66 -0
- package/dist/lib/core/registers/ModelsRegister.js.map +1 -0
- package/dist/lib/modules/asset/AssetHistoryService.d.ts +11 -0
- package/dist/lib/modules/asset/AssetHistoryService.js +24 -0
- package/dist/lib/modules/asset/AssetHistoryService.js.map +1 -0
- package/dist/lib/modules/asset/AssetModule.d.ts +7 -0
- package/dist/lib/modules/asset/AssetModule.js +21 -0
- package/dist/lib/modules/asset/AssetModule.js.map +1 -0
- package/dist/lib/modules/asset/AssetService.d.ts +50 -0
- package/dist/lib/modules/asset/AssetService.js +137 -0
- package/dist/lib/modules/asset/AssetService.js.map +1 -0
- package/dist/lib/modules/asset/AssetsController.d.ts +14 -0
- package/dist/lib/modules/asset/AssetsController.js +119 -0
- package/dist/lib/modules/asset/AssetsController.js.map +1 -0
- package/dist/lib/modules/asset/collections/assetsHistoryMappings.d.ts +63 -0
- package/dist/lib/modules/asset/collections/assetsHistoryMappings.js +48 -0
- package/dist/lib/modules/asset/collections/assetsHistoryMappings.js.map +1 -0
- package/dist/lib/modules/asset/collections/assetsMappings.d.ts +44 -0
- package/dist/lib/modules/asset/collections/assetsMappings.js +38 -0
- package/dist/lib/modules/asset/collections/assetsMappings.js.map +1 -0
- package/dist/lib/modules/asset/exports.d.ts +6 -0
- package/{index.js → dist/lib/modules/asset/exports.js} +7 -6
- package/dist/lib/modules/asset/exports.js.map +1 -0
- package/dist/lib/modules/asset/index.d.ts +10 -0
- package/dist/lib/modules/asset/index.js +27 -0
- package/dist/lib/modules/asset/index.js.map +1 -0
- package/dist/lib/modules/asset/model/AssetSerializer.d.ts +10 -0
- package/dist/lib/modules/asset/model/AssetSerializer.js +31 -0
- package/dist/lib/modules/asset/model/AssetSerializer.js.map +1 -0
- package/dist/lib/modules/asset/roles/RoleAssetsAdmin.d.ts +22 -0
- package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js +43 -0
- package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js.map +1 -0
- package/dist/lib/modules/asset/roles/RoleAssetsReader.d.ts +21 -0
- package/dist/lib/modules/asset/roles/RoleAssetsReader.js +42 -0
- package/dist/lib/modules/asset/roles/RoleAssetsReader.js.map +1 -0
- package/dist/lib/modules/asset/types/AssetApi.d.ts +58 -0
- package/{lib/types/Request.js → dist/lib/modules/asset/types/AssetApi.js} +1 -1
- package/dist/lib/modules/asset/types/AssetApi.js.map +1 -0
- package/dist/lib/modules/asset/types/AssetContent.d.ts +44 -0
- package/{lib/types/DecodedPayload.js → dist/lib/modules/asset/types/AssetContent.js} +1 -1
- package/dist/lib/modules/asset/types/AssetContent.js.map +1 -0
- package/dist/lib/modules/asset/types/AssetEvents.d.ts +30 -0
- package/dist/lib/modules/asset/types/AssetEvents.js +3 -0
- package/dist/lib/modules/asset/types/AssetEvents.js.map +1 -0
- package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +50 -0
- package/dist/lib/modules/asset/types/AssetHistoryContent.js +3 -0
- package/dist/lib/modules/asset/types/AssetHistoryContent.js.map +1 -0
- package/dist/lib/modules/decoder/DecodedPayload.d.ts +47 -0
- package/dist/lib/modules/decoder/DecodedPayload.js +82 -0
- package/dist/lib/modules/decoder/DecodedPayload.js.map +1 -0
- package/{lib/core-classes → dist/lib/modules/decoder}/Decoder.d.ts +30 -19
- package/{lib/core-classes → dist/lib/modules/decoder}/Decoder.js +40 -17
- package/dist/lib/modules/decoder/Decoder.js.map +1 -0
- package/dist/lib/modules/decoder/DecoderModule.d.ts +8 -0
- package/dist/lib/modules/decoder/DecoderModule.js +29 -0
- package/dist/lib/modules/decoder/DecoderModule.js.map +1 -0
- package/dist/lib/modules/decoder/DecodersController.d.ts +18 -0
- package/dist/lib/modules/decoder/DecodersController.js +44 -0
- package/dist/lib/modules/decoder/DecodersController.js.map +1 -0
- package/dist/lib/modules/decoder/PayloadService.d.ts +34 -0
- package/dist/lib/modules/decoder/PayloadService.js +136 -0
- package/dist/lib/modules/decoder/PayloadService.js.map +1 -0
- package/dist/lib/modules/decoder/PayloadsController.d.ts +11 -0
- package/dist/lib/modules/decoder/PayloadsController.js +56 -0
- package/dist/lib/modules/decoder/PayloadsController.js.map +1 -0
- package/{lib/mappings → dist/lib/modules/decoder/collections}/payloadsMappings.d.ts +0 -4
- package/dist/lib/modules/decoder/collections/payloadsMappings.js +16 -0
- package/dist/lib/modules/decoder/collections/payloadsMappings.js.map +1 -0
- package/dist/lib/modules/decoder/exports.d.ts +6 -0
- package/{lib/types/index.js → dist/lib/modules/decoder/exports.js} +6 -7
- package/dist/lib/modules/decoder/exports.js.map +1 -0
- package/dist/lib/modules/decoder/index.d.ts +8 -0
- package/{lib/core-classes → dist/lib/modules/decoder}/index.js +7 -8
- package/dist/lib/modules/decoder/index.js.map +1 -0
- package/dist/lib/modules/decoder/roles/RoleDecodersAdmin.d.ts +14 -0
- package/dist/lib/modules/decoder/roles/RoleDecodersAdmin.js +28 -0
- package/dist/lib/modules/decoder/roles/RoleDecodersAdmin.js.map +1 -0
- package/dist/lib/modules/decoder/roles/RolePayloadsAll.d.ts +12 -0
- package/dist/lib/modules/decoder/roles/RolePayloadsAll.js +26 -0
- package/dist/lib/modules/decoder/roles/RolePayloadsAll.js.map +1 -0
- package/dist/lib/modules/decoder/types/DecoderApi.d.ts +19 -0
- package/dist/lib/modules/decoder/types/DecoderApi.js +3 -0
- package/dist/lib/modules/decoder/types/DecoderApi.js.map +1 -0
- package/dist/lib/modules/decoder/types/DecoderContent.d.ts +5 -0
- package/{lib → dist/lib/modules/decoder}/types/DecoderContent.js +0 -0
- package/dist/lib/modules/decoder/types/DecoderContent.js.map +1 -0
- package/dist/lib/modules/decoder/types/PayloadApi.d.ts +11 -0
- package/dist/lib/modules/decoder/types/PayloadApi.js +3 -0
- package/dist/lib/modules/decoder/types/PayloadApi.js.map +1 -0
- package/dist/lib/modules/device/DeviceModule.d.ts +6 -0
- package/dist/lib/modules/device/DeviceModule.js +22 -0
- package/dist/lib/modules/device/DeviceModule.js.map +1 -0
- package/dist/lib/modules/device/DeviceService.d.ts +85 -0
- package/dist/lib/modules/device/DeviceService.js +282 -0
- package/dist/lib/modules/device/DeviceService.js.map +1 -0
- package/dist/lib/modules/device/DevicesController.d.ts +32 -0
- package/dist/lib/modules/device/DevicesController.js +183 -0
- package/dist/lib/modules/device/DevicesController.js.map +1 -0
- package/{lib/mappings → dist/lib/modules/device/collections}/deviceMappings.d.ts +14 -15
- package/dist/lib/modules/device/collections/deviceMappings.js +35 -0
- package/dist/lib/modules/device/collections/deviceMappings.js.map +1 -0
- package/dist/lib/modules/device/exports.d.ts +6 -0
- package/dist/lib/modules/device/exports.js +23 -0
- package/dist/lib/modules/device/exports.js.map +1 -0
- package/dist/lib/modules/device/index.d.ts +9 -0
- package/dist/lib/modules/device/index.js +26 -0
- package/dist/lib/modules/device/index.js.map +1 -0
- package/dist/lib/modules/device/model/DeviceSerializer.d.ts +6 -0
- package/dist/lib/modules/device/model/DeviceSerializer.js +16 -0
- package/dist/lib/modules/device/model/DeviceSerializer.js.map +1 -0
- package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +27 -0
- package/dist/lib/modules/device/roles/RoleDevicesAdmin.js +54 -0
- package/dist/lib/modules/device/roles/RoleDevicesAdmin.js.map +1 -0
- package/dist/lib/modules/device/roles/RoleDevicesPlatformAdmin.d.ts +21 -0
- package/dist/lib/modules/device/roles/RoleDevicesPlatformAdmin.js +42 -0
- package/dist/lib/modules/device/roles/RoleDevicesPlatformAdmin.js.map +1 -0
- package/dist/lib/modules/device/roles/RoleDevicesReader.d.ts +21 -0
- package/dist/lib/modules/device/roles/RoleDevicesReader.js +41 -0
- package/dist/lib/modules/device/roles/RoleDevicesReader.js.map +1 -0
- package/dist/lib/modules/device/types/DeviceApi.d.ts +97 -0
- package/dist/lib/modules/device/types/DeviceApi.js +3 -0
- package/dist/lib/modules/device/types/DeviceApi.js.map +1 -0
- package/dist/lib/modules/device/types/DeviceContent.d.ts +14 -0
- package/{lib → dist/lib/modules/device}/types/DeviceContent.js +0 -0
- package/dist/lib/modules/device/types/DeviceContent.js.map +1 -0
- package/dist/lib/modules/device/types/DeviceEvents.d.ts +28 -0
- package/dist/lib/modules/device/types/DeviceEvents.js +3 -0
- package/dist/lib/modules/device/types/DeviceEvents.js.map +1 -0
- package/dist/lib/modules/measure/MeasureModule.d.ts +5 -0
- package/dist/lib/modules/measure/MeasureModule.js +16 -0
- package/dist/lib/modules/measure/MeasureModule.js.map +1 -0
- package/dist/lib/modules/measure/MeasureService.d.ts +40 -0
- package/dist/lib/modules/measure/MeasureService.js +259 -0
- package/dist/lib/modules/measure/MeasureService.js.map +1 -0
- package/dist/lib/modules/measure/collections/measuresMappings.d.ts +61 -0
- package/dist/lib/modules/measure/collections/measuresMappings.js +45 -0
- package/dist/lib/modules/measure/collections/measuresMappings.js.map +1 -0
- package/dist/lib/modules/measure/exports.d.ts +6 -0
- package/dist/lib/modules/measure/exports.js +23 -0
- package/dist/lib/modules/measure/exports.js.map +1 -0
- package/dist/lib/modules/measure/index.d.ts +8 -0
- package/dist/lib/modules/measure/index.js +25 -0
- package/dist/lib/modules/measure/index.js.map +1 -0
- package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +5 -0
- package/dist/lib/modules/measure/measures/BatteryMeasure.js +7 -0
- package/dist/lib/modules/measure/measures/BatteryMeasure.js.map +1 -0
- package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +5 -0
- package/dist/lib/modules/measure/measures/HumidityMeasure.js +7 -0
- package/dist/lib/modules/measure/measures/HumidityMeasure.js.map +1 -0
- package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +5 -0
- package/dist/lib/modules/measure/measures/MovementMeasure.js +7 -0
- package/dist/lib/modules/measure/measures/MovementMeasure.js.map +1 -0
- package/dist/lib/modules/measure/measures/PositionMeasure.d.ts +10 -0
- package/dist/lib/modules/measure/measures/PositionMeasure.js +11 -0
- package/dist/lib/modules/measure/measures/PositionMeasure.js.map +1 -0
- package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +5 -0
- package/dist/lib/modules/measure/measures/TemperatureMeasure.js +7 -0
- package/dist/lib/modules/measure/measures/TemperatureMeasure.js.map +1 -0
- package/dist/lib/modules/measure/measures/index.d.ts +5 -0
- package/{lib → dist/lib/modules/measure}/measures/index.js +0 -0
- package/dist/lib/modules/measure/measures/index.js.map +1 -0
- package/dist/lib/modules/measure/roles/RoleMeasuresAdmin.d.ts +16 -0
- package/dist/lib/modules/measure/roles/RoleMeasuresAdmin.js +32 -0
- package/dist/lib/modules/measure/roles/RoleMeasuresAdmin.js.map +1 -0
- package/dist/lib/modules/measure/roles/RoleMeasuresReader.d.ts +14 -0
- package/dist/lib/modules/measure/roles/RoleMeasuresReader.js +28 -0
- package/dist/lib/modules/measure/roles/RoleMeasuresReader.js.map +1 -0
- package/dist/lib/modules/measure/types/MeasureContent.d.ts +82 -0
- package/dist/lib/modules/measure/types/MeasureContent.js +3 -0
- package/dist/lib/modules/measure/types/MeasureContent.js.map +1 -0
- package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +15 -0
- package/{lib/types/measures → dist/lib/modules/measure/types}/MeasureDefinition.js +0 -0
- package/dist/lib/modules/measure/types/MeasureDefinition.js.map +1 -0
- package/dist/lib/modules/measure/types/MeasureEvents.d.ts +66 -0
- package/dist/lib/modules/measure/types/MeasureEvents.js +3 -0
- package/dist/lib/modules/measure/types/MeasureEvents.js.map +1 -0
- package/dist/lib/modules/model/ModelModule.d.ts +6 -0
- package/dist/lib/modules/model/ModelModule.js +15 -0
- package/dist/lib/modules/model/ModelModule.js.map +1 -0
- package/dist/lib/modules/model/ModelSerializer.d.ts +5 -0
- package/dist/lib/modules/model/ModelSerializer.js +32 -0
- package/dist/lib/modules/model/ModelSerializer.js.map +1 -0
- package/dist/lib/modules/model/ModelService.d.ts +24 -0
- package/dist/lib/modules/model/ModelService.js +153 -0
- package/dist/lib/modules/model/ModelService.js.map +1 -0
- package/dist/lib/modules/model/ModelsController.d.ts +17 -0
- package/dist/lib/modules/model/ModelsController.js +109 -0
- package/dist/lib/modules/model/ModelsController.js.map +1 -0
- package/dist/lib/modules/model/collections/modelsMappings.d.ts +2 -0
- package/dist/lib/modules/model/collections/modelsMappings.js +68 -0
- package/dist/lib/modules/model/collections/modelsMappings.js.map +1 -0
- package/dist/lib/modules/model/exports.d.ts +3 -0
- package/{lib/controllers/index.js → dist/lib/modules/model/exports.js} +4 -4
- package/dist/lib/modules/model/exports.js.map +1 -0
- package/dist/lib/modules/model/index.d.ts +7 -0
- package/dist/lib/modules/model/index.js +24 -0
- package/dist/lib/modules/model/index.js.map +1 -0
- package/dist/lib/modules/model/types/ModelApi.d.ts +72 -0
- package/dist/lib/modules/model/types/ModelApi.js +3 -0
- package/dist/lib/modules/model/types/ModelApi.js.map +1 -0
- package/dist/lib/modules/model/types/ModelContent.d.ts +97 -0
- package/dist/lib/modules/model/types/ModelContent.js +3 -0
- package/dist/lib/modules/model/types/ModelContent.js.map +1 -0
- package/dist/lib/modules/model/types/ModelDefinition.d.ts +62 -0
- package/dist/lib/modules/model/types/ModelDefinition.js +3 -0
- package/dist/lib/modules/model/types/ModelDefinition.js.map +1 -0
- package/dist/lib/modules/model/types/ModelEvents.d.ts +16 -0
- package/dist/lib/modules/model/types/ModelEvents.js +3 -0
- package/dist/lib/modules/model/types/ModelEvents.js.map +1 -0
- package/dist/lib/modules/shared/Module.d.ts +7 -0
- package/dist/lib/modules/shared/Module.js +13 -0
- package/dist/lib/modules/shared/Module.js.map +1 -0
- package/dist/lib/modules/shared/exports.d.ts +3 -0
- package/{lib/mappings/index.js → dist/lib/modules/shared/exports.js} +4 -5
- package/dist/lib/modules/shared/exports.js.map +1 -0
- package/dist/lib/modules/shared/index.d.ts +9 -0
- package/dist/lib/modules/shared/index.js +26 -0
- package/dist/lib/modules/shared/index.js.map +1 -0
- package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +11 -0
- package/{lib/types/BaseAssetContent.js → dist/lib/modules/shared/types/DigitalTwinContent.js} +1 -1
- package/dist/lib/modules/shared/types/DigitalTwinContent.js.map +1 -0
- package/dist/lib/modules/shared/types/EmbeddedMeasure.d.ts +24 -0
- package/dist/lib/modules/shared/types/EmbeddedMeasure.js +3 -0
- package/dist/lib/modules/shared/types/EmbeddedMeasure.js.map +1 -0
- package/dist/lib/modules/shared/types/KuzzleRole.d.ts +5 -0
- package/dist/lib/modules/shared/types/KuzzleRole.js +3 -0
- package/dist/lib/modules/shared/types/KuzzleRole.js.map +1 -0
- package/dist/lib/modules/shared/types/Metadata.d.ts +5 -0
- package/dist/lib/modules/shared/types/Metadata.js +3 -0
- package/dist/lib/modules/shared/types/Metadata.js.map +1 -0
- package/dist/lib/modules/shared/utils/ask.d.ts +8 -0
- package/dist/lib/modules/shared/utils/ask.js +12 -0
- package/dist/lib/modules/shared/utils/ask.js.map +1 -0
- package/dist/lib/modules/shared/utils/flattenObject.d.ts +24 -0
- package/dist/lib/modules/shared/utils/flattenObject.js +46 -0
- package/dist/lib/modules/shared/utils/flattenObject.js.map +1 -0
- package/dist/lib/modules/shared/utils/lock.d.ts +1 -0
- package/dist/lib/modules/shared/utils/lock.js +16 -0
- package/dist/lib/modules/shared/utils/lock.js.map +1 -0
- package/dist/lib/modules/shared/utils/snakeCase.d.ts +7 -0
- package/dist/lib/modules/shared/utils/snakeCase.js +18 -0
- package/dist/lib/modules/shared/utils/snakeCase.js.map +1 -0
- package/package.json +19 -27
- package/index.d.ts +0 -5
- package/lib/DeviceManagerPlugin.d.ts +0 -75
- package/lib/DeviceManagerPlugin.js +0 -274
- package/lib/InternalCollection.d.ts +0 -5
- package/lib/controllers/AssetCategoryController.d.ts +0 -28
- package/lib/controllers/AssetCategoryController.js +0 -189
- package/lib/controllers/AssetController.d.ts +0 -50
- package/lib/controllers/AssetController.js +0 -241
- package/lib/controllers/DecodersController.d.ts +0 -16
- package/lib/controllers/DecodersController.js +0 -27
- package/lib/controllers/DeviceController.d.ts +0 -74
- package/lib/controllers/DeviceController.js +0 -329
- package/lib/controllers/MeasureDefinitionController.d.ts +0 -0
- package/lib/controllers/MeasureDefinitionController.js +0 -1
- package/lib/controllers/MetadataController.d.ts +0 -16
- package/lib/controllers/MetadataController.js +0 -70
- package/lib/controllers/RelationalController.d.ts +0 -155
- package/lib/controllers/RelationalController.js +0 -410
- package/lib/controllers/index.d.ts +0 -3
- package/lib/core-classes/AssetCategoryService.d.ts +0 -20
- package/lib/core-classes/AssetCategoryService.js +0 -178
- package/lib/core-classes/AssetService.d.ts +0 -40
- package/lib/core-classes/AssetService.js +0 -97
- package/lib/core-classes/DeviceManagerEngine.d.ts +0 -23
- package/lib/core-classes/DeviceManagerEngine.js +0 -62
- package/lib/core-classes/DeviceService.d.ts +0 -115
- package/lib/core-classes/DeviceService.js +0 -282
- package/lib/core-classes/MeasureService.d.ts +0 -77
- package/lib/core-classes/MeasureService.js +0 -302
- package/lib/core-classes/PayloadService.d.ts +0 -24
- package/lib/core-classes/PayloadService.js +0 -54
- package/lib/core-classes/index.d.ts +0 -9
- package/lib/core-classes/registers/AssetsRegister.d.ts +0 -30
- package/lib/core-classes/registers/AssetsRegister.js +0 -68
- package/lib/core-classes/registers/DevicesRegister.d.ts +0 -20
- package/lib/core-classes/registers/DevicesRegister.js +0 -37
- package/lib/core-classes/registers/MeasuresRegister.d.ts +0 -30
- package/lib/core-classes/registers/MeasuresRegister.js +0 -60
- package/lib/mappings/assetCategoryMappings.d.ts +0 -69
- package/lib/mappings/assetCategoryMappings.js +0 -23
- package/lib/mappings/assetsMappings.d.ts +0 -130
- package/lib/mappings/assetsMappings.js +0 -72
- package/lib/mappings/deviceMappings.js +0 -42
- package/lib/mappings/fieldpathMappings.d.ts +0 -17
- package/lib/mappings/fieldpathMappings.js +0 -21
- package/lib/mappings/genericEmbeddedMapping.d.ts +0 -1
- package/lib/mappings/genericEmbeddedMapping.js +0 -11
- package/lib/mappings/index.d.ts +0 -4
- package/lib/mappings/measuresMappings.d.ts +0 -82
- package/lib/mappings/measuresMappings.js +0 -72
- package/lib/mappings/metadataMappings.d.ts +0 -149
- package/lib/mappings/metadataMappings.js +0 -64
- package/lib/mappings/payloadsMappings.js +0 -20
- package/lib/measures/BatteryMeasure.d.ts +0 -7
- package/lib/measures/BatteryMeasure.js +0 -12
- package/lib/measures/HumidityMeasure.d.ts +0 -7
- package/lib/measures/HumidityMeasure.js +0 -12
- package/lib/measures/MovementMeasure.d.ts +0 -7
- package/lib/measures/MovementMeasure.js +0 -12
- package/lib/measures/PositionMeasure.d.ts +0 -12
- package/lib/measures/PositionMeasure.js +0 -16
- package/lib/measures/TemperatureMeasure.d.ts +0 -7
- package/lib/measures/TemperatureMeasure.js +0 -12
- package/lib/measures/index.d.ts +0 -5
- package/lib/models/BaseAsset.d.ts +0 -18
- package/lib/models/BaseAsset.js +0 -64
- package/lib/models/Config.d.ts +0 -21
- package/lib/models/Config.js +0 -26
- package/lib/models/Device.d.ts +0 -15
- package/lib/models/Device.js +0 -45
- package/lib/models/index.d.ts +0 -2
- package/lib/types/AssetCategoryContent.d.ts +0 -28
- package/lib/types/AssetCategoryContent.js +0 -3
- package/lib/types/BaseAssetContent.d.ts +0 -45
- package/lib/types/DecodedPayload.d.ts +0 -53
- package/lib/types/DecoderContent.d.ts +0 -5
- package/lib/types/DeviceContent.d.ts +0 -32
- package/lib/types/MetadataContent.d.ts +0 -29
- package/lib/types/MetadataContent.js +0 -15
- package/lib/types/Request.d.ts +0 -26
- package/lib/types/index.d.ts +0 -7
- package/lib/types/measures/MeasureContent.d.ts +0 -79
- package/lib/types/measures/MeasureContent.js +0 -12
- package/lib/types/measures/MeasureDefinition.d.ts +0 -40
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/writeMany.d.ts +0 -13
- package/lib/utils/writeMany.js +0 -39
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { JSONObject } from "kuzzle";
|
|
2
|
+
import { DigitalTwinContent, Metadata } from "../../shared";
|
|
3
|
+
/**
|
|
4
|
+
* Asset document content
|
|
5
|
+
*/
|
|
6
|
+
export interface AssetContent<TMeasures extends JSONObject = any, TMetadata extends Metadata = any> extends DigitalTwinContent<TMeasures, TMetadata> {
|
|
7
|
+
/**
|
|
8
|
+
* Link with attached device
|
|
9
|
+
*/
|
|
10
|
+
linkedDevices: Array<{
|
|
11
|
+
/**
|
|
12
|
+
* Device ID
|
|
13
|
+
*/
|
|
14
|
+
_id: string;
|
|
15
|
+
/**
|
|
16
|
+
* Names of the linked measures
|
|
17
|
+
*
|
|
18
|
+
* Array<{ asset: string, device: string }>
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
*
|
|
22
|
+
* [
|
|
23
|
+
* { asset: "externalTemperature", device: "temperature" }
|
|
24
|
+
* ]
|
|
25
|
+
*/
|
|
26
|
+
measureNames: Array<{
|
|
27
|
+
asset: string;
|
|
28
|
+
device: string;
|
|
29
|
+
}>;
|
|
30
|
+
}>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Asset description used to contextualize each measure data point
|
|
34
|
+
*/
|
|
35
|
+
export type AssetMeasureContext<TMetadata extends Metadata = Metadata> = {
|
|
36
|
+
/**
|
|
37
|
+
* ID of the asset
|
|
38
|
+
*/
|
|
39
|
+
_id: string;
|
|
40
|
+
/**
|
|
41
|
+
* Name of the measure for the Asset
|
|
42
|
+
*/
|
|
43
|
+
measureName: string;
|
|
44
|
+
} & Pick<AssetContent<JSONObject, TMetadata>, "model" | "reference" | "metadata">;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetContent.js","sourceRoot":"","sources":["../../../../../lib/modules/asset/types/AssetContent.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { KDocument } from "kuzzle";
|
|
2
|
+
import { Metadata } from "../../../modules/shared";
|
|
3
|
+
import { AssetContent } from "./AssetContent";
|
|
4
|
+
import { AssetHistoryEvent } from "./AssetHistoryContent";
|
|
5
|
+
export type EventAssetUpdateBefore = {
|
|
6
|
+
name: "device-manager:asset:update:before";
|
|
7
|
+
args: [{
|
|
8
|
+
asset: KDocument<AssetContent>;
|
|
9
|
+
metadata: Metadata;
|
|
10
|
+
}];
|
|
11
|
+
};
|
|
12
|
+
export type EventAssetUpdateAfter = {
|
|
13
|
+
name: "device-manager:asset:update:after";
|
|
14
|
+
args: [{
|
|
15
|
+
asset: KDocument<AssetContent>;
|
|
16
|
+
metadata: Metadata;
|
|
17
|
+
}];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export type AskAssetHistoryAdd<TAssetHistoryEvent extends AssetHistoryEvent> = {
|
|
23
|
+
name: "ask:device-manager:asset:history:add";
|
|
24
|
+
payload: {
|
|
25
|
+
engineId: string;
|
|
26
|
+
event: TAssetHistoryEvent;
|
|
27
|
+
asset: KDocument<AssetContent>;
|
|
28
|
+
};
|
|
29
|
+
result: void;
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetEvents.js","sourceRoot":"","sources":["../../../../../lib/modules/asset/types/AssetEvents.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { JSONObject, KDocumentContent } from "kuzzle";
|
|
2
|
+
import { Metadata } from "../../shared";
|
|
3
|
+
import { AssetContent } from "./AssetContent";
|
|
4
|
+
export type AssetHistoryEventMeasure = {
|
|
5
|
+
name: "measure";
|
|
6
|
+
measure: {
|
|
7
|
+
names: string[];
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export type AssetHistoryEventMetadata = {
|
|
11
|
+
name: "metadata";
|
|
12
|
+
metadata: {
|
|
13
|
+
names: string[];
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export type AssetHistoryEventLink = {
|
|
17
|
+
name: "link";
|
|
18
|
+
link: {
|
|
19
|
+
deviceId: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export type AssetHistoryEventUnlink = {
|
|
23
|
+
name: "unlink";
|
|
24
|
+
unlink: {
|
|
25
|
+
deviceId: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export type AssetHistoryEvent = AssetHistoryEventMeasure | AssetHistoryEventMetadata | AssetHistoryEventLink | AssetHistoryEventUnlink;
|
|
29
|
+
/**
|
|
30
|
+
* Asset History document content
|
|
31
|
+
*/
|
|
32
|
+
export interface AssetHistoryContent<TAssetHistoryEvent extends AssetHistoryEvent = any, TMeasures extends JSONObject = any, TMetadata extends Metadata = any> extends KDocumentContent {
|
|
33
|
+
/**
|
|
34
|
+
* Name of the event who caused the historization
|
|
35
|
+
*
|
|
36
|
+
* - `measure` a new measure has been received
|
|
37
|
+
* - `metadata` the asset metadata has been updated
|
|
38
|
+
* - `link` a device has been linked or unlinked to the asset
|
|
39
|
+
* - `unlink` a device has been unlinked from the asset
|
|
40
|
+
*/
|
|
41
|
+
event: TAssetHistoryEvent;
|
|
42
|
+
/**
|
|
43
|
+
* ID of the historized asset
|
|
44
|
+
*/
|
|
45
|
+
id: string;
|
|
46
|
+
/**
|
|
47
|
+
* Asset content after the event
|
|
48
|
+
*/
|
|
49
|
+
asset: AssetContent<TMeasures, TMetadata>;
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetHistoryContent.js","sourceRoot":"","sources":["../../../../../lib/modules/asset/types/AssetHistoryContent.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { JSONObject } from "kuzzle";
|
|
2
|
+
import { DecodedMeasurement } from "../measure";
|
|
3
|
+
import { Decoder } from "./Decoder";
|
|
4
|
+
/**
|
|
5
|
+
* Class containing the decoded measures.
|
|
6
|
+
*/
|
|
7
|
+
export declare class DecodedPayload<TDecoder extends Decoder = Decoder> {
|
|
8
|
+
decoder: TDecoder;
|
|
9
|
+
/**
|
|
10
|
+
* Measurements per device.
|
|
11
|
+
*
|
|
12
|
+
* Record<deviceReference, Measurement[]>
|
|
13
|
+
*/
|
|
14
|
+
private measurementsByDevice;
|
|
15
|
+
/**
|
|
16
|
+
* Metadata per device.
|
|
17
|
+
*/
|
|
18
|
+
private metadataByDevice;
|
|
19
|
+
constructor(decoder: TDecoder);
|
|
20
|
+
get references(): string[];
|
|
21
|
+
/**
|
|
22
|
+
* Add a new measure into the decoded payload
|
|
23
|
+
*
|
|
24
|
+
* @param deviceReference Device reference
|
|
25
|
+
* @param measureName Name of the decoded measure
|
|
26
|
+
* @param measurement Measurement object
|
|
27
|
+
*/
|
|
28
|
+
addMeasurement<TMeasureValues extends JSONObject = JSONObject>(deviceReference: string, measureName: TDecoder["measures"][number]["name"], measurement: Omit<DecodedMeasurement<TMeasureValues>, "measureName">): void;
|
|
29
|
+
/**
|
|
30
|
+
* Add metadata values for a Device.
|
|
31
|
+
*
|
|
32
|
+
* Metadata should have been declared on the plugin to be used.
|
|
33
|
+
*
|
|
34
|
+
* @param deviceReference Device reference
|
|
35
|
+
* @param metadata Object containing metadata values
|
|
36
|
+
*/
|
|
37
|
+
addMetadata(deviceReference: string, metadata: JSONObject): void;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the measurements decoded for a device
|
|
40
|
+
*/
|
|
41
|
+
getMeasurements(deviceReference: string): DecodedMeasurement[];
|
|
42
|
+
/**
|
|
43
|
+
* Get the metadata for a device
|
|
44
|
+
*/
|
|
45
|
+
getMetadata(deviceReference: string): JSONObject;
|
|
46
|
+
private validateMeasurement;
|
|
47
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DecodedPayload = void 0;
|
|
4
|
+
const kuzzle_1 = require("kuzzle");
|
|
5
|
+
/**
|
|
6
|
+
* Class containing the decoded measures.
|
|
7
|
+
*/
|
|
8
|
+
class DecodedPayload {
|
|
9
|
+
constructor(decoder) {
|
|
10
|
+
/**
|
|
11
|
+
* Measurements per device.
|
|
12
|
+
*
|
|
13
|
+
* Record<deviceReference, Measurement[]>
|
|
14
|
+
*/
|
|
15
|
+
this.measurementsByDevice = {};
|
|
16
|
+
/**
|
|
17
|
+
* Metadata per device.
|
|
18
|
+
*/
|
|
19
|
+
this.metadataByDevice = {};
|
|
20
|
+
this.decoder = decoder;
|
|
21
|
+
}
|
|
22
|
+
get references() {
|
|
23
|
+
return Object.keys(this.measurementsByDevice);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Add a new measure into the decoded payload
|
|
27
|
+
*
|
|
28
|
+
* @param deviceReference Device reference
|
|
29
|
+
* @param measureName Name of the decoded measure
|
|
30
|
+
* @param measurement Measurement object
|
|
31
|
+
*/
|
|
32
|
+
addMeasurement(deviceReference, measureName, measurement) {
|
|
33
|
+
if (!this.decoder.measureNames.includes(measureName)) {
|
|
34
|
+
throw new kuzzle_1.BadRequestError(`Decoder "${this.decoder.deviceModel}" has no measure named "${measureName}"`);
|
|
35
|
+
}
|
|
36
|
+
this.validateMeasurement(measurement);
|
|
37
|
+
if (!this.measurementsByDevice[deviceReference]) {
|
|
38
|
+
this.measurementsByDevice[deviceReference] = [];
|
|
39
|
+
}
|
|
40
|
+
const decodedMeasurement = {
|
|
41
|
+
measureName,
|
|
42
|
+
...measurement,
|
|
43
|
+
};
|
|
44
|
+
this.measurementsByDevice[deviceReference].push(decodedMeasurement);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Add metadata values for a Device.
|
|
48
|
+
*
|
|
49
|
+
* Metadata should have been declared on the plugin to be used.
|
|
50
|
+
*
|
|
51
|
+
* @param deviceReference Device reference
|
|
52
|
+
* @param metadata Object containing metadata values
|
|
53
|
+
*/
|
|
54
|
+
addMetadata(deviceReference, metadata) {
|
|
55
|
+
if (!this.metadataByDevice[deviceReference]) {
|
|
56
|
+
this.metadataByDevice[deviceReference] = {};
|
|
57
|
+
}
|
|
58
|
+
this.metadataByDevice[deviceReference] = {
|
|
59
|
+
...this.metadataByDevice[deviceReference],
|
|
60
|
+
...metadata,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Gets the measurements decoded for a device
|
|
65
|
+
*/
|
|
66
|
+
getMeasurements(deviceReference) {
|
|
67
|
+
return this.measurementsByDevice[deviceReference];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the metadata for a device
|
|
71
|
+
*/
|
|
72
|
+
getMetadata(deviceReference) {
|
|
73
|
+
return this.metadataByDevice[deviceReference];
|
|
74
|
+
}
|
|
75
|
+
validateMeasurement(measurement) {
|
|
76
|
+
if (measurement.measuredAt.toString().length !== 13) {
|
|
77
|
+
throw new kuzzle_1.BadRequestError(`Invalid payload: "measuredAt" should be a timestamp in milliseconds`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.DecodedPayload = DecodedPayload;
|
|
82
|
+
//# sourceMappingURL=DecodedPayload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecodedPayload.js","sourceRoot":"","sources":["../../../../lib/modules/decoder/DecodedPayload.ts"],"names":[],"mappings":";;;AAAA,mCAAqD;AAMrD;;GAEG;AACH,MAAa,cAAc;IAezB,YAAY,OAAiB;QAZ7B;;;;WAIG;QACK,yBAAoB,GAAyC,EAAE,CAAC;QAExE;;WAEG;QACK,qBAAgB,GAAe,EAAE,CAAC;QAGxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CACZ,eAAuB,EACvB,WAAiD,EACjD,WAAoE;QAEpE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACpD,MAAM,IAAI,wBAAe,CACvB,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,2BAA2B,WAAW,GAAG,CAC9E,CAAC;SACH;QAED,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE;YAC/C,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;SACjD;QAED,MAAM,kBAAkB,GAAuC;YAC7D,WAAW;YACX,GAAG,WAAW;SACf,CAAC;QAEF,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,eAAuB,EAAE,QAAoB;QACvD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE;YAC3C,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;SAC7C;QAED,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG;YACvC,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;YACzC,GAAG,QAAQ;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,eAAuB;QACrC,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,eAAuB;QACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAEO,mBAAmB,CACzB,WAAoE;QAEpE,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,EAAE,EAAE;YACnD,MAAM,IAAI,wBAAe,CACvB,qEAAqE,CACtE,CAAC;SACH;IACH,CAAC;CACF;AAjGD,wCAiGC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { HttpRoute, JSONObject, KuzzleRequest } from
|
|
2
|
-
import { DecodedPayload } from
|
|
3
|
-
import { DecoderContent } from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { HttpRoute, JSONObject, KuzzleRequest } from "kuzzle";
|
|
2
|
+
import { DecodedPayload } from "./DecodedPayload";
|
|
3
|
+
import { DecoderContent } from "./types/DecoderContent";
|
|
4
|
+
/**
|
|
5
|
+
* Array of measures declaration
|
|
6
|
+
*/
|
|
7
|
+
export type NamedMeasures = ReadonlyArray<{
|
|
8
|
+
name: string;
|
|
9
|
+
type: string;
|
|
10
|
+
}>;
|
|
7
11
|
/**
|
|
8
12
|
* Base class to implement a decoder for a device model.
|
|
9
13
|
* The device model must be passed to the parent constructor.
|
|
@@ -12,13 +16,24 @@ string>;
|
|
|
12
16
|
export declare abstract class Decoder {
|
|
13
17
|
private _http?;
|
|
14
18
|
/**
|
|
15
|
-
* Device model name
|
|
19
|
+
* Device model name.
|
|
20
|
+
*
|
|
21
|
+
* Will be infered from the class name if not defined:
|
|
22
|
+
* `AbeewayGPSDecoder` => `AbeewayGPS`
|
|
16
23
|
*/
|
|
17
24
|
deviceModel: string;
|
|
18
25
|
/**
|
|
19
|
-
*
|
|
26
|
+
* Declaration of the measures decoded by this decoder.
|
|
27
|
+
* The name correspond of the measure name for the device.
|
|
28
|
+
* Measures types should be registered on the plugin beforehand.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
*
|
|
32
|
+
* this.measures = [
|
|
33
|
+
* { type: 'temperature', name: 'temperatureExterior' },
|
|
34
|
+
* ];
|
|
20
35
|
*/
|
|
21
|
-
|
|
36
|
+
measures: NamedMeasures;
|
|
22
37
|
/**
|
|
23
38
|
* Custom name for the associated API action in the "payload" controller
|
|
24
39
|
*/
|
|
@@ -29,6 +44,7 @@ export declare abstract class Decoder {
|
|
|
29
44
|
* the device model unique identifier field.
|
|
30
45
|
*
|
|
31
46
|
* @example
|
|
47
|
+
*
|
|
32
48
|
* this.payloadsMappings = {
|
|
33
49
|
* device_properties: {
|
|
34
50
|
* properties: {
|
|
@@ -45,14 +61,8 @@ export declare abstract class Decoder {
|
|
|
45
61
|
*/
|
|
46
62
|
set http(http: HttpRoute[]);
|
|
47
63
|
get http(): HttpRoute[];
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
* @param decoderMeasures Measures created by this decoder
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* super('AbeewayGPS', ['position']);
|
|
54
|
-
*/
|
|
55
|
-
constructor(deviceModel: string, decoderMeasures: DecoderMeasures, measuresRegister: MeasuresRegister);
|
|
64
|
+
get measureNames(): string[];
|
|
65
|
+
get measureTypes(): string[];
|
|
56
66
|
/**
|
|
57
67
|
* Validate the payload format before processing.
|
|
58
68
|
*
|
|
@@ -72,12 +82,13 @@ export declare abstract class Decoder {
|
|
|
72
82
|
* - set "reference"
|
|
73
83
|
* - fetch measures
|
|
74
84
|
*
|
|
85
|
+
* @param decodedPayload Decoded payload to store decoded measures
|
|
75
86
|
* @param payload Raw payload received in the API action body
|
|
76
87
|
* @param request Original request
|
|
77
88
|
*
|
|
78
|
-
* @returns
|
|
89
|
+
* @returns DecodedPayload
|
|
79
90
|
*/
|
|
80
|
-
abstract decode(payload: JSONObject, request: KuzzleRequest): Promise<DecodedPayload
|
|
91
|
+
abstract decode(decodedPayload: DecodedPayload<any>, payload: JSONObject, request: KuzzleRequest): Promise<DecodedPayload<any>>;
|
|
81
92
|
/**
|
|
82
93
|
* Checks if the provided properties are present in the payload
|
|
83
94
|
*
|
|
@@ -12,20 +12,26 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
12
12
|
* The abstract "decode" method must be implemented.
|
|
13
13
|
*/
|
|
14
14
|
class Decoder {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
constructor() {
|
|
16
|
+
/**
|
|
17
|
+
* Declaration of the measures decoded by this decoder.
|
|
18
|
+
* The name correspond of the measure name for the device.
|
|
19
|
+
* Measures types should be registered on the plugin beforehand.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
*
|
|
23
|
+
* this.measures = [
|
|
24
|
+
* { type: 'temperature', name: 'temperatureExterior' },
|
|
25
|
+
* ];
|
|
26
|
+
*/
|
|
27
|
+
this.measures = [];
|
|
23
28
|
/**
|
|
24
29
|
* Custom mappings for the payload collection.
|
|
25
30
|
* It will be injected in the "payload" property and it should allows to index
|
|
26
31
|
* the device model unique identifier field.
|
|
27
32
|
*
|
|
28
33
|
* @example
|
|
34
|
+
*
|
|
29
35
|
* this.payloadsMappings = {
|
|
30
36
|
* device_properties: {
|
|
31
37
|
* properties: {
|
|
@@ -35,13 +41,6 @@ class Decoder {
|
|
|
35
41
|
* }
|
|
36
42
|
*/
|
|
37
43
|
this.payloadsMappings = {};
|
|
38
|
-
this.deviceModel = deviceModel;
|
|
39
|
-
for (const [measureName, measureType] of Object.entries(decoderMeasures)) {
|
|
40
|
-
if (!measuresRegister.has(measureType)) {
|
|
41
|
-
throw new kuzzle_1.PluginImplementationError(`Decoder "${this.constructor.name}" cannot register unknown measure type "${measureType}"`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
this.decoderMeasures = decoderMeasures;
|
|
45
44
|
}
|
|
46
45
|
/**
|
|
47
46
|
* Define custom HTTP routes
|
|
@@ -53,10 +52,34 @@ class Decoder {
|
|
|
53
52
|
}
|
|
54
53
|
get http() {
|
|
55
54
|
if (!this._http) {
|
|
56
|
-
this._http = [
|
|
55
|
+
this._http = [
|
|
56
|
+
{
|
|
57
|
+
openapi: {
|
|
58
|
+
description: `Receive a payload from a ${this.deviceModel} device`,
|
|
59
|
+
parameters: [
|
|
60
|
+
{
|
|
61
|
+
in: "body",
|
|
62
|
+
name: "payload",
|
|
63
|
+
required: true,
|
|
64
|
+
schema: {
|
|
65
|
+
type: "object",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
path: `device-manager/payload/${this.action}`,
|
|
71
|
+
verb: "post",
|
|
72
|
+
},
|
|
73
|
+
];
|
|
57
74
|
}
|
|
58
75
|
return this._http;
|
|
59
76
|
}
|
|
77
|
+
get measureNames() {
|
|
78
|
+
return this.measures.map(({ name }) => name);
|
|
79
|
+
}
|
|
80
|
+
get measureTypes() {
|
|
81
|
+
return this.measures.map(({ type }) => type);
|
|
82
|
+
}
|
|
60
83
|
/**
|
|
61
84
|
* Validate the payload format before processing.
|
|
62
85
|
*
|
|
@@ -91,8 +114,8 @@ class Decoder {
|
|
|
91
114
|
}
|
|
92
115
|
serialize() {
|
|
93
116
|
return {
|
|
94
|
-
decoderMeasures: this.decoderMeasures,
|
|
95
117
|
deviceModel: this.deviceModel,
|
|
118
|
+
measures: this.measures,
|
|
96
119
|
};
|
|
97
120
|
}
|
|
98
121
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Decoder.js","sourceRoot":"","sources":["../../../../lib/modules/decoder/Decoder.ts"],"names":[],"mappings":";;;;;;AAAA,mCAKgB;AAChB,oDAAuB;AAgBvB;;;;GAIG;AACH,MAAsB,OAAO;IAA7B;QAWE;;;;;;;;;;WAUG;QACI,aAAQ,GAAkB,EAAE,CAAC;QAOpC;;;;;;;;;;;;;;WAcG;QACI,qBAAgB,GAAgB,EAAE,CAAC;IA0G5C,CAAC;IAxGC;;;;OAIG;IACH,IAAI,IAAI,CAAC,IAAiB;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,KAAK,GAAG;gBACX;oBACE,OAAO,EAAE;wBACP,WAAW,EAAE,4BAA4B,IAAI,CAAC,WAAW,SAAS;wBAClE,UAAU,EAAE;4BACV;gCACE,EAAE,EAAE,MAAM;gCACV,IAAI,EAAE,SAAS;gCACf,QAAQ,EAAE,IAAI;gCACd,MAAM,EAAE;oCACN,IAAI,EAAE,QAAQ;iCACf;6BACF;yBACF;qBACF;oBACD,IAAI,EAAE,0BAA0B,IAAI,CAAC,MAAM,EAAE;oBAC7C,IAAI,EAAE,MAAM;iBACb;aACF,CAAC;SACH;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,0CAA0C;IAC1C,KAAK,CAAC,QAAQ,CACZ,OAAmB,EACnB,OAAsB;QAEtB,OAAO,IAAI,CAAC;IACd,CAAC;IAoBD;;;;;;;OAOG;IACH,gBAAgB,CAAC,OAAmB,EAAE,KAAe;QACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,gBAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACzB,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,IAAI,cAAc,CAAC,CAAC;aACtE;SACF;IACH,CAAC;IAED,SAAS;QACP,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF;AAtJD,0BAsJC;AAED,qDAAqD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DecoderModule = void 0;
|
|
4
|
+
const Module_1 = require("../shared/Module");
|
|
5
|
+
const DecodersController_1 = require("./DecodersController");
|
|
6
|
+
const PayloadsController_1 = require("./PayloadsController");
|
|
7
|
+
const PayloadService_1 = require("./PayloadService");
|
|
8
|
+
const RoleDecodersAdmin_1 = require("./roles/RoleDecodersAdmin");
|
|
9
|
+
const RolePayloadsAll_1 = require("./roles/RolePayloadsAll");
|
|
10
|
+
class DecoderModule extends Module_1.Module {
|
|
11
|
+
// @todo temporary until registers refactor
|
|
12
|
+
get decodersRegister() {
|
|
13
|
+
// eslint-disable-next-line dot-notation
|
|
14
|
+
return this.plugin["decodersRegister"];
|
|
15
|
+
}
|
|
16
|
+
async init() {
|
|
17
|
+
this.payloadService = new PayloadService_1.PayloadService(this.plugin);
|
|
18
|
+
this.decoderController = new DecodersController_1.DecodersController(this.payloadService, this.decodersRegister);
|
|
19
|
+
this.payloadsController = new PayloadsController_1.PayloadsController(this.payloadService, this.decodersRegister);
|
|
20
|
+
this.plugin.api["device-manager/decoders"] =
|
|
21
|
+
this.decoderController.definition;
|
|
22
|
+
this.plugin.api["device-manager/payloads"] =
|
|
23
|
+
this.payloadsController.definition;
|
|
24
|
+
this.plugin.roles.push(RoleDecodersAdmin_1.RoleDecodersAdmin);
|
|
25
|
+
this.plugin.roles.push(RolePayloadsAll_1.RolePayloadsAll);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.DecoderModule = DecoderModule;
|
|
29
|
+
//# sourceMappingURL=DecoderModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecoderModule.js","sourceRoot":"","sources":["../../../../lib/modules/decoder/DecoderModule.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C,6DAA0D;AAC1D,6DAA0D;AAC1D,qDAAkD;AAClD,iEAA8D;AAC9D,6DAA0D;AAE1D,MAAa,aAAc,SAAQ,eAAM;IAKvC,2CAA2C;IAC3C,IAAY,gBAAgB;QAC1B,wCAAwC;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,uCAAkB,CAC7C,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,IAAI,uCAAkB,CAC9C,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,gBAAgB,CACtB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAiB,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAe,CAAC,CAAC;IAC1C,CAAC;CACF;AA/BD,sCA+BC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ControllerDefinition, KuzzleRequest } from "kuzzle";
|
|
2
|
+
import { DecodersRegister } from "../../core/registers/DecodersRegister";
|
|
3
|
+
import { PayloadService } from "./PayloadService";
|
|
4
|
+
import { ApiDecoderListResult, ApiDecoderPrunePayloadsResult } from "./types/DecoderApi";
|
|
5
|
+
export declare class DecodersController {
|
|
6
|
+
private payloadService;
|
|
7
|
+
private decodersRegister;
|
|
8
|
+
definition: ControllerDefinition;
|
|
9
|
+
constructor(payloadService: PayloadService, decodersRegister: DecodersRegister);
|
|
10
|
+
/**
|
|
11
|
+
* List all available decoders
|
|
12
|
+
*/
|
|
13
|
+
list(): Promise<ApiDecoderListResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Clean payload collection for a time period
|
|
16
|
+
*/
|
|
17
|
+
prunePayloads(request: KuzzleRequest): Promise<ApiDecoderPrunePayloadsResult>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DecodersController = void 0;
|
|
4
|
+
class DecodersController {
|
|
5
|
+
constructor(payloadService, decodersRegister) {
|
|
6
|
+
this.payloadService = payloadService;
|
|
7
|
+
this.decodersRegister = decodersRegister;
|
|
8
|
+
this.definition = {
|
|
9
|
+
actions: {
|
|
10
|
+
list: {
|
|
11
|
+
handler: this.list.bind(this),
|
|
12
|
+
http: [{ path: "device-manager/decoders", verb: "get" }],
|
|
13
|
+
},
|
|
14
|
+
prunePayloads: {
|
|
15
|
+
handler: this.prunePayloads.bind(this),
|
|
16
|
+
http: [
|
|
17
|
+
{ path: "device-manager/decoders/_prunePayloads", verb: "delete" },
|
|
18
|
+
],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* List all available decoders
|
|
25
|
+
*/
|
|
26
|
+
async list() {
|
|
27
|
+
const decoders = this.decodersRegister.list();
|
|
28
|
+
return { decoders };
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Clean payload collection for a time period
|
|
32
|
+
*/
|
|
33
|
+
async prunePayloads(request) {
|
|
34
|
+
const days = request.getBodyNumber("days");
|
|
35
|
+
const deviceModel = request.input.body.deviceModel;
|
|
36
|
+
const onlyValid = request.input.body.onlyValid ?? true;
|
|
37
|
+
const deleted = await this.payloadService.prune(days, onlyValid, {
|
|
38
|
+
deviceModel,
|
|
39
|
+
});
|
|
40
|
+
return { deleted };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.DecodersController = DecodersController;
|
|
44
|
+
//# sourceMappingURL=DecodersController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecodersController.js","sourceRoot":"","sources":["../../../../lib/modules/decoder/DecodersController.ts"],"names":[],"mappings":";;;AAUA,MAAa,kBAAkB;IAM7B,YACE,cAA8B,EAC9B,gBAAkC;QAElC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAEzC,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC7B,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;iBACzD;gBACD,aAAa,EAAE;oBACb,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;oBACtC,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,wCAAwC,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACnE;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAE9C,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,OAAsB;QAEtB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QAEvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE;YAC/D,WAAW;SACZ,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;CACF;AAtDD,gDAsDC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { JSONObject, KuzzleRequest } from "kuzzle";
|
|
2
|
+
import { DeviceManagerPlugin } from "../../core";
|
|
3
|
+
import { Decoder } from "./Decoder";
|
|
4
|
+
export declare class PayloadService {
|
|
5
|
+
private config;
|
|
6
|
+
private context;
|
|
7
|
+
private get sdk();
|
|
8
|
+
private get app();
|
|
9
|
+
constructor(plugin: DeviceManagerPlugin);
|
|
10
|
+
/**
|
|
11
|
+
* Process a payload by validating and decode it with the `decoder` associated
|
|
12
|
+
* with the device model. It :
|
|
13
|
+
* - register the brut `Payload`
|
|
14
|
+
* - redirect measurements to MeasureService
|
|
15
|
+
*/
|
|
16
|
+
receive(request: KuzzleRequest, decoder: Decoder, { refresh }?: any): Promise<{
|
|
17
|
+
valid: boolean;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Method used to save the payload and catch + log the error if any.
|
|
21
|
+
*
|
|
22
|
+
* This method never returns a rejected promise.
|
|
23
|
+
*/
|
|
24
|
+
private savePayload;
|
|
25
|
+
/**
|
|
26
|
+
* Get devices or create missing ones (when auto-provisionning is enabled)
|
|
27
|
+
*/
|
|
28
|
+
private retrieveDevices;
|
|
29
|
+
private provisionDevices;
|
|
30
|
+
prune(days: number, onlyValid: boolean, { deviceModel }?: {
|
|
31
|
+
deviceModel?: string;
|
|
32
|
+
}): Promise<number>;
|
|
33
|
+
receiveUnknown(deviceModel: string, payload: JSONObject): Promise<void>;
|
|
34
|
+
}
|