kuzzle-device-manager-types 2.11.0-dev.1 → 3.0.0-3-dev.1

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 (85) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/lib/modules/asset/AssetModule.d.ts +1 -4
  3. package/dist/lib/modules/asset/AssetService.d.ts +7 -4
  4. package/dist/lib/modules/asset/AssetsController.d.ts +25 -7
  5. package/dist/lib/modules/asset/exports.d.ts +0 -4
  6. package/dist/lib/modules/asset/index.d.ts +1 -3
  7. package/dist/lib/modules/asset/types/AssetApi.d.ts +124 -9
  8. package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -16
  9. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
  10. package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
  11. package/dist/lib/modules/decoder/Decoder.d.ts +1 -1
  12. package/dist/lib/modules/decoder/DecodersController.d.ts +4 -1
  13. package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
  14. package/dist/lib/modules/device/DeviceService.d.ts +6 -47
  15. package/dist/lib/modules/device/DevicesController.d.ts +5 -5
  16. package/dist/lib/modules/device/collections/deviceMappings.d.ts +6 -0
  17. package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +2 -2
  18. package/dist/lib/modules/device/types/DeviceApi.d.ts +69 -41
  19. package/dist/lib/modules/device/types/DeviceContent.d.ts +56 -5
  20. package/dist/lib/modules/device/types/DeviceEvents.d.ts +9 -24
  21. package/dist/lib/modules/group/GroupsController.d.ts +37 -0
  22. package/dist/lib/modules/group/GroupsModule.d.ts +10 -0
  23. package/dist/lib/modules/group/GroupsService.d.ts +118 -0
  24. package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
  25. package/dist/lib/modules/group/exports.d.ts +5 -0
  26. package/dist/lib/modules/group/index.d.ts +4 -0
  27. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
  28. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
  29. package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
  30. package/dist/lib/modules/group/types/GroupsApi.d.ts +141 -0
  31. package/dist/lib/modules/measure/MeasureService.d.ts +11 -43
  32. package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
  33. package/dist/lib/modules/measure/MeasureTargetBuilder.d.ts +1 -1
  34. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -91
  35. package/dist/lib/modules/measure/exports.d.ts +0 -1
  36. package/dist/lib/modules/measure/index.d.ts +0 -1
  37. package/dist/lib/modules/measure/types/MeasureContent.d.ts +9 -2
  38. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +6 -149
  39. package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
  40. package/dist/lib/modules/measure/types/MeasureTarget.d.ts +1 -1
  41. package/dist/lib/modules/model/ModelService.d.ts +20 -14
  42. package/dist/lib/modules/model/ModelsController.d.ts +1 -1
  43. package/dist/lib/modules/model/ModelsRegister.d.ts +6 -5
  44. package/dist/lib/modules/model/types/ModelApi.d.ts +14 -9
  45. package/dist/lib/modules/model/types/ModelContent.d.ts +34 -3
  46. package/dist/lib/modules/model/types/ModelDefinition.d.ts +6 -2
  47. package/dist/lib/modules/model/types/ModelEvents.d.ts +3 -1
  48. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +15 -6
  49. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +10 -8
  50. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -14
  51. package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
  52. package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
  53. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +3 -1
  54. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +6 -1
  55. package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +70 -2
  56. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -5
  57. package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
  58. package/dist/tests/application/assets/Container.d.ts +3 -2
  59. package/dist/tests/application/decoders/DummyTempDecoder.d.ts +10 -0
  60. package/dist/tests/application/decoders/DummyTempPositionDecoder.d.ts +10 -0
  61. package/dist/tests/application/decoders/EmptyTempDecoder.d.ts +8 -0
  62. package/dist/tests/application/devices/EmptyTemp.d.ts +2 -0
  63. package/dist/tests/application/devices/index.d.ts +1 -0
  64. package/dist/tests/application/groups/AssetRestricted.d.ts +8 -0
  65. package/dist/tests/application/groups/DeviceRestricted.d.ts +8 -0
  66. package/dist/tests/application/groups/Parking.d.ts +2 -2
  67. package/dist/tests/application/groups/index.d.ts +2 -0
  68. package/dist/tests/application/measures/BatteryMeasure.d.ts +5 -0
  69. package/dist/tests/application/measures/HumidityMeasure.d.ts +5 -0
  70. package/dist/tests/application/measures/MovementMeasure.d.ts +5 -0
  71. package/dist/{lib/modules/measure → tests/application}/measures/PositionMeasure.d.ts +2 -2
  72. package/dist/tests/application/measures/TemperatureMeasure.d.ts +5 -0
  73. package/dist/tests/application/measures/index.d.ts +5 -0
  74. package/dist/tests/application/tests/controller.d.ts +0 -1
  75. package/package.json +1 -1
  76. package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -24
  77. package/dist/lib/modules/asset/AssetsGroupsService.d.ts +0 -49
  78. package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
  79. package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -11
  80. package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
  81. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
  82. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
  83. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
  84. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
  85. package/dist/lib/modules/measure/measures/index.d.ts +0 -5
@@ -1,50 +1,27 @@
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
  import { KuzzleLogger } from "kuzzle-logger";
9
8
  export declare class MeasureService extends BaseService {
10
9
  readonly logger: KuzzleLogger;
11
10
  constructor(plugin: DeviceManagerPlugin, logger: KuzzleLogger);
12
11
  /**
13
- * Register new measures from an API, updates :
12
+ * Register new measures updates :
14
13
  * - asset
15
14
  * - engine measures
16
15
  *
17
16
  * This method represents the ingestion pipeline:
18
17
  * - trigger events `before` (measure enrichment)
19
- * - save documents (measures and asset)
18
+ * - save documents (measures & device metadata)
20
19
  * - trigger events `after`
21
20
  */
22
- ingestApi(source: ApiMeasureSource, target: ApiMeasureTarget, measurements: DecodedMeasurement<JSONObject>[], payloadUuids: string[]): Promise<void>;
23
- /**
24
- * Register new measures from a device, updates :
25
- * - admin device
26
- * - engine device
27
- * - linked asset
28
- * - engine measures
29
- *
30
- * A mutex ensure that a device can ingest one measure at a time.
31
- *
32
- * This method represents the ingestion pipeline:
33
- * - build measures documents and update digital twins (device and asset)
34
- * - trigger events `before` (measure enrichment)
35
- * - save documents (measures, device and asset)
36
- * - trigger events `after`
37
- *
38
- * @deprecated
39
- */
40
- ingest(device: KDocument<DeviceContent>, measurements: DecodedMeasurement<JSONObject>[], metadata: Metadata, payloadUuids: string[]): Promise<void>;
41
- private updateDeviceMeasures;
42
- /**
43
- * Update asset with each non-null non-computed measures.
44
- *
45
- * @returns A map of each asset state by measuredAt timestamp.
46
- */
47
- private updateAssetMeasures;
21
+ ingest(source: MeasureSource, target: MeasureTarget, measurements: DecodedMeasurement<JSONObject>[], payloadUuids: string[]): Promise<void>;
22
+ private buildDeviceMeasures;
23
+ private ingestDeviceMeasures;
24
+ private ingestApiMeasures;
48
25
  /**
49
26
  * Build the measures document received from the API
50
27
  *
@@ -52,14 +29,10 @@ export declare class MeasureService extends BaseService {
52
29
  * @param asset The target asset to build the measure for
53
30
  * @param measure The decoded raw measures
54
31
  * @param payloadUuids The uuid's of the payloads used to create the measure
55
- *
32
+ * @param engineGroup engineGroup of model
56
33
  * @returns A MeasurementContent builded from parameters
57
34
  */
58
35
  private buildApiMeasures;
59
- /**
60
- * Build the measures documents to save
61
- */
62
- private buildMeasures;
63
36
  /**
64
37
  * Find an asset by its ID and its engine ID.
65
38
  *
@@ -89,9 +62,4 @@ export declare class MeasureService extends BaseService {
89
62
  * @throws If the device is not linked to the asset
90
63
  */
91
64
  private findAssetMeasureNameFromDevice;
92
- private mutexUpdateAsset;
93
- /**
94
- * Create a new document in the collection asset-history, for each asset state
95
- */
96
- private historizeAssetStates;
97
65
  }
@@ -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,3 +1,3 @@
1
1
  import { ApiMeasureTarget, DeviceMeasureTarget } from "./types/MeasureTarget";
2
- export declare function toApiTarget(indexId: string, assetId: string, engineGroup?: string): ApiMeasureTarget;
2
+ export declare function toApiTarget(indexId: string, assetId: string, engineGroups?: string[]): ApiMeasureTarget;
3
3
  export declare function toDeviceTarget(indexId: string, assetId?: string): DeviceMeasureTarget;
@@ -1,96 +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
- softTenant: {
54
- type: string;
55
- fields: {
56
- text: {
57
- type: string;
58
- };
59
- };
60
- };
61
- };
62
- };
63
- /**
64
- * Define the origin of the measure.
65
- */
66
- origin: {
67
- properties: {
68
- type: {
69
- type: string;
70
- };
71
- measureName: {
72
- type: string;
73
- };
74
- deviceMetadata: {
75
- properties: {};
76
- };
77
- apiMetadata: {
78
- dynamic: string;
79
- properties: {};
80
- };
81
- payloadUuids: {
82
- type: string;
83
- };
84
- deviceModel: {
85
- type: string;
86
- };
87
- reference: {
88
- type: string;
89
- };
90
- _id: {
91
- type: string;
92
- };
93
- };
94
- };
95
- };
96
- };
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";
@@ -1,6 +1,6 @@
1
1
  import { JSONObject, KDocumentContent } from "kuzzle-sdk";
2
- import { Metadata } from "../../../modules/shared";
3
- import { AssetMeasureContext } from "../../../modules/asset";
2
+ import { Metadata } from "../../shared";
3
+ import { AssetMeasureContext } from "../../asset";
4
4
  interface AbstractMeasureOrigin {
5
5
  /**
6
6
  * Origin of the measure
@@ -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,25 +1,8 @@
1
- import { JSONObject, KDocument } from "kuzzle-sdk";
2
- import { DeviceContent } from "../../../modules/device";
3
- import { AssetContent } from "../../../modules/asset";
4
- import { Metadata } from "../../../modules/shared";
1
+ import { JSONObject } from "kuzzle-sdk";
2
+ import { AssetContent } from "../../asset";
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";
@@ -9,7 +9,7 @@ export interface DeviceMeasureTarget extends AbstractMeasureTarget {
9
9
  export interface ApiMeasureTarget extends AbstractMeasureTarget {
10
10
  type: "api";
11
11
  assetId: string;
12
- engineGroup?: string;
12
+ engineGroups?: string[];
13
13
  }
14
14
  export declare function isTarget(target: any): target is AbstractMeasureTarget;
15
15
  export declare function isTargetDevice(target: any): target is DeviceMeasureTarget;
@@ -12,37 +12,43 @@ export declare class ModelService extends BaseService {
12
12
  constructor(plugin: DeviceManagerPlugin, logger: KuzzleLogger);
13
13
  registerAskEvents(): void;
14
14
  private checkModelsConflicts;
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>>;
18
15
  private checkDefaultValues;
16
+ private checkGroupAffinity;
17
+ writeAsset(engineGroups: string[], model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures, tooltipModels: TooltipModels, locales: {
18
+ [valueName: string]: LocaleDetails;
19
+ }, engineIds?: string[]): Promise<KDocument<AssetModelContent>>;
19
20
  writeDevice(model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures): Promise<KDocument<DeviceModelContent>>;
20
- writeGroup(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups): Promise<KDocument<GroupModelContent>>;
21
+ writeGroup(engineGroups: string[], model: string, affinity: JSONObject, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups): Promise<KDocument<GroupModelContent>>;
21
22
  writeMeasure(type: string, valuesMappings: JSONObject, validationSchema?: SchemaObject, valuesDetails?: MeasureValuesDetails, locales?: {
22
23
  [valueName: string]: LocaleDetails;
23
- }): Promise<KDocument<MeasureModelContent>>;
24
+ }, engineIds?: string[]): Promise<KDocument<MeasureModelContent>>;
24
25
  deleteAsset(_id: string): Promise<void>;
25
26
  deleteDevice(_id: string): Promise<void>;
26
27
  deleteGroup(_id: string): Promise<void>;
27
28
  deleteMeasure(_id: string): Promise<void>;
28
- listAsset(engineGroup: string): Promise<KDocument<AssetModelContent>[]>;
29
+ listAsset(engineGroups: string[], engineId?: string): Promise<KDocument<AssetModelContent>[]>;
29
30
  listDevices(): Promise<KDocument<DeviceModelContent>[]>;
30
- listGroups(engineGroup: string): Promise<KDocument<GroupModelContent>[]>;
31
- listMeasures(): Promise<KDocument<MeasureModelContent>[]>;
32
- searchAssets(engineGroup: string, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<AssetModelContent>>>;
31
+ listGroups(engineGroups: string[]): Promise<KDocument<GroupModelContent>[]>;
32
+ listMeasures(engineId?: string): Promise<KDocument<MeasureModelContent>[]>;
33
+ searchAssets(engineGroups: string[], engineId: string | undefined, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<AssetModelContent>>>;
33
34
  searchDevices(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<DeviceModelContent>>>;
34
- searchGroups(engineGroup: string, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<GroupModelContent>>>;
35
- searchMeasures(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<MeasureModelContent>>>;
35
+ searchGroups(engineGroups: string[], searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<GroupModelContent>>>;
36
+ searchMeasures(engineId: string | undefined, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<MeasureModelContent>>>;
36
37
  assetExists(model: string): Promise<boolean>;
37
38
  deviceExists(model: string): Promise<boolean>;
38
- getAsset(engineGroup: string, model: string): Promise<KDocument<AssetModelContent>>;
39
+ getAsset(engineGroups: string[], engineId: string | undefined, model: string): Promise<KDocument<AssetModelContent>>;
39
40
  getDevice(model: string): Promise<KDocument<DeviceModelContent>>;
40
41
  getGroup(model: string): Promise<KDocument<GroupModelContent>>;
41
- getMeasure(type: string): Promise<KDocument<MeasureModelContent>>;
42
+ getMeasure(type: string, engineId?: string): Promise<KDocument<MeasureModelContent>>;
43
+ /**
44
+ * Checks that creating/updating a measure model does not shadow an existing
45
+ * one at a different scope (global vs tenant-scoped).
46
+ */
47
+ private checkMeasureShadowing;
42
48
  /**
43
49
  * Update an asset model
44
50
  */
45
- updateAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, locales: {
51
+ updateAsset(engineGroups: string[], model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, locales: {
46
52
  [valueName: string]: LocaleDetails;
47
53
  }, request: KuzzleRequest): Promise<KDocument<AssetModelContent>>;
48
54
  }
@@ -22,7 +22,7 @@ export declare class ModelsController {
22
22
  listAssets(request: KuzzleRequest): Promise<ApiModelListAssetsResult>;
23
23
  listDevices(): Promise<ApiModelListDevicesResult>;
24
24
  listGroups(request: KuzzleRequest): Promise<ApiModelListGroupsResult>;
25
- listMeasures(): Promise<ApiModelListMeasuresResult>;
25
+ listMeasures(request: KuzzleRequest): Promise<ApiModelListMeasuresResult>;
26
26
  searchAssets(request: KuzzleRequest): Promise<ApiModelSearchAssetsResult>;
27
27
  searchDevices(request: KuzzleRequest): Promise<ApiModelSearchDevicesResult>;
28
28
  searchGroups(request: KuzzleRequest): Promise<ApiModelSearchGroupsResult>;
@@ -1,7 +1,7 @@
1
1
  import { DeviceManagerPlugin } from "../plugin";
2
2
  import { NamedMeasures } from "../decoder";
3
3
  import { MeasureDefinition } from "../measure";
4
- import { LocaleDetails, 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;
@@ -17,7 +17,7 @@ export declare class ModelsRegister {
17
17
  /**
18
18
  * Registers an asset model.
19
19
  *
20
- * @param engineGroup - The engine group name.
20
+ * @param engineGroups - The engine group names.
21
21
  * @param model - The name of the asset model, which must be in PascalCase.
22
22
  * @param measures - The measures associated with this asset model.
23
23
  * @param metadataMappings - The metadata mappings for the model, defaults to an empty object.
@@ -27,7 +27,7 @@ export declare class ModelsRegister {
27
27
  * @param tooltipModels - Optional model list for tooltip, containing labels and tooltip content.
28
28
  * @throws PluginImplementationError if the model name is not in PascalCase.
29
29
  */
30
- registerAsset(engineGroup: string, model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, tooltipModels?: TooltipModels, locales?: {
30
+ registerAsset(engineGroups: string[], model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, tooltipModels?: TooltipModels, locales?: {
31
31
  [valueName: string]: LocaleDetails;
32
32
  }): void;
33
33
  /**
@@ -46,15 +46,16 @@ export declare class ModelsRegister {
46
46
  * Registers a group model.
47
47
  *
48
48
  *
49
- * @param engineGroup - The engine group name.
49
+ * @param engineGroups - The engine group names.
50
50
  * @param model - The name of the group model, which must be in PascalCase.
51
+ * @param affinity - The type of object accepted and their model affinity.
51
52
  * @param metadataMappings - The metadata mappings for the model, defaults to an empty object.
52
53
  * @param defaultMetadata - The default metadata values for the model, defaults to an empty object.
53
54
  * @param metadataDetails - Optional detailed metadata descriptions, localizations and definition.
54
55
  * @param metadataGroups - Optional groups for organizing metadata, with localizations.
55
56
  * @throws PluginImplementationError if the model name is not in PascalCase.
56
57
  */
57
- registerGroup(engineGroup: string, model: string, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups): void;
58
+ registerGroup(engineGroups: string[], model: string, affinity: GroupAffinity, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups): void;
58
59
  registerMeasure(type: string, measureDefinition: MeasureDefinition): void;
59
60
  private load;
60
61
  }