kuzzle-device-manager-types 2.4.0-beta.2 → 2.4.0-beta.20

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 (42) hide show
  1. package/dist/lib/modules/asset/AssetHistoryService.d.ts +2 -4
  2. package/dist/lib/modules/asset/AssetService.d.ts +25 -26
  3. package/dist/lib/modules/asset/AssetsController.d.ts +4 -1
  4. package/dist/lib/modules/asset/types/AssetApi.d.ts +32 -0
  5. package/dist/lib/modules/asset/types/AssetContent.d.ts +1 -1
  6. package/dist/lib/modules/decoder/Decoder.d.ts +11 -0
  7. package/dist/lib/modules/decoder/PayloadService.d.ts +3 -6
  8. package/dist/lib/modules/decoder/types/DecoderContent.d.ts +1 -0
  9. package/dist/lib/modules/device/DeviceService.d.ts +27 -46
  10. package/dist/lib/modules/device/DevicesController.d.ts +2 -1
  11. package/dist/lib/modules/device/collections/deviceMappings.d.ts +2 -46
  12. package/dist/lib/modules/device/types/DeviceApi.d.ts +11 -0
  13. package/dist/lib/modules/device/types/DeviceEvents.d.ts +29 -0
  14. package/dist/lib/modules/measure/MeasureExporter.d.ts +5 -2
  15. package/dist/lib/modules/measure/MeasureService.d.ts +2 -6
  16. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +18 -0
  17. package/dist/lib/modules/measure/types/MeasureContent.d.ts +4 -0
  18. package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +28 -3
  19. package/dist/lib/modules/model/MappingsConflictsError.d.ts +7 -0
  20. package/dist/lib/modules/model/ModelService.d.ts +13 -8
  21. package/dist/lib/modules/model/ModelsConflicts.d.ts +30 -0
  22. package/dist/lib/modules/model/ModelsController.d.ts +2 -1
  23. package/dist/lib/modules/model/ModelsRegister.d.ts +28 -3
  24. package/dist/lib/modules/model/types/ModelApi.d.ts +24 -3
  25. package/dist/lib/modules/model/types/ModelContent.d.ts +207 -2
  26. package/dist/lib/modules/model/types/ModelDefinition.d.ts +129 -5
  27. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +141 -5
  28. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +113 -8
  29. package/dist/lib/modules/plugin/exports.d.ts +1 -1
  30. package/dist/lib/modules/plugin/index.d.ts +1 -2
  31. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +27 -5
  32. package/dist/lib/modules/plugin/types/Pipes.d.ts +17 -0
  33. package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
  34. package/dist/lib/modules/plugin/types/index.d.ts +3 -0
  35. package/dist/lib/modules/shared/index.d.ts +3 -4
  36. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +1 -0
  37. package/dist/lib/modules/shared/services/BaseService.d.ts +69 -0
  38. package/dist/lib/modules/shared/services/index.d.ts +1 -0
  39. package/dist/tests/application/assets/Container.d.ts +3 -0
  40. package/dist/tests/application/decoders/DummyTempPositionDecoder.d.ts +1 -0
  41. package/package.json +4 -3
  42. package/dist/lib/modules/shared/utils/ask.d.ts +0 -8
@@ -1,9 +1,7 @@
1
1
  import { DeviceManagerPlugin } from "../plugin";
2
+ import { BaseService } from "../shared";
2
3
  import { AssetHistoryContent, AssetHistoryEvent } from "./types/AssetHistoryContent";
3
- export declare class AssetHistoryService {
4
- private context;
5
- private config;
6
- private get sdk();
4
+ export declare class AssetHistoryService extends BaseService {
7
5
  constructor(plugin: DeviceManagerPlugin);
8
6
  add<TAssetHistoryEvent extends AssetHistoryEvent>(engineId: string, histories: AssetHistoryContent[]): Promise<void>;
9
7
  }
@@ -1,38 +1,37 @@
1
- import { User } from "kuzzle";
1
+ import { KuzzleRequest, User } from "kuzzle";
2
2
  import { JSONObject, KDocument, KHit, SearchResult, mReplaceResponse } from "kuzzle-sdk";
3
3
  import { DeviceManagerPlugin } from "../plugin";
4
- import { Metadata } from "../shared";
4
+ import { BaseService, Metadata, SearchParams } from "../shared";
5
5
  import { AssetHistoryService } from "./AssetHistoryService";
6
+ import { ApiAssetMigrateTenantResult } from "./types/AssetApi";
6
7
  import { AssetContent } from "./types/AssetContent";
7
- export declare class AssetService {
8
- private context;
9
- private config;
8
+ export declare class AssetService extends BaseService {
10
9
  private assetHistoryService;
11
- private get sdk();
12
- private get app();
13
- private get impersonatedSdk();
14
10
  constructor(plugin: DeviceManagerPlugin, assetHistoryService: AssetHistoryService);
15
11
  registerAskEvents(): void;
16
- get(engineId: string, assetId: string): Promise<KDocument<AssetContent>>;
12
+ get(engineId: string, assetId: string, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
17
13
  /**
18
- * Updates an asset metadata
14
+ * Update an asset metadata
19
15
  */
20
- update(user: User, engineId: string, assetId: string, metadata: Metadata, { refresh }: {
21
- refresh: any;
22
- }): Promise<KDocument<AssetContent>>;
23
- create(user: User, engineId: string, model: string, reference: string, metadata: JSONObject, { refresh }: {
24
- refresh: any;
25
- }): Promise<KDocument<AssetContent>>;
26
- delete(user: User, engineId: string, assetId: string, { refresh, strict }: {
27
- refresh: any;
28
- strict: boolean;
29
- }): Promise<void>;
30
- search(engineId: string, searchBody: JSONObject, { from, size, scroll, lang, }: {
31
- from?: number;
32
- size?: number;
33
- scroll?: string;
34
- lang?: string;
35
- }): Promise<SearchResult<KHit<AssetContent>>>;
16
+ update(engineId: string, assetId: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
17
+ /**
18
+ * Replace an asset metadata
19
+ */
20
+ replaceMetadata(engineId: string, assetId: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
21
+ /**
22
+ * Update or Create an asset metadata
23
+ */
24
+ upsert(engineId: string, model: string, reference: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
25
+ /**
26
+ * Create an asset metadata
27
+ */
28
+ create(engineId: string, model: string, reference: string, metadata: JSONObject, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
29
+ /**
30
+ * Delete an asset metadata
31
+ */
32
+ delete(engineId: string, assetId: string, request: KuzzleRequest): Promise<void>;
33
+ search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<AssetContent>>>;
34
+ migrateTenant(user: User, assetsList: string[], engineId: string, newEngineId: string): Promise<ApiAssetMigrateTenantResult>;
36
35
  /**
37
36
  * Replace an asset metadata
38
37
  */
@@ -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, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult } from "./types/AssetApi";
4
+ import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult } from "./types/AssetApi";
5
5
  export declare class AssetsController {
6
6
  private plugin;
7
7
  private assetService;
@@ -10,11 +10,14 @@ export declare class AssetsController {
10
10
  private measureExporter;
11
11
  constructor(plugin: DeviceManagerPlugin, assetService: AssetService);
12
12
  get(request: KuzzleRequest): Promise<ApiAssetGetResult>;
13
+ upsert(request: KuzzleRequest): Promise<ApiAssetUpsertResult>;
13
14
  update(request: KuzzleRequest): Promise<ApiAssetUpdateResult>;
15
+ replaceMetadata(request: KuzzleRequest): Promise<ApiAssetMetadataReplaceResult>;
14
16
  create(request: KuzzleRequest): Promise<ApiAssetCreateResult>;
15
17
  delete(request: KuzzleRequest): Promise<ApiAssetDeleteResult>;
16
18
  search(request: KuzzleRequest): Promise<ApiAssetSearchResult>;
17
19
  getMeasures(request: KuzzleRequest): Promise<ApiAssetGetMeasuresResult>;
18
20
  exportMeasures(request: KuzzleRequest): Promise<any>;
19
21
  export(request: KuzzleRequest): Promise<any>;
22
+ migrateTenant(request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
20
23
  }
@@ -20,6 +20,26 @@ export interface ApiAssetUpdateRequest extends AssetsControllerRequest {
20
20
  };
21
21
  }
22
22
  export type ApiAssetUpdateResult = KDocument<AssetContent>;
23
+ export interface ApiAssetMetadataReplaceRequest extends AssetsControllerRequest {
24
+ action: "replaceMetadata";
25
+ _id: string;
26
+ refresh?: string;
27
+ body: {
28
+ metadata: Metadata;
29
+ };
30
+ }
31
+ export type ApiAssetMetadataReplaceResult = KDocument<AssetContent>;
32
+ export interface ApiAssetUpsertRequest extends AssetsControllerRequest {
33
+ action: "upsert";
34
+ _id: string;
35
+ refresh?: string;
36
+ body: {
37
+ model: string;
38
+ reference: string;
39
+ metadata: Metadata;
40
+ };
41
+ }
42
+ export type ApiAssetUpsertResult = KDocument<AssetContent>;
23
43
  export interface ApiAssetCreateRequest extends AssetsControllerRequest {
24
44
  action: "create";
25
45
  refresh?: string;
@@ -96,4 +116,16 @@ export interface ApiAssetExportRequest extends AssetsControllerRequest {
96
116
  export type ApiAssetExportResult = {
97
117
  link: string;
98
118
  };
119
+ export interface ApiAssetMigrateTenantRequest extends AssetsControllerRequest {
120
+ action: "migrateTenant";
121
+ engineId: string;
122
+ body: {
123
+ assetsList: string[];
124
+ newEngineId: string;
125
+ };
126
+ }
127
+ export type ApiAssetMigrateTenantResult = {
128
+ errors: string[];
129
+ successes: string[];
130
+ };
99
131
  export {};
@@ -49,4 +49,4 @@ export type AssetMeasureContext<TMetadata extends Metadata = Metadata> = {
49
49
  * Name of the measure for the Asset
50
50
  */
51
51
  measureName: string;
52
- } & Pick<AssetContent<JSONObject, TMetadata>, "model" | "reference" | "metadata">;
52
+ } & Pick<AssetContent<JSONObject, TMetadata>, "model" | "reference" | "metadata" | "groups">;
@@ -19,6 +19,17 @@ export type NamedMeasures = Array<{
19
19
  */
20
20
  export declare abstract class Decoder {
21
21
  private _http?;
22
+ /**
23
+ * Internal logger.
24
+ */
25
+ log: {
26
+ debug: (message: any) => void;
27
+ error: (message: any) => void;
28
+ info: (message: any) => void;
29
+ silly: (message: any) => void;
30
+ verbose: (message: any) => void;
31
+ warn: (message: any) => void;
32
+ };
22
33
  /**
23
34
  * Device model name.
24
35
  *
@@ -1,14 +1,11 @@
1
1
  import { KuzzleRequest } from "kuzzle";
2
2
  import { JSONObject, KDocument } from "kuzzle-sdk";
3
- import { DeviceManagerPlugin } from "../plugin";
4
3
  import { DeviceContent } from "../device";
5
4
  import { DecodedMeasurement } from "../measure";
5
+ import { DeviceManagerPlugin } from "../plugin";
6
+ import { BaseService } from "../shared";
6
7
  import { Decoder } from "./Decoder";
7
- export declare class PayloadService {
8
- private config;
9
- private context;
10
- private get sdk();
11
- private get app();
8
+ export declare class PayloadService extends BaseService {
12
9
  constructor(plugin: DeviceManagerPlugin);
13
10
  /**
14
11
  * Process a payload by validating and decode it with the `decoder` associated
@@ -1,5 +1,6 @@
1
1
  import { NamedMeasures } from "../Decoder";
2
2
  export interface DecoderContent {
3
3
  deviceModel: string;
4
+ action?: string;
4
5
  measures: NamedMeasures;
5
6
  }
@@ -1,17 +1,14 @@
1
- import { Plugin, User } from "kuzzle";
1
+ import { KuzzleRequest } from "kuzzle";
2
2
  import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
3
- import { AssetContent } from "./../asset";
4
- import { Metadata } from "../shared";
5
3
  import { DecodedMeasurement } from "../measure";
6
- import { DeviceContent } from "./types/DeviceContent";
4
+ import { DeviceManagerPlugin } from "../plugin";
5
+ import { BaseService, Metadata, SearchParams } from "../shared";
6
+ import { AssetContent } from "./../asset";
7
7
  import { ApiDeviceLinkAssetRequest } from "./types/DeviceApi";
8
- export declare class DeviceService {
9
- private config;
10
- private context;
11
- private get sdk();
12
- private get app();
13
- private get impersonatedSdk();
14
- constructor(plugin: Plugin);
8
+ import { DeviceContent } from "./types/DeviceContent";
9
+ export declare class DeviceService extends BaseService {
10
+ constructor(plugin: DeviceManagerPlugin);
11
+ registerAskEvents(): void;
15
12
  /**
16
13
  * Create a new device.
17
14
  *
@@ -19,23 +16,16 @@ export declare class DeviceService {
19
16
  * method since in this case "engineId" is not really an engine ID but still
20
17
  * required as an argument (in part to check the tenant rights)
21
18
  */
22
- create(user: User, model: string, reference: string, metadata: JSONObject, { engineId, refresh, }?: {
23
- engineId?: string;
24
- refresh?: any;
25
- }): Promise<KDocument<DeviceContent>>;
26
- get(index: string, deviceId: string): Promise<KDocument<DeviceContent>>;
27
- update(user: User, engineId: string, deviceId: string, metadata: Metadata, { refresh }: {
28
- refresh: any;
29
- }): Promise<KDocument<DeviceContent>>;
30
- delete(user: User, engineId: string, deviceId: string, { refresh }: {
31
- refresh: any;
32
- }): Promise<void>;
33
- search(engineId: string, searchBody: JSONObject, { from, size, scroll, lang, }: {
34
- from?: number;
35
- size?: number;
36
- scroll?: string;
37
- lang?: string;
38
- }): Promise<SearchResult<KHit<DeviceContent>>>;
19
+ create(model: string, reference: string, metadata: JSONObject, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
20
+ get(engineId: string, deviceId: string, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
21
+ private getInternalDevices;
22
+ /**
23
+ * Update or Create an device metadata
24
+ */
25
+ upsert(engineId: string, model: string, reference: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
26
+ update(engineId: string, deviceId: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
27
+ delete(engineId: string, deviceId: string, request: KuzzleRequest): Promise<void>;
28
+ search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<DeviceContent>>>;
39
29
  /**
40
30
  * Attach the device to an engine
41
31
  *
@@ -44,29 +34,22 @@ export declare class DeviceService {
44
34
  * @param options.refresh Wait for ES indexation
45
35
  * @param options.strict If true, throw if an operation isn't possible
46
36
  */
47
- attachEngine(user: User, engineId: string, deviceId: string, { refresh }?: {
48
- refresh?: any;
49
- }): Promise<KDocument<DeviceContent>>;
37
+ attachEngine(engineId: string, deviceId: string, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
50
38
  /**
51
39
  * Detach a device from its attached engine
52
40
  *
53
- * @param deviceId Device id
54
- * @param options.refresh Wait for ES indexation
41
+ * @param {string} deviceId Id of the device
42
+ * @param {KuzzleRequest} request kuzzle request
55
43
  */
56
- detachEngine(user: User, deviceId: string, { refresh }?: {
57
- refresh?: any;
58
- }): Promise<KDocument<DeviceContent>>;
44
+ detachEngine(deviceId: string, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
59
45
  /**
60
46
  * Link a device to an asset.
61
47
  */
62
- linkAsset(user: User, engineId: string, deviceId: string, assetId: string, measureNames: ApiDeviceLinkAssetRequest["body"]["measureNames"], { refresh, implicitMeasuresLinking, }?: {
63
- refresh?: any;
64
- implicitMeasuresLinking?: boolean;
65
- }): Promise<{
48
+ linkAsset(engineId: string, deviceId: string, assetId: string, measureNames: ApiDeviceLinkAssetRequest["body"]["measureNames"], implicitMeasuresLinking: boolean, request: KuzzleRequest): Promise<{
66
49
  asset: KDocument<AssetContent>;
67
50
  device: KDocument<DeviceContent>;
68
51
  }>;
69
- receiveMeasures(engineId: string, deviceId: string, measures: DecodedMeasurement[], payloadUuids: string[]): Promise<void>;
52
+ receiveMeasures(engineId: string, deviceId: string, measures: DecodedMeasurement[], payloadUuids: string[], request: KuzzleRequest): Promise<void>;
70
53
  /**
71
54
  * Checks if the asset does not already have a linked device using one of the
72
55
  * requested measure names.
@@ -82,12 +65,10 @@ export declare class DeviceService {
82
65
  /**
83
66
  * Unlink a device of an asset
84
67
  *
85
- * @param deviceId Id of the device
86
- * @param options.refresh Wait for ES indexation
68
+ * @param {string} deviceId Id of the device
69
+ * @param {KuzzleRequest} request kuzzle request
87
70
  */
88
- unlinkAsset(user: User, deviceId: string, { refresh }?: {
89
- refresh?: any;
90
- }): Promise<{
71
+ unlinkAsset(deviceId: string, request: KuzzleRequest): Promise<{
91
72
  asset: KDocument<AssetContent>;
92
73
  device: KDocument<DeviceContent>;
93
74
  }>;
@@ -1,7 +1,7 @@
1
1
  import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
2
  import { DeviceManagerPlugin } from "../plugin";
3
3
  import { DeviceService } from "./DeviceService";
4
- import { ApiDeviceAttachEngineResult, ApiDeviceCreateResult, ApiDeviceDeleteResult, ApiDeviceDetachEngineResult, ApiDeviceGetResult, ApiDeviceLinkAssetResult, ApiDeviceSearchResult, ApiDeviceUnlinkAssetResult, ApiDeviceUpdateResult, ApiDeviceGetMeasuresResult } from "./types/DeviceApi";
4
+ import { ApiDeviceAttachEngineResult, ApiDeviceCreateResult, ApiDeviceDeleteResult, ApiDeviceDetachEngineResult, ApiDeviceGetResult, ApiDeviceLinkAssetResult, ApiDeviceSearchResult, ApiDeviceUnlinkAssetResult, ApiDeviceUpdateResult, ApiDeviceGetMeasuresResult, ApiDeviceUpsertResult } from "./types/DeviceApi";
5
5
  export declare class DevicesController {
6
6
  private plugin;
7
7
  private deviceService;
@@ -13,6 +13,7 @@ export declare class DevicesController {
13
13
  update(request: KuzzleRequest): Promise<ApiDeviceUpdateResult>;
14
14
  delete(request: KuzzleRequest): Promise<ApiDeviceDeleteResult>;
15
15
  search(request: KuzzleRequest): Promise<ApiDeviceSearchResult>;
16
+ upsert(request: KuzzleRequest): Promise<ApiDeviceUpsertResult>;
16
17
  /**
17
18
  * Create and provision a new device
18
19
  */
@@ -1,51 +1,7 @@
1
+ import { CollectionMappings } from "kuzzle";
1
2
  /**
2
3
  * Base mappings for the "devices" collection.
3
4
  *
4
5
  * Those mappings does not contains the `measures` and `metadata` mappings.
5
6
  */
6
- export declare const devicesMappings: {
7
- dynamic: string;
8
- properties: {
9
- model: {
10
- type: string;
11
- fields: {
12
- text: {
13
- type: string;
14
- };
15
- };
16
- };
17
- reference: {
18
- type: string;
19
- fields: {
20
- text: {
21
- type: string;
22
- };
23
- };
24
- };
25
- assetId: {
26
- type: string;
27
- fields: {
28
- text: {
29
- type: string;
30
- };
31
- };
32
- };
33
- engineId: {
34
- type: string;
35
- fields: {
36
- text: {
37
- type: string;
38
- };
39
- };
40
- };
41
- metadata: {
42
- properties: {};
43
- };
44
- measures: {
45
- properties: {};
46
- };
47
- lastMeasuredAt: {
48
- type: string;
49
- };
50
- };
51
- };
7
+ export declare const devicesMappings: CollectionMappings;
@@ -21,6 +21,17 @@ export interface ApiDeviceUpdateRequest extends DevicesControllerRequest {
21
21
  };
22
22
  }
23
23
  export type ApiDeviceUpdateResult = KDocument<DeviceContent>;
24
+ export interface ApiDeviceUpsertRequest extends DevicesControllerRequest {
25
+ action: "upsert";
26
+ _id: string;
27
+ refresh?: string;
28
+ body: {
29
+ model: string;
30
+ reference: string;
31
+ metadata: Metadata;
32
+ };
33
+ }
34
+ export type ApiDeviceUpsertResult = KDocument<DeviceContent>;
24
35
  export interface ApiDeviceCreateRequest extends DevicesControllerRequest {
25
36
  action: "create";
26
37
  refresh?: string;
@@ -2,6 +2,7 @@ import { User } from "kuzzle";
2
2
  import { KDocument } from "kuzzle-sdk";
3
3
  import { Metadata } from "../../../modules/shared";
4
4
  import { DeviceContent } from "./DeviceContent";
5
+ import { ApiDeviceLinkAssetRequest } from "./DeviceApi";
5
6
  export type EventDeviceUpdateBefore = {
6
7
  name: "device-manager:device:update:before";
7
8
  args: [{
@@ -19,6 +20,17 @@ export type EventDeviceUpdateAfter = {
19
20
  /**
20
21
  * @internal
21
22
  */
23
+ export type AskDeviceLinkAsset = {
24
+ name: "ask:device-manager:device:link-asset";
25
+ payload: {
26
+ engineId: string;
27
+ assetId: string;
28
+ deviceId: string;
29
+ user: User;
30
+ measureNames: ApiDeviceLinkAssetRequest["body"]["measureNames"];
31
+ };
32
+ result: void;
33
+ };
22
34
  export type AskDeviceUnlinkAsset = {
23
35
  name: "ask:device-manager:device:unlink-asset";
24
36
  payload: {
@@ -27,3 +39,20 @@ export type AskDeviceUnlinkAsset = {
27
39
  };
28
40
  result: void;
29
41
  };
42
+ export type AskDeviceDetachEngine = {
43
+ name: "ask:device-manager:device:detach-engine";
44
+ payload: {
45
+ deviceId: string;
46
+ user: User;
47
+ };
48
+ result: void;
49
+ };
50
+ export type AskDeviceAttachEngine = {
51
+ name: "ask:device-manager:device:attach-engine";
52
+ payload: {
53
+ engineId: string;
54
+ deviceId: string;
55
+ user: User;
56
+ };
57
+ result: void;
58
+ };
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- import { UUID } from "node:crypto";
4
3
  import { KHit, User } from "kuzzle";
4
+ import { UUID } from "node:crypto";
5
5
  import { AbstractExporter, Column, ExportParams } from "../shared";
6
6
  import { MeasureContent } from "./exports";
7
7
  interface MeasureSearchParams extends ExportParams {
@@ -38,7 +38,10 @@ export declare class MeasureExporter extends AbstractExporter<MeasureExportParam
38
38
  * Never return a rejected promise and write potential error on the stream
39
39
  */
40
40
  prepareExport(engineId: string, user: User, params: MeasureSearchParams): Promise<string>;
41
- protected formatHit(columns: Column[], hit: KHit<MeasureContent>): any[];
41
+ protected formatHit(columns: Array<Column & {
42
+ shouldCheckName: boolean;
43
+ name: string;
44
+ }>, hit: KHit<MeasureContent>): any[];
42
45
  /**
43
46
  * Retrieve a prepared export and write each document as a CSV in the stream
44
47
  *
@@ -1,13 +1,9 @@
1
1
  import { JSONObject, KDocument } from "kuzzle";
2
2
  import { DeviceContent } from "../device";
3
3
  import { DeviceManagerPlugin } from "../plugin";
4
- import { Metadata } from "../shared";
4
+ import { BaseService, Metadata } from "../shared";
5
5
  import { DecodedMeasurement } from "./types/MeasureContent";
6
- export declare class MeasureService {
7
- private config;
8
- private context;
9
- private get sdk();
10
- private get app();
6
+ export declare class MeasureService extends BaseService {
11
7
  constructor(plugin: DeviceManagerPlugin);
12
8
  /**
13
9
  * Register new measures from a device, updates :
@@ -35,6 +35,21 @@ export declare const measuresMappings: {
35
35
  metadata: {
36
36
  properties: {};
37
37
  };
38
+ groups: {
39
+ properties: {
40
+ id: {
41
+ type: string;
42
+ fields: {
43
+ text: {
44
+ type: string;
45
+ };
46
+ };
47
+ };
48
+ date: {
49
+ type: string;
50
+ };
51
+ };
52
+ };
38
53
  };
39
54
  };
40
55
  /**
@@ -48,6 +63,9 @@ export declare const measuresMappings: {
48
63
  measureName: {
49
64
  type: string;
50
65
  };
66
+ deviceMetadata: {
67
+ properties: {};
68
+ };
51
69
  payloadUuids: {
52
70
  type: string;
53
71
  };
@@ -10,6 +10,10 @@ export type MeasureOriginDevice = {
10
10
  * Name of the measure in the device
11
11
  */
12
12
  measureName: string;
13
+ /**
14
+ * Origin device metadata
15
+ */
16
+ deviceMetadata?: Metadata;
13
17
  /**
14
18
  * Payload uuids that were used to create this measure.
15
19
  */
@@ -1,15 +1,40 @@
1
1
  import { JSONObject } from "kuzzle-sdk";
2
+ interface MeasureLocales {
3
+ [localeString: string]: {
4
+ friendlyName: string;
5
+ unit?: string;
6
+ };
7
+ }
8
+ export interface MeasureValuesDetails {
9
+ [valueName: string]: MeasureLocales;
10
+ }
2
11
  /**
3
12
  * Represents a measure definition registered by the Device Manager
4
13
  *
5
14
  * @example
6
- * {
7
- * valuesMappings: { temperature: { type: 'float' } },
8
- * }
15
+ *{
16
+ * valuesMappings: { temperature: { type: "float" } },
17
+ * valuesDetails: {
18
+ * temperature: {
19
+ * en: {
20
+ * friendlyName: "Temperature",
21
+ * unit: "°C",
22
+ * },
23
+ * fr: {
24
+ * friendlyName: "Température",
25
+ * unit: "°C",
26
+ * },
27
+ * },
28
+ * },
29
+ *}
9
30
  */
10
31
  export interface MeasureDefinition {
11
32
  /**
12
33
  * Mappings for the measurement values in order to index the fields
13
34
  */
14
35
  valuesMappings: JSONObject;
36
+ valuesDetails?: {
37
+ [valueName: string]: MeasureLocales;
38
+ };
15
39
  }
40
+ export {};
@@ -0,0 +1,7 @@
1
+ import { JSONObject, KuzzleError } from "kuzzle";
2
+ export declare class MappingsConflictsError extends KuzzleError {
3
+ private conflicts;
4
+ constructor(message: string, conflicts: JSONObject, id?: string, code?: number);
5
+ get name(): string;
6
+ toJSON(): JSONObject;
7
+ }
@@ -1,16 +1,17 @@
1
+ import { KuzzleRequest } from "kuzzle";
1
2
  import { JSONObject, KDocument } from "kuzzle-sdk";
2
3
  import { DeviceManagerPlugin } from "../plugin";
3
- import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "./types/ModelContent";
4
- export declare class ModelService {
5
- private config;
6
- private context;
7
- private get sdk();
4
+ import { BaseService } from "../shared";
5
+ import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
6
+ import { MeasureValuesDetails } from "../measure";
7
+ export declare class ModelService extends BaseService {
8
8
  constructor(plugin: DeviceManagerPlugin);
9
9
  registerAskEvents(): void;
10
- writeAsset(engineGroup: string, model: string, metadataMappings: JSONObject, defaultMetadata: JSONObject, measures: AssetModelContent["asset"]["measures"]): Promise<KDocument<AssetModelContent>>;
10
+ private checkModelsConflicts;
11
+ writeAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels): Promise<KDocument<AssetModelContent>>;
11
12
  private checkDefaultValues;
12
- writeDevice(model: string, metadataMappings: JSONObject, defaultMetadata: JSONObject, measures: DeviceModelContent["device"]["measures"]): Promise<KDocument<DeviceModelContent>>;
13
- writeMeasure(type: string, valuesMappings: JSONObject): Promise<KDocument<MeasureModelContent>>;
13
+ writeDevice(model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: DeviceModelContent["device"]["measures"]): Promise<KDocument<DeviceModelContent>>;
14
+ writeMeasure(type: string, valuesMappings: JSONObject, valuesDetails?: MeasureValuesDetails): Promise<KDocument<MeasureModelContent>>;
14
15
  deleteAsset(_id: string): Promise<void>;
15
16
  deleteDevice(_id: string): Promise<void>;
16
17
  deleteMeasure(_id: string): Promise<void>;
@@ -22,4 +23,8 @@ export declare class ModelService {
22
23
  getAsset(engineGroup: string, model: string): Promise<KDocument<AssetModelContent>>;
23
24
  getDevice(model: string): Promise<KDocument<DeviceModelContent>>;
24
25
  getMeasure(type: string): Promise<KDocument<MeasureModelContent>>;
26
+ /**
27
+ * Update an asset model
28
+ */
29
+ updateAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, request: KuzzleRequest): Promise<KDocument<AssetModelContent>>;
25
30
  }
@@ -0,0 +1,30 @@
1
+ import { TwinModelContent, TwinType } from "../plugin";
2
+ import { MeasureModelContent } from "./exports";
3
+ export type ConflictChunk = {
4
+ sourceModel: string;
5
+ newModel: string;
6
+ modelType: string;
7
+ conflicts: MappingsConflict[];
8
+ };
9
+ export type MappingsConflict = {
10
+ path: string;
11
+ currentType: string | undefined;
12
+ newType: string | undefined;
13
+ };
14
+ /**
15
+ * Return every conflicts between the mappings of twins and a new twin model
16
+ *
17
+ * @param twinType The target twin type
18
+ * @param models The already present twin models
19
+ * @param additional The new asset
20
+ * @returns An array of ConflictChunk between current twins and the new twin
21
+ */
22
+ export declare function getTwinConflicts<TDigitalTwin extends TwinModelContent>(twinType: TwinType, models: TDigitalTwin[], additional: TDigitalTwin): ConflictChunk[];
23
+ /**
24
+ * Return every conflicts between the mappings of measure models and a new measure model
25
+ *
26
+ * @param measures The already present measure models
27
+ * @param additional The new measure
28
+ * @returns An array of ConflictChunk between current measures and the new measure
29
+ */
30
+ export declare function getMeasureConflicts(measures: MeasureModelContent[], additional: MeasureModelContent): ConflictChunk[];