kuzzle-device-manager-types 2.11.0 → 3.0.0-3-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/lib/modules/asset/AssetModule.d.ts +1 -4
- package/dist/lib/modules/asset/AssetService.d.ts +7 -4
- package/dist/lib/modules/asset/AssetsController.d.ts +25 -7
- package/dist/lib/modules/asset/exports.d.ts +0 -4
- package/dist/lib/modules/asset/index.d.ts +1 -3
- package/dist/lib/modules/asset/types/AssetApi.d.ts +124 -9
- package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -16
- package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
- package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
- package/dist/lib/modules/decoder/Decoder.d.ts +1 -1
- package/dist/lib/modules/decoder/DecodersController.d.ts +4 -1
- package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
- package/dist/lib/modules/device/DeviceService.d.ts +6 -47
- package/dist/lib/modules/device/DevicesController.d.ts +5 -5
- package/dist/lib/modules/device/collections/deviceMappings.d.ts +6 -0
- package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +2 -2
- package/dist/lib/modules/device/types/DeviceApi.d.ts +69 -41
- package/dist/lib/modules/device/types/DeviceContent.d.ts +56 -5
- package/dist/lib/modules/device/types/DeviceEvents.d.ts +9 -24
- package/dist/lib/modules/group/GroupsController.d.ts +37 -0
- package/dist/lib/modules/group/GroupsModule.d.ts +10 -0
- package/dist/lib/modules/group/GroupsService.d.ts +118 -0
- package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
- package/dist/lib/modules/group/exports.d.ts +5 -0
- package/dist/lib/modules/group/index.d.ts +4 -0
- package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
- package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
- package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
- package/dist/lib/modules/group/types/GroupsApi.d.ts +141 -0
- package/dist/lib/modules/measure/MeasureService.d.ts +11 -43
- package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
- package/dist/lib/modules/measure/MeasureTargetBuilder.d.ts +1 -1
- package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -91
- package/dist/lib/modules/measure/exports.d.ts +0 -1
- package/dist/lib/modules/measure/index.d.ts +0 -1
- package/dist/lib/modules/measure/types/MeasureContent.d.ts +9 -2
- package/dist/lib/modules/measure/types/MeasureEvents.d.ts +6 -149
- package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
- package/dist/lib/modules/measure/types/MeasureTarget.d.ts +1 -1
- package/dist/lib/modules/model/ModelService.d.ts +20 -14
- package/dist/lib/modules/model/ModelsController.d.ts +1 -1
- package/dist/lib/modules/model/ModelsRegister.d.ts +6 -5
- package/dist/lib/modules/model/types/ModelApi.d.ts +15 -9
- package/dist/lib/modules/model/types/ModelContent.d.ts +35 -3
- package/dist/lib/modules/model/types/ModelDefinition.d.ts +6 -2
- package/dist/lib/modules/model/types/ModelEvents.d.ts +3 -1
- package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +15 -6
- package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +10 -8
- package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -14
- package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
- package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
- package/dist/lib/modules/shared/services/AbstractExporter.d.ts +3 -1
- package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +6 -1
- package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +70 -2
- package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -5
- package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
- package/dist/tests/application/assets/Container.d.ts +3 -2
- package/dist/tests/application/decoders/DummyTempDecoder.d.ts +10 -0
- package/dist/tests/application/decoders/DummyTempPositionDecoder.d.ts +10 -0
- package/dist/tests/application/decoders/EmptyTempDecoder.d.ts +8 -0
- package/dist/tests/application/devices/EmptyTemp.d.ts +2 -0
- package/dist/tests/application/devices/index.d.ts +1 -0
- package/dist/tests/application/groups/AssetRestricted.d.ts +8 -0
- package/dist/tests/application/groups/DeviceRestricted.d.ts +8 -0
- package/dist/tests/application/groups/Parking.d.ts +2 -2
- package/dist/tests/application/groups/index.d.ts +2 -0
- package/dist/tests/application/measures/BatteryMeasure.d.ts +5 -0
- package/dist/tests/application/measures/HumidityMeasure.d.ts +5 -0
- package/dist/tests/application/measures/MovementMeasure.d.ts +5 -0
- package/dist/{lib/modules/measure → tests/application}/measures/PositionMeasure.d.ts +2 -2
- package/dist/tests/application/measures/TemperatureMeasure.d.ts +5 -0
- package/dist/tests/application/measures/index.d.ts +5 -0
- package/dist/tests/application/tests/controller.d.ts +0 -1
- package/package.json +1 -1
- package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -24
- package/dist/lib/modules/asset/AssetsGroupsService.d.ts +0 -49
- package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
- package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -11
- package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
- package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
- package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
- package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
- package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
- package/dist/lib/modules/measure/measures/index.d.ts +0 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
2
|
-
import { AssetModelContent, DeviceModelContent, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
2
|
+
import { AssetModelContent, DeviceModelContent, GroupAffinity, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
3
3
|
import { SchemaObject } from "ajv";
|
|
4
4
|
import { MeasureValuesDetails } from "../../measure/types/MeasureDefinition";
|
|
5
5
|
interface ModelsControllerRequest {
|
|
@@ -8,7 +8,7 @@ interface ModelsControllerRequest {
|
|
|
8
8
|
export interface ApiModelGetAssetRequest extends ModelsControllerRequest {
|
|
9
9
|
action: "getAsset";
|
|
10
10
|
model: string;
|
|
11
|
-
|
|
11
|
+
engineGroups: string[];
|
|
12
12
|
}
|
|
13
13
|
export type ApiModelGetAssetResult = KDocument<AssetModelContent>;
|
|
14
14
|
export interface ApiModelGetDeviceRequest extends ModelsControllerRequest {
|
|
@@ -24,12 +24,14 @@ export type ApiModelGetGroupResult = KDocument<GroupModelContent>;
|
|
|
24
24
|
export interface ApiModelGetMeasureRequest extends ModelsControllerRequest {
|
|
25
25
|
action: "getMeasure";
|
|
26
26
|
type: string;
|
|
27
|
+
engineId?: string;
|
|
27
28
|
}
|
|
28
29
|
export type ApiModelGetMeasureResult = KDocument<MeasureModelContent>;
|
|
29
30
|
export interface ApiModelWriteAssetRequest extends ModelsControllerRequest {
|
|
30
31
|
action: "writeAsset";
|
|
31
32
|
body: {
|
|
32
|
-
|
|
33
|
+
engineGroups: string[];
|
|
34
|
+
engineIds?: string[];
|
|
33
35
|
model: string;
|
|
34
36
|
metadataDetails?: MetadataDetails;
|
|
35
37
|
metadataGroups?: MetadataGroups;
|
|
@@ -58,7 +60,8 @@ export type ApiModelWriteDeviceResult = KDocument<DeviceModelContent>;
|
|
|
58
60
|
export interface ApiModelWriteGroupRequest extends ModelsControllerRequest {
|
|
59
61
|
action: "writeGroup";
|
|
60
62
|
body: {
|
|
61
|
-
|
|
63
|
+
affinity: GroupAffinity;
|
|
64
|
+
engineGroups: string[];
|
|
62
65
|
model: string;
|
|
63
66
|
metadataDetails?: MetadataDetails;
|
|
64
67
|
metadataGroups?: MetadataGroups;
|
|
@@ -71,6 +74,7 @@ export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
|
|
|
71
74
|
action: "writeMeasure";
|
|
72
75
|
body: {
|
|
73
76
|
type: string;
|
|
77
|
+
engineIds?: string[];
|
|
74
78
|
locales?: {
|
|
75
79
|
[valueName: string]: LocaleDetails;
|
|
76
80
|
};
|
|
@@ -82,7 +86,7 @@ export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
|
|
|
82
86
|
export type ApiModelWriteMeasureResult = KDocument<MeasureModelContent>;
|
|
83
87
|
export interface ApiModelUpdateAssetRequest extends ModelsControllerRequest {
|
|
84
88
|
action: "updateAsset";
|
|
85
|
-
|
|
89
|
+
engineGroups: string[];
|
|
86
90
|
model: string;
|
|
87
91
|
body: {
|
|
88
92
|
metadataDetails?: MetadataDetails;
|
|
@@ -119,7 +123,7 @@ export interface ApiModelDeleteMeasureRequest extends ModelsControllerRequest {
|
|
|
119
123
|
export type ApiModelDeleteMeasureResult = void;
|
|
120
124
|
export interface ApiModelListAssetsRequest extends ModelsControllerRequest {
|
|
121
125
|
action: "listAssets";
|
|
122
|
-
|
|
126
|
+
engineGroups: string[];
|
|
123
127
|
}
|
|
124
128
|
export type ApiModelListAssetsResult = {
|
|
125
129
|
models: KDocument<AssetModelContent>[];
|
|
@@ -134,7 +138,7 @@ export type ApiModelListDevicesResult = {
|
|
|
134
138
|
};
|
|
135
139
|
export interface ApiModelListGroupsRequest extends ModelsControllerRequest {
|
|
136
140
|
action: "listGroups";
|
|
137
|
-
|
|
141
|
+
engineGroups: string[];
|
|
138
142
|
}
|
|
139
143
|
export type ApiModelListGroupsResult = {
|
|
140
144
|
models: KDocument<GroupModelContent>[];
|
|
@@ -142,6 +146,7 @@ export type ApiModelListGroupsResult = {
|
|
|
142
146
|
};
|
|
143
147
|
export interface ApiModelListMeasuresRequest extends ModelsControllerRequest {
|
|
144
148
|
action: "listMeasures";
|
|
149
|
+
engineId?: string;
|
|
145
150
|
}
|
|
146
151
|
export type ApiModelListMeasuresResult = {
|
|
147
152
|
models: KDocument<MeasureModelContent>[];
|
|
@@ -149,7 +154,7 @@ export type ApiModelListMeasuresResult = {
|
|
|
149
154
|
};
|
|
150
155
|
export interface ApiModelSearchAssetsRequest extends ModelsControllerRequest {
|
|
151
156
|
action: "searchAssets";
|
|
152
|
-
|
|
157
|
+
engineGroups: string[];
|
|
153
158
|
from?: number;
|
|
154
159
|
size?: number;
|
|
155
160
|
scrollTTL?: string;
|
|
@@ -166,7 +171,7 @@ export interface ApiModelSearchDevicesRequest extends ModelsControllerRequest {
|
|
|
166
171
|
export type ApiModelSearchDevicesResult = SearchResult<KHit<DeviceModelContent>>;
|
|
167
172
|
export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
|
|
168
173
|
action: "searchGroups";
|
|
169
|
-
|
|
174
|
+
engineGroups: string[];
|
|
170
175
|
from?: number;
|
|
171
176
|
size?: number;
|
|
172
177
|
scrollTTL?: string;
|
|
@@ -175,6 +180,7 @@ export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
|
|
|
175
180
|
export type ApiModelSearchGroupsResult = SearchResult<KHit<GroupModelContent>>;
|
|
176
181
|
export interface ApiModelSearchMeasuresRequest extends ModelsControllerRequest {
|
|
177
182
|
action: "searchMeasures";
|
|
183
|
+
engineId?: string;
|
|
178
184
|
from?: number;
|
|
179
185
|
size?: number;
|
|
180
186
|
scrollTTL?: string;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { JSONObject, KDocumentContent } from "kuzzle-sdk";
|
|
2
|
-
import { NamedMeasures } from "
|
|
2
|
+
import { NamedMeasures } from "../../decoder";
|
|
3
3
|
import { MeasureDefinition } from "../../measure";
|
|
4
4
|
export interface MeasureModelContent extends KDocumentContent {
|
|
5
5
|
type: "measure";
|
|
6
|
+
engineGroups?: string[];
|
|
7
|
+
engineIds?: string[];
|
|
6
8
|
measure: MeasureDefinition & {
|
|
7
9
|
type: string;
|
|
8
10
|
locales?: {
|
|
@@ -23,6 +25,23 @@ export interface MetadataObject {
|
|
|
23
25
|
export interface MetadataMappings {
|
|
24
26
|
[key: string]: MetadataProperty | MetadataObject;
|
|
25
27
|
}
|
|
28
|
+
export interface GroupAffinity {
|
|
29
|
+
/**
|
|
30
|
+
* Type of elements accepted in the group
|
|
31
|
+
*/
|
|
32
|
+
type: Array<"assets" | "devices">;
|
|
33
|
+
/**
|
|
34
|
+
* Models accepted in the group
|
|
35
|
+
*/
|
|
36
|
+
models: {
|
|
37
|
+
assets?: string[];
|
|
38
|
+
devices?: string[];
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Weather the affinities are a strict restriction or not
|
|
42
|
+
*/
|
|
43
|
+
strict: boolean;
|
|
44
|
+
}
|
|
26
45
|
export interface LocaleDetails {
|
|
27
46
|
friendlyName: string;
|
|
28
47
|
description: string;
|
|
@@ -136,7 +155,13 @@ export interface TooltipModels {
|
|
|
136
155
|
}
|
|
137
156
|
export interface AssetModelContent extends KDocumentContent {
|
|
138
157
|
type: "asset";
|
|
139
|
-
|
|
158
|
+
engineGroups: string[];
|
|
159
|
+
/**
|
|
160
|
+
* Optional list of engine IDs (tenant IDs) this model is scoped to.
|
|
161
|
+
* When set, the model is only available to the specified tenants.
|
|
162
|
+
* When absent, the model is available to all tenants in the engineGroups.
|
|
163
|
+
*/
|
|
164
|
+
engineIds?: string[];
|
|
140
165
|
asset: {
|
|
141
166
|
/**
|
|
142
167
|
* Name of the model
|
|
@@ -268,6 +293,9 @@ export interface AssetModelContent extends KDocumentContent {
|
|
|
268
293
|
* ]
|
|
269
294
|
*/
|
|
270
295
|
tooltipModels?: TooltipModels;
|
|
296
|
+
/**
|
|
297
|
+
* Translations specific to the model
|
|
298
|
+
*/
|
|
271
299
|
locales?: {
|
|
272
300
|
[locale: string]: LocaleDetails;
|
|
273
301
|
};
|
|
@@ -364,12 +392,16 @@ export interface DeviceModelContent extends KDocumentContent {
|
|
|
364
392
|
}
|
|
365
393
|
export interface GroupModelContent extends KDocumentContent {
|
|
366
394
|
type: "group";
|
|
367
|
-
|
|
395
|
+
engineGroups: string[];
|
|
368
396
|
group: {
|
|
369
397
|
/**
|
|
370
398
|
* Name of the model
|
|
371
399
|
*/
|
|
372
400
|
model: string;
|
|
401
|
+
/**
|
|
402
|
+
* Group types and model affinities
|
|
403
|
+
*/
|
|
404
|
+
affinity: GroupAffinity;
|
|
373
405
|
/**
|
|
374
406
|
* Metadata mappings.
|
|
375
407
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JSONObject } from "kuzzle-sdk";
|
|
2
|
-
import { Decoder, NamedMeasures } from "
|
|
3
|
-
import { LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
2
|
+
import { Decoder, NamedMeasures } from "../../decoder";
|
|
3
|
+
import { GroupAffinity, LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
4
4
|
/**
|
|
5
5
|
* Define an asset model
|
|
6
6
|
*
|
|
@@ -279,6 +279,10 @@ export type DeviceModelDefinition = {
|
|
|
279
279
|
*
|
|
280
280
|
*/
|
|
281
281
|
export type GroupModelDefinition = {
|
|
282
|
+
/**
|
|
283
|
+
* Metadata mappings definition
|
|
284
|
+
*/
|
|
285
|
+
affinity: GroupAffinity;
|
|
282
286
|
/**
|
|
283
287
|
* Metadata mappings definition
|
|
284
288
|
*/
|
|
@@ -2,7 +2,8 @@ import { AssetModelContent, DeviceModelContent, GroupModelContent, MeasureModelC
|
|
|
2
2
|
export type AskModelAssetGet = {
|
|
3
3
|
name: "ask:device-manager:model:asset:get";
|
|
4
4
|
payload: {
|
|
5
|
-
|
|
5
|
+
engineGroups: string[];
|
|
6
|
+
engineId?: string;
|
|
6
7
|
model: string;
|
|
7
8
|
};
|
|
8
9
|
result: AssetModelContent;
|
|
@@ -18,6 +19,7 @@ export type AskModelMeasureGet = {
|
|
|
18
19
|
name: "ask:device-manager:model:measure:get";
|
|
19
20
|
payload: {
|
|
20
21
|
type: string;
|
|
22
|
+
engineId?: string;
|
|
21
23
|
};
|
|
22
24
|
result: MeasureModelContent;
|
|
23
25
|
};
|
|
@@ -42,7 +42,7 @@ export type AskEngineUpdateConflict = {
|
|
|
42
42
|
export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlugin> {
|
|
43
43
|
config: DeviceManagerConfiguration;
|
|
44
44
|
get app(): Backend;
|
|
45
|
-
constructor(plugin: Plugin,
|
|
45
|
+
constructor(plugin: Plugin, platformConfigManager: ConfigManager, engineConfigManager: ConfigManager);
|
|
46
46
|
/**
|
|
47
47
|
* Return conflicts between the new and already present twin models
|
|
48
48
|
*
|
|
@@ -107,14 +107,14 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
107
107
|
*/
|
|
108
108
|
createAssetsHistoryCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
|
|
109
109
|
/**
|
|
110
|
-
* Create the
|
|
110
|
+
* Create the groups collection with the groups mappings in the engine
|
|
111
111
|
*
|
|
112
112
|
* @param engineId The target engine Id
|
|
113
113
|
* @param engineGroup The engine group
|
|
114
114
|
*
|
|
115
|
-
* @throws If it failed during the
|
|
115
|
+
* @throws If it failed during the groups collection creation
|
|
116
116
|
*/
|
|
117
|
-
|
|
117
|
+
createGroupsCollection(engineId: string): Promise<InternalCollection>;
|
|
118
118
|
/**
|
|
119
119
|
* Generate devices mappings and create the devices collection in the engine
|
|
120
120
|
*
|
|
@@ -124,6 +124,15 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
124
124
|
* @throws If it failed during the devices collection creation
|
|
125
125
|
*/
|
|
126
126
|
createDevicesCollection(engineId: string): Promise<InternalCollection>;
|
|
127
|
+
/**
|
|
128
|
+
* Generate devices mappings and create the devices collection in the engine
|
|
129
|
+
*
|
|
130
|
+
* @param engineId The target engine Id
|
|
131
|
+
* @param engineGroup The engine group
|
|
132
|
+
*
|
|
133
|
+
* @throws If it failed during the devices collection creation
|
|
134
|
+
*/
|
|
135
|
+
createPlatformDevicesCollection(): Promise<InternalCollection>;
|
|
127
136
|
/**
|
|
128
137
|
* Generate measures mappings and create the measures collection in the engine
|
|
129
138
|
*
|
|
@@ -186,10 +195,10 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
186
195
|
*/
|
|
187
196
|
private getModels;
|
|
188
197
|
/**
|
|
189
|
-
* Detach all devices of an index in the
|
|
198
|
+
* Detach all devices of an index in the platform index
|
|
190
199
|
*
|
|
191
200
|
* @param engineId The target engine Id
|
|
192
201
|
* @returns {any}
|
|
193
202
|
*/
|
|
194
|
-
private
|
|
203
|
+
private detachDevicesFromPlatformIndex;
|
|
195
204
|
}
|
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
import { Plugin, PluginContext } from "kuzzle";
|
|
2
2
|
import { JSONObject } from "kuzzle-sdk";
|
|
3
3
|
import { MeasureDefinition } from "../measure";
|
|
4
|
-
import {
|
|
4
|
+
import { DecodersRegister } from "../decoder";
|
|
5
|
+
import { AssetModelDefinition, DeviceModelDefinition, GroupModelDefinition, ModelsRegister } from "../model";
|
|
5
6
|
import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
|
|
6
7
|
export declare class DeviceManagerPlugin extends Plugin {
|
|
7
8
|
config: DeviceManagerConfiguration;
|
|
8
9
|
private deviceManagerEngine;
|
|
9
|
-
private
|
|
10
|
+
private platformConfigManager;
|
|
10
11
|
private engineConfigManager;
|
|
11
12
|
private engineController;
|
|
12
13
|
private assetModule;
|
|
13
14
|
private deviceModule;
|
|
15
|
+
private groupModule;
|
|
14
16
|
private decoderModule;
|
|
15
17
|
private measureModule;
|
|
16
18
|
private modelModule;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
readonly modelsRegister: ModelsRegister;
|
|
20
|
+
readonly decodersRegister: DecodersRegister;
|
|
19
21
|
private get sdk();
|
|
20
22
|
get models(): {
|
|
21
23
|
/**
|
|
22
24
|
* Register an asset model
|
|
23
25
|
*
|
|
24
|
-
* @param
|
|
26
|
+
* @param engineGroups Engine group names
|
|
25
27
|
* @param model Name of the asset model. Must follow a naming convention in PascalCase.
|
|
26
28
|
* @param definition Object containing the asset model definition, including:
|
|
27
29
|
* - measures: Array describing measure names and their types.
|
|
@@ -121,7 +123,7 @@ export declare class DeviceManagerPlugin extends Plugin {
|
|
|
121
123
|
* );
|
|
122
124
|
* ```
|
|
123
125
|
*/
|
|
124
|
-
registerAsset: (
|
|
126
|
+
registerAsset: (engineGroups: string[], model: string, definition: AssetModelDefinition) => void;
|
|
125
127
|
/**
|
|
126
128
|
* Register a device.
|
|
127
129
|
*
|
|
@@ -229,7 +231,7 @@ export declare class DeviceManagerPlugin extends Plugin {
|
|
|
229
231
|
* );
|
|
230
232
|
* ```
|
|
231
233
|
*/
|
|
232
|
-
registerGroup: (
|
|
234
|
+
registerGroup: (engineGroups: string[], model: string, definition: GroupModelDefinition) => void;
|
|
233
235
|
/**
|
|
234
236
|
* Register a new measure
|
|
235
237
|
*
|
|
@@ -253,7 +255,7 @@ export declare class DeviceManagerPlugin extends Plugin {
|
|
|
253
255
|
*/
|
|
254
256
|
init(config: JSONObject, context: PluginContext): Promise<void>;
|
|
255
257
|
/**
|
|
256
|
-
* Initialize the
|
|
258
|
+
* Initialize the platform index of the plugin
|
|
257
259
|
*/
|
|
258
260
|
private initDatabase;
|
|
259
261
|
/**
|
|
@@ -6,12 +6,6 @@ export type DeviceManagerConfiguration = {
|
|
|
6
6
|
* Useful to start the plugin even if the mappings are not up to date.
|
|
7
7
|
*/
|
|
8
8
|
ignoreStartupErrors: boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Should be set to true to historize measures in asset-history collection (deprecated)
|
|
11
|
-
*
|
|
12
|
-
* Should be enabled only for backward compatibility because it leads to important performance costs.
|
|
13
|
-
*/
|
|
14
|
-
assetsHistorizesMeasures: boolean;
|
|
15
9
|
engine: {
|
|
16
10
|
/**
|
|
17
11
|
* Auto update collection mappings with models
|
|
@@ -22,13 +16,13 @@ export type DeviceManagerConfiguration = {
|
|
|
22
16
|
autoUpdate: true;
|
|
23
17
|
};
|
|
24
18
|
/**
|
|
25
|
-
*
|
|
19
|
+
* Platform index name
|
|
26
20
|
*/
|
|
27
|
-
|
|
21
|
+
platformIndex: string;
|
|
28
22
|
/**
|
|
29
|
-
*
|
|
23
|
+
* Collection mappings for the platform index
|
|
30
24
|
*/
|
|
31
|
-
|
|
25
|
+
platformCollections: {
|
|
32
26
|
config: {
|
|
33
27
|
name: string;
|
|
34
28
|
mappings: JSONObject;
|
|
@@ -51,21 +45,21 @@ export type DeviceManagerConfiguration = {
|
|
|
51
45
|
mappings: JSONObject;
|
|
52
46
|
settings?: JSONObject;
|
|
53
47
|
};
|
|
54
|
-
|
|
48
|
+
assets: {
|
|
55
49
|
name: string;
|
|
56
50
|
mappings: CollectionMappings;
|
|
57
51
|
settings?: JSONObject;
|
|
58
52
|
};
|
|
59
|
-
|
|
53
|
+
groups: {
|
|
60
54
|
name: string;
|
|
61
|
-
mappings:
|
|
55
|
+
mappings: CollectionMappings;
|
|
62
56
|
settings?: JSONObject;
|
|
63
57
|
};
|
|
64
58
|
assetHistory: {
|
|
65
59
|
name: string;
|
|
66
60
|
settings?: JSONObject;
|
|
67
61
|
};
|
|
68
|
-
|
|
62
|
+
devices: {
|
|
69
63
|
name: string;
|
|
70
64
|
mappings: CollectionMappings;
|
|
71
65
|
settings?: JSONObject;
|
|
@@ -73,6 +67,7 @@ export type DeviceManagerConfiguration = {
|
|
|
73
67
|
measures: {
|
|
74
68
|
name: string;
|
|
75
69
|
settings?: JSONObject;
|
|
70
|
+
mappings: CollectionMappings;
|
|
76
71
|
};
|
|
77
72
|
};
|
|
78
73
|
};
|
|
@@ -22,10 +22,12 @@ export interface Column {
|
|
|
22
22
|
isMeasure?: boolean;
|
|
23
23
|
isIsoDate?: boolean;
|
|
24
24
|
}
|
|
25
|
+
export type ExportStreamAugmenter = (result: SearchResult<KHit<KDocumentContentGeneric>>, columns: Column[], engineId: string) => Promise<void>;
|
|
25
26
|
export declare abstract class AbstractExporter<P extends ExportParams = ExportParams> {
|
|
26
27
|
protected plugin: DeviceManagerPlugin;
|
|
27
28
|
protected target: InternalCollection;
|
|
28
29
|
protected config: ExporterOption;
|
|
30
|
+
protected exportStreamAugmenters: ExportStreamAugmenter[];
|
|
29
31
|
constructor(plugin: DeviceManagerPlugin, target: InternalCollection, config?: Partial<ExporterOption>);
|
|
30
32
|
protected get sdk(): import("kuzzle").EmbeddedSDK;
|
|
31
33
|
protected get ms(): any;
|
|
@@ -43,5 +45,5 @@ export declare abstract class AbstractExporter<P extends ExportParams = ExportPa
|
|
|
43
45
|
prepareExport(engineId: string, user: User, params: P): Promise<string>;
|
|
44
46
|
protected formatHit(columns: Column[], hit: KHit<KDocumentContentGeneric>): string[];
|
|
45
47
|
getExport(engineId: string, exportId: string): Promise<P>;
|
|
46
|
-
getExportStream(request: SearchResult<KHit<KDocumentContentGeneric>>, columns: Column[]): Promise<PassThrough>;
|
|
48
|
+
getExportStream(request: SearchResult<KHit<KDocumentContentGeneric>>, columns: Column[], engineId: string): Promise<PassThrough>;
|
|
47
49
|
}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import { UUID } from "node:crypto";
|
|
4
|
-
import {
|
|
4
|
+
import { DeviceManagerPlugin, InternalCollection } from "../../plugin";
|
|
5
|
+
import { AbstractExporter, ExporterOption } from "./AbstractExporter";
|
|
5
6
|
export declare class DigitalTwinExporter extends AbstractExporter {
|
|
7
|
+
protected plugin: DeviceManagerPlugin;
|
|
8
|
+
protected target: InternalCollection;
|
|
9
|
+
constructor(plugin: DeviceManagerPlugin, target: InternalCollection, config?: Partial<ExporterOption>);
|
|
6
10
|
protected exportRedisKey(engineId: string, exportId: string): string;
|
|
7
11
|
protected getLink(engineId: string, exportId: UUID): string;
|
|
8
12
|
sendExport(engineId: string, exportId: string): Promise<import("stream").PassThrough>;
|
|
@@ -11,4 +15,5 @@ export declare class DigitalTwinExporter extends AbstractExporter {
|
|
|
11
15
|
*/
|
|
12
16
|
private getNamedMeasures;
|
|
13
17
|
private generateMeasureColumns;
|
|
18
|
+
private addMeasuresToExportStream;
|
|
14
19
|
}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { KuzzleRequest } from "kuzzle";
|
|
2
|
+
import { JSONObject, KDocument } from "kuzzle-sdk";
|
|
2
3
|
import { MeasureContent } from "../../measure";
|
|
3
4
|
import { DeviceManagerPlugin, InternalCollection } from "../../plugin";
|
|
4
5
|
import { ApiDigitalTwinMGetLastMeasuredAtResult } from "../types/DigitalTwinApi";
|
|
5
6
|
import { BaseService } from "./BaseService";
|
|
7
|
+
import { AssetContent } from "lib/modules/asset";
|
|
8
|
+
import { DeviceContent, DeviceProvisioningContent } from "lib/modules/device";
|
|
9
|
+
import { AssetModelContent, DeviceModelContent } from "lib/modules/model";
|
|
10
|
+
type MeasureSlot = {
|
|
11
|
+
asset: string;
|
|
12
|
+
device: string;
|
|
13
|
+
};
|
|
6
14
|
export declare class DigitalTwinService extends BaseService {
|
|
7
|
-
|
|
15
|
+
readonly targetCollection: InternalCollection;
|
|
8
16
|
private readonly digitalTwinType;
|
|
9
17
|
constructor(plugin: DeviceManagerPlugin, targetCollection: InternalCollection);
|
|
10
18
|
protected registerAskEvents(): void;
|
|
@@ -12,6 +20,27 @@ export declare class DigitalTwinService extends BaseService {
|
|
|
12
20
|
* Gets the last measures of a digital twin
|
|
13
21
|
*/
|
|
14
22
|
getLastMeasures(engineId: string, digitalTwinId: string, measureCount?: number): Promise<MeasureContent[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Link a device to an asset.
|
|
25
|
+
*/
|
|
26
|
+
linkAssetDevice(engineId: string, deviceId: string, assetId: string, measureSlots: {
|
|
27
|
+
asset: string;
|
|
28
|
+
device: string;
|
|
29
|
+
}[], implicitMeasuresLinking: boolean, request: KuzzleRequest): Promise<{
|
|
30
|
+
asset: KDocument<AssetContent>;
|
|
31
|
+
device: KDocument<DeviceContent>;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Unlink a device of an asset with lock
|
|
35
|
+
*
|
|
36
|
+
* @param {string} deviceId Id of the device
|
|
37
|
+
* @param {string} assetId Id of the asset
|
|
38
|
+
* @param {KuzzleRequest} request kuzzle request
|
|
39
|
+
*/
|
|
40
|
+
unlinkAssetDevice(deviceId: string, assetId: string, measureSlots: MeasureSlot[], allMeasures: undefined | boolean, request: KuzzleRequest): Promise<{
|
|
41
|
+
asset: KDocument<AssetContent>;
|
|
42
|
+
device: KDocument<DeviceContent>;
|
|
43
|
+
}>;
|
|
15
44
|
/**
|
|
16
45
|
* Gets the last measures of multiple digital twins
|
|
17
46
|
*/
|
|
@@ -19,5 +48,44 @@ export declare class DigitalTwinService extends BaseService {
|
|
|
19
48
|
getLastMeasuredAt(engineId: string, digitalTwinId: string): Promise<number>;
|
|
20
49
|
mGetLastMeasuredAt(engineId: string, digitalTwinIds: string[]): Promise<ApiDigitalTwinMGetLastMeasuredAtResult>;
|
|
21
50
|
private getAggregationQueryParameters;
|
|
51
|
+
/**
|
|
52
|
+
* Checks if the asset does not already have a linked device using one of the
|
|
53
|
+
* requested measure slots.
|
|
54
|
+
*/
|
|
55
|
+
protected checkAssetAlreadyProvidedMeasures(asset: KDocument<AssetContent>, deviceId: string, requestedMeasureNames: MeasureSlot[]): void;
|
|
56
|
+
/**
|
|
57
|
+
* Checks if the device does not already have a linked asset using one of the
|
|
58
|
+
* requested measure slots.
|
|
59
|
+
*/
|
|
60
|
+
protected checkDeviceAlreadyProvidingMeasures(device: KDocument<DeviceContent>, assetId: string, requestedMeasureNames: MeasureSlot[]): void;
|
|
61
|
+
/**
|
|
62
|
+
* Goes through the device available measures and add them into the link if:
|
|
63
|
+
* - they are not already provided to the asset by another device
|
|
64
|
+
* - they are not already provided to another asset by the device
|
|
65
|
+
* - they are not already present in the link request
|
|
66
|
+
* - they are declared in the asset model
|
|
67
|
+
*/
|
|
68
|
+
protected addAvailableLinkableMeasures(asset: KDocument<AssetContent>, device: KDocument<DeviceContent>, assetModel: AssetModelContent, deviceModel: DeviceModelContent, requestedMeasureSlots: MeasureSlot[]): void;
|
|
69
|
+
/**
|
|
70
|
+
* Internal logic of unlink a device of an asset
|
|
71
|
+
*
|
|
72
|
+
* @param {string} deviceId Id of the device
|
|
73
|
+
* @param {KuzzleRequest} request kuzzle request
|
|
74
|
+
*/
|
|
75
|
+
protected _unlinkAssetDevice(deviceId: string, assetId: string, measureSlots: MeasureSlot[], allMeasures: undefined | boolean, request: KuzzleRequest): Promise<{
|
|
76
|
+
asset: KDocument<AssetContent>;
|
|
77
|
+
device: KDocument<DeviceContent>;
|
|
78
|
+
}>;
|
|
79
|
+
/**
|
|
80
|
+
* Retrieve the model document of an asset
|
|
81
|
+
* @param {any} engineGroup:string
|
|
82
|
+
* @param {any} model:string
|
|
83
|
+
* @returns {any}
|
|
84
|
+
*/
|
|
85
|
+
protected getAssetModel(engineGroup: string, model: string, engineId?: string): Promise<AssetModelContent>;
|
|
86
|
+
protected getDeviceModel(model: string): Promise<DeviceModelContent>;
|
|
22
87
|
getEngine(engineId: string): Promise<JSONObject>;
|
|
88
|
+
protected getDeviceProvisioning(deviceId: string): Promise<import("kuzzle").KDocument<DeviceProvisioningContent>>;
|
|
89
|
+
protected checkDeviceAttachedToEngine(device: KDocument<DeviceProvisioningContent>): void;
|
|
23
90
|
}
|
|
91
|
+
export {};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { KDocumentContent } from "kuzzle-sdk";
|
|
2
|
+
import { NamedMeasures } from "../../decoder";
|
|
2
3
|
import { Metadata } from "./Metadata";
|
|
3
|
-
import { DigitalTwinMeasures } from "./DigitalTwinMeasures";
|
|
4
4
|
import { LocaleDetails } from "lib/modules/model";
|
|
5
|
-
export interface DigitalTwinContent<
|
|
5
|
+
export interface DigitalTwinContent<TMetadata extends Metadata = Metadata> extends KDocumentContent {
|
|
6
6
|
model: string;
|
|
7
7
|
modelLocales?: {
|
|
8
8
|
[locale: string]: LocaleDetails;
|
|
9
9
|
};
|
|
10
10
|
reference: string;
|
|
11
11
|
metadata: TMetadata;
|
|
12
|
-
|
|
13
|
-
lastMeasuredAt: number;
|
|
12
|
+
measureSlots: NamedMeasures;
|
|
14
13
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { User } from "kuzzle";
|
|
1
2
|
import { MeasureContent } from "../../measure";
|
|
2
3
|
export type AskDigitalTwinLastMeasuresGet = {
|
|
3
4
|
name: "ask:device-manager:asset:get-last-measures" | "ask:device-manager:device:get-last-measures";
|
|
@@ -7,3 +8,32 @@ export type AskDigitalTwinLastMeasuresGet = {
|
|
|
7
8
|
};
|
|
8
9
|
result: MeasureContent[];
|
|
9
10
|
};
|
|
11
|
+
export type AskDigitalTwinLink = {
|
|
12
|
+
name: "ask:device-manager:device:link-asset" | "ask:device-manager:asset:link-device";
|
|
13
|
+
payload: {
|
|
14
|
+
engineId: string;
|
|
15
|
+
assetId: string;
|
|
16
|
+
deviceId: string;
|
|
17
|
+
user: User;
|
|
18
|
+
measureSlots: {
|
|
19
|
+
asset: string;
|
|
20
|
+
device: string;
|
|
21
|
+
}[];
|
|
22
|
+
implicitMeasuresLinking: undefined | boolean;
|
|
23
|
+
};
|
|
24
|
+
result: void;
|
|
25
|
+
};
|
|
26
|
+
export type AskDigitalTwinUnlink = {
|
|
27
|
+
name: `ask:device-manager:asset:unlink-device` | `ask:device-manager:device:unlink-asset`;
|
|
28
|
+
payload: {
|
|
29
|
+
deviceId: string;
|
|
30
|
+
assetId: string;
|
|
31
|
+
measureSlots: {
|
|
32
|
+
asset: string;
|
|
33
|
+
device: string;
|
|
34
|
+
}[];
|
|
35
|
+
allMeasures: undefined | boolean;
|
|
36
|
+
user: User;
|
|
37
|
+
};
|
|
38
|
+
result: void;
|
|
39
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Metadata, AssetContent,
|
|
1
|
+
import { Metadata, AssetContent, AssetModel } from "../../../index";
|
|
2
|
+
import { TemperatureMeasurement, PositionMeasurement } from "../measures";
|
|
2
3
|
declare const modelName = "Container";
|
|
3
4
|
export interface ContainerMetadata extends Metadata {
|
|
4
5
|
height: number;
|
|
@@ -17,7 +18,7 @@ export type ContainerMeasurements = {
|
|
|
17
18
|
position: PositionMeasurement;
|
|
18
19
|
temperatureWeather: TemperatureMeasurement;
|
|
19
20
|
};
|
|
20
|
-
export interface ContainerAssetContent extends AssetContent<
|
|
21
|
+
export interface ContainerAssetContent extends AssetContent<ContainerMetadata> {
|
|
21
22
|
model: typeof modelName;
|
|
22
23
|
}
|
|
23
24
|
export declare const Container: AssetModel;
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { JSONObject } from "kuzzle-sdk";
|
|
2
2
|
import { Decoder, DecodedPayload } from "../../../index";
|
|
3
|
+
export declare const dummyTempDeviceMeasures: readonly [{
|
|
4
|
+
readonly name: "temperature";
|
|
5
|
+
readonly type: "temperature";
|
|
6
|
+
}, {
|
|
7
|
+
readonly name: "accelerationSensor";
|
|
8
|
+
readonly type: "acceleration";
|
|
9
|
+
}, {
|
|
10
|
+
readonly name: "battery";
|
|
11
|
+
readonly type: "battery";
|
|
12
|
+
}];
|
|
3
13
|
export declare class DummyTempDecoder extends Decoder {
|
|
4
14
|
measures: readonly [{
|
|
5
15
|
readonly name: "temperature";
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { JSONObject } from "kuzzle-sdk";
|
|
2
2
|
import { Decoder, DecodedPayload } from "../../../index";
|
|
3
|
+
export declare const dummyTempPositionDeviceMeasures: readonly [{
|
|
4
|
+
readonly name: "temperature";
|
|
5
|
+
readonly type: "temperature";
|
|
6
|
+
}, {
|
|
7
|
+
readonly name: "battery";
|
|
8
|
+
readonly type: "battery";
|
|
9
|
+
}, {
|
|
10
|
+
readonly name: "position";
|
|
11
|
+
readonly type: "position";
|
|
12
|
+
}];
|
|
3
13
|
export declare class DummyTempPositionDecoder extends Decoder {
|
|
4
14
|
measures: readonly [{
|
|
5
15
|
readonly name: "temperature";
|