kuzzle-device-manager 2.4.0-beta.2 → 2.4.0-beta.20

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 (128) hide show
  1. package/dist/lib/modules/asset/AssetHistoryService.d.ts +2 -4
  2. package/dist/lib/modules/asset/AssetHistoryService.js +4 -7
  3. package/dist/lib/modules/asset/AssetHistoryService.js.map +1 -1
  4. package/dist/lib/modules/asset/AssetService.d.ts +25 -26
  5. package/dist/lib/modules/asset/AssetService.js +235 -42
  6. package/dist/lib/modules/asset/AssetService.js.map +1 -1
  7. package/dist/lib/modules/asset/AssetsController.d.ts +4 -1
  8. package/dist/lib/modules/asset/AssetsController.js +51 -25
  9. package/dist/lib/modules/asset/AssetsController.js.map +1 -1
  10. package/dist/lib/modules/asset/AssetsGroupsController.js +1 -1
  11. package/dist/lib/modules/asset/AssetsGroupsController.js.map +1 -1
  12. package/dist/lib/modules/asset/model/AssetSerializer.js +1 -0
  13. package/dist/lib/modules/asset/model/AssetSerializer.js.map +1 -1
  14. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js +3 -0
  15. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js.map +1 -1
  16. package/dist/lib/modules/asset/types/AssetApi.d.ts +32 -0
  17. package/dist/lib/modules/asset/types/AssetContent.d.ts +1 -1
  18. package/dist/lib/modules/decoder/DecodedPayload.js.map +1 -1
  19. package/dist/lib/modules/decoder/Decoder.d.ts +11 -0
  20. package/dist/lib/modules/decoder/Decoder.js +1 -0
  21. package/dist/lib/modules/decoder/Decoder.js.map +1 -1
  22. package/dist/lib/modules/decoder/DecodersRegister.js.map +1 -1
  23. package/dist/lib/modules/decoder/DecodingState.js +1 -1
  24. package/dist/lib/modules/decoder/DecodingState.js.map +1 -1
  25. package/dist/lib/modules/decoder/PayloadService.d.ts +3 -6
  26. package/dist/lib/modules/decoder/PayloadService.js +11 -17
  27. package/dist/lib/modules/decoder/PayloadService.js.map +1 -1
  28. package/dist/lib/modules/decoder/PayloadsController.js.map +1 -1
  29. package/dist/lib/modules/decoder/types/DecoderContent.d.ts +1 -0
  30. package/dist/lib/modules/device/DeviceService.d.ts +27 -46
  31. package/dist/lib/modules/device/DeviceService.js +159 -73
  32. package/dist/lib/modules/device/DeviceService.js.map +1 -1
  33. package/dist/lib/modules/device/DevicesController.d.ts +2 -1
  34. package/dist/lib/modules/device/DevicesController.js +25 -41
  35. package/dist/lib/modules/device/DevicesController.js.map +1 -1
  36. package/dist/lib/modules/device/collections/deviceMappings.d.ts +2 -46
  37. package/dist/lib/modules/device/collections/deviceMappings.js.map +1 -1
  38. package/dist/lib/modules/device/types/DeviceApi.d.ts +11 -0
  39. package/dist/lib/modules/device/types/DeviceEvents.d.ts +29 -0
  40. package/dist/lib/modules/measure/MeasureExporter.d.ts +5 -2
  41. package/dist/lib/modules/measure/MeasureExporter.js +35 -14
  42. package/dist/lib/modules/measure/MeasureExporter.js.map +1 -1
  43. package/dist/lib/modules/measure/MeasureService.d.ts +2 -6
  44. package/dist/lib/modules/measure/MeasureService.js +6 -11
  45. package/dist/lib/modules/measure/MeasureService.js.map +1 -1
  46. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +18 -0
  47. package/dist/lib/modules/measure/collections/measuresMappings.js +14 -0
  48. package/dist/lib/modules/measure/collections/measuresMappings.js.map +1 -1
  49. package/dist/lib/modules/measure/measures/BatteryMeasure.js +12 -0
  50. package/dist/lib/modules/measure/measures/BatteryMeasure.js.map +1 -1
  51. package/dist/lib/modules/measure/measures/HumidityMeasure.js +12 -0
  52. package/dist/lib/modules/measure/measures/HumidityMeasure.js.map +1 -1
  53. package/dist/lib/modules/measure/measures/MovementMeasure.js +10 -0
  54. package/dist/lib/modules/measure/measures/MovementMeasure.js.map +1 -1
  55. package/dist/lib/modules/measure/measures/PositionMeasure.js +22 -0
  56. package/dist/lib/modules/measure/measures/PositionMeasure.js.map +1 -1
  57. package/dist/lib/modules/measure/measures/TemperatureMeasure.js +12 -0
  58. package/dist/lib/modules/measure/measures/TemperatureMeasure.js.map +1 -1
  59. package/dist/lib/modules/measure/types/MeasureContent.d.ts +4 -0
  60. package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +28 -3
  61. package/dist/lib/modules/model/MappingsConflictsError.d.ts +7 -0
  62. package/dist/lib/modules/model/MappingsConflictsError.js +20 -0
  63. package/dist/lib/modules/model/MappingsConflictsError.js.map +1 -0
  64. package/dist/lib/modules/model/ModelSerializer.js.map +1 -1
  65. package/dist/lib/modules/model/ModelService.d.ts +13 -8
  66. package/dist/lib/modules/model/ModelService.js +162 -28
  67. package/dist/lib/modules/model/ModelService.js.map +1 -1
  68. package/dist/lib/modules/model/ModelsConflicts.d.ts +30 -0
  69. package/dist/lib/modules/model/ModelsConflicts.js +107 -0
  70. package/dist/lib/modules/model/ModelsConflicts.js.map +1 -0
  71. package/dist/lib/modules/model/ModelsController.d.ts +2 -1
  72. package/dist/lib/modules/model/ModelsController.js +27 -3
  73. package/dist/lib/modules/model/ModelsController.js.map +1 -1
  74. package/dist/lib/modules/model/ModelsRegister.d.ts +28 -3
  75. package/dist/lib/modules/model/ModelsRegister.js +50 -5
  76. package/dist/lib/modules/model/ModelsRegister.js.map +1 -1
  77. package/dist/lib/modules/model/collections/modelsMappings.js +24 -0
  78. package/dist/lib/modules/model/collections/modelsMappings.js.map +1 -1
  79. package/dist/lib/modules/model/types/ModelApi.d.ts +24 -3
  80. package/dist/lib/modules/model/types/ModelContent.d.ts +207 -2
  81. package/dist/lib/modules/model/types/ModelContent.js +9 -0
  82. package/dist/lib/modules/model/types/ModelContent.js.map +1 -1
  83. package/dist/lib/modules/model/types/ModelDefinition.d.ts +129 -5
  84. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +141 -5
  85. package/dist/lib/modules/plugin/DeviceManagerEngine.js +238 -41
  86. package/dist/lib/modules/plugin/DeviceManagerEngine.js.map +1 -1
  87. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +113 -8
  88. package/dist/lib/modules/plugin/DeviceManagerPlugin.js +146 -16
  89. package/dist/lib/modules/plugin/DeviceManagerPlugin.js.map +1 -1
  90. package/dist/lib/modules/plugin/exports.d.ts +1 -1
  91. package/dist/lib/modules/plugin/exports.js +1 -1
  92. package/dist/lib/modules/plugin/exports.js.map +1 -1
  93. package/dist/lib/modules/plugin/index.d.ts +1 -2
  94. package/dist/lib/modules/plugin/index.js +1 -2
  95. package/dist/lib/modules/plugin/index.js.map +1 -1
  96. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +27 -5
  97. package/dist/lib/modules/plugin/types/InternalCollection.js +1 -1
  98. package/dist/lib/modules/plugin/types/InternalCollection.js.map +1 -1
  99. package/dist/lib/modules/plugin/types/Pipes.d.ts +17 -0
  100. package/dist/lib/modules/plugin/types/Pipes.js +3 -0
  101. package/dist/lib/modules/plugin/types/Pipes.js.map +1 -0
  102. package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
  103. package/dist/lib/modules/plugin/types/exports.js +18 -0
  104. package/dist/lib/modules/plugin/types/exports.js.map +1 -0
  105. package/dist/lib/modules/plugin/types/index.d.ts +3 -0
  106. package/dist/lib/modules/plugin/types/index.js +20 -0
  107. package/dist/lib/modules/plugin/types/index.js.map +1 -0
  108. package/dist/lib/modules/shared/index.d.ts +3 -4
  109. package/dist/lib/modules/shared/index.js +3 -4
  110. package/dist/lib/modules/shared/index.js.map +1 -1
  111. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +1 -0
  112. package/dist/lib/modules/shared/services/AbstractExporter.js +7 -1
  113. package/dist/lib/modules/shared/services/AbstractExporter.js.map +1 -1
  114. package/dist/lib/modules/shared/services/BaseService.d.ts +69 -0
  115. package/dist/lib/modules/shared/services/BaseService.js +157 -0
  116. package/dist/lib/modules/shared/services/BaseService.js.map +1 -0
  117. package/dist/lib/modules/shared/services/DigitalTwinExporter.js +9 -3
  118. package/dist/lib/modules/shared/services/DigitalTwinExporter.js.map +1 -1
  119. package/dist/lib/modules/shared/services/index.d.ts +1 -0
  120. package/dist/lib/modules/shared/services/index.js +1 -0
  121. package/dist/lib/modules/shared/services/index.js.map +1 -1
  122. package/dist/lib/modules/shared/utils/flattenObject.js.map +1 -1
  123. package/dist/lib/modules/shared/utils/lock.js.map +1 -1
  124. package/dist/lib/modules/shared/utils/objectDiff.js.map +1 -1
  125. package/package.json +26 -26
  126. package/dist/lib/modules/shared/utils/ask.d.ts +0 -8
  127. package/dist/lib/modules/shared/utils/ask.js +0 -12
  128. package/dist/lib/modules/shared/utils/ask.js.map +0 -1
@@ -7,6 +7,87 @@ export interface MeasureModelContent extends KDocumentContent {
7
7
  type: string;
8
8
  };
9
9
  }
10
+ interface MetadataProperty {
11
+ type: string;
12
+ strategy?: string;
13
+ format?: string;
14
+ }
15
+ interface MetadataObject {
16
+ properties: {
17
+ [key: string]: MetadataProperty | MetadataObject;
18
+ };
19
+ }
20
+ export interface MetadataMappings {
21
+ [key: string]: MetadataProperty | MetadataObject;
22
+ }
23
+ interface LocaleDetails {
24
+ friendlyName: string;
25
+ description: string;
26
+ }
27
+ export interface MetadataDetails {
28
+ [key: string]: {
29
+ group?: string;
30
+ locales: {
31
+ [locale: string]: LocaleDetails;
32
+ };
33
+ readOnly?: boolean;
34
+ };
35
+ }
36
+ interface MetadataGroupLocale {
37
+ groupFriendlyName: string;
38
+ description: string;
39
+ }
40
+ export interface MetadataGroups {
41
+ [groupName: string]: {
42
+ locales: {
43
+ [locale: string]: MetadataGroupLocale;
44
+ };
45
+ };
46
+ }
47
+ export interface MetadataTooltipContent {
48
+ category: "metadata";
49
+ label?: {
50
+ locales: {
51
+ [locale: string]: LocaleDetails;
52
+ };
53
+ };
54
+ metadataPath: string;
55
+ suffix?: string;
56
+ }
57
+ export interface MeasureTooltipContent {
58
+ category: "measure";
59
+ label?: {
60
+ locales: {
61
+ [locale: string]: LocaleDetails;
62
+ };
63
+ };
64
+ measureSlot: string;
65
+ measureValuePath: string;
66
+ suffix?: string;
67
+ }
68
+ export interface StaticTooltipContent {
69
+ category: "static";
70
+ label?: {
71
+ locales: {
72
+ [locale: string]: LocaleDetails;
73
+ };
74
+ };
75
+ type: StaticTooltipContentType;
76
+ value: string;
77
+ }
78
+ export declare enum StaticTooltipContentType {
79
+ link = "link",
80
+ image = "image",
81
+ text = "text",
82
+ title = "title",
83
+ separator = "separator"
84
+ }
85
+ export interface TooltipModels {
86
+ [key: string]: {
87
+ tooltipLabel: string;
88
+ content: (MetadataTooltipContent | MeasureTooltipContent | StaticTooltipContent)[];
89
+ };
90
+ }
10
91
  export interface AssetModelContent extends KDocumentContent {
11
92
  type: "asset";
12
93
  engineGroup: string;
@@ -27,7 +108,7 @@ export interface AssetModelContent extends KDocumentContent {
27
108
  * }
28
109
  * }
29
110
  */
30
- metadataMappings: JSONObject;
111
+ metadataMappings: MetadataMappings;
31
112
  /**
32
113
  * Default values for metadata.
33
114
  *
@@ -37,6 +118,44 @@ export interface AssetModelContent extends KDocumentContent {
37
118
  * }
38
119
  */
39
120
  defaultMetadata: JSONObject;
121
+ /**
122
+ * Metadata details
123
+ * @example
124
+ * {
125
+ * "extTemp": {
126
+ * "group": "buildingEnv",
127
+ * "locales": {
128
+ * "en": {
129
+ * "friendlyName": "External temperature",
130
+ * "description": "Building external temperature"
131
+ * },
132
+ * "fr": {
133
+ * "friendlyName": "Température extérieure",
134
+ * "description": "Température à l'exterieur du bâtiment"
135
+ * },
136
+ * "readOnly": true,
137
+ * }
138
+ */
139
+ metadataDetails?: MetadataDetails;
140
+ /**
141
+ * Metadata groups list
142
+ * @example
143
+ * {
144
+ * "buildingEnv": {
145
+ * "locales": {
146
+ * "en": {
147
+ * "groupFriendlyName": "Building environment",
148
+ * "description": "The building environment"
149
+ * },
150
+ * "fr": {
151
+ * "groupFriendlyName": "Environnement du bâtiment",
152
+ * "description": "L'environnement du bâtiment"
153
+ * }
154
+ * }
155
+ * }
156
+ * }
157
+ */
158
+ metadataGroups?: MetadataGroups;
40
159
  /**
41
160
  * List of accepted measures for this model
42
161
  *
@@ -49,6 +168,53 @@ export interface AssetModelContent extends KDocumentContent {
49
168
  * ]
50
169
  */
51
170
  measures: NamedMeasures;
171
+ /**
172
+ * List of tooltip models for this asset model
173
+ *
174
+ * @example
175
+ * [
176
+ * "defaultTooltipKey": {
177
+ * "tooltipLabel": "Default tooltip model",
178
+ * "content": [
179
+ * {
180
+ * "metadataPath": "geolocation",
181
+ * "label": {
182
+ * "locales": {
183
+ * "en": {
184
+ * "description": "",
185
+ * "friendlyName": "Container position"
186
+ * },
187
+ * "fr": {
188
+ * "description": "",
189
+ * "friendlyName": "Position du conteneur"
190
+ * }
191
+ * }
192
+ * },
193
+ * "category": "metadata"
194
+ * },
195
+ * {
196
+ * "measureValuePath": "externalTemperature",
197
+ * "measureSlot": "externalTemperature",
198
+ * "label": {
199
+ * "locales": {
200
+ * "en": {
201
+ * "description": "",
202
+ * "friendlyName": "External temperature"
203
+ * },
204
+ * "fr": {
205
+ * "description": "",
206
+ * "friendlyName": "Température extérieure"
207
+ * }
208
+ * }
209
+ * },
210
+ * "category": "measure",
211
+ * "suffix": "°C"
212
+ * }
213
+ * ]
214
+ * }
215
+ * ]
216
+ */
217
+ tooltipModels?: TooltipModels;
52
218
  };
53
219
  }
54
220
  export interface DeviceModelContent extends KDocumentContent {
@@ -70,7 +236,7 @@ export interface DeviceModelContent extends KDocumentContent {
70
236
  * }
71
237
  * }
72
238
  */
73
- metadataMappings: JSONObject;
239
+ metadataMappings: MetadataMappings;
74
240
  /**
75
241
  * Default values for metadata.
76
242
  *
@@ -80,6 +246,44 @@ export interface DeviceModelContent extends KDocumentContent {
80
246
  * }
81
247
  */
82
248
  defaultMetadata: JSONObject;
249
+ /**
250
+ * Metadata details
251
+ * @example
252
+ * {
253
+ * "sensorVersion": {
254
+ * "group": "sensorSpecs",
255
+ * "locales": {
256
+ * "en": {
257
+ * "friendlyName": "Sensor version",
258
+ * "description": "Firmware version of the sensor"
259
+ * },
260
+ * "fr": {
261
+ * "friendlyName": "Version du capteur",
262
+ * "description": "Version du micrologiciel du capteur"
263
+ * },
264
+ * "readOnly": true,
265
+ * }
266
+ */
267
+ metadataDetails?: MetadataDetails;
268
+ /**
269
+ * Metadata groups list
270
+ * @example
271
+ * {
272
+ * "sensorSpecs": {
273
+ * "locales": {
274
+ * "en": {
275
+ * "groupFriendlyName": "Sensor specifications",
276
+ * "description" : "All sensors specifications"
277
+ * },
278
+ * "fr": {
279
+ * "groupFriendlyName": "Spécifications techniques",
280
+ * "description": "Toutes les spécifications techniques"
281
+ * },
282
+ * }
283
+ * }
284
+ * }
285
+ */
286
+ metadataGroups?: MetadataGroups;
83
287
  /**
84
288
  * List of decoded measures for this model
85
289
  *
@@ -95,3 +299,4 @@ export interface DeviceModelContent extends KDocumentContent {
95
299
  };
96
300
  }
97
301
  export type ModelContent = MeasureModelContent | AssetModelContent | DeviceModelContent;
302
+ export {};
@@ -1,3 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StaticTooltipContentType = void 0;
4
+ var StaticTooltipContentType;
5
+ (function (StaticTooltipContentType) {
6
+ StaticTooltipContentType["link"] = "link";
7
+ StaticTooltipContentType["image"] = "image";
8
+ StaticTooltipContentType["text"] = "text";
9
+ StaticTooltipContentType["title"] = "title";
10
+ StaticTooltipContentType["separator"] = "separator";
11
+ })(StaticTooltipContentType || (exports.StaticTooltipContentType = StaticTooltipContentType = {}));
3
12
  //# sourceMappingURL=ModelContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelContent.js","sourceRoot":"","sources":["../../../../../lib/modules/model/types/ModelContent.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"ModelContent.js","sourceRoot":"","sources":["../../../../../lib/modules/model/types/ModelContent.ts"],"names":[],"mappings":";;;AA2FA,IAAY,wBAMX;AAND,WAAY,wBAAwB;IAClC,yCAAa,CAAA;IACb,2CAAe,CAAA;IACf,yCAAa,CAAA;IACb,2CAAe,CAAA;IACf,mDAAuB,CAAA;AACzB,CAAC,EANW,wBAAwB,wCAAxB,wBAAwB,QAMnC"}
@@ -1,5 +1,6 @@
1
1
  import { JSONObject } from "kuzzle-sdk";
2
2
  import { Decoder, NamedMeasures } from "../../../modules/decoder";
3
+ import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
3
4
  /**
4
5
  * Define an asset model
5
6
  *
@@ -16,6 +17,77 @@ import { Decoder, NamedMeasures } from "../../../modules/decoder";
16
17
  * },
17
18
  * defaultMetadata: {
18
19
  * height: 20
20
+ * },
21
+ * metadataDetails: {
22
+ * "extTemp": {
23
+ * "group": "buildingEnv",
24
+ * "locales": {
25
+ * "en": {
26
+ * "friendlyName": "External temperature",
27
+ * "description": "Container external temperature"
28
+ * },
29
+ * "fr": {
30
+ * "friendlyName": "Température externe",
31
+ * "description": "Température externe du conteneur"
32
+ * }
33
+ * },
34
+ * "readOnly": true,
35
+ * }
36
+ * },
37
+ * metadataGroups: {
38
+ * buildingEnv: {
39
+ * locales: {
40
+ * en: {
41
+ * groupFriendlyName: "Building environment",
42
+ * description: "The building environment"
43
+ * },
44
+ * fr: {
45
+ * groupFriendlyName: "Environnement du bâtiment",
46
+ * description: "L'environnement du bâtiment"
47
+ * }
48
+ * }
49
+ * }
50
+ * },
51
+ * tooltipModels: {
52
+ * "defaultTooltipKey": {
53
+ * "tooltipLabel": "Default Tooltip Model",
54
+ * "content": [
55
+ * {
56
+ * "category": "metadata",
57
+ * "label": {
58
+ * "locales": {
59
+ * "en": {
60
+ * "friendlyName": "Container position",
61
+ * "description": ""
62
+ * },
63
+ * "fr": {
64
+ * "friendlyName": "Position du conteneur",
65
+ * "description": ""
66
+ * }
67
+ * }
68
+ * },
69
+ * "metadataPath": "geolocation"
70
+ * },
71
+ * {
72
+ * "category": "measure",
73
+ * "label": {
74
+ * "locales": {
75
+ * "en": {
76
+ * "friendlyName": "External temperature",
77
+ * "description": ""
78
+ * },
79
+ * "fr": {
80
+ * "friendlyName": "Température extérieure",
81
+ * "description": ""
82
+ * }
83
+ * }
84
+ * },
85
+ * "measureSlot": "externalTemperature",
86
+ * "measureValuePath": "externalTemperature",
87
+ * "suffix": "°C"
88
+ * }
89
+ * ]
90
+ * }
19
91
  * }
20
92
  * }
21
93
  *
@@ -28,11 +100,23 @@ export type AssetModelDefinition = {
28
100
  /**
29
101
  * Metadata mappings definition
30
102
  */
31
- metadataMappings?: JSONObject;
103
+ metadataMappings?: MetadataMappings;
32
104
  /**
33
105
  * Default metadata values
34
106
  */
35
107
  defaultMetadata?: JSONObject;
108
+ /**
109
+ * Metadata details including tanslations and group.
110
+ */
111
+ metadataDetails?: MetadataDetails;
112
+ /**
113
+ * Metadata groups
114
+ */
115
+ metadataGroups?: MetadataGroups;
116
+ /**
117
+ * Tooltip models
118
+ */
119
+ tooltipModels?: TooltipModels;
36
120
  };
37
121
  /**
38
122
  * Define a device model
@@ -42,9 +126,41 @@ export type AssetModelDefinition = {
42
126
  * decoder: new DummyTempPositionDecoder(),
43
127
  * metadataMappings: {
44
128
  * serial: { type: "keyword" },
45
- * }
46
- * }
47
- *
129
+ * },
130
+ * defaultMetadata: {
131
+ * company: "Firebird"
132
+ * },
133
+ * metadataDetails: {
134
+ * sensorType: {
135
+ * group: "sensorSpecs",
136
+ * locales: {
137
+ * en: {
138
+ * friendlyName: "Sensor type",
139
+ * description: "Type of the sensor"
140
+ * },
141
+ * fr: {
142
+ * friendlyName: "Type de traceur",
143
+ * description: "Type du traceur"
144
+ * }
145
+ * },
146
+ * readOnly: true,
147
+ * }
148
+ * },
149
+ * metadataGroups: {
150
+ * sensorSpecs: {
151
+ * locales: {
152
+ * en: {
153
+ * groupFriendlyName: "Sensor specifications",
154
+ * description : "All sensors specifications"
155
+ * },
156
+ * fr: {
157
+ * groupFriendlyName: "Spécifications techniques",
158
+ * description: "Toutes les spécifications techniques"
159
+ * }
160
+ * }
161
+ * }
162
+ * }
163
+ * }
48
164
  */
49
165
  export type DeviceModelDefinition = {
50
166
  /**
@@ -54,9 +170,17 @@ export type DeviceModelDefinition = {
54
170
  /**
55
171
  * Metadata mappings definition
56
172
  */
57
- metadataMappings?: JSONObject;
173
+ metadataMappings?: MetadataMappings;
58
174
  /**
59
175
  * Default metadata values
60
176
  */
61
177
  defaultMetadata?: JSONObject;
178
+ /**
179
+ * Metadata details including tanslations and group.
180
+ */
181
+ metadataDetails?: MetadataDetails;
182
+ /**
183
+ * Metadata groups list and details.
184
+ */
185
+ metadataGroups?: MetadataGroups;
62
186
  };
@@ -1,9 +1,20 @@
1
- import { Backend, Plugin } from "kuzzle";
2
- import { AbstractEngine, ConfigManager } from "kuzzle-plugin-commons";
3
- import { EngineContent } from "kuzzle-plugin-commons";
4
- import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
1
+ import { Backend, KDocumentContent, Plugin } from "kuzzle";
2
+ import { AbstractEngine, ConfigManager, EngineContent } from "kuzzle-plugin-commons";
3
+ import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "../model";
5
4
  import { DeviceManagerPlugin } from "./DeviceManagerPlugin";
5
+ import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
6
6
  import { InternalCollection } from "./types/InternalCollection";
7
+ import { ConflictChunk } from "../model/ModelsConflicts";
8
+ export type TwinType = "asset" | "device";
9
+ export type TwinModelContent = AssetModelContent | DeviceModelContent;
10
+ export interface EngineDocument extends KDocumentContent {
11
+ type: "engine-device-manager";
12
+ engine: {
13
+ group: string;
14
+ index: string;
15
+ name: string;
16
+ };
17
+ }
7
18
  export type AskEngineList = {
8
19
  name: "ask:device-manager:engine:list";
9
20
  payload: {
@@ -16,11 +27,48 @@ export type AskEngineUpdateAll = {
16
27
  payload: void;
17
28
  result: void;
18
29
  };
30
+ export type AskEngineUpdateConflict = {
31
+ name: "ask:device-manager:engine:doesUpdateConflict";
32
+ payload: {
33
+ twin?: {
34
+ type: TwinType;
35
+ models: TwinModelContent[];
36
+ };
37
+ measuresModels?: MeasureModelContent[];
38
+ };
39
+ result: ConflictChunk[];
40
+ };
19
41
  export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlugin> {
20
42
  config: DeviceManagerConfiguration;
21
43
  get app(): Backend;
22
44
  constructor(plugin: Plugin, adminConfigManager: ConfigManager, engineConfigManager: ConfigManager);
45
+ /**
46
+ * Return conflicts between the new and already present twin models
47
+ *
48
+ * @param twinType The target twin type
49
+ * @param twinModels The already present twin models
50
+ * @param additionalModels The new or updated twin models
51
+ * @param measureModels The already present measures models
52
+ *
53
+ * @throws If a measure type declared in the twin does not exists
54
+ * @returns An array of conflict chunk
55
+ */
56
+ private doesTwinUpdateConflicts;
57
+ /**
58
+ * Return conflicts between the new and already present measure models
59
+ *
60
+ * @param measuresModels The already present measure models
61
+ * @param additionalMeasures The new or updated measure models
62
+ * @returns An array of ConflictChunk
63
+ */
64
+ private doesMeasuresUpdateConflicts;
23
65
  updateEngines(): Promise<void>;
66
+ /**
67
+ * Search and return every engines in use
68
+ *
69
+ * @returns An array of the available engines
70
+ */
71
+ getEngines(): Promise<EngineDocument[]>;
24
72
  onCreate(index: string, group?: string): Promise<{
25
73
  collections: any[];
26
74
  }>;
@@ -30,12 +78,100 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
30
78
  onDelete(index: string): Promise<{
31
79
  collections: InternalCollection[];
32
80
  }>;
81
+ /**
82
+ * Generate assets mappings and create the assets collection in the engine
83
+ *
84
+ * @param engineId The target engine Id
85
+ * @param engineGroup The engine group
86
+ *
87
+ * @throws If it failed during the assets collection creation
88
+ */
33
89
  createAssetsCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
90
+ /**
91
+ * Generate assets mappings and create the assets history collection in the engine
92
+ *
93
+ * @param engineId The target engine Id
94
+ * @param engineGroup The engine group
95
+ *
96
+ * @throws If it failed during the assets history collection creation
97
+ */
34
98
  createAssetsHistoryCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
99
+ /**
100
+ * Create the assets groups collection with the assets groups mappings in the engine
101
+ *
102
+ * @param engineId The target engine Id
103
+ * @param engineGroup The engine group
104
+ *
105
+ * @throws If it failed during the assets groups collection creation
106
+ */
35
107
  createAssetsGroupsCollection(engineId: string): Promise<InternalCollection>;
36
- private getDigitalTwinMappings;
108
+ /**
109
+ * Generate devices mappings and create the devices collection in the engine
110
+ *
111
+ * @param engineId The target engine Id
112
+ * @param engineGroup The engine group
113
+ *
114
+ * @throws If it failed during the devices collection creation
115
+ */
37
116
  createDevicesCollection(engineId: string): Promise<InternalCollection>;
117
+ /**
118
+ * Generate measures mappings and create the measures collection in the engine
119
+ *
120
+ * @param engineId The target engine Id
121
+ * @param engineGroup The engine group
122
+ *
123
+ * @throws If it failed during the measures collection creation
124
+ */
38
125
  createMeasuresCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
126
+ /**
127
+ * Create a collection with custom mappings in an engine
128
+ *
129
+ * @param engineIndex The target engine
130
+ * @param collection The collection name
131
+ * @param mappings The collection mappings
132
+ *
133
+ * @throws If it failed to create the collection
134
+ */
135
+ private tryCreateCollection;
136
+ /**
137
+ * Generate ES mappings from twin models and theirs associated measures, all fetched from the database
138
+ *
139
+ * @param digitalTwinType The target twin type
140
+ * @param engineGroup The twin engine group
141
+ * @returns The complete ES mappings produces by merging all the target type twins
142
+ */
143
+ private getDigitalTwinMappingsFromDB;
144
+ /**
145
+ * Generate ES mappings from twin models and theirs associated measures
146
+ *
147
+ * @param digitalTwinType The target twin type
148
+ * @param models The twin models
149
+ * @param measureModels The associated measures
150
+ * @returns The complete ES mappings produces by merging all the target type twins
151
+ */
152
+ private getDigitalTwinMappings;
153
+ /**
154
+ * Generate ES mappings from measures and theirs associated assets, all fetched via the database
155
+ *
156
+ * @param engineGroup The target engine group
157
+ * @returns The complete ES mappings produced by merging models mappings
158
+ */
159
+ private getMeasuresMappingsFromDB;
160
+ /**
161
+ * Generate ES mappings from measures and theirs associated assets
162
+ *
163
+ * @param models The measures models
164
+ * @param assetsMappings The assets complete mappings
165
+ * @returns The complete ES mappings produced by merging models mappings
166
+ */
39
167
  private getMeasuresMappings;
168
+ /**
169
+ * Retrieve a certain type of models associated to an engine
170
+ *
171
+ * @param engineId The target engine Id
172
+ * @param type The desired model type
173
+ * @param engineGroup The target engine group
174
+ * @returns An array of the generic type provided
175
+ */
40
176
  private getModels;
41
177
  }