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

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 (94) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/lib/modules/asset/AssetModule.d.ts +0 -1
  3. package/dist/lib/modules/asset/AssetService.d.ts +9 -1
  4. package/dist/lib/modules/asset/AssetsController.d.ts +7 -1
  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 +5 -2
  8. package/dist/lib/modules/asset/types/AssetContent.d.ts +1 -1
  9. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +1 -8
  10. package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
  11. package/dist/lib/modules/decoder/types/DecoderApi.d.ts +0 -1
  12. package/dist/lib/modules/device/DeviceService.d.ts +18 -1
  13. package/dist/lib/modules/device/types/DeviceApi.d.ts +0 -1
  14. package/dist/lib/modules/{asset/AssetsGroupsController.d.ts → group/GroupsController.d.ts} +14 -6
  15. package/dist/lib/modules/group/GroupsModule.d.ts +6 -0
  16. package/dist/lib/modules/group/GroupsService.d.ts +47 -0
  17. package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
  18. package/dist/lib/modules/group/exports.d.ts +5 -0
  19. package/dist/lib/modules/group/index.d.ts +4 -0
  20. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
  21. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
  22. package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
  23. package/dist/lib/modules/{asset/types/AssetGroupsApi.d.ts → group/types/GroupsApi.d.ts} +13 -13
  24. package/dist/lib/modules/measure/MeasureExporter.d.ts +2 -0
  25. package/dist/lib/modules/measure/MeasureService.d.ts +11 -38
  26. package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
  27. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +1 -1
  28. package/dist/lib/modules/measure/exports.d.ts +0 -1
  29. package/dist/lib/modules/measure/index.d.ts +0 -1
  30. package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +4 -0
  31. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +5 -148
  32. package/dist/lib/modules/measure/types/MeasureSources.d.ts +1 -0
  33. package/dist/lib/modules/model/ModelService.d.ts +15 -4
  34. package/dist/lib/modules/model/ModelsConflicts.d.ts +9 -1
  35. package/dist/lib/modules/model/ModelsController.d.ts +6 -1
  36. package/dist/lib/modules/model/ModelsRegister.d.ts +18 -2
  37. package/dist/lib/modules/model/types/ModelApi.d.ts +49 -1
  38. package/dist/lib/modules/model/types/ModelContent.d.ts +133 -2
  39. package/dist/lib/modules/model/types/ModelDefinition.d.ts +106 -2
  40. package/dist/lib/modules/model/types/ModelEvents.d.ts +8 -1
  41. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +22 -5
  42. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +55 -1
  43. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +4 -3
  44. package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
  45. package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
  46. package/dist/lib/modules/shared/errors/index.d.ts +1 -0
  47. package/dist/lib/modules/shared/exports.d.ts +1 -5
  48. package/dist/lib/modules/shared/index.d.ts +3 -11
  49. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +2 -0
  50. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +2 -0
  51. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -0
  52. package/dist/lib/modules/shared/types/Models.d.ts +18 -0
  53. package/dist/lib/modules/shared/types/exports.d.ts +6 -0
  54. package/dist/lib/modules/shared/types/index.d.ts +9 -0
  55. package/dist/lib/modules/shared/utils/index.d.ts +5 -0
  56. package/dist/tests/application/assets/Container.d.ts +6 -3
  57. package/dist/tests/application/assets/MagicHouse.d.ts +2 -2
  58. package/dist/tests/application/assets/Room.d.ts +2 -2
  59. package/dist/tests/application/assets/StreetLamp.d.ts +2 -2
  60. package/dist/tests/application/assets/Warehouse.d.ts +2 -2
  61. package/dist/tests/application/assets/index.d.ts +1 -0
  62. package/dist/tests/application/decoders/EmptyTempDecoder.d.ts +8 -0
  63. package/dist/tests/application/devices/DummyTemp.d.ts +2 -0
  64. package/dist/tests/application/devices/DummyTempPosition.d.ts +2 -0
  65. package/dist/tests/application/devices/EmptyTemp.d.ts +2 -0
  66. package/dist/tests/application/devices/index.d.ts +3 -0
  67. package/dist/tests/application/groups/Parking.d.ts +14 -0
  68. package/dist/tests/application/groups/index.d.ts +1 -0
  69. package/dist/tests/application/measures/{AccelerationMeasure.d.ts → Acceleration.d.ts} +2 -2
  70. package/dist/tests/application/measures/BatteryMeasure.d.ts +5 -0
  71. package/dist/tests/application/measures/Brightness.d.ts +2 -0
  72. package/dist/tests/application/measures/CO2.d.ts +2 -0
  73. package/dist/tests/application/measures/HumidityMeasure.d.ts +5 -0
  74. package/dist/tests/application/measures/Illuminance.d.ts +2 -0
  75. package/dist/tests/application/measures/Magicule.d.ts +2 -2
  76. package/dist/tests/application/measures/MovementMeasure.d.ts +5 -0
  77. package/dist/{lib/modules/measure → tests/application}/measures/PositionMeasure.d.ts +2 -2
  78. package/dist/tests/application/measures/PowerConsumption.d.ts +2 -0
  79. package/dist/tests/application/measures/TemperatureMeasure.d.ts +5 -0
  80. package/dist/tests/application/measures/index.d.ts +11 -0
  81. package/dist/tests/application/models.d.ts +2 -0
  82. package/package.json +1 -1
  83. package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
  84. package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -8
  85. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
  86. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
  87. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
  88. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
  89. package/dist/lib/modules/measure/measures/index.d.ts +0 -5
  90. package/dist/tests/application/decoders/index.d.ts +0 -2
  91. package/dist/tests/application/measures/BrightnessMeasure.d.ts +0 -2
  92. package/dist/tests/application/measures/CO2Measure.d.ts +0 -2
  93. package/dist/tests/application/measures/IlluminanceMeasure.d.ts +0 -2
  94. package/dist/tests/application/measures/PowerConsumptionMeasure.d.ts +0 -2
package/dist/index.d.ts CHANGED
@@ -5,3 +5,4 @@ export * from "./lib/modules/measure/exports";
5
5
  export * from "./lib/modules/decoder/exports";
6
6
  export * from "./lib/modules/shared/exports";
7
7
  export * from "./lib/modules/model/exports";
8
+ export * from "./lib/modules/group/exports";
@@ -3,6 +3,5 @@ export declare class AssetModule extends Module {
3
3
  private assetService;
4
4
  private assetHistoryService;
5
5
  private assetController;
6
- private assetGroupsController;
7
6
  init(): Promise<void>;
8
7
  }
@@ -3,7 +3,7 @@ import { JSONObject, KDocument, KHit, SearchResult, mReplaceResponse } from "kuz
3
3
  import { DeviceManagerPlugin } from "../plugin";
4
4
  import { DigitalTwinService, Metadata, SearchParams } from "../shared";
5
5
  import { AssetHistoryService } from "./AssetHistoryService";
6
- import { ApiAssetMigrateTenantResult } from "./types/AssetApi";
6
+ import { ApiAssetMigrateTenantResult, ApiAssetUpdateModelLocales } from "./types/AssetApi";
7
7
  import { AssetContent } from "./types/AssetContent";
8
8
  export declare class AssetService extends DigitalTwinService {
9
9
  private assetHistoryService;
@@ -22,6 +22,7 @@ export declare class AssetService extends DigitalTwinService {
22
22
  * Update or Create an asset metadata
23
23
  */
24
24
  upsert(engineId: string, model: string, reference: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
25
+ private _create;
25
26
  /**
26
27
  * Create an asset metadata
27
28
  */
@@ -38,6 +39,13 @@ export declare class AssetService extends DigitalTwinService {
38
39
  mReplaceAndHistorize(engineId: string, assets: KDocument<AssetContent>[], removedMetadata: string[], { refresh }: {
39
40
  refresh: any;
40
41
  }): Promise<mReplaceResponse>;
42
+ /**
43
+ * Retrieve locales with the specified model and search all assets related to the model to update the locales.
44
+ * The operation is historized.
45
+ * @param request
46
+ * @param model
47
+ */
48
+ updateModelLocales(request: KuzzleRequest, model: string): Promise<ApiAssetUpdateModelLocales[]>;
41
49
  private getEngine;
42
50
  private refreshModel;
43
51
  }
@@ -1,7 +1,7 @@
1
1
  import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
2
  import { DeviceManagerPlugin } from "../plugin";
3
3
  import { AssetService } from "./AssetService";
4
- import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult } from "./types/AssetApi";
4
+ import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult, ApiAssetUpdateModelLocales } from "./types/AssetApi";
5
5
  export declare class AssetsController {
6
6
  private plugin;
7
7
  private assetService;
@@ -36,4 +36,10 @@ export declare class AssetsController {
36
36
  migrateTenant(request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
37
37
  getLastMeasuredAt(request: KuzzleRequest): Promise<ApiAssetGetLastMeasuredAtResult>;
38
38
  mGetLastMeasuredAt(request: KuzzleRequest): Promise<ApiAssetMGetLastMeasuredAtResult>;
39
+ /**
40
+ * Update modelLocales of all assets related to the specified asset model.
41
+ * This operation is done to make the search assets feature up to date
42
+ * @param request
43
+ */
44
+ updateModelLocales(request: KuzzleRequest): Promise<ApiAssetUpdateModelLocales[]>;
39
45
  }
@@ -2,11 +2,7 @@ export * from "./types/AssetContent";
2
2
  export * from "./types/AssetHistoryContent";
3
3
  export * from "./types/AssetEvents";
4
4
  export * from "./types/AssetApi";
5
- export * from "./types/AssetGroupContent";
6
- export * from "./types/AssetGroupsApi";
7
5
  export * from "./roles/RoleAssetsAdmin";
8
6
  export * from "./roles/RoleAssetsReader";
9
- export * from "./roles/RoleAssetsGroupsAdmin";
10
- export * from "./roles/RoleAssetsGroupsReader";
11
7
  export * from "./collections/assetsMappings";
12
8
  export * from "./collections/assetsHistoryMappings";
@@ -1,6 +1,6 @@
1
1
  export * from "./collections/assetsMappings";
2
2
  export * from "./collections/assetsHistoryMappings";
3
- export * from "./collections/assetsGroupsMapping";
3
+ export * from "../group/collections/groupsMappings";
4
4
  export * from "./types/AssetContent";
5
5
  export * from "./types/AssetHistoryContent";
6
6
  export * from "./types/AssetEvents";
@@ -9,5 +9,3 @@ export * from "./model/AssetSerializer";
9
9
  export * from "./AssetModule";
10
10
  export * from "./roles/RoleAssetsAdmin";
11
11
  export * from "./roles/RoleAssetsReader";
12
- export * from "./roles/RoleAssetsGroupsAdmin";
13
- export * from "./roles/RoleAssetsGroupsReader";
@@ -1,4 +1,4 @@
1
- import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
1
+ import { JSONObject, KDocument, KHit, SearchResult, UpdateByQueryResponse } from "kuzzle-sdk";
2
2
  import { MeasureContent, Measurement } from "../../../modules/measure";
3
3
  import { ApiDigitalTwinGetLastMeasuredAtRequest, ApiDigitalTwinGetLastMeasuredAtResult, ApiDigitalTwinGetLastMeasuresRequest, ApiDigitalTwinGetLastMeasuresResult, ApiDigitalTwinMGetLastMeasuredAtRequest, ApiDigitalTwinMGetLastMeasuredAtResult, ApiDigitalTwinMGetLastMeasuresRequest, ApiDigitalTwinMGetLastMeasuresResult, Metadata } from "../../shared";
4
4
  import { AssetContent } from "./AssetContent";
@@ -33,7 +33,6 @@ export interface ApiAssetMetadataReplaceRequest extends AssetsControllerRequest
33
33
  export type ApiAssetMetadataReplaceResult = KDocument<AssetContent>;
34
34
  export interface ApiAssetUpsertRequest extends AssetsControllerRequest {
35
35
  action: "upsert";
36
- _id: string;
37
36
  refresh?: string;
38
37
  body: {
39
38
  model: string;
@@ -166,4 +165,8 @@ export type ApiAssetGetLastMeasuredAtRequest = ApiDigitalTwinGetLastMeasuredAtRe
166
165
  export type ApiAssetGetLastMeasuredAtResult = ApiDigitalTwinGetLastMeasuredAtResult;
167
166
  export type ApiAssetMGetLastMeasuredAtRequest = ApiDigitalTwinMGetLastMeasuredAtRequest<AssetsControllerName>;
168
167
  export type ApiAssetMGetLastMeasuredAtResult = ApiDigitalTwinMGetLastMeasuredAtResult;
168
+ export type ApiAssetUpdateModelLocales = {
169
+ engineIndex: string;
170
+ result: UpdateByQueryResponse<AssetContent>;
171
+ };
169
172
  export {};
@@ -33,7 +33,7 @@ export interface AssetContent<TMeasures extends JSONObject = any, TMetadata exte
33
33
  * Id's of asset groups
34
34
  */
35
35
  groups: Array<{
36
- id: string;
36
+ path: string;
37
37
  date: number;
38
38
  }>;
39
39
  }
@@ -4,13 +4,6 @@ import { AssetContent } from "./AssetContent";
4
4
  export type AssetHistoryMetadata = {
5
5
  names: string[];
6
6
  };
7
- export type AssetHistoryEventMeasure = {
8
- name: "measure";
9
- measure: {
10
- names: string[];
11
- };
12
- metadata?: AssetHistoryMetadata;
13
- };
14
7
  export type AssetHistoryEventMetadata = {
15
8
  name: "metadata";
16
9
  metadata: AssetHistoryMetadata;
@@ -27,7 +20,7 @@ export type AssetHistoryEventUnlink = {
27
20
  deviceId: string;
28
21
  };
29
22
  };
30
- export type AssetHistoryEvent = AssetHistoryEventMeasure | AssetHistoryEventMetadata | AssetHistoryEventLink | AssetHistoryEventUnlink;
23
+ export type AssetHistoryEvent = AssetHistoryEventMetadata | AssetHistoryEventLink | AssetHistoryEventUnlink;
31
24
  /**
32
25
  * Asset History document content
33
26
  */
@@ -43,5 +43,7 @@ export declare class DecodedPayload<TDecoder extends Decoder = Decoder> {
43
43
  * Get the metadata for a device
44
44
  */
45
45
  getMetadata(deviceReference: string): JSONObject;
46
+ hasMeasurements(): boolean;
47
+ hasMetadata(): boolean;
46
48
  private validateMeasurement;
47
49
  }
@@ -4,7 +4,6 @@ interface DecodersControllerRequest {
4
4
  }
5
5
  export interface ApiDecoderListRequest extends DecodersControllerRequest {
6
6
  action: "list";
7
- _id: string;
8
7
  }
9
8
  export type ApiDecoderListResult = {
10
9
  decoders: DecoderContent[];
@@ -9,6 +9,7 @@ import { DeviceContent } from "./types/DeviceContent";
9
9
  export declare class DeviceService extends DigitalTwinService {
10
10
  constructor(plugin: DeviceManagerPlugin);
11
11
  registerAskEvents(): void;
12
+ private _create;
12
13
  /**
13
14
  * Create a new device.
14
15
  *
@@ -30,6 +31,15 @@ export declare class DeviceService extends DigitalTwinService {
30
31
  update(engineId: string, deviceId: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
31
32
  delete(engineId: string, deviceId: string, request: KuzzleRequest): Promise<void>;
32
33
  search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<DeviceContent>>>;
34
+ /**
35
+ * Internal logic to attach the device to an engine
36
+ *
37
+ * @param engineId Engine id to attach to
38
+ * @param deviceId Device id to attach
39
+ * @param options.refresh Wait for ES indexation
40
+ * @param options.strict If true, throw if an operation isn't possible
41
+ */
42
+ private _attachEngine;
33
43
  /**
34
44
  * Attach the device to an engine
35
45
  *
@@ -67,7 +77,14 @@ export declare class DeviceService extends DigitalTwinService {
67
77
  */
68
78
  private generateMissingAssetMeasureNames;
69
79
  /**
70
- * Unlink a device of an asset
80
+ * Internal logic of unlink a device of an asset
81
+ *
82
+ * @param {string} deviceId Id of the device
83
+ * @param {KuzzleRequest} request kuzzle request
84
+ */
85
+ private _unlinkAsset;
86
+ /**
87
+ * Unlink a device of an asset with lock
71
88
  *
72
89
  * @param {string} deviceId Id of the device
73
90
  * @param {KuzzleRequest} request kuzzle request
@@ -25,7 +25,6 @@ export type ApiDeviceUpdateResult = KDocument<DeviceContent>;
25
25
  export type ApiDeviceMetadataReplaceResult = KDocument<DeviceContent>;
26
26
  export interface ApiDeviceUpsertRequest extends DevicesControllerRequest {
27
27
  action: "upsert";
28
- _id: string;
29
28
  refresh?: string;
30
29
  body: {
31
30
  model: string;
@@ -1,15 +1,23 @@
1
1
  import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
2
  import { DeviceManagerPlugin } from "../plugin";
3
- import { ApiGroupAddAssetsResult, ApiGroupCreateResult, ApiGroupDeleteResult, ApiGroupGetResult, ApiGroupRemoveAssetsResult, ApiGroupSearchResult, ApiGroupUpdateResult, AssetsGroupsBodyRequest } from "./types/AssetGroupsApi";
4
- export declare class AssetsGroupsController {
3
+ import { ApiGroupAddAssetsResult, ApiGroupCreateResult, ApiGroupDeleteResult, ApiGroupGetResult, ApiGroupRemoveAssetsResult, ApiGroupSearchResult, ApiGroupUpdateResult, GroupsBodyRequest } from "./types/GroupsApi";
4
+ import { GroupsService } from "./GroupsService";
5
+ export declare class GroupsController {
5
6
  private plugin;
7
+ private groupsService;
6
8
  definition: ControllerDefinition;
7
- constructor(plugin: DeviceManagerPlugin);
9
+ constructor(plugin: DeviceManagerPlugin, groupsService: GroupsService);
8
10
  private get sdk();
9
11
  private get as();
10
- checkParent(engineId: string, parent: AssetsGroupsBodyRequest["parent"]): Promise<void>;
11
- checkChildren(engineId: string, children: AssetsGroupsBodyRequest["children"]): Promise<void>;
12
- checkGroupName(engineId: string, name: AssetsGroupsBodyRequest["name"], assetId?: string): Promise<void>;
12
+ /**
13
+ * Check that the path property is valid, and closest parent exists.
14
+ * @param {string} engineId Engine ID
15
+ * @param {string} path The path of a group
16
+ * @throws {BadRequestError} If the path is not a string or if the path is not valid.
17
+ * @returns {void}
18
+ */
19
+ checkPath(engineId: string, path: GroupsBodyRequest["path"], groupId?: string): Promise<void>;
20
+ checkGroupName(engineId: string, name: GroupsBodyRequest["name"], assetId?: string): Promise<void>;
13
21
  create(request: KuzzleRequest): Promise<ApiGroupCreateResult>;
14
22
  get(request: KuzzleRequest): Promise<ApiGroupGetResult>;
15
23
  update(request: KuzzleRequest): Promise<ApiGroupUpdateResult>;
@@ -0,0 +1,6 @@
1
+ import { Module } from "../shared/Module";
2
+ export declare class GroupsModule extends Module {
3
+ private groupsController;
4
+ private groupsService;
5
+ init(): Promise<void>;
6
+ }
@@ -0,0 +1,47 @@
1
+ import { JSONObject, KDocument } from "kuzzle-sdk";
2
+ import { DeviceManagerPlugin } from "../plugin";
3
+ import { BaseService, SearchParams } from "../shared";
4
+ import { KuzzleRequest } from "kuzzle";
5
+ import { GroupContent } from "./exports";
6
+ export declare class GroupsService extends BaseService {
7
+ constructor(plugin: DeviceManagerPlugin);
8
+ create(_id: string, engineId: string, metadata: JSONObject, model: string, name: string, path: string, request: KuzzleRequest): Promise<KDocument<GroupContent>>;
9
+ get(engineId: string, _id: string, request: KuzzleRequest): Promise<KDocument<GroupContent>>;
10
+ update(request: KuzzleRequest, _id: string, engineId: string, updateContent: JSONObject): Promise<KDocument<GroupContent>>;
11
+ delete(_id: string, engineId: string, request: KuzzleRequest): Promise<{
12
+ _id: string;
13
+ }>;
14
+ search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<import("kuzzle-sdk").SearchResult<import("kuzzle-sdk").KHit<GroupContent>>>;
15
+ addAsset(engineId: string, path: string, assetIds: string[], request: KuzzleRequest): Promise<{
16
+ group: KDocument<GroupContent>;
17
+ successes: {
18
+ _id: string;
19
+ _source: JSONObject;
20
+ _version: number;
21
+ }[];
22
+ errors: {
23
+ document: {
24
+ _id: string;
25
+ _source: JSONObject;
26
+ };
27
+ status: number;
28
+ reason: string;
29
+ }[];
30
+ }>;
31
+ removeAsset(engineId: string, path: string, assetIds: string[], request: KuzzleRequest): Promise<{
32
+ group: KDocument<GroupContent>;
33
+ successes: {
34
+ _id: string;
35
+ _source: JSONObject;
36
+ _version: number;
37
+ }[];
38
+ errors: {
39
+ document: {
40
+ _id: string;
41
+ _source: JSONObject;
42
+ };
43
+ status: number;
44
+ reason: string;
45
+ }[];
46
+ }>;
47
+ }
@@ -0,0 +1,2 @@
1
+ import { CollectionMappings } from "kuzzle";
2
+ export declare const groupsMappings: CollectionMappings;
@@ -0,0 +1,5 @@
1
+ export * from "./types/GroupContent";
2
+ export * from "./types/GroupsApi";
3
+ export * from "./roles/RoleGroupsAdmin";
4
+ export * from "./roles/RoleGroupsReader";
5
+ export * from "./collections/groupsMappings";
@@ -0,0 +1,4 @@
1
+ export * from "./collections/groupsMappings";
2
+ export * from "./GroupsModule";
3
+ export * from "./roles/RoleGroupsAdmin";
4
+ export * from "./roles/RoleGroupsReader";
@@ -1,12 +1,12 @@
1
1
  import { KuzzleRole } from "../../shared/types/KuzzleRole";
2
2
  /**
3
- * This role allows to manage assets and their models.
3
+ * This role allows to manage groups and their models.
4
4
  *
5
5
  * It's a tenant role.
6
6
  *
7
7
  * @example
8
8
  *
9
- "device-manager/assets": {
9
+ "device-manager/groups": {
10
10
  actions: {
11
11
  "*": true,
12
12
  },
@@ -21,4 +21,4 @@ import { KuzzleRole } from "../../shared/types/KuzzleRole";
21
21
  },
22
22
  },
23
23
  */
24
- export declare const RoleAssetsGroupsAdmin: KuzzleRole;
24
+ export declare const RoleGroupsAdmin: KuzzleRole;
@@ -1,12 +1,12 @@
1
1
  import { KuzzleRole } from "../../shared/types/KuzzleRole";
2
2
  /**
3
- * This role allows to manage assets and their models.
3
+ * This role allows to manage groups and their models.
4
4
  *
5
5
  * It's a tenant role.
6
6
  *
7
7
  * @example
8
8
  *
9
- "device-manager/assets": {
9
+ "device-manager/groups": {
10
10
  actions: {
11
11
  "*": true,
12
12
  },
@@ -21,4 +21,4 @@ import { KuzzleRole } from "../../shared/types/KuzzleRole";
21
21
  },
22
22
  },
23
23
  */
24
- export declare const RoleAssetsGroupsReader: KuzzleRole;
24
+ export declare const RoleGroupsReader: KuzzleRole;
@@ -0,0 +1,10 @@
1
+ import { KDocumentContent } from "kuzzle-sdk";
2
+ import { Metadata } from "lib/modules/shared";
3
+ export interface GroupsBody<TMetadata extends Metadata = Metadata> extends KDocumentContent {
4
+ name: string;
5
+ model?: string | null;
6
+ path: string;
7
+ lastUpdate: number;
8
+ metadata?: TMetadata;
9
+ }
10
+ export type GroupContent<TMetadata extends Metadata = any> = GroupsBody<TMetadata>;
@@ -1,31 +1,31 @@
1
1
  import { JSONObject, KDocument, KHit, SearchResult, mUpdateResponse } from "kuzzle-sdk";
2
- import { AssetsGroupsBody, AssetsGroupContent } from "./AssetGroupContent";
3
- type AssetsGroupsRequest = Omit<AssetsGroupsBody, "lastUpdate">;
4
- export type AssetsGroupsBodyRequest = Partial<AssetsGroupsRequest> & Omit<AssetsGroupsRequest, "parent">;
2
+ import { GroupsBody, GroupContent } from "./GroupContent";
3
+ type GroupsRequest = Omit<GroupsBody, "lastUpdate">;
4
+ export type GroupsBodyRequest = Partial<GroupsRequest>;
5
5
  export type UpdateAssetLinkResponse = mUpdateResponse & {
6
- assetsGroups: KDocument<AssetsGroupContent>;
6
+ group: KDocument<GroupContent>;
7
7
  };
8
8
  interface GroupControllerRequest {
9
- controller: "device-manager/assetsGroup";
9
+ controller: "device-manager/groups";
10
10
  engineId: string;
11
11
  }
12
12
  export interface ApiGroupCreateRequest extends GroupControllerRequest {
13
13
  action: "create";
14
14
  _id?: string;
15
- body: Omit<AssetsGroupsBodyRequest, "children">;
15
+ body: GroupsBodyRequest;
16
16
  }
17
- export type ApiGroupCreateResult = KDocument<AssetsGroupContent>;
17
+ export type ApiGroupCreateResult = KDocument<GroupContent>;
18
18
  export interface ApiGroupGetRequest extends GroupControllerRequest {
19
19
  action: "get";
20
20
  _id: string;
21
21
  }
22
- export type ApiGroupGetResult = KDocument<AssetsGroupContent>;
22
+ export type ApiGroupGetResult = KDocument<GroupContent>;
23
23
  export interface ApiGroupUpdateRequest extends GroupControllerRequest {
24
24
  action: "update";
25
25
  _id: string;
26
- body: AssetsGroupsBodyRequest;
26
+ body: GroupsBodyRequest;
27
27
  }
28
- export type ApiGroupUpdateResult = KDocument<AssetsGroupContent>;
28
+ export type ApiGroupUpdateResult = KDocument<GroupContent>;
29
29
  export interface ApiGroupDeleteRequest extends GroupControllerRequest {
30
30
  action: "delete";
31
31
  _id: string;
@@ -39,19 +39,19 @@ export interface ApiGroupSearchRequest extends GroupControllerRequest {
39
39
  lang?: "koncorde" | "elasticsearch";
40
40
  body: JSONObject;
41
41
  }
42
- export type ApiGroupSearchResult = SearchResult<KHit<AssetsGroupContent>>;
42
+ export type ApiGroupSearchResult = SearchResult<KHit<GroupContent>>;
43
43
  export interface ApiGroupAddAssetsRequest extends GroupControllerRequest {
44
44
  action: "addAsset";
45
- _id: string;
46
45
  body: {
46
+ path: string;
47
47
  assetIds: string[];
48
48
  };
49
49
  }
50
50
  export type ApiGroupAddAssetsResult = UpdateAssetLinkResponse;
51
51
  export interface ApiGroupRemoveAssetsRequest extends GroupControllerRequest {
52
52
  action: "removeAsset";
53
- _id: string;
54
53
  body: {
54
+ path: string;
55
55
  assetIds: string[];
56
56
  };
57
57
  }
@@ -1,3 +1,5 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
1
3
  import { KHit, User } from "kuzzle";
2
4
  import { UUID } from "node:crypto";
3
5
  import { AbstractExporter, Column, ExportParams } from "../shared";
@@ -1,48 +1,25 @@
1
- import { JSONObject, KDocument } from "kuzzle";
2
- import { DeviceContent } from "../device";
1
+ import { JSONObject } from "kuzzle";
3
2
  import { DeviceManagerPlugin } from "../plugin";
4
- import { BaseService, Metadata } from "../shared";
3
+ import { BaseService } from "../shared";
5
4
  import { DecodedMeasurement } from "./types/MeasureContent";
6
- import { ApiMeasureSource } from "./types/MeasureSources";
7
- import { ApiMeasureTarget } from "./types/MeasureTarget";
5
+ import { MeasureSource } from "./types/MeasureSources";
6
+ import { MeasureTarget } from "./types/MeasureTarget";
8
7
  export declare class MeasureService extends BaseService {
9
8
  constructor(plugin: DeviceManagerPlugin);
10
9
  /**
11
- * Register new measures from an API, updates :
10
+ * Register new measures updates :
12
11
  * - asset
13
12
  * - engine measures
14
13
  *
15
14
  * This method represents the ingestion pipeline:
16
15
  * - trigger events `before` (measure enrichment)
17
- * - save documents (measures and asset)
16
+ * - save documents (measures & device metadata)
18
17
  * - trigger events `after`
19
18
  */
20
- ingestApi(source: ApiMeasureSource, target: ApiMeasureTarget, measurements: DecodedMeasurement<JSONObject>[], payloadUuids: string[]): Promise<void>;
21
- /**
22
- * Register new measures from a device, updates :
23
- * - admin device
24
- * - engine device
25
- * - linked asset
26
- * - engine measures
27
- *
28
- * A mutex ensure that a device can ingest one measure at a time.
29
- *
30
- * This method represents the ingestion pipeline:
31
- * - build measures documents and update digital twins (device and asset)
32
- * - trigger events `before` (measure enrichment)
33
- * - save documents (measures, device and asset)
34
- * - trigger events `after`
35
- *
36
- * @deprecated
37
- */
38
- ingest(device: KDocument<DeviceContent>, measurements: DecodedMeasurement<JSONObject>[], metadata: Metadata, payloadUuids: string[]): Promise<void>;
39
- private updateDeviceMeasures;
40
- /**
41
- * Update asset with each non-null non-computed measures.
42
- *
43
- * @returns A map of each asset state by measuredAt timestamp.
44
- */
45
- private updateAssetMeasures;
19
+ ingest(source: MeasureSource, target: MeasureTarget, measurements: DecodedMeasurement<JSONObject>[], payloadUuids: string[]): Promise<void>;
20
+ private buildDeviceMeasures;
21
+ private ingestDeviceMeasures;
22
+ private ingestApiMeasures;
46
23
  /**
47
24
  * Build the measures document received from the API
48
25
  *
@@ -50,14 +27,10 @@ export declare class MeasureService extends BaseService {
50
27
  * @param asset The target asset to build the measure for
51
28
  * @param measure The decoded raw measures
52
29
  * @param payloadUuids The uuid's of the payloads used to create the measure
53
- *
30
+ * @param engineGroup engineGroup of model
54
31
  * @returns A MeasurementContent builded from parameters
55
32
  */
56
33
  private buildApiMeasures;
57
- /**
58
- * Build the measures documents to save
59
- */
60
- private buildMeasures;
61
34
  /**
62
35
  * Find an asset by its ID and its engine ID.
63
36
  *
@@ -6,5 +6,4 @@ export declare const enum DATA_SOURCE_METADATA_TYPE {
6
6
  DEVICE = "device"
7
7
  }
8
8
  export declare function apiSourceToOriginApi(source: ApiMeasureSource, payloadUuids: string[]): MeasureOriginApi;
9
- export declare function toDeviceSource(dataSourceId: string, reference: string, model: string, metadata?: Metadata, lastMeasuredAt?: number): DeviceMeasureSource;
10
- export declare function deviceSourceToOriginDevice(source: DeviceMeasureSource, measureName: string, payloadUuids: string[]): MeasureOriginDevice;
9
+ export declare function deviceSourceToOriginDevice(source: DeviceMeasureSource, measureName: string, payloadUuids: string[], deviceMetadata: Metadata): MeasureOriginDevice;
@@ -37,7 +37,7 @@ export declare const measuresMappings: {
37
37
  };
38
38
  groups: {
39
39
  properties: {
40
- id: {
40
+ path: {
41
41
  type: string;
42
42
  fields: {
43
43
  text: {
@@ -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,5 +1,6 @@
1
1
  import { SchemaObject } from "ajv";
2
2
  import { JSONObject } from "kuzzle-sdk";
3
+ import { LocaleDetails } from "lib/modules/model";
3
4
  interface MeasureLocales {
4
5
  [localeString: string]: {
5
6
  friendlyName: string;
@@ -44,6 +45,9 @@ export interface MeasureValuesDetails {
44
45
  *}
45
46
  */
46
47
  export interface MeasureDefinition {
48
+ locales?: {
49
+ [valueName: string]: LocaleDetails;
50
+ };
47
51
  /**
48
52
  * Mappings for the measurement values in order to index the fields
49
53
  */