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.
- 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 +14 -9
- package/dist/lib/modules/model/types/ModelContent.d.ts +34 -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,13 @@ 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[];
|
|
33
34
|
model: string;
|
|
34
35
|
metadataDetails?: MetadataDetails;
|
|
35
36
|
metadataGroups?: MetadataGroups;
|
|
@@ -58,7 +59,8 @@ export type ApiModelWriteDeviceResult = KDocument<DeviceModelContent>;
|
|
|
58
59
|
export interface ApiModelWriteGroupRequest extends ModelsControllerRequest {
|
|
59
60
|
action: "writeGroup";
|
|
60
61
|
body: {
|
|
61
|
-
|
|
62
|
+
affinity: GroupAffinity;
|
|
63
|
+
engineGroups: string[];
|
|
62
64
|
model: string;
|
|
63
65
|
metadataDetails?: MetadataDetails;
|
|
64
66
|
metadataGroups?: MetadataGroups;
|
|
@@ -71,6 +73,7 @@ export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
|
|
|
71
73
|
action: "writeMeasure";
|
|
72
74
|
body: {
|
|
73
75
|
type: string;
|
|
76
|
+
engineIds?: string[];
|
|
74
77
|
locales?: {
|
|
75
78
|
[valueName: string]: LocaleDetails;
|
|
76
79
|
};
|
|
@@ -82,7 +85,7 @@ export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
|
|
|
82
85
|
export type ApiModelWriteMeasureResult = KDocument<MeasureModelContent>;
|
|
83
86
|
export interface ApiModelUpdateAssetRequest extends ModelsControllerRequest {
|
|
84
87
|
action: "updateAsset";
|
|
85
|
-
|
|
88
|
+
engineGroups: string[];
|
|
86
89
|
model: string;
|
|
87
90
|
body: {
|
|
88
91
|
metadataDetails?: MetadataDetails;
|
|
@@ -119,7 +122,7 @@ export interface ApiModelDeleteMeasureRequest extends ModelsControllerRequest {
|
|
|
119
122
|
export type ApiModelDeleteMeasureResult = void;
|
|
120
123
|
export interface ApiModelListAssetsRequest extends ModelsControllerRequest {
|
|
121
124
|
action: "listAssets";
|
|
122
|
-
|
|
125
|
+
engineGroups: string[];
|
|
123
126
|
}
|
|
124
127
|
export type ApiModelListAssetsResult = {
|
|
125
128
|
models: KDocument<AssetModelContent>[];
|
|
@@ -134,7 +137,7 @@ export type ApiModelListDevicesResult = {
|
|
|
134
137
|
};
|
|
135
138
|
export interface ApiModelListGroupsRequest extends ModelsControllerRequest {
|
|
136
139
|
action: "listGroups";
|
|
137
|
-
|
|
140
|
+
engineGroups: string[];
|
|
138
141
|
}
|
|
139
142
|
export type ApiModelListGroupsResult = {
|
|
140
143
|
models: KDocument<GroupModelContent>[];
|
|
@@ -142,6 +145,7 @@ export type ApiModelListGroupsResult = {
|
|
|
142
145
|
};
|
|
143
146
|
export interface ApiModelListMeasuresRequest extends ModelsControllerRequest {
|
|
144
147
|
action: "listMeasures";
|
|
148
|
+
engineId?: string;
|
|
145
149
|
}
|
|
146
150
|
export type ApiModelListMeasuresResult = {
|
|
147
151
|
models: KDocument<MeasureModelContent>[];
|
|
@@ -149,7 +153,7 @@ export type ApiModelListMeasuresResult = {
|
|
|
149
153
|
};
|
|
150
154
|
export interface ApiModelSearchAssetsRequest extends ModelsControllerRequest {
|
|
151
155
|
action: "searchAssets";
|
|
152
|
-
|
|
156
|
+
engineGroups: string[];
|
|
153
157
|
from?: number;
|
|
154
158
|
size?: number;
|
|
155
159
|
scrollTTL?: string;
|
|
@@ -166,7 +170,7 @@ export interface ApiModelSearchDevicesRequest extends ModelsControllerRequest {
|
|
|
166
170
|
export type ApiModelSearchDevicesResult = SearchResult<KHit<DeviceModelContent>>;
|
|
167
171
|
export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
|
|
168
172
|
action: "searchGroups";
|
|
169
|
-
|
|
173
|
+
engineGroups: string[];
|
|
170
174
|
from?: number;
|
|
171
175
|
size?: number;
|
|
172
176
|
scrollTTL?: string;
|
|
@@ -175,6 +179,7 @@ export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
|
|
|
175
179
|
export type ApiModelSearchGroupsResult = SearchResult<KHit<GroupModelContent>>;
|
|
176
180
|
export interface ApiModelSearchMeasuresRequest extends ModelsControllerRequest {
|
|
177
181
|
action: "searchMeasures";
|
|
182
|
+
engineId?: string;
|
|
178
183
|
from?: number;
|
|
179
184
|
size?: number;
|
|
180
185
|
scrollTTL?: string;
|
|
@@ -1,8 +1,9 @@
|
|
|
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
|
+
engineIds?: string[];
|
|
6
7
|
measure: MeasureDefinition & {
|
|
7
8
|
type: string;
|
|
8
9
|
locales?: {
|
|
@@ -23,6 +24,23 @@ export interface MetadataObject {
|
|
|
23
24
|
export interface MetadataMappings {
|
|
24
25
|
[key: string]: MetadataProperty | MetadataObject;
|
|
25
26
|
}
|
|
27
|
+
export interface GroupAffinity {
|
|
28
|
+
/**
|
|
29
|
+
* Type of elements accepted in the group
|
|
30
|
+
*/
|
|
31
|
+
type: Array<"assets" | "devices">;
|
|
32
|
+
/**
|
|
33
|
+
* Models accepted in the group
|
|
34
|
+
*/
|
|
35
|
+
models: {
|
|
36
|
+
assets?: string[];
|
|
37
|
+
devices?: string[];
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Weather the affinities are a strict restriction or not
|
|
41
|
+
*/
|
|
42
|
+
strict: boolean;
|
|
43
|
+
}
|
|
26
44
|
export interface LocaleDetails {
|
|
27
45
|
friendlyName: string;
|
|
28
46
|
description: string;
|
|
@@ -136,7 +154,13 @@ export interface TooltipModels {
|
|
|
136
154
|
}
|
|
137
155
|
export interface AssetModelContent extends KDocumentContent {
|
|
138
156
|
type: "asset";
|
|
139
|
-
|
|
157
|
+
engineGroups: string[];
|
|
158
|
+
/**
|
|
159
|
+
* Optional list of engine IDs (tenant IDs) this model is scoped to.
|
|
160
|
+
* When set, the model is only available to the specified tenants.
|
|
161
|
+
* When absent, the model is available to all tenants in the engineGroups.
|
|
162
|
+
*/
|
|
163
|
+
engineIds?: string[];
|
|
140
164
|
asset: {
|
|
141
165
|
/**
|
|
142
166
|
* Name of the model
|
|
@@ -268,6 +292,9 @@ export interface AssetModelContent extends KDocumentContent {
|
|
|
268
292
|
* ]
|
|
269
293
|
*/
|
|
270
294
|
tooltipModels?: TooltipModels;
|
|
295
|
+
/**
|
|
296
|
+
* Translations specific to the model
|
|
297
|
+
*/
|
|
271
298
|
locales?: {
|
|
272
299
|
[locale: string]: LocaleDetails;
|
|
273
300
|
};
|
|
@@ -364,12 +391,16 @@ export interface DeviceModelContent extends KDocumentContent {
|
|
|
364
391
|
}
|
|
365
392
|
export interface GroupModelContent extends KDocumentContent {
|
|
366
393
|
type: "group";
|
|
367
|
-
|
|
394
|
+
engineGroups: string[];
|
|
368
395
|
group: {
|
|
369
396
|
/**
|
|
370
397
|
* Name of the model
|
|
371
398
|
*/
|
|
372
399
|
model: string;
|
|
400
|
+
/**
|
|
401
|
+
* Group types and model affinities
|
|
402
|
+
*/
|
|
403
|
+
affinity: GroupAffinity;
|
|
373
404
|
/**
|
|
374
405
|
* Metadata mappings.
|
|
375
406
|
*
|
|
@@ -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";
|