kuzzle-device-manager 2.0.0-rc27 → 2.0.0-rc29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/index.d.ts +4 -4
  2. package/index.js +4 -4
  3. package/lib/{modules/engine/types → core}/DeviceManagerConfiguration.d.ts +15 -6
  4. package/lib/{modules/engine/types → core}/DeviceManagerConfiguration.js +0 -0
  5. package/lib/core/DeviceManagerEngine.d.ts +31 -0
  6. package/lib/core/DeviceManagerEngine.js +145 -0
  7. package/lib/core/DeviceManagerPlugin.d.ts +114 -0
  8. package/lib/core/DeviceManagerPlugin.js +344 -0
  9. package/lib/{InternalCollection.d.ts → core/InternalCollection.d.ts} +3 -1
  10. package/lib/{InternalCollection.js → core/InternalCollection.js} +2 -0
  11. package/lib/core/index.d.ts +4 -0
  12. package/lib/{modules/engine → core}/index.js +3 -1
  13. package/lib/{modules/measure → core/registers}/DecodersRegister.d.ts +4 -8
  14. package/lib/{modules/measure → core/registers}/DecodersRegister.js +8 -34
  15. package/lib/core/registers/ModelsRegister.d.ts +17 -0
  16. package/lib/core/registers/ModelsRegister.js +59 -0
  17. package/lib/modules/asset/AssetModule.d.ts +6 -0
  18. package/lib/modules/asset/AssetModule.js +19 -0
  19. package/lib/modules/asset/AssetService.d.ts +26 -22
  20. package/lib/modules/asset/AssetService.js +71 -48
  21. package/lib/modules/asset/AssetsController.d.ts +14 -0
  22. package/lib/modules/asset/AssetsController.js +119 -0
  23. package/lib/modules/asset/collections/assetsMappings.d.ts +14 -106
  24. package/lib/modules/asset/collections/assetsMappings.js +17 -52
  25. package/lib/modules/asset/index.d.ts +5 -6
  26. package/lib/modules/asset/index.js +5 -6
  27. package/lib/modules/asset/model/AssetSerializer.d.ts +10 -0
  28. package/lib/modules/asset/model/AssetSerializer.js +34 -0
  29. package/lib/modules/asset/roles/assetsAdmin.d.ts +16 -0
  30. package/lib/modules/asset/roles/assetsAdmin.js +20 -0
  31. package/lib/modules/asset/roles/assetsReader.d.ts +16 -0
  32. package/lib/modules/asset/roles/assetsReader.js +20 -0
  33. package/lib/modules/asset/types/AssetApi.d.ts +58 -0
  34. package/lib/modules/asset/types/{LinkRequest.js → AssetApi.js} +1 -1
  35. package/lib/modules/asset/types/AssetContent.d.ts +41 -0
  36. package/lib/modules/asset/types/{BaseAssetContent.js → AssetContent.js} +1 -1
  37. package/lib/modules/asset/types/AssetEvents.d.ts +17 -0
  38. package/lib/modules/{asset-category/types/AssetCategoryContent.js → asset/types/AssetEvents.js} +1 -1
  39. package/lib/modules/{measure → decoder}/DecodedPayload.d.ts +3 -3
  40. package/lib/modules/{measure → decoder}/DecodedPayload.js +6 -3
  41. package/lib/modules/{measure → decoder}/Decoder.d.ts +4 -4
  42. package/lib/modules/{measure → decoder}/Decoder.js +0 -0
  43. package/lib/modules/decoder/DecoderModule.d.ts +9 -0
  44. package/lib/modules/decoder/DecoderModule.js +38 -0
  45. package/lib/modules/decoder/DecodersController.d.ts +18 -0
  46. package/lib/modules/decoder/DecodersController.js +44 -0
  47. package/lib/modules/{measure → decoder}/PayloadService.d.ts +12 -9
  48. package/lib/modules/decoder/PayloadService.js +131 -0
  49. package/lib/modules/{measure → decoder}/collections/payloadsMappings.d.ts +0 -0
  50. package/lib/modules/{measure → decoder}/collections/payloadsMappings.js +0 -0
  51. package/lib/modules/decoder/index.d.ts +6 -0
  52. package/lib/modules/{metadata → decoder}/index.js +6 -5
  53. package/lib/modules/decoder/roles/decodersAdmin.d.ts +9 -0
  54. package/lib/modules/decoder/roles/decodersAdmin.js +13 -0
  55. package/lib/modules/decoder/types/DecoderApi.d.ts +19 -0
  56. package/lib/modules/decoder/types/DecoderApi.js +3 -0
  57. package/lib/modules/decoder/types/DecoderContent.d.ts +5 -0
  58. package/lib/modules/{measure → decoder}/types/DecoderContent.js +0 -0
  59. package/lib/modules/device/DeviceModule.d.ts +6 -0
  60. package/lib/modules/device/DeviceModule.js +20 -0
  61. package/lib/modules/device/DeviceService.d.ts +37 -73
  62. package/lib/modules/device/DeviceService.js +187 -228
  63. package/lib/modules/device/DevicesController.d.ts +32 -0
  64. package/lib/modules/device/DevicesController.js +179 -0
  65. package/lib/modules/device/collections/deviceMappings.d.ts +13 -60
  66. package/lib/modules/device/collections/deviceMappings.js +16 -20
  67. package/lib/modules/device/index.d.ts +4 -4
  68. package/lib/modules/device/index.js +4 -4
  69. package/lib/modules/device/model/DeviceSerializer.d.ts +6 -0
  70. package/lib/modules/device/model/DeviceSerializer.js +16 -0
  71. package/lib/modules/device/roles/devicesAdmin.d.ts +22 -0
  72. package/lib/modules/device/roles/devicesAdmin.js +26 -0
  73. package/lib/modules/device/roles/devicesReader.d.ts +15 -0
  74. package/lib/modules/device/roles/devicesReader.js +19 -0
  75. package/lib/modules/device/types/DeviceApi.d.ts +94 -0
  76. package/lib/modules/device/types/DeviceApi.js +3 -0
  77. package/lib/modules/device/types/DeviceContent.d.ts +3 -30
  78. package/lib/modules/device/types/DeviceEvents.d.ts +17 -0
  79. package/lib/modules/device/types/DeviceEvents.js +3 -0
  80. package/lib/modules/measure/MeasureModule.d.ts +6 -0
  81. package/lib/modules/measure/MeasureModule.js +20 -0
  82. package/lib/modules/measure/MeasureService.d.ts +28 -59
  83. package/lib/modules/measure/MeasureService.js +148 -183
  84. package/lib/modules/measure/MeasuresController.d.ts +9 -0
  85. package/lib/modules/measure/MeasuresController.js +27 -0
  86. package/lib/modules/measure/collections/measuresMappings.d.ts +18 -85
  87. package/lib/modules/measure/collections/measuresMappings.js +8 -23
  88. package/lib/modules/measure/index.d.ts +4 -10
  89. package/lib/modules/measure/index.js +4 -10
  90. package/lib/modules/measure/measures/BatteryMeasure.d.ts +2 -3
  91. package/lib/modules/measure/measures/BatteryMeasure.js +0 -5
  92. package/lib/modules/measure/measures/HumidityMeasure.d.ts +2 -3
  93. package/lib/modules/measure/measures/HumidityMeasure.js +0 -5
  94. package/lib/modules/measure/measures/MovementMeasure.d.ts +2 -3
  95. package/lib/modules/measure/measures/MovementMeasure.js +0 -5
  96. package/lib/modules/measure/measures/PositionMeasure.d.ts +2 -3
  97. package/lib/modules/measure/measures/PositionMeasure.js +0 -5
  98. package/lib/modules/measure/measures/TemperatureMeasure.d.ts +2 -3
  99. package/lib/modules/measure/measures/TemperatureMeasure.js +0 -5
  100. package/lib/modules/measure/roles/measuresAdmin.d.ts +16 -0
  101. package/lib/modules/measure/roles/measuresAdmin.js +20 -0
  102. package/lib/modules/measure/roles/measuresReader.d.ts +9 -0
  103. package/lib/modules/measure/roles/measuresReader.js +13 -0
  104. package/lib/modules/measure/types/MeasureApi.d.ts +23 -0
  105. package/lib/modules/measure/types/MeasureApi.js +3 -0
  106. package/lib/modules/measure/types/MeasureContent.d.ts +40 -61
  107. package/lib/modules/measure/types/MeasureDefinition.d.ts +0 -25
  108. package/lib/modules/measure/types/MeasureEvents.d.ts +59 -0
  109. package/lib/modules/measure/types/MeasureEvents.js +3 -0
  110. package/lib/modules/model/ModelModule.d.ts +6 -0
  111. package/lib/modules/model/ModelModule.js +15 -0
  112. package/lib/modules/model/ModelSerializer.d.ts +5 -0
  113. package/lib/modules/model/ModelSerializer.js +32 -0
  114. package/lib/modules/model/ModelService.d.ts +24 -0
  115. package/lib/modules/model/ModelService.js +147 -0
  116. package/lib/modules/model/ModelsController.d.ts +17 -0
  117. package/lib/modules/model/ModelsController.js +109 -0
  118. package/lib/modules/model/collections/modelsMappings.d.ts +2 -0
  119. package/lib/modules/model/collections/modelsMappings.js +55 -0
  120. package/lib/modules/model/index.d.ts +6 -0
  121. package/lib/{utils → modules/model}/index.js +6 -1
  122. package/lib/modules/model/types/ModelApi.d.ts +75 -0
  123. package/lib/modules/model/types/ModelApi.js +3 -0
  124. package/lib/modules/model/types/ModelContent.d.ts +96 -0
  125. package/lib/modules/model/types/ModelContent.js +3 -0
  126. package/lib/modules/model/types/ModelDefinition.d.ts +12 -0
  127. package/lib/modules/model/types/ModelDefinition.js +3 -0
  128. package/lib/modules/model/types/ModelEvents.d.ts +16 -0
  129. package/lib/modules/model/types/ModelEvents.js +3 -0
  130. package/lib/modules/shared/Module.d.ts +7 -0
  131. package/lib/modules/shared/Module.js +13 -0
  132. package/lib/modules/shared/index.d.ts +6 -0
  133. package/lib/modules/{asset-category → shared}/index.js +6 -4
  134. package/lib/modules/shared/types/DigitalTwinContent.d.ts +11 -0
  135. package/lib/modules/shared/types/DigitalTwinContent.js +3 -0
  136. package/lib/modules/shared/types/EmbeddedMeasure.d.ts +24 -0
  137. package/lib/modules/shared/types/EmbeddedMeasure.js +3 -0
  138. package/lib/modules/shared/types/Metadata.d.ts +5 -0
  139. package/lib/modules/shared/types/Metadata.js +3 -0
  140. package/lib/modules/shared/utils/ask.d.ts +8 -0
  141. package/lib/modules/shared/utils/ask.js +12 -0
  142. package/lib/modules/shared/utils/flattenObject.d.ts +24 -0
  143. package/lib/modules/shared/utils/flattenObject.js +46 -0
  144. package/lib/modules/shared/utils/lock.d.ts +1 -0
  145. package/lib/modules/shared/utils/lock.js +16 -0
  146. package/package.json +8 -13
  147. package/lib/DeviceManagerPlugin.d.ts +0 -77
  148. package/lib/DeviceManagerPlugin.js +0 -303
  149. package/lib/modules/asset/AssetController.d.ts +0 -58
  150. package/lib/modules/asset/AssetController.js +0 -311
  151. package/lib/modules/asset/AssetsRegister.d.ts +0 -30
  152. package/lib/modules/asset/AssetsRegister.js +0 -68
  153. package/lib/modules/asset/BaseAsset.d.ts +0 -24
  154. package/lib/modules/asset/BaseAsset.js +0 -71
  155. package/lib/modules/asset/types/BaseAssetContent.d.ts +0 -45
  156. package/lib/modules/asset/types/LinkRequest.d.ts +0 -26
  157. package/lib/modules/asset-category/AssetCategoryController.d.ts +0 -28
  158. package/lib/modules/asset-category/AssetCategoryController.js +0 -229
  159. package/lib/modules/asset-category/AssetCategoryService.d.ts +0 -27
  160. package/lib/modules/asset-category/AssetCategoryService.js +0 -199
  161. package/lib/modules/asset-category/collections/assetCategoryMappings.d.ts +0 -69
  162. package/lib/modules/asset-category/collections/assetCategoryMappings.js +0 -23
  163. package/lib/modules/asset-category/index.d.ts +0 -4
  164. package/lib/modules/asset-category/types/AssetCategoryContent.d.ts +0 -28
  165. package/lib/modules/device/Device.d.ts +0 -23
  166. package/lib/modules/device/Device.js +0 -55
  167. package/lib/modules/device/DeviceController.d.ts +0 -81
  168. package/lib/modules/device/DeviceController.js +0 -404
  169. package/lib/modules/device/DevicesRegister.d.ts +0 -20
  170. package/lib/modules/device/DevicesRegister.js +0 -37
  171. package/lib/modules/engine/DeviceManagerEngine.d.ts +0 -23
  172. package/lib/modules/engine/DeviceManagerEngine.js +0 -69
  173. package/lib/modules/engine/index.d.ts +0 -2
  174. package/lib/modules/measure/DecoderController.d.ts +0 -16
  175. package/lib/modules/measure/DecoderController.js +0 -27
  176. package/lib/modules/measure/MeasuresRegister.d.ts +0 -30
  177. package/lib/modules/measure/MeasuresRegister.js +0 -61
  178. package/lib/modules/measure/PayloadService.js +0 -59
  179. package/lib/modules/measure/types/DecoderContent.d.ts +0 -5
  180. package/lib/modules/metadata/MetadataController.d.ts +0 -16
  181. package/lib/modules/metadata/MetadataController.js +0 -76
  182. package/lib/modules/metadata/RelationalController.d.ts +0 -162
  183. package/lib/modules/metadata/RelationalController.js +0 -431
  184. package/lib/modules/metadata/collections/fieldpathMappings.d.ts +0 -17
  185. package/lib/modules/metadata/collections/fieldpathMappings.js +0 -21
  186. package/lib/modules/metadata/collections/genericEmbeddedMapping.d.ts +0 -1
  187. package/lib/modules/metadata/collections/genericEmbeddedMapping.js +0 -11
  188. package/lib/modules/metadata/collections/metadataMappings.d.ts +0 -149
  189. package/lib/modules/metadata/collections/metadataMappings.js +0 -64
  190. package/lib/modules/metadata/index.d.ts +0 -5
  191. package/lib/modules/metadata/types/MetadataContent.d.ts +0 -29
  192. package/lib/modules/metadata/types/MetadataContent.js +0 -15
  193. package/lib/utils/index.d.ts +0 -1
  194. package/lib/utils/writeMany.d.ts +0 -13
  195. package/lib/utils/writeMany.js +0 -39
package/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export * from './lib/DeviceManagerPlugin';
1
+ export * from './lib/core/DeviceManagerPlugin';
2
+ export * from './lib/core/DeviceManagerConfiguration';
2
3
  export * from './lib/modules/asset';
3
- export * from './lib/modules/asset-category';
4
4
  export * from './lib/modules/device';
5
- export * from './lib/modules/engine';
6
5
  export * from './lib/modules/measure';
7
- export * from './lib/modules/metadata';
6
+ export * from './lib/modules/decoder';
7
+ export * from './lib/modules/shared';
package/index.js CHANGED
@@ -14,11 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./lib/DeviceManagerPlugin"), exports);
17
+ __exportStar(require("./lib/core/DeviceManagerPlugin"), exports);
18
+ __exportStar(require("./lib/core/DeviceManagerConfiguration"), exports);
18
19
  __exportStar(require("./lib/modules/asset"), exports);
19
- __exportStar(require("./lib/modules/asset-category"), exports);
20
20
  __exportStar(require("./lib/modules/device"), exports);
21
- __exportStar(require("./lib/modules/engine"), exports);
22
21
  __exportStar(require("./lib/modules/measure"), exports);
23
- __exportStar(require("./lib/modules/metadata"), exports);
22
+ __exportStar(require("./lib/modules/decoder"), exports);
23
+ __exportStar(require("./lib/modules/shared"), exports);
24
24
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,20 @@
1
1
  import { JSONObject } from "kuzzle";
2
2
  export declare type DeviceManagerConfiguration = {
3
+ /**
4
+ * Ignore errors at startup such as wrong mappings update.
5
+ *
6
+ * Useful to start the plugin even if the mappings are not up to date.
7
+ */
8
+ ignoreStartupErrors: boolean;
9
+ engine: {
10
+ /**
11
+ * Auto update collection mappings with models
12
+ *
13
+ * This can lead to huge pressure on the database at start if a lot
14
+ * of engine are present.
15
+ */
16
+ autoUpdate: true;
17
+ };
3
18
  /**
4
19
  * Administration index name
5
20
  */
@@ -31,10 +46,4 @@ export declare type DeviceManagerConfiguration = {
31
46
  settings: JSONObject;
32
47
  };
33
48
  };
34
- /**
35
- * Interval to write documents from the buffer
36
- *
37
- * @see https://docs.kuzzle.io/sdk/js/7/essentials/batch-processing/
38
- */
39
- batchInterval: number;
40
49
  };
@@ -0,0 +1,31 @@
1
+ import { Backend, Plugin } from "kuzzle";
2
+ import { AbstractEngine, ConfigManager } from "kuzzle-plugin-commons";
3
+ import { DeviceManagerConfiguration } from "./DeviceManagerConfiguration";
4
+ import { DeviceManagerPlugin } from "./DeviceManagerPlugin";
5
+ import { InternalCollection } from "./InternalCollection";
6
+ export declare type AskEngineUpdateAll = {
7
+ name: "ask:device-manager:engine:updateAll";
8
+ payload: void;
9
+ result: void;
10
+ };
11
+ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlugin> {
12
+ config: DeviceManagerConfiguration;
13
+ get app(): Backend;
14
+ constructor(plugin: Plugin, adminConfigManager: ConfigManager, engineConfigManager: ConfigManager);
15
+ updateEngines(): Promise<void>;
16
+ onCreate(index: string, group?: string): Promise<{
17
+ collections: string[];
18
+ }>;
19
+ onUpdate(index: string, group?: string): Promise<{
20
+ collections: any[];
21
+ }>;
22
+ onDelete(index: string): Promise<{
23
+ collections: string[];
24
+ }>;
25
+ createAssetsCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
26
+ private getDigitalTwinMappings;
27
+ createDevicesCollection(engineId: string): Promise<InternalCollection>;
28
+ createMeasuresCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
29
+ private getMeasuresMappings;
30
+ private getModels;
31
+ }
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DeviceManagerEngine = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const kuzzle_1 = require("kuzzle");
9
+ const kuzzle_plugin_commons_1 = require("kuzzle-plugin-commons");
10
+ const asset_1 = require("../modules/asset");
11
+ const measure_1 = require("../modules/measure");
12
+ const device_1 = require("../modules/device");
13
+ const ask_1 = require("../modules/shared/utils/ask");
14
+ const InternalCollection_1 = require("./InternalCollection");
15
+ const digitalTwinMappings = {
16
+ asset: asset_1.assetsMappings,
17
+ device: device_1.devicesMappings,
18
+ };
19
+ class DeviceManagerEngine extends kuzzle_plugin_commons_1.AbstractEngine {
20
+ constructor(plugin, adminConfigManager, engineConfigManager) {
21
+ super("device-manager", plugin, plugin.config.adminIndex, adminConfigManager, engineConfigManager);
22
+ this.context = plugin.context;
23
+ (0, ask_1.onAsk)("ask:device-manager:engine:updateAll", async () => {
24
+ await this.updateEngines();
25
+ await this.createDevicesCollection(this.config.adminIndex);
26
+ });
27
+ }
28
+ get app() {
29
+ return global.app;
30
+ }
31
+ async updateEngines() {
32
+ const result = await this.sdk.document.search(this.config.adminIndex, InternalCollection_1.InternalCollection.CONFIG, {
33
+ query: {
34
+ equals: { type: "engine-device-manager" },
35
+ },
36
+ }, { lang: "koncorde", size: 1000 });
37
+ this.context.log.info(`Update ${result.fetched} existing engines`);
38
+ for (const engine of result.hits) {
39
+ await this.onUpdate(engine._source.engine.index, engine._source.engine.group);
40
+ }
41
+ }
42
+ async onCreate(index, group = "commons") {
43
+ const promises = [];
44
+ promises.push(this.createAssetsCollection(index, group));
45
+ promises.push(this.createDevicesCollection(index));
46
+ promises.push(this.createMeasuresCollection(index, group));
47
+ promises.push(this.engineConfigManager.createCollection(index));
48
+ await Promise.all(promises);
49
+ return {
50
+ collections: [
51
+ "assets",
52
+ this.engineConfigManager.collection,
53
+ "devices",
54
+ "measures",
55
+ ],
56
+ };
57
+ }
58
+ async onUpdate(index, group = "commons") {
59
+ const promises = [];
60
+ promises.push(this.createAssetsCollection(index, group));
61
+ promises.push(this.createDevicesCollection(index));
62
+ promises.push(this.createMeasuresCollection(index, group));
63
+ const collections = await Promise.all(promises);
64
+ return { collections };
65
+ }
66
+ async onDelete(index) {
67
+ const promises = [];
68
+ promises.push(this.sdk.collection.delete(index, "assets"));
69
+ promises.push(this.sdk.collection.delete(index, "devices"));
70
+ promises.push(this.sdk.collection.delete(index, "measures"));
71
+ await Promise.all(promises);
72
+ return { collections: ["assets", "devices", "measures"] };
73
+ }
74
+ async createAssetsCollection(engineId, engineGroup) {
75
+ const mappings = await this.getDigitalTwinMappings("asset", engineGroup);
76
+ await this.sdk.collection.create(engineId, InternalCollection_1.InternalCollection.ASSETS, mappings);
77
+ return InternalCollection_1.InternalCollection.ASSETS;
78
+ }
79
+ async getDigitalTwinMappings(digitalTwinType, engineGroup) {
80
+ const models = await this.getModels(this.config.adminIndex, digitalTwinType, engineGroup);
81
+ const measureModels = await this.getModels(this.config.adminIndex, "measure");
82
+ const mappings = JSON.parse(JSON.stringify(digitalTwinMappings[digitalTwinType]));
83
+ for (const model of models) {
84
+ lodash_1.default.merge(mappings.properties.metadata.properties, model._source[digitalTwinType].metadataMappings);
85
+ for (const [measureName, measureType] of Object.entries(model._source[digitalTwinType].measures)) {
86
+ const measureModel = measureModels.find((m) => m._source.measure.type === measureType);
87
+ if (!measureModel) {
88
+ throw new kuzzle_1.InternalError(`Cannot find measure "${measureType}" declared in ${[
89
+ digitalTwinType,
90
+ ]} "${model._source[digitalTwinType].model}"`);
91
+ }
92
+ mappings.properties.measures.properties[measureName] = {
93
+ properties: {
94
+ measuredAt: { type: "date" },
95
+ name: { type: "keyword" },
96
+ payloadUuids: { type: "keyword" },
97
+ type: { type: "keyword" },
98
+ values: {
99
+ properties: measureModel._source.measure.valuesMappings,
100
+ },
101
+ },
102
+ };
103
+ }
104
+ }
105
+ return mappings;
106
+ }
107
+ async createDevicesCollection(engineId) {
108
+ const mappings = await this.getDigitalTwinMappings("device");
109
+ await this.sdk.collection.create(engineId, InternalCollection_1.InternalCollection.DEVICES, mappings);
110
+ return InternalCollection_1.InternalCollection.DEVICES;
111
+ }
112
+ async createMeasuresCollection(engineId, engineGroup) {
113
+ const mappings = await this.getMeasuresMappings(engineGroup);
114
+ await this.sdk.collection.create(engineId, InternalCollection_1.InternalCollection.MEASURES, mappings);
115
+ return InternalCollection_1.InternalCollection.MEASURES;
116
+ }
117
+ async getMeasuresMappings(engineGroup) {
118
+ const models = await this.getModels(this.config.adminIndex, "measure");
119
+ const mappings = JSON.parse(JSON.stringify(measure_1.measuresMappings));
120
+ for (const model of models) {
121
+ lodash_1.default.merge(mappings.properties.values.properties, model._source.measure.valuesMappings);
122
+ }
123
+ const _assetsMappings = await this.getDigitalTwinMappings("asset", engineGroup);
124
+ mappings.properties.asset.properties.metadata.properties =
125
+ _assetsMappings.properties.metadata.properties;
126
+ return mappings;
127
+ }
128
+ async getModels(engineId, type, engineGroup) {
129
+ const query = {
130
+ and: [{ equals: { type } }],
131
+ };
132
+ if (engineGroup) {
133
+ query.and.push({
134
+ or: [
135
+ { equals: { engineGroup } },
136
+ { equals: { engineGroup: "commons" } },
137
+ ],
138
+ });
139
+ }
140
+ const result = await this.sdk.document.search(engineId, InternalCollection_1.InternalCollection.MODELS, { query }, { lang: "koncorde", size: 100 });
141
+ return result.hits;
142
+ }
143
+ }
144
+ exports.DeviceManagerEngine = DeviceManagerEngine;
145
+ //# sourceMappingURL=DeviceManagerEngine.js.map
@@ -0,0 +1,114 @@
1
+ import { Plugin, PluginContext, JSONObject } from "kuzzle";
2
+ import { MeasureDefinition } from "../modules/measure";
3
+ import { AssetModelDefinition, DeviceModelDefinition } from "../modules/model";
4
+ import { DeviceManagerConfiguration } from "./DeviceManagerConfiguration";
5
+ export declare class DeviceManagerPlugin extends Plugin {
6
+ config: DeviceManagerConfiguration;
7
+ roles: {};
8
+ private deviceManagerEngine;
9
+ private adminConfigManager;
10
+ private engineConfigManager;
11
+ private engineController;
12
+ private assetModule;
13
+ private deviceModule;
14
+ private decoderModule;
15
+ private measureModule;
16
+ private modelModule;
17
+ private modelsRegister;
18
+ private decodersRegister;
19
+ private get sdk();
20
+ get models(): {
21
+ /**
22
+ * Register an asset model
23
+ *
24
+ * @param engineGroup Engine group name
25
+ * @param model Name of the asset model
26
+ * @param definition.measuresNames Array describing measures names and types
27
+ * @param definition.metadataMappings Metadata mappings definition
28
+ * @param definition.defaultMetadata Default metadata values
29
+ *
30
+ * @example
31
+ * ```
32
+ * deviceManager.models.registerAsset(
33
+ * "logistic",
34
+ * "container",
35
+ * {
36
+ * measuresNames: [
37
+ * { name: "temperatureExt", type: "temperature" },
38
+ * { name: "temperatureInt", type: "temperature" },
39
+ * { name: "position", type: "position" },
40
+ * ],
41
+ * metadataMappings: {
42
+ * weight: { type: "integer" },
43
+ * height: { type: "integer" },
44
+ * },
45
+ * defaultMetadata: {
46
+ * height: 20
47
+ * }
48
+ * }
49
+ * );
50
+ * ```
51
+ */
52
+ registerAsset: (engineGroup: string, model: string, definition: AssetModelDefinition) => void;
53
+ /**
54
+ * Register a device model
55
+ *
56
+ * @param model Name of the device model
57
+ * @param definition.decoded Decoder used to decode payloads
58
+ * @param definition.metadataMappings Metadata mappings definition
59
+ * @param definition.defaultMetadata Default metadata values
60
+ *
61
+ * @example
62
+ * ```
63
+ * deviceManager.models.registerDevice(
64
+ * "Abeeway",
65
+ * {
66
+ * decoder: new DummyTempPositionDecoder(),
67
+ * metadataMappings: {
68
+ * serial: { type: "keyword" },
69
+ * }
70
+ * }
71
+ * );
72
+ * ```
73
+ */
74
+ registerDevice: (model: string, definition: DeviceModelDefinition) => void;
75
+ /**
76
+ * Register a new measure
77
+ *
78
+ * @param name Name of the measure
79
+ * @param valuesMappings Mappings for the measure values
80
+ *
81
+ * @example
82
+ * ```
83
+ * deviceManager.models.registerMeasure("acceleration", {
84
+ * x: { type: "float" },
85
+ * y: { type: "float" },
86
+ * z: { type: "float" },
87
+ * });
88
+ * ```
89
+ */
90
+ registerMeasure: (name: string, measureDefinition: MeasureDefinition) => void;
91
+ };
92
+ constructor();
93
+ /**
94
+ * Init the plugin
95
+ */
96
+ init(config: JSONObject, context: PluginContext): Promise<void>;
97
+ private createDefaultRoles;
98
+ /**
99
+ * Initialize the administration index of the plugin
100
+ */
101
+ private initDatabase;
102
+ /**
103
+ * Merge custom mappings defined in the Decoder into the "payloads" collection
104
+ * mappings.
105
+ *
106
+ * Those custom mappings allow to search raw payloads more efficiently.
107
+ */
108
+ private getPayloadsMappings;
109
+ /**
110
+ * Initialize the config document if it does not exists
111
+ */
112
+ private initializeConfig;
113
+ private pipeCheckEngine;
114
+ }