kuzzle-device-manager-types 2.0.0-rc29 → 2.0.0-rc38

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 (79) hide show
  1. package/README.md +17 -0
  2. package/dist/features/fixtures/application/decoders/DummyTempDecoder.d.ts +1 -1
  3. package/dist/features/fixtures/application/decoders/DummyTempPositionDecoder.d.ts +1 -1
  4. package/dist/index.d.ts +7 -7
  5. package/dist/lib/core/DeviceManagerConfiguration.d.ts +1 -1
  6. package/dist/lib/core/DeviceManagerEngine.d.ts +3 -2
  7. package/dist/lib/core/DeviceManagerPlugin.d.ts +5 -4
  8. package/dist/lib/core/InternalCollection.d.ts +1 -0
  9. package/dist/lib/core/exports.d.ts +2 -0
  10. package/dist/lib/core/registers/ModelsRegister.d.ts +4 -3
  11. package/dist/lib/modules/asset/AssetHistoryService.d.ts +11 -0
  12. package/dist/lib/modules/asset/AssetModule.d.ts +1 -0
  13. package/dist/lib/modules/asset/AssetService.d.ts +11 -5
  14. package/dist/lib/modules/asset/collections/assetsHistoryMappings.d.ts +63 -0
  15. package/dist/lib/modules/asset/collections/assetsMappings.d.ts +9 -3
  16. package/dist/lib/modules/asset/exports.d.ts +6 -0
  17. package/dist/lib/modules/asset/index.d.ts +4 -0
  18. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.d.ts +22 -0
  19. package/dist/lib/modules/asset/roles/RoleAssetsReader.d.ts +21 -0
  20. package/dist/lib/modules/asset/types/AssetApi.d.ts +6 -6
  21. package/dist/lib/modules/asset/types/AssetContent.d.ts +10 -7
  22. package/dist/lib/modules/asset/types/AssetEvents.d.ts +15 -2
  23. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +50 -0
  24. package/dist/lib/modules/decoder/DecodedPayload.d.ts +1 -0
  25. package/dist/lib/modules/decoder/Decoder.d.ts +3 -2
  26. package/dist/lib/modules/decoder/exports.d.ts +6 -0
  27. package/dist/lib/modules/decoder/index.d.ts +2 -0
  28. package/dist/lib/modules/decoder/roles/RoleDecodersAdmin.d.ts +14 -0
  29. package/dist/lib/modules/decoder/roles/RolePayloadsAll.d.ts +12 -0
  30. package/dist/lib/modules/decoder/types/DecoderApi.d.ts +2 -2
  31. package/dist/lib/modules/decoder/types/PayloadApi.d.ts +1 -1
  32. package/dist/lib/modules/device/DeviceService.d.ts +15 -8
  33. package/dist/lib/modules/device/exports.d.ts +6 -0
  34. package/dist/lib/modules/device/index.d.ts +3 -0
  35. package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +27 -0
  36. package/dist/lib/modules/device/roles/RoleDevicesPlatformAdmin.d.ts +21 -0
  37. package/dist/lib/modules/device/roles/RoleDevicesReader.d.ts +21 -0
  38. package/dist/lib/modules/device/types/DeviceApi.d.ts +19 -16
  39. package/dist/lib/modules/device/types/DeviceEvents.d.ts +14 -3
  40. package/dist/lib/modules/measure/MeasureModule.d.ts +0 -1
  41. package/dist/lib/modules/measure/MeasureService.d.ts +3 -16
  42. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +0 -23
  43. package/dist/lib/modules/measure/exports.d.ts +6 -0
  44. package/dist/lib/modules/measure/index.d.ts +2 -1
  45. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +2 -2
  46. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +2 -2
  47. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +2 -2
  48. package/dist/lib/modules/measure/measures/PositionMeasure.d.ts +2 -2
  49. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +2 -2
  50. package/dist/lib/modules/measure/roles/RoleMeasuresAdmin.d.ts +16 -0
  51. package/dist/lib/modules/measure/roles/RoleMeasuresReader.d.ts +14 -0
  52. package/dist/lib/modules/measure/types/MeasureContent.d.ts +47 -32
  53. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +12 -5
  54. package/dist/lib/modules/model/ModelService.d.ts +2 -2
  55. package/dist/lib/modules/model/ModelsController.d.ts +4 -4
  56. package/dist/lib/modules/model/exports.d.ts +3 -0
  57. package/dist/lib/modules/model/index.d.ts +1 -0
  58. package/dist/lib/modules/model/types/ModelApi.d.ts +18 -21
  59. package/dist/lib/modules/model/types/ModelContent.d.ts +12 -11
  60. package/dist/lib/modules/model/types/ModelDefinition.d.ts +55 -5
  61. package/dist/lib/modules/model/types/ModelEvents.d.ts +2 -2
  62. package/dist/lib/modules/shared/exports.d.ts +3 -0
  63. package/dist/lib/modules/shared/index.d.ts +3 -0
  64. package/dist/lib/modules/shared/types/EmbeddedMeasure.d.ts +1 -1
  65. package/dist/lib/modules/shared/types/KuzzleRole.d.ts +5 -0
  66. package/dist/lib/modules/shared/types/Metadata.d.ts +2 -2
  67. package/dist/lib/modules/shared/utils/ask.d.ts +2 -2
  68. package/dist/lib/modules/shared/utils/snakeCase.d.ts +7 -0
  69. package/package.json +1 -1
  70. package/dist/lib/modules/asset/roles/assetsAdmin.d.ts +0 -16
  71. package/dist/lib/modules/asset/roles/assetsReader.d.ts +0 -16
  72. package/dist/lib/modules/decoder/roles/decodersAdmin.d.ts +0 -9
  73. package/dist/lib/modules/device/roles/devicesAdmin.d.ts +0 -22
  74. package/dist/lib/modules/device/roles/devicesPlatformAdmin.d.ts +0 -16
  75. package/dist/lib/modules/device/roles/devicesReader.d.ts +0 -15
  76. package/dist/lib/modules/measure/MeasuresController.d.ts +0 -9
  77. package/dist/lib/modules/measure/roles/measuresAdmin.d.ts +0 -16
  78. package/dist/lib/modules/measure/roles/measuresReader.d.ts +0 -9
  79. package/dist/lib/modules/measure/types/MeasureApi.d.ts +0 -23
package/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # Kuzzle Device Manager Types
2
+
3
+ This package only contains types to work with in a frontend application.
4
+
5
+ ```
6
+
7
+ import { DeviceContent } from 'kuzzle-device-manager-types';
8
+
9
+
10
+ let device: DeviceContent;
11
+
12
+ device.model = "Abeeway";
13
+ ```
14
+
15
+ See main package for more informations:
16
+ - [Github](https://github.com/kuzzleio/kuzzle-device-manager)
17
+ - [NPM](https://www.npmjs.com/package/kuzzle-device-manager)
@@ -7,5 +7,5 @@ export declare class DummyTempDecoder extends Decoder {
7
7
  }];
8
8
  constructor();
9
9
  validate(payload: JSONObject): Promise<boolean>;
10
- decode(payload: JSONObject): Promise<DecodedPayload<Decoder>>;
10
+ decode(decodedPayload: DecodedPayload<DummyTempDecoder>, payload: JSONObject): Promise<DecodedPayload<DummyTempDecoder>>;
11
11
  }
@@ -12,5 +12,5 @@ export declare class DummyTempPositionDecoder extends Decoder {
12
12
  readonly type: "position";
13
13
  }];
14
14
  validate(payload: JSONObject): Promise<boolean>;
15
- decode(payload: JSONObject): Promise<DecodedPayload<Decoder>>;
15
+ decode(decodedPayload: DecodedPayload<DummyTempPositionDecoder>, payload: JSONObject): Promise<DecodedPayload<DummyTempPositionDecoder>>;
16
16
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export * from './lib/core/DeviceManagerPlugin';
2
- export * from './lib/core/DeviceManagerConfiguration';
3
- export * from './lib/modules/asset';
4
- export * from './lib/modules/device';
5
- export * from './lib/modules/measure';
6
- export * from './lib/modules/decoder';
7
- export * from './lib/modules/shared';
1
+ export * from './lib/core/exports';
2
+ export * from './lib/modules/asset/exports';
3
+ export * from './lib/modules/device/exports';
4
+ export * from './lib/modules/measure/exports';
5
+ export * from './lib/modules/decoder/exports';
6
+ export * from './lib/modules/shared/exports';
7
+ export * from './lib/modules/model/exports';
@@ -1,5 +1,5 @@
1
1
  import { JSONObject } from "kuzzle";
2
- export declare type DeviceManagerConfiguration = {
2
+ export type DeviceManagerConfiguration = {
3
3
  /**
4
4
  * Ignore errors at startup such as wrong mappings update.
5
5
  *
@@ -3,7 +3,7 @@ import { AbstractEngine, ConfigManager } from "kuzzle-plugin-commons";
3
3
  import { DeviceManagerConfiguration } from "./DeviceManagerConfiguration";
4
4
  import { DeviceManagerPlugin } from "./DeviceManagerPlugin";
5
5
  import { InternalCollection } from "./InternalCollection";
6
- export declare type AskEngineUpdateAll = {
6
+ export type AskEngineUpdateAll = {
7
7
  name: "ask:device-manager:engine:updateAll";
8
8
  payload: void;
9
9
  result: void;
@@ -20,9 +20,10 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
20
20
  collections: any[];
21
21
  }>;
22
22
  onDelete(index: string): Promise<{
23
- collections: string[];
23
+ collections: InternalCollection[];
24
24
  }>;
25
25
  createAssetsCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
26
+ createAssetsHistoryCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
26
27
  private getDigitalTwinMappings;
27
28
  createDevicesCollection(engineId: string): Promise<InternalCollection>;
28
29
  createMeasuresCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
@@ -1,10 +1,11 @@
1
1
  import { Plugin, PluginContext, JSONObject } from "kuzzle";
2
2
  import { MeasureDefinition } from "../modules/measure";
3
3
  import { AssetModelDefinition, DeviceModelDefinition } from "../modules/model";
4
+ import { KuzzleRole } from "../modules/shared";
4
5
  import { DeviceManagerConfiguration } from "./DeviceManagerConfiguration";
5
6
  export declare class DeviceManagerPlugin extends Plugin {
6
7
  config: DeviceManagerConfiguration;
7
- roles: {};
8
+ roles: KuzzleRole[];
8
9
  private deviceManagerEngine;
9
10
  private adminConfigManager;
10
11
  private engineConfigManager;
@@ -23,7 +24,7 @@ export declare class DeviceManagerPlugin extends Plugin {
23
24
  *
24
25
  * @param engineGroup Engine group name
25
26
  * @param model Name of the asset model
26
- * @param definition.measuresNames Array describing measures names and types
27
+ * @param definition.measures Array describing measures names and types
27
28
  * @param definition.metadataMappings Metadata mappings definition
28
29
  * @param definition.defaultMetadata Default metadata values
29
30
  *
@@ -31,9 +32,9 @@ export declare class DeviceManagerPlugin extends Plugin {
31
32
  * ```
32
33
  * deviceManager.models.registerAsset(
33
34
  * "logistic",
34
- * "container",
35
+ * "Container",
35
36
  * {
36
- * measuresNames: [
37
+ * measures: [
37
38
  * { name: "temperatureExt", type: "temperature" },
38
39
  * { name: "temperatureInt", type: "temperature" },
39
40
  * { name: "position", type: "position" },
@@ -1,5 +1,6 @@
1
1
  export declare enum InternalCollection {
2
2
  ASSETS = "assets",
3
+ ASSETS_HISTORY = "assets-history",
3
4
  DEVICES = "devices",
4
5
  MEASURES = "measures",
5
6
  MODELS = "models",
@@ -0,0 +1,2 @@
1
+ export * from "./DeviceManagerConfiguration";
2
+ export * from "./DeviceManagerPlugin";
@@ -1,5 +1,6 @@
1
1
  import { JSONObject } from "kuzzle";
2
- import { MeasureDefinition } from "lib/modules/measure";
2
+ import { NamedMeasures } from "../../modules/decoder";
3
+ import { MeasureDefinition } from "../../modules/measure";
3
4
  import { DeviceManagerPlugin } from "../DeviceManagerPlugin";
4
5
  export declare class ModelsRegister {
5
6
  private config;
@@ -10,8 +11,8 @@ export declare class ModelsRegister {
10
11
  private get sdk();
11
12
  init(plugin: DeviceManagerPlugin): void;
12
13
  loadModels(): Promise<void>;
13
- registerAsset(engineGroup: string, model: string, metadataMappings: JSONObject, measures: Record<string, string>, defaultMetadata?: JSONObject): void;
14
- registerDevice(model: string, metadataMappings: JSONObject, measures: Record<string, string>, defaultMetadata?: JSONObject): void;
14
+ registerAsset(engineGroup: string, model: string, measures: NamedMeasures, metadataMappings?: JSONObject, defaultMetadata?: JSONObject): void;
15
+ registerDevice(model: string, measures: NamedMeasures, metadataMappings?: JSONObject, defaultMetadata?: JSONObject): void;
15
16
  registerMeasure(type: string, measureDefinition: MeasureDefinition): void;
16
17
  private load;
17
18
  }
@@ -0,0 +1,11 @@
1
+ import { KDocument } from "kuzzle";
2
+ import { DeviceManagerPlugin } from "../../core";
3
+ import { AssetHistoryEvent } from "./types/AssetHistoryContent";
4
+ import { AssetContent } from "./types/AssetContent";
5
+ export declare class AssetHistoryService {
6
+ private context;
7
+ private config;
8
+ private get sdk();
9
+ constructor(plugin: DeviceManagerPlugin);
10
+ add<TAssetHistoryEvent extends AssetHistoryEvent>(engineId: string, event: TAssetHistoryEvent, asset: KDocument<AssetContent>): Promise<void>;
11
+ }
@@ -1,6 +1,7 @@
1
1
  import { Module } from "../shared/Module";
2
2
  export declare class AssetModule extends Module {
3
3
  private assetService;
4
+ private assetHistoryService;
4
5
  private assetController;
5
6
  init(): Promise<void>;
6
7
  }
@@ -1,14 +1,17 @@
1
- import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle";
1
+ import { JSONObject, KDocument, KHit, SearchResult, User } from "kuzzle";
2
2
  import { MeasureContent } from "../measure/";
3
3
  import { Metadata } from "../shared";
4
4
  import { DeviceManagerPlugin } from "../../core";
5
5
  import { AssetContent } from "./types/AssetContent";
6
+ import { AssetHistoryService } from "./AssetHistoryService";
6
7
  export declare class AssetService {
7
8
  private context;
8
9
  private config;
10
+ private assetHistoryService;
9
11
  private get sdk();
10
12
  private get app();
11
- constructor(plugin: DeviceManagerPlugin);
13
+ private get impersonatedSdk();
14
+ constructor(plugin: DeviceManagerPlugin, assetHistoryService: AssetHistoryService);
12
15
  /**
13
16
  * Returns measures history for an asset
14
17
  *
@@ -24,13 +27,16 @@ export declare class AssetService {
24
27
  endAt?: string;
25
28
  }): Promise<KDocument<MeasureContent>[]>;
26
29
  get(engineId: string, assetId: string): Promise<KDocument<AssetContent>>;
27
- update(engineId: string, assetId: string, metadata: Metadata, { refresh }: {
30
+ /**
31
+ * Updates an asset metadata
32
+ */
33
+ update(user: User, engineId: string, assetId: string, metadata: Metadata, { refresh }: {
28
34
  refresh: any;
29
35
  }): Promise<KDocument<AssetContent>>;
30
- create(engineId: string, model: string, reference: string, metadata: JSONObject, { refresh }: {
36
+ create(user: User, engineId: string, model: string, reference: string, metadata: JSONObject, { refresh }: {
31
37
  refresh: any;
32
38
  }): Promise<KDocument<AssetContent>>;
33
- delete(engineId: string, assetId: string, { refresh, strict }: {
39
+ delete(user: User, engineId: string, assetId: string, { refresh, strict }: {
34
40
  refresh: any;
35
41
  strict: boolean;
36
42
  }): Promise<void>;
@@ -0,0 +1,63 @@
1
+ export declare const assetsHistoryMappings: {
2
+ dynamic: string;
3
+ properties: {
4
+ event: {
5
+ properties: {
6
+ name: {
7
+ type: string;
8
+ };
9
+ measure: {
10
+ properties: {
11
+ names: {
12
+ type: string;
13
+ };
14
+ };
15
+ };
16
+ metadata: {
17
+ properties: {
18
+ names: {
19
+ type: string;
20
+ };
21
+ };
22
+ };
23
+ link: {
24
+ properties: {
25
+ deviceId: {
26
+ type: string;
27
+ };
28
+ };
29
+ };
30
+ unlink: {
31
+ properties: {
32
+ deviceId: {
33
+ type: string;
34
+ };
35
+ };
36
+ };
37
+ };
38
+ };
39
+ id: {
40
+ type: string;
41
+ };
42
+ asset: {
43
+ properties: {
44
+ _kuzzle_info: {
45
+ properties: {
46
+ author: {
47
+ type: string;
48
+ };
49
+ createdAt: {
50
+ type: string;
51
+ };
52
+ updatedAt: {
53
+ type: string;
54
+ };
55
+ updater: {
56
+ type: string;
57
+ };
58
+ };
59
+ };
60
+ };
61
+ };
62
+ };
63
+ };
@@ -28,9 +28,15 @@ export declare const assetsMappings: {
28
28
  _id: {
29
29
  type: string;
30
30
  };
31
- measures: {
32
- dynamic: string;
33
- properties: {};
31
+ measureNames: {
32
+ properties: {
33
+ asset: {
34
+ type: string;
35
+ };
36
+ device: {
37
+ type: string;
38
+ };
39
+ };
34
40
  };
35
41
  };
36
42
  };
@@ -0,0 +1,6 @@
1
+ export * from "./types/AssetContent";
2
+ export * from "./types/AssetHistoryContent";
3
+ export * from "./types/AssetEvents";
4
+ export * from "./types/AssetApi";
5
+ export * from "./roles/RoleAssetsAdmin";
6
+ export * from "./roles/RoleAssetsReader";
@@ -1,6 +1,10 @@
1
1
  export * from "./collections/assetsMappings";
2
+ export * from "./collections/assetsHistoryMappings";
2
3
  export * from "./types/AssetContent";
4
+ export * from "./types/AssetHistoryContent";
3
5
  export * from "./types/AssetEvents";
4
6
  export * from "./types/AssetApi";
5
7
  export * from "./model/AssetSerializer";
6
8
  export * from "./AssetModule";
9
+ export * from "./roles/RoleAssetsAdmin";
10
+ export * from "./roles/RoleAssetsReader";
@@ -0,0 +1,22 @@
1
+ import { KuzzleRole } from "../../shared/types/KuzzleRole";
2
+ /**
3
+ * This role allows to manage assets and their models.
4
+ *
5
+ * It's a tenant role.
6
+ *
7
+ * @example
8
+ *
9
+ "device-manager/assets": {
10
+ actions: {
11
+ "*": true,
12
+ },
13
+ },
14
+ "device-manager/models": {
15
+ actions: {
16
+ deleteAsset: true,
17
+ listAssets: true,
18
+ writeAsset: true,
19
+ },
20
+ },
21
+ */
22
+ export declare const RoleAssetsAdmin: KuzzleRole;
@@ -0,0 +1,21 @@
1
+ import { KuzzleRole } from "../../shared/types/KuzzleRole";
2
+ /**
3
+ * This role only gives a read-only access to assets and their models.
4
+ *
5
+ * It's a tenant role.
6
+ *
7
+ * @example
8
+ "device-manager/assets": {
9
+ actions: {
10
+ get: true,
11
+ getMeasures: true,
12
+ search: true,
13
+ },
14
+ },
15
+ "device-manager/models": {
16
+ actions: {
17
+ listAssets: true,
18
+ },
19
+ },
20
+ */
21
+ export declare const RoleAssetsReader: KuzzleRole;
@@ -10,7 +10,7 @@ export interface ApiAssetGetRequest extends AssetsControllerRequest {
10
10
  action: "get";
11
11
  _id: string;
12
12
  }
13
- export declare type ApiAssetGetResult = KDocument<AssetContent>;
13
+ export type ApiAssetGetResult = KDocument<AssetContent>;
14
14
  export interface ApiAssetUpdateRequest extends AssetsControllerRequest {
15
15
  action: "update";
16
16
  _id: string;
@@ -19,7 +19,7 @@ export interface ApiAssetUpdateRequest extends AssetsControllerRequest {
19
19
  metadata: Metadata;
20
20
  };
21
21
  }
22
- export declare type ApiAssetUpdateResult = KDocument<AssetContent>;
22
+ export type ApiAssetUpdateResult = KDocument<AssetContent>;
23
23
  export interface ApiAssetCreateRequest extends AssetsControllerRequest {
24
24
  action: "create";
25
25
  refresh?: string;
@@ -29,14 +29,14 @@ export interface ApiAssetCreateRequest extends AssetsControllerRequest {
29
29
  metadata?: Metadata;
30
30
  };
31
31
  }
32
- export declare type ApiAssetCreateResult = KDocument<AssetContent>;
32
+ export type ApiAssetCreateResult = KDocument<AssetContent>;
33
33
  export interface ApiAssetDeleteRequest extends AssetsControllerRequest {
34
34
  action: "delete";
35
35
  _id: string;
36
36
  refresh?: string;
37
37
  strict?: boolean;
38
38
  }
39
- export declare type ApiAssetDeleteResult = void;
39
+ export type ApiAssetDeleteResult = void;
40
40
  export interface ApiAssetSearchRequest extends AssetsControllerRequest {
41
41
  action: "search";
42
42
  from?: number;
@@ -44,7 +44,7 @@ export interface ApiAssetSearchRequest extends AssetsControllerRequest {
44
44
  scrollTTL?: string;
45
45
  body: JSONObject;
46
46
  }
47
- export declare type ApiAssetSearchResult = SearchResult<KHit<AssetContent>>;
47
+ export type ApiAssetSearchResult = SearchResult<KHit<AssetContent>>;
48
48
  export interface ApiAssetGetMeasuresRequest extends AssetsControllerRequest {
49
49
  action: "getMeasures";
50
50
  _id: string;
@@ -52,7 +52,7 @@ export interface ApiAssetGetMeasuresRequest extends AssetsControllerRequest {
52
52
  startAt?: string;
53
53
  endAt?: string;
54
54
  }
55
- export declare type ApiAssetGetMeasuresResult = {
55
+ export type ApiAssetGetMeasuresResult = {
56
56
  measures: Array<KDocument<MeasureContent<JSONObject>>>;
57
57
  };
58
58
  export {};
@@ -13,23 +13,26 @@ export interface AssetContent<TMeasures extends JSONObject = any, TMetadata exte
13
13
  */
14
14
  _id: string;
15
15
  /**
16
- * Names lookup table for measures
16
+ * Names of the linked measures
17
17
  *
18
- * Record<deviceName, assetName>
18
+ * Array<{ asset: string, device: string }>
19
19
  *
20
20
  * @example
21
21
  *
22
- * {
23
- * "temperature": "externalTemperature",
24
- * }
22
+ * [
23
+ * { asset: "externalTemperature", device: "temperature" }
24
+ * ]
25
25
  */
26
- measures: Record<string, string>;
26
+ measureNames: Array<{
27
+ asset: string;
28
+ device: string;
29
+ }>;
27
30
  }>;
28
31
  }
29
32
  /**
30
33
  * Asset description used to contextualize each measure data point
31
34
  */
32
- export declare type AssetMeasureContext<TMetadata extends Metadata = Metadata> = {
35
+ export type AssetMeasureContext<TMetadata extends Metadata = Metadata> = {
33
36
  /**
34
37
  * ID of the asset
35
38
  */
@@ -1,17 +1,30 @@
1
1
  import { KDocument } from "kuzzle";
2
2
  import { Metadata } from "../../../modules/shared";
3
3
  import { AssetContent } from "./AssetContent";
4
- export declare type EventAssetUpdateBefore = {
4
+ import { AssetHistoryEvent } from "./AssetHistoryContent";
5
+ export type EventAssetUpdateBefore = {
5
6
  name: "device-manager:asset:update:before";
6
7
  args: [{
7
8
  asset: KDocument<AssetContent>;
8
9
  metadata: Metadata;
9
10
  }];
10
11
  };
11
- export declare type EventAssetUpdateAfter = {
12
+ export type EventAssetUpdateAfter = {
12
13
  name: "device-manager:asset:update:after";
13
14
  args: [{
14
15
  asset: KDocument<AssetContent>;
15
16
  metadata: Metadata;
16
17
  }];
17
18
  };
19
+ /**
20
+ * @internal
21
+ */
22
+ export type AskAssetHistoryAdd<TAssetHistoryEvent extends AssetHistoryEvent> = {
23
+ name: "ask:device-manager:asset:history:add";
24
+ payload: {
25
+ engineId: string;
26
+ event: TAssetHistoryEvent;
27
+ asset: KDocument<AssetContent>;
28
+ };
29
+ result: void;
30
+ };
@@ -0,0 +1,50 @@
1
+ import { JSONObject, KDocumentContent } from "kuzzle";
2
+ import { Metadata } from "../../shared";
3
+ import { AssetContent } from "./AssetContent";
4
+ export type AssetHistoryEventMeasure = {
5
+ name: "measure";
6
+ measure: {
7
+ names: string[];
8
+ };
9
+ };
10
+ export type AssetHistoryEventMetadata = {
11
+ name: "metadata";
12
+ metadata: {
13
+ names: string[];
14
+ };
15
+ };
16
+ export type AssetHistoryEventLink = {
17
+ name: "link";
18
+ link: {
19
+ deviceId: string;
20
+ };
21
+ };
22
+ export type AssetHistoryEventUnlink = {
23
+ name: "unlink";
24
+ unlink: {
25
+ deviceId: string;
26
+ };
27
+ };
28
+ export type AssetHistoryEvent = AssetHistoryEventMeasure | AssetHistoryEventMetadata | AssetHistoryEventLink | AssetHistoryEventUnlink;
29
+ /**
30
+ * Asset History document content
31
+ */
32
+ export interface AssetHistoryContent<TAssetHistoryEvent extends AssetHistoryEvent = any, TMeasures extends JSONObject = any, TMetadata extends Metadata = any> extends KDocumentContent {
33
+ /**
34
+ * Name of the event who caused the historization
35
+ *
36
+ * - `measure` a new measure has been received
37
+ * - `metadata` the asset metadata has been updated
38
+ * - `link` a device has been linked or unlinked to the asset
39
+ * - `unlink` a device has been unlinked from the asset
40
+ */
41
+ event: TAssetHistoryEvent;
42
+ /**
43
+ * ID of the historized asset
44
+ */
45
+ id: string;
46
+ /**
47
+ * Asset content after the event
48
+ */
49
+ asset: AssetContent<TMeasures, TMetadata>;
50
+ }
@@ -43,4 +43,5 @@ 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
+ private validateMeasurement;
46
47
  }
@@ -4,7 +4,7 @@ import { DecoderContent } from "./types/DecoderContent";
4
4
  /**
5
5
  * Array of measures declaration
6
6
  */
7
- export declare type NamedMeasures = ReadonlyArray<{
7
+ export type NamedMeasures = ReadonlyArray<{
8
8
  name: string;
9
9
  type: string;
10
10
  }>;
@@ -82,12 +82,13 @@ export declare abstract class Decoder {
82
82
  * - set "reference"
83
83
  * - fetch measures
84
84
  *
85
+ * @param decodedPayload Decoded payload to store decoded measures
85
86
  * @param payload Raw payload received in the API action body
86
87
  * @param request Original request
87
88
  *
88
89
  * @returns DecodedPayload
89
90
  */
90
- abstract decode(payload: JSONObject, request: KuzzleRequest): Promise<DecodedPayload<Decoder>>;
91
+ abstract decode(decodedPayload: DecodedPayload<any>, payload: JSONObject, request: KuzzleRequest): Promise<DecodedPayload<any>>;
91
92
  /**
92
93
  * Checks if the provided properties are present in the payload
93
94
  *
@@ -0,0 +1,6 @@
1
+ export * from "./types/DecoderApi";
2
+ export * from "./types/DecoderContent";
3
+ export * from "./DecodedPayload";
4
+ export * from "./Decoder";
5
+ export * from "./roles/RolePayloadsAll";
6
+ export * from "./roles/RoleDecodersAdmin";
@@ -4,3 +4,5 @@ export * from "./types/DecoderContent";
4
4
  export * from "./DecodedPayload";
5
5
  export * from "./Decoder";
6
6
  export * from "./DecoderModule";
7
+ export * from "./roles/RolePayloadsAll";
8
+ export * from "./roles/RoleDecodersAdmin";
@@ -0,0 +1,14 @@
1
+ import { KuzzleRole } from "../../shared/types/KuzzleRole";
2
+ /**
3
+ * Role used to manage decoders and their payloads.
4
+ *
5
+ * It's a platform role.
6
+ *
7
+ * @example
8
+ "device-manager/decoders": {
9
+ actions: {
10
+ "*": true,
11
+ },
12
+ },
13
+ */
14
+ export declare const RoleDecodersAdmin: KuzzleRole;
@@ -0,0 +1,12 @@
1
+ import { KuzzleRole } from "../../shared/types/KuzzleRole";
2
+ /**
3
+ * This role allows to receive any kind of payloads.
4
+ *
5
+ @example
6
+ "device-manager/payloads": {
7
+ actions: {
8
+ "*": true,
9
+ },
10
+ },
11
+ */
12
+ export declare const RolePayloadsAll: KuzzleRole;
@@ -6,14 +6,14 @@ export interface ApiDecoderListRequest extends DecodersControllerRequest {
6
6
  action: "list";
7
7
  _id: string;
8
8
  }
9
- export declare type ApiDecoderListResult = {
9
+ export type ApiDecoderListResult = {
10
10
  decoders: DecoderContent[];
11
11
  };
12
12
  export interface ApiDecoderPrunePayloadsRequest extends DecodersControllerRequest {
13
13
  action: "prunePayloads";
14
14
  _id: string;
15
15
  }
16
- export declare type ApiDecoderPrunePayloadsResult = {
16
+ export type ApiDecoderPrunePayloadsResult = {
17
17
  deleted: number;
18
18
  };
19
19
  export {};
@@ -7,5 +7,5 @@ export interface ApiPayloadReceiveUnkownRequest extends PayloadsControllerReques
7
7
  deviceModel: string;
8
8
  body: JSONObject;
9
9
  }
10
- export declare type ApiPayloadReceiveUnkownResult = void;
10
+ export type ApiPayloadReceiveUnkownResult = void;
11
11
  export {};