kuzzle-device-manager-types 3.0.0-next.2 → 3.0.0-next.21

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 (111) hide show
  1. package/dist/bin/migration/migration_platform_index.d.ts +2 -0
  2. package/dist/bin/migration/migration_tenant_index.d.ts +2 -0
  3. package/dist/bin/migration/utils.d.ts +18 -0
  4. package/dist/index.d.ts +1 -0
  5. package/dist/lib/modules/asset/AssetModule.d.ts +0 -1
  6. package/dist/lib/modules/asset/AssetService.d.ts +14 -4
  7. package/dist/lib/modules/asset/AssetsController.d.ts +31 -7
  8. package/dist/lib/modules/asset/exports.d.ts +0 -4
  9. package/dist/lib/modules/asset/index.d.ts +1 -3
  10. package/dist/lib/modules/asset/types/AssetApi.d.ts +127 -6
  11. package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -11
  12. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
  13. package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
  14. package/dist/lib/modules/decoder/DecodersController.d.ts +6 -0
  15. package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
  16. package/dist/lib/modules/decoder/types/DecoderApi.d.ts +0 -1
  17. package/dist/lib/modules/device/DeviceService.d.ts +14 -40
  18. package/dist/lib/modules/device/DevicesController.d.ts +5 -5
  19. package/dist/lib/modules/device/collections/deviceMappings.d.ts +6 -0
  20. package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +2 -2
  21. package/dist/lib/modules/device/types/DeviceApi.d.ts +69 -42
  22. package/dist/lib/modules/device/types/DeviceContent.d.ts +55 -4
  23. package/dist/lib/modules/device/types/DeviceEvents.d.ts +0 -23
  24. package/dist/lib/modules/group/GroupsController.d.ts +35 -0
  25. package/dist/lib/modules/group/GroupsModule.d.ts +6 -0
  26. package/dist/lib/modules/group/GroupsService.d.ts +116 -0
  27. package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
  28. package/dist/lib/modules/group/exports.d.ts +5 -0
  29. package/dist/lib/modules/group/index.d.ts +4 -0
  30. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
  31. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
  32. package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
  33. package/dist/lib/modules/group/types/GroupsApi.d.ts +141 -0
  34. package/dist/lib/modules/measure/MeasureExporter.d.ts +2 -0
  35. package/dist/lib/modules/measure/MeasureService.d.ts +11 -38
  36. package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
  37. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -83
  38. package/dist/lib/modules/measure/exports.d.ts +0 -1
  39. package/dist/lib/modules/measure/index.d.ts +0 -1
  40. package/dist/lib/modules/measure/types/MeasureContent.d.ts +7 -0
  41. package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +4 -0
  42. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +5 -148
  43. package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
  44. package/dist/lib/modules/model/ModelService.d.ts +16 -4
  45. package/dist/lib/modules/model/ModelsConflicts.d.ts +9 -1
  46. package/dist/lib/modules/model/ModelsController.d.ts +6 -1
  47. package/dist/lib/modules/model/ModelsRegister.d.ts +19 -2
  48. package/dist/lib/modules/model/types/ModelApi.d.ts +50 -1
  49. package/dist/lib/modules/model/types/ModelContent.d.ts +157 -2
  50. package/dist/lib/modules/model/types/ModelDefinition.d.ts +110 -2
  51. package/dist/lib/modules/model/types/ModelEvents.d.ts +8 -1
  52. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +32 -6
  53. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +60 -5
  54. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -7
  55. package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
  56. package/dist/lib/modules/plugin/types/exports.d.ts +2 -0
  57. package/dist/lib/modules/shared/errors/index.d.ts +1 -0
  58. package/dist/lib/modules/shared/exports.d.ts +1 -5
  59. package/dist/lib/modules/shared/index.d.ts +3 -11
  60. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +2 -0
  61. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +2 -0
  62. package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +71 -1
  63. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +6 -5
  64. package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
  65. package/dist/lib/modules/shared/types/Models.d.ts +18 -0
  66. package/dist/lib/modules/shared/types/exports.d.ts +6 -0
  67. package/dist/lib/modules/shared/types/index.d.ts +9 -0
  68. package/dist/lib/modules/shared/utils/index.d.ts +5 -0
  69. package/dist/tests/application/assets/Container.d.ts +7 -4
  70. package/dist/tests/application/assets/MagicHouse.d.ts +2 -2
  71. package/dist/tests/application/assets/Room.d.ts +2 -2
  72. package/dist/tests/application/assets/StreetLamp.d.ts +2 -2
  73. package/dist/tests/application/assets/Warehouse.d.ts +2 -2
  74. package/dist/tests/application/assets/index.d.ts +1 -0
  75. package/dist/tests/application/decoders/EmptyTempDecoder.d.ts +8 -0
  76. package/dist/tests/application/devices/DummyTemp.d.ts +2 -0
  77. package/dist/tests/application/devices/DummyTempPosition.d.ts +2 -0
  78. package/dist/tests/application/devices/EmptyTemp.d.ts +2 -0
  79. package/dist/tests/application/devices/index.d.ts +3 -0
  80. package/dist/tests/application/groups/AssetRestricted.d.ts +8 -0
  81. package/dist/tests/application/groups/DeviceRestricted.d.ts +8 -0
  82. package/dist/tests/application/groups/Parking.d.ts +14 -0
  83. package/dist/tests/application/groups/index.d.ts +3 -0
  84. package/dist/tests/application/measures/{AccelerationMeasure.d.ts → Acceleration.d.ts} +2 -2
  85. package/dist/tests/application/measures/BatteryMeasure.d.ts +5 -0
  86. package/dist/tests/application/measures/Brightness.d.ts +2 -0
  87. package/dist/tests/application/measures/CO2.d.ts +2 -0
  88. package/dist/tests/application/measures/HumidityMeasure.d.ts +5 -0
  89. package/dist/tests/application/measures/Illuminance.d.ts +2 -0
  90. package/dist/tests/application/measures/Magicule.d.ts +2 -2
  91. package/dist/tests/application/measures/MovementMeasure.d.ts +5 -0
  92. package/dist/{lib/modules/measure → tests/application}/measures/PositionMeasure.d.ts +2 -2
  93. package/dist/tests/application/measures/PowerConsumption.d.ts +2 -0
  94. package/dist/tests/application/measures/TemperatureMeasure.d.ts +5 -0
  95. package/dist/tests/application/measures/index.d.ts +11 -0
  96. package/dist/tests/application/models.d.ts +2 -0
  97. package/package.json +2 -2
  98. package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -20
  99. package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
  100. package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -8
  101. package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
  102. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
  103. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
  104. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
  105. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
  106. package/dist/lib/modules/measure/measures/index.d.ts +0 -5
  107. package/dist/tests/application/decoders/index.d.ts +0 -2
  108. package/dist/tests/application/measures/BrightnessMeasure.d.ts +0 -2
  109. package/dist/tests/application/measures/CO2Measure.d.ts +0 -2
  110. package/dist/tests/application/measures/IlluminanceMeasure.d.ts +0 -2
  111. package/dist/tests/application/measures/PowerConsumptionMeasure.d.ts +0 -2
@@ -1,48 +1,25 @@
1
- import { JSONObject, KDocument } from "kuzzle";
2
- import { DeviceContent } from "../device";
1
+ import { JSONObject } from "kuzzle";
3
2
  import { DeviceManagerPlugin } from "../plugin";
4
- import { BaseService, Metadata } from "../shared";
3
+ import { BaseService } from "../shared";
5
4
  import { DecodedMeasurement } from "./types/MeasureContent";
6
- import { ApiMeasureSource } from "./types/MeasureSources";
7
- import { ApiMeasureTarget } from "./types/MeasureTarget";
5
+ import { MeasureSource } from "./types/MeasureSources";
6
+ import { MeasureTarget } from "./types/MeasureTarget";
8
7
  export declare class MeasureService extends BaseService {
9
8
  constructor(plugin: DeviceManagerPlugin);
10
9
  /**
11
- * Register new measures from an API, updates :
10
+ * Register new measures updates :
12
11
  * - asset
13
12
  * - engine measures
14
13
  *
15
14
  * This method represents the ingestion pipeline:
16
15
  * - trigger events `before` (measure enrichment)
17
- * - save documents (measures and asset)
16
+ * - save documents (measures & device metadata)
18
17
  * - trigger events `after`
19
18
  */
20
- ingestApi(source: ApiMeasureSource, target: ApiMeasureTarget, measurements: DecodedMeasurement<JSONObject>[], payloadUuids: string[]): Promise<void>;
21
- /**
22
- * Register new measures from a device, updates :
23
- * - admin device
24
- * - engine device
25
- * - linked asset
26
- * - engine measures
27
- *
28
- * A mutex ensure that a device can ingest one measure at a time.
29
- *
30
- * This method represents the ingestion pipeline:
31
- * - build measures documents and update digital twins (device and asset)
32
- * - trigger events `before` (measure enrichment)
33
- * - save documents (measures, device and asset)
34
- * - trigger events `after`
35
- *
36
- * @deprecated
37
- */
38
- ingest(device: KDocument<DeviceContent>, measurements: DecodedMeasurement<JSONObject>[], metadata: Metadata, payloadUuids: string[]): Promise<void>;
39
- private updateDeviceMeasures;
40
- /**
41
- * Update asset with each non-null non-computed measures.
42
- *
43
- * @returns A map of each asset state by measuredAt timestamp.
44
- */
45
- private updateAssetMeasures;
19
+ ingest(source: MeasureSource, target: MeasureTarget, measurements: DecodedMeasurement<JSONObject>[], payloadUuids: string[]): Promise<void>;
20
+ private buildDeviceMeasures;
21
+ private ingestDeviceMeasures;
22
+ private ingestApiMeasures;
46
23
  /**
47
24
  * Build the measures document received from the API
48
25
  *
@@ -50,14 +27,10 @@ export declare class MeasureService extends BaseService {
50
27
  * @param asset The target asset to build the measure for
51
28
  * @param measure The decoded raw measures
52
29
  * @param payloadUuids The uuid's of the payloads used to create the measure
53
- *
30
+ * @param engineGroup engineGroup of model
54
31
  * @returns A MeasurementContent builded from parameters
55
32
  */
56
33
  private buildApiMeasures;
57
- /**
58
- * Build the measures documents to save
59
- */
60
- private buildMeasures;
61
34
  /**
62
35
  * Find an asset by its ID and its engine ID.
63
36
  *
@@ -6,5 +6,4 @@ export declare const enum DATA_SOURCE_METADATA_TYPE {
6
6
  DEVICE = "device"
7
7
  }
8
8
  export declare function apiSourceToOriginApi(source: ApiMeasureSource, payloadUuids: string[]): MeasureOriginApi;
9
- export declare function toDeviceSource(dataSourceId: string, reference: string, model: string, metadata?: Metadata, lastMeasuredAt?: number): DeviceMeasureSource;
10
- export declare function deviceSourceToOriginDevice(source: DeviceMeasureSource, measureName: string, payloadUuids: string[]): MeasureOriginDevice;
9
+ export declare function deviceSourceToOriginDevice(source: DeviceMeasureSource, measureName: string, payloadUuids: string[], deviceMetadata: Metadata): MeasureOriginDevice;
@@ -1,88 +1,7 @@
1
+ import { CollectionMappings } from "kuzzle-sdk";
1
2
  /**
2
3
  * Base mappings for the "measures" collection.
3
4
  *
4
5
  * Those mappings does not contains the `values` mappings and `asset.metadata` mappings.
5
6
  */
6
- export declare const measuresMappings: {
7
- dynamic: string;
8
- properties: {
9
- type: {
10
- type: string;
11
- };
12
- values: {
13
- properties: {};
14
- };
15
- /**
16
- * Micro Timestamp of the measurement time.
17
- */
18
- measuredAt: {
19
- type: string;
20
- };
21
- asset: {
22
- properties: {
23
- _id: {
24
- type: string;
25
- };
26
- model: {
27
- type: string;
28
- };
29
- reference: {
30
- type: string;
31
- };
32
- measureName: {
33
- type: string;
34
- };
35
- metadata: {
36
- properties: {};
37
- };
38
- groups: {
39
- properties: {
40
- id: {
41
- type: string;
42
- fields: {
43
- text: {
44
- type: string;
45
- };
46
- };
47
- };
48
- date: {
49
- type: string;
50
- };
51
- };
52
- };
53
- };
54
- };
55
- /**
56
- * Define the origin of the measure.
57
- */
58
- origin: {
59
- properties: {
60
- type: {
61
- type: string;
62
- };
63
- measureName: {
64
- type: string;
65
- };
66
- deviceMetadata: {
67
- properties: {};
68
- };
69
- apiMetadata: {
70
- dynamic: string;
71
- properties: {};
72
- };
73
- payloadUuids: {
74
- type: string;
75
- };
76
- deviceModel: {
77
- type: string;
78
- };
79
- reference: {
80
- type: string;
81
- };
82
- _id: {
83
- type: string;
84
- };
85
- };
86
- };
87
- };
88
- };
7
+ export declare const measuresMappings: CollectionMappings;
@@ -1,7 +1,6 @@
1
1
  export * from "./types/MeasureEvents";
2
2
  export * from "./types/MeasureContent";
3
3
  export * from "./types/MeasureDefinition";
4
- export * from "./measures";
5
4
  export * from "./roles/RoleMeasuresAdmin";
6
5
  export * from "./roles/RoleMeasuresReader";
7
6
  export * from "./collections/measuresMappings";
@@ -2,7 +2,6 @@ export * from "./collections/measuresMappings";
2
2
  export * from "./types/MeasureEvents";
3
3
  export * from "./types/MeasureContent";
4
4
  export * from "./types/MeasureDefinition";
5
- export * from "./measures";
6
5
  export * from "./MeasureModule";
7
6
  export * from "./roles/RoleMeasuresAdmin";
8
7
  export * from "./roles/RoleMeasuresReader";
@@ -35,6 +35,13 @@ export interface MeasureOriginDevice extends AbstractMeasureOrigin {
35
35
  * Origin device metadata
36
36
  */
37
37
  deviceMetadata?: Metadata;
38
+ /**
39
+ * Origin device groups
40
+ */
41
+ groups: Array<{
42
+ path: string;
43
+ date: number;
44
+ }>;
38
45
  /**
39
46
  * Device ID
40
47
  */
@@ -1,5 +1,6 @@
1
1
  import { SchemaObject } from "ajv";
2
2
  import { JSONObject } from "kuzzle-sdk";
3
+ import { LocaleDetails } from "lib/modules/model";
3
4
  interface MeasureLocales {
4
5
  [localeString: string]: {
5
6
  friendlyName: string;
@@ -44,6 +45,9 @@ export interface MeasureValuesDetails {
44
45
  *}
45
46
  */
46
47
  export interface MeasureDefinition {
48
+ locales?: {
49
+ [valueName: string]: LocaleDetails;
50
+ };
47
51
  /**
48
52
  * Mappings for the measurement values in order to index the fields
49
53
  */
@@ -1,25 +1,8 @@
1
- import { JSONObject, KDocument } from "kuzzle-sdk";
2
- import { DeviceContent } from "../../../modules/device";
1
+ import { JSONObject } from "kuzzle-sdk";
3
2
  import { AssetContent } from "../../../modules/asset";
4
- import { Metadata } from "../../../modules/shared";
5
3
  import { DecodedMeasurement, MeasureContent } from "./MeasureContent";
6
4
  import { MeasureSource } from "./MeasureSources";
7
5
  import { MeasureTarget } from "./MeasureTarget";
8
- /**
9
- * @internal
10
- *
11
- * @deprecated Replaced by new Ask implementing data sources
12
- */
13
- export type AskMeasureIngest = {
14
- name: "device-manager:measures:ingest";
15
- payload: {
16
- device: KDocument<DeviceContent>;
17
- measurements: DecodedMeasurement<JSONObject>[];
18
- metadata: Metadata;
19
- payloadUuids: string[];
20
- };
21
- result: void;
22
- };
23
6
  /**
24
7
  * @internal
25
8
  */
@@ -34,29 +17,12 @@ export type AskMeasureSourceIngest = {
34
17
  result: void;
35
18
  };
36
19
  /**
37
- * Event before starting to process new measures.
20
+ * Event before starting to process new measures from data source.
38
21
  *
39
22
  * Useful to enrich measures before they are saved.
40
- *
41
- * @deprecated Replaced by new triggers implementing data sources
42
23
  */
43
24
  export type EventMeasureProcessBefore = {
44
25
  name: "device-manager:measures:process:before";
45
- args: [
46
- {
47
- asset: KDocument<AssetContent>;
48
- device: KDocument<DeviceContent>;
49
- measures: MeasureContent[];
50
- }
51
- ];
52
- };
53
- /**
54
- * Event before starting to process new measures from data source.
55
- *
56
- * Useful to enrich measures before they are saved.
57
- */
58
- export type EventMeasureProcessSourceBefore = {
59
- name: "device-manager:measures:process:sourceBefore";
60
26
  args: [
61
27
  {
62
28
  source: MeasureSource;
@@ -67,60 +33,12 @@ export type EventMeasureProcessSourceBefore = {
67
33
  ];
68
34
  };
69
35
  /**
70
- * Tenant event before starting to process new measures.
36
+ * Tenant event before starting to process new measures from data source.
71
37
  *
72
38
  * Useful to enrich measures before they are saved.
73
- *
74
- * @deprecated Replaced by new triggers implementing data sources
75
39
  */
76
40
  export type TenantEventMeasureProcessBefore = {
77
41
  name: `engine:${string}:device-manager:measures:process:before`;
78
- args: [
79
- {
80
- asset: KDocument<AssetContent>;
81
- device: KDocument<DeviceContent>;
82
- measures: MeasureContent[];
83
- }
84
- ];
85
- };
86
- /**
87
- * Tenant event before starting to process new measures from data source.
88
- *
89
- * Useful to enrich measures before they are saved.
90
- */
91
- export type TenantEventMeasureProcessSourceBefore = {
92
- name: `engine:${string}:device-manager:measures:process:sourceBefore`;
93
- args: [
94
- {
95
- source: MeasureSource;
96
- target: MeasureTarget;
97
- asset?: AssetContent;
98
- measures: MeasureContent[];
99
- }
100
- ];
101
- };
102
- /**
103
- * Event triggered after updating device and asset with new measures but
104
- * before persistence in database.
105
- *
106
- * @deprecated Replaced by new triggers implementing data sources
107
- */
108
- export type EventMeasurePersistBefore = {
109
- name: "device-manager:measures:persist:before";
110
- args: [
111
- {
112
- asset: KDocument<AssetContent>;
113
- device: KDocument<DeviceContent>;
114
- measures: MeasureContent[];
115
- }
116
- ];
117
- };
118
- /**
119
- * Event triggered after updating the data source and asset with new measures but
120
- * before persistence in database.
121
- */
122
- export type EventMeasurePersistSourceBefore = {
123
- name: "device-manager:measures:persist:sourceBefore";
124
42
  args: [
125
43
  {
126
44
  source: MeasureSource;
@@ -131,56 +49,10 @@ export type EventMeasurePersistSourceBefore = {
131
49
  ];
132
50
  };
133
51
  /**
134
- * Tenant event triggered after updating device and asset with new measures but
135
- * before persistence in database.
136
- *
137
- * @deprecated Replaced by new triggers implementing data sources
138
- */
139
- export type TenantEventMeasurePersistBefore = {
140
- name: `engine:${string}:device-manager:measures:persist:before`;
141
- args: [
142
- {
143
- asset: KDocument<AssetContent>;
144
- device: KDocument<DeviceContent>;
145
- measures: MeasureContent[];
146
- }
147
- ];
148
- };
149
- /**
150
- * Tenant event triggered after updating the data source and asset with new measures but
151
- * before persistence in database.
152
- */
153
- export type TenantEventMeasurePersistSourceBefore = {
154
- name: `engine:${string}:device-manager:measures:persist:sourceBefore`;
155
- args: [
156
- {
157
- source: MeasureSource;
158
- target: MeasureTarget;
159
- asset?: AssetContent;
160
- measures: MeasureContent[];
161
- }
162
- ];
163
- };
164
- /**
165
- * Event after processing new measures.
166
- *
167
- * @deprecated Replaced by new triggers implementing data sources
52
+ * Event after processing new measures from data source.
168
53
  */
169
54
  export type EventMeasureProcessAfter = {
170
55
  name: "device-manager:measures:process:after";
171
- args: [
172
- {
173
- asset: KDocument<AssetContent>;
174
- device: KDocument<DeviceContent>;
175
- measures: MeasureContent[];
176
- }
177
- ];
178
- };
179
- /**
180
- * Event after processing new measures from data source.
181
- */
182
- export type EventMeasureProcessSourceAfter = {
183
- name: "device-manager:measures:process:sourceAfter";
184
56
  args: [
185
57
  {
186
58
  source: MeasureSource;
@@ -191,26 +63,11 @@ export type EventMeasureProcessSourceAfter = {
191
63
  ];
192
64
  };
193
65
  /**
194
- * Tenant event after processing new measures.
66
+ * Tenant event after processing new measures from data source.
195
67
  *
196
- * @deprecated Replaced by new triggers implementing data sources
197
68
  */
198
69
  export type TenantEventMeasureProcessAfter = {
199
70
  name: `engine:${string}:device-manager:measures:process:after`;
200
- args: [
201
- {
202
- asset: KDocument<AssetContent>;
203
- device: KDocument<DeviceContent>;
204
- measures: MeasureContent[];
205
- }
206
- ];
207
- };
208
- /**
209
- * Tenant event after processing new measures from data source.
210
- *
211
- */
212
- export type TenantEventMeasureProcessSourceAfter = {
213
- name: `engine:${string}:device-manager:measures:process:sourceAfter`;
214
71
  args: [
215
72
  {
216
73
  source: MeasureSource;
@@ -7,8 +7,13 @@ interface AbstractMeasureSource {
7
7
  export interface DeviceMeasureSource extends AbstractMeasureSource {
8
8
  type: "device";
9
9
  reference: string;
10
+ deviceMetadata: Metadata;
10
11
  model: string;
11
12
  lastMeasuredAt?: number;
13
+ groups: Array<{
14
+ path: string;
15
+ date: number;
16
+ }>;
12
17
  }
13
18
  export interface ApiMeasureSource extends AbstractMeasureSource {
14
19
  type: "api";
@@ -2,7 +2,7 @@ import { KuzzleRequest } from "kuzzle";
2
2
  import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
3
3
  import { DeviceManagerPlugin } from "../plugin";
4
4
  import { BaseService, SearchParams } from "../shared";
5
- import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
5
+ import { AssetModelContent, DeviceModelContent, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
6
6
  import { SchemaObject } from "ajv";
7
7
  import { MeasureValuesDetails } from "../measure";
8
8
  import { NamedMeasures } from "../decoder";
@@ -10,26 +10,38 @@ export declare class ModelService extends BaseService {
10
10
  constructor(plugin: DeviceManagerPlugin);
11
11
  registerAskEvents(): void;
12
12
  private checkModelsConflicts;
13
- writeAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures, tooltipModels: TooltipModels): Promise<KDocument<AssetModelContent>>;
14
13
  private checkDefaultValues;
14
+ private checkGroupAffinity;
15
+ writeAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures, tooltipModels: TooltipModels, locales: {
16
+ [valueName: string]: LocaleDetails;
17
+ }): Promise<KDocument<AssetModelContent>>;
15
18
  writeDevice(model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures): Promise<KDocument<DeviceModelContent>>;
16
- writeMeasure(type: string, valuesMappings: JSONObject, validationSchema?: SchemaObject, valuesDetails?: MeasureValuesDetails): Promise<KDocument<MeasureModelContent>>;
19
+ writeGroup(engineGroup: string, model: string, affinity: JSONObject, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups): Promise<KDocument<GroupModelContent>>;
20
+ writeMeasure(type: string, valuesMappings: JSONObject, validationSchema?: SchemaObject, valuesDetails?: MeasureValuesDetails, locales?: {
21
+ [valueName: string]: LocaleDetails;
22
+ }): Promise<KDocument<MeasureModelContent>>;
17
23
  deleteAsset(_id: string): Promise<void>;
18
24
  deleteDevice(_id: string): Promise<void>;
25
+ deleteGroup(_id: string): Promise<void>;
19
26
  deleteMeasure(_id: string): Promise<void>;
20
27
  listAsset(engineGroup: string): Promise<KDocument<AssetModelContent>[]>;
21
28
  listDevices(): Promise<KDocument<DeviceModelContent>[]>;
29
+ listGroups(engineGroup: string): Promise<KDocument<GroupModelContent>[]>;
22
30
  listMeasures(): Promise<KDocument<MeasureModelContent>[]>;
23
31
  searchAssets(engineGroup: string, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<AssetModelContent>>>;
24
32
  searchDevices(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<DeviceModelContent>>>;
33
+ searchGroups(engineGroup: string, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<GroupModelContent>>>;
25
34
  searchMeasures(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<MeasureModelContent>>>;
26
35
  assetExists(model: string): Promise<boolean>;
27
36
  deviceExists(model: string): Promise<boolean>;
28
37
  getAsset(engineGroup: string, model: string): Promise<KDocument<AssetModelContent>>;
29
38
  getDevice(model: string): Promise<KDocument<DeviceModelContent>>;
39
+ getGroup(model: string): Promise<KDocument<GroupModelContent>>;
30
40
  getMeasure(type: string): Promise<KDocument<MeasureModelContent>>;
31
41
  /**
32
42
  * Update an asset model
33
43
  */
34
- updateAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, request: KuzzleRequest): Promise<KDocument<AssetModelContent>>;
44
+ updateAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, locales: {
45
+ [valueName: string]: LocaleDetails;
46
+ }, request: KuzzleRequest): Promise<KDocument<AssetModelContent>>;
35
47
  }
@@ -1,5 +1,5 @@
1
1
  import { TwinModelContent, TwinType } from "../plugin";
2
- import { MeasureModelContent } from "./exports";
2
+ import { GroupModelContent, MeasureModelContent } from "./exports";
3
3
  export type ConflictChunk = {
4
4
  sourceModel: string;
5
5
  newModel: string;
@@ -20,6 +20,14 @@ export type MappingsConflict = {
20
20
  * @returns An array of ConflictChunk between current twins and the new twin
21
21
  */
22
22
  export declare function getTwinConflicts<TDigitalTwin extends TwinModelContent>(twinType: TwinType, models: TDigitalTwin[], additional: TDigitalTwin): ConflictChunk[];
23
+ /**
24
+ * Return every conflicts between the mappings of group models and a new group model
25
+ *
26
+ * @param groups The already present group models
27
+ * @param additional The new group model
28
+ * @returns An array of ConflictChunk between current groups and the new group
29
+ */
30
+ export declare function getGroupConflicts(measures: GroupModelContent[], additional: GroupModelContent): ConflictChunk[];
23
31
  /**
24
32
  * Return every conflicts between the mappings of measure models and a new measure model
25
33
  *
@@ -1,24 +1,29 @@
1
1
  import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
2
  import { ModelService } from "./ModelService";
3
- import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, ApiModelUpdateAssetResult, ApiModelDeleteAssetResult, ApiModelDeleteDeviceResult, ApiModelDeleteMeasureResult, ApiModelListAssetsResult, ApiModelListDevicesResult, ApiModelListMeasuresResult, ApiModelGetAssetResult, ApiModelGetDeviceResult, ApiModelGetMeasureResult, ApiModelSearchAssetsResult, ApiModelSearchDevicesResult, ApiModelSearchMeasuresResult } from "./types/ModelApi";
3
+ import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, ApiModelUpdateAssetResult, ApiModelDeleteAssetResult, ApiModelDeleteDeviceResult, ApiModelDeleteMeasureResult, ApiModelListAssetsResult, ApiModelListDevicesResult, ApiModelListMeasuresResult, ApiModelGetAssetResult, ApiModelGetDeviceResult, ApiModelGetMeasureResult, ApiModelSearchAssetsResult, ApiModelSearchDevicesResult, ApiModelSearchMeasuresResult, ApiModelDeleteGroupResult, ApiModelGetGroupResult, ApiModelListGroupsResult, ApiModelSearchGroupsResult, ApiModelWriteGroupResult } from "./types/ModelApi";
4
4
  export declare class ModelsController {
5
5
  private modelService;
6
6
  definition: ControllerDefinition;
7
7
  constructor(modelService: ModelService);
8
8
  getAsset(request: KuzzleRequest): Promise<ApiModelGetAssetResult>;
9
9
  getDevice(request: KuzzleRequest): Promise<ApiModelGetDeviceResult>;
10
+ getGroup(request: KuzzleRequest): Promise<ApiModelGetGroupResult>;
10
11
  getMeasure(request: KuzzleRequest): Promise<ApiModelGetMeasureResult>;
11
12
  writeAsset(request: KuzzleRequest): Promise<ApiModelWriteAssetResult>;
12
13
  writeDevice(request: KuzzleRequest): Promise<ApiModelWriteDeviceResult>;
14
+ writeGroup(request: KuzzleRequest): Promise<ApiModelWriteGroupResult>;
13
15
  writeMeasure(request: KuzzleRequest): Promise<ApiModelWriteMeasureResult>;
14
16
  deleteAsset(request: KuzzleRequest): Promise<ApiModelDeleteAssetResult>;
15
17
  deleteDevice(request: KuzzleRequest): Promise<ApiModelDeleteDeviceResult>;
18
+ deleteGroup(request: KuzzleRequest): Promise<ApiModelDeleteGroupResult>;
16
19
  deleteMeasure(request: KuzzleRequest): Promise<ApiModelDeleteMeasureResult>;
17
20
  listAssets(request: KuzzleRequest): Promise<ApiModelListAssetsResult>;
18
21
  listDevices(): Promise<ApiModelListDevicesResult>;
22
+ listGroups(request: KuzzleRequest): Promise<ApiModelListGroupsResult>;
19
23
  listMeasures(): Promise<ApiModelListMeasuresResult>;
20
24
  searchAssets(request: KuzzleRequest): Promise<ApiModelSearchAssetsResult>;
21
25
  searchDevices(request: KuzzleRequest): Promise<ApiModelSearchDevicesResult>;
26
+ searchGroups(request: KuzzleRequest): Promise<ApiModelSearchGroupsResult>;
22
27
  searchMeasures(request: KuzzleRequest): Promise<ApiModelSearchMeasuresResult>;
23
28
  updateAsset(request: KuzzleRequest): Promise<ApiModelUpdateAssetResult>;
24
29
  }
@@ -1,13 +1,14 @@
1
1
  import { DeviceManagerPlugin } from "../plugin";
2
2
  import { NamedMeasures } from "../decoder";
3
3
  import { MeasureDefinition } from "../measure";
4
- import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
4
+ import { GroupAffinity, LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
5
5
  import { JSONObject } from "kuzzle-sdk";
6
6
  export declare class ModelsRegister {
7
7
  private config;
8
8
  private context;
9
9
  private assetModels;
10
10
  private deviceModels;
11
+ private groupModels;
11
12
  private measureModels;
12
13
  private get sdk();
13
14
  init(plugin: DeviceManagerPlugin): void;
@@ -25,7 +26,9 @@ export declare class ModelsRegister {
25
26
  * @param tooltipModels - Optional model list for tooltip, containing labels and tooltip content.
26
27
  * @throws PluginImplementationError if the model name is not in PascalCase.
27
28
  */
28
- registerAsset(engineGroup: string, model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, tooltipModels?: TooltipModels): void;
29
+ registerAsset(engineGroup: string, model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, tooltipModels?: TooltipModels, locales?: {
30
+ [valueName: string]: LocaleDetails;
31
+ }): void;
29
32
  /**
30
33
  * Registers a device model.
31
34
  *
@@ -38,6 +41,20 @@ export declare class ModelsRegister {
38
41
  * @throws PluginImplementationError if the model name is not in PascalCase.
39
42
  */
40
43
  registerDevice(model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups): void;
44
+ /**
45
+ * Registers a group model.
46
+ *
47
+ *
48
+ * @param engineGroup - The engine group name.
49
+ * @param model - The name of the group model, which must be in PascalCase.
50
+ * @param affinity - The type of object accepted and their model affinity.
51
+ * @param metadataMappings - The metadata mappings for the model, defaults to an empty object.
52
+ * @param defaultMetadata - The default metadata values for the model, defaults to an empty object.
53
+ * @param metadataDetails - Optional detailed metadata descriptions, localizations and definition.
54
+ * @param metadataGroups - Optional groups for organizing metadata, with localizations.
55
+ * @throws PluginImplementationError if the model name is not in PascalCase.
56
+ */
57
+ registerGroup(engineGroup: string, model: string, affinity: GroupAffinity, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups): void;
41
58
  registerMeasure(type: string, measureDefinition: MeasureDefinition): void;
42
59
  private load;
43
60
  }