kuzzle-device-manager-types 1.0.0 → 2.0.0-rc35

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 (96) hide show
  1. package/README.md +17 -0
  2. package/dist/features/fixtures/application/app.d.ts +1 -0
  3. package/dist/features/fixtures/application/assets/Container.d.ts +1 -0
  4. package/dist/features/fixtures/application/decoders/DummyTempDecoder.d.ts +11 -0
  5. package/dist/features/fixtures/application/decoders/DummyTempPositionDecoder.d.ts +16 -0
  6. package/dist/features/fixtures/application/decoders/index.d.ts +2 -0
  7. package/dist/features/fixtures/application/testPipes.d.ts +2 -0
  8. package/dist/index.d.ts +8 -0
  9. package/dist/lib/core/DeviceManagerConfiguration.d.ts +49 -0
  10. package/dist/lib/core/DeviceManagerEngine.d.ts +31 -0
  11. package/dist/lib/core/DeviceManagerPlugin.d.ts +115 -0
  12. package/dist/lib/core/InternalCollection.d.ts +7 -0
  13. package/dist/lib/core/index.d.ts +4 -0
  14. package/dist/lib/core/registers/DecodersRegister.d.ts +41 -0
  15. package/dist/lib/core/registers/ModelsRegister.d.ts +17 -0
  16. package/dist/lib/modules/asset/AssetModule.d.ts +6 -0
  17. package/dist/lib/modules/asset/AssetService.d.ts +44 -0
  18. package/dist/lib/modules/asset/AssetsController.d.ts +14 -0
  19. package/dist/lib/modules/asset/collections/assetsMappings.d.ts +38 -0
  20. package/dist/lib/modules/asset/index.d.ts +8 -0
  21. package/dist/lib/modules/asset/model/AssetSerializer.d.ts +10 -0
  22. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.d.ts +22 -0
  23. package/dist/lib/modules/asset/roles/RoleAssetsReader.d.ts +21 -0
  24. package/dist/lib/modules/asset/roles/assetsAdmin.d.ts +16 -0
  25. package/dist/lib/modules/asset/roles/assetsReader.d.ts +16 -0
  26. package/dist/lib/modules/asset/types/AssetApi.d.ts +58 -0
  27. package/dist/lib/modules/asset/types/AssetContent.d.ts +41 -0
  28. package/dist/lib/modules/asset/types/AssetEvents.d.ts +17 -0
  29. package/dist/lib/modules/decoder/DecodedPayload.d.ts +47 -0
  30. package/dist/lib/modules/decoder/Decoder.d.ts +102 -0
  31. package/dist/lib/modules/decoder/DecoderModule.d.ts +8 -0
  32. package/dist/lib/modules/decoder/DecodersController.d.ts +18 -0
  33. package/dist/lib/modules/decoder/PayloadService.d.ts +34 -0
  34. package/dist/lib/modules/decoder/PayloadsController.d.ts +11 -0
  35. package/dist/lib/modules/decoder/collections/payloadsMappings.d.ts +18 -0
  36. package/dist/lib/modules/decoder/index.d.ts +8 -0
  37. package/dist/lib/modules/decoder/roles/RoleDecodersAdmin.d.ts +14 -0
  38. package/dist/lib/modules/decoder/roles/RolePayloadsAll.d.ts +12 -0
  39. package/dist/lib/modules/decoder/roles/decodersAdmin.d.ts +9 -0
  40. package/dist/lib/modules/decoder/types/DecoderApi.d.ts +19 -0
  41. package/dist/lib/modules/decoder/types/DecoderContent.d.ts +5 -0
  42. package/dist/lib/modules/decoder/types/PayloadApi.d.ts +11 -0
  43. package/dist/lib/modules/device/DeviceModule.d.ts +6 -0
  44. package/dist/lib/modules/device/DeviceService.d.ts +78 -0
  45. package/dist/lib/modules/device/DevicesController.d.ts +32 -0
  46. package/dist/lib/modules/device/collections/deviceMappings.d.ts +43 -0
  47. package/dist/lib/modules/device/index.d.ts +9 -0
  48. package/dist/lib/modules/device/model/DeviceSerializer.d.ts +6 -0
  49. package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +27 -0
  50. package/dist/lib/modules/device/roles/RoleDevicesPlatformAdmin.d.ts +21 -0
  51. package/dist/lib/modules/device/roles/RoleDevicesReader.d.ts +21 -0
  52. package/dist/lib/modules/device/roles/devicesAdmin.d.ts +22 -0
  53. package/dist/lib/modules/device/roles/devicesPlatformAdmin.d.ts +16 -0
  54. package/dist/lib/modules/device/roles/devicesReader.d.ts +15 -0
  55. package/dist/lib/modules/device/types/DeviceApi.d.ts +94 -0
  56. package/dist/lib/modules/device/types/DeviceContent.d.ts +14 -0
  57. package/dist/lib/modules/device/types/DeviceEvents.d.ts +17 -0
  58. package/dist/lib/modules/measure/MeasureModule.d.ts +6 -0
  59. package/dist/lib/modules/measure/MeasureService.d.ts +53 -0
  60. package/dist/lib/modules/measure/MeasuresController.d.ts +9 -0
  61. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +84 -0
  62. package/dist/lib/modules/measure/index.d.ts +9 -0
  63. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +5 -0
  64. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +5 -0
  65. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +5 -0
  66. package/dist/lib/modules/measure/measures/PositionMeasure.d.ts +10 -0
  67. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +5 -0
  68. package/dist/lib/modules/measure/measures/index.d.ts +5 -0
  69. package/dist/lib/modules/measure/roles/RoleMeasuresAdmin.d.ts +21 -0
  70. package/dist/lib/modules/measure/roles/RoleMeasuresReader.d.ts +14 -0
  71. package/dist/lib/modules/measure/roles/measuresAdmin.d.ts +16 -0
  72. package/dist/lib/modules/measure/roles/measuresReader.d.ts +9 -0
  73. package/dist/lib/modules/measure/types/MeasureApi.d.ts +23 -0
  74. package/dist/lib/modules/measure/types/MeasureContent.d.ts +67 -0
  75. package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +15 -0
  76. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +59 -0
  77. package/dist/lib/modules/model/ModelModule.d.ts +6 -0
  78. package/dist/lib/modules/model/ModelSerializer.d.ts +5 -0
  79. package/dist/lib/modules/model/ModelService.d.ts +24 -0
  80. package/dist/lib/modules/model/ModelsController.d.ts +17 -0
  81. package/dist/lib/modules/model/collections/modelsMappings.d.ts +2 -0
  82. package/dist/lib/modules/model/index.d.ts +6 -0
  83. package/dist/lib/modules/model/types/ModelApi.d.ts +75 -0
  84. package/dist/lib/modules/model/types/ModelContent.d.ts +96 -0
  85. package/dist/lib/modules/model/types/ModelDefinition.d.ts +62 -0
  86. package/dist/lib/modules/model/types/ModelEvents.d.ts +16 -0
  87. package/dist/lib/modules/shared/Module.d.ts +7 -0
  88. package/dist/lib/modules/shared/index.d.ts +6 -0
  89. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +11 -0
  90. package/dist/lib/modules/shared/types/EmbeddedMeasure.d.ts +24 -0
  91. package/dist/lib/modules/shared/types/KuzzleRole.d.ts +5 -0
  92. package/dist/lib/modules/shared/types/Metadata.d.ts +5 -0
  93. package/dist/lib/modules/shared/utils/ask.d.ts +8 -0
  94. package/dist/lib/modules/shared/utils/flattenObject.d.ts +24 -0
  95. package/dist/lib/modules/shared/utils/lock.d.ts +1 -0
  96. package/package.json +6 -7
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)
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import { JSONObject } from "kuzzle";
2
+ import { Decoder, DecodedPayload } from "../../../../index";
3
+ export declare class DummyTempDecoder extends Decoder {
4
+ measures: readonly [{
5
+ readonly name: "temperature";
6
+ readonly type: "temperature";
7
+ }];
8
+ constructor();
9
+ validate(payload: JSONObject): Promise<boolean>;
10
+ decode(decodedPayload: DecodedPayload<DummyTempDecoder>, payload: JSONObject): Promise<DecodedPayload<DummyTempDecoder>>;
11
+ }
@@ -0,0 +1,16 @@
1
+ import { JSONObject } from "kuzzle";
2
+ import { Decoder, DecodedPayload } from "../../../../index";
3
+ export declare class DummyTempPositionDecoder extends Decoder {
4
+ measures: readonly [{
5
+ readonly name: "temperature";
6
+ readonly type: "temperature";
7
+ }, {
8
+ readonly name: "battery";
9
+ readonly type: "battery";
10
+ }, {
11
+ readonly name: "position";
12
+ readonly type: "position";
13
+ }];
14
+ validate(payload: JSONObject): Promise<boolean>;
15
+ decode(decodedPayload: DecodedPayload<DummyTempPositionDecoder>, payload: JSONObject): Promise<DecodedPayload<DummyTempPositionDecoder>>;
16
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./DummyTempDecoder";
2
+ export * from "./DummyTempPositionDecoder";
@@ -0,0 +1,2 @@
1
+ import { Backend } from "kuzzle";
2
+ export declare function registerTestPipes(app: Backend): void;
@@ -0,0 +1,8 @@
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';
8
+ export * from './lib/modules/model';
@@ -0,0 +1,49 @@
1
+ import { JSONObject } from "kuzzle";
2
+ export type DeviceManagerConfiguration = {
3
+ /**
4
+ * Ignore errors at startup such as wrong mappings update.
5
+ *
6
+ * Useful to start the plugin even if the mappings are not up to date.
7
+ */
8
+ ignoreStartupErrors: boolean;
9
+ engine: {
10
+ /**
11
+ * Auto update collection mappings with models
12
+ *
13
+ * This can lead to huge pressure on the database at start if a lot
14
+ * of engine are present.
15
+ */
16
+ autoUpdate: true;
17
+ };
18
+ /**
19
+ * Administration index name
20
+ */
21
+ adminIndex: string;
22
+ /**
23
+ * Administration collections mappings (in admin index)
24
+ */
25
+ adminCollections: {
26
+ config: {
27
+ name: string;
28
+ mappings: JSONObject;
29
+ settings: JSONObject;
30
+ };
31
+ devices: {
32
+ name: string;
33
+ mappings: JSONObject;
34
+ settings: JSONObject;
35
+ };
36
+ payloads: {
37
+ name: string;
38
+ mappings: JSONObject;
39
+ settings: JSONObject;
40
+ };
41
+ };
42
+ engineCollections: {
43
+ config: {
44
+ name: string;
45
+ mappings: JSONObject;
46
+ settings: JSONObject;
47
+ };
48
+ };
49
+ };
@@ -0,0 +1,31 @@
1
+ import { Backend, Plugin } from "kuzzle";
2
+ import { AbstractEngine, ConfigManager } from "kuzzle-plugin-commons";
3
+ import { DeviceManagerConfiguration } from "./DeviceManagerConfiguration";
4
+ import { DeviceManagerPlugin } from "./DeviceManagerPlugin";
5
+ import { InternalCollection } from "./InternalCollection";
6
+ export type AskEngineUpdateAll = {
7
+ name: "ask:device-manager:engine:updateAll";
8
+ payload: void;
9
+ result: void;
10
+ };
11
+ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlugin> {
12
+ config: DeviceManagerConfiguration;
13
+ get app(): Backend;
14
+ constructor(plugin: Plugin, adminConfigManager: ConfigManager, engineConfigManager: ConfigManager);
15
+ updateEngines(): Promise<void>;
16
+ onCreate(index: string, group?: string): Promise<{
17
+ collections: string[];
18
+ }>;
19
+ onUpdate(index: string, group?: string): Promise<{
20
+ collections: any[];
21
+ }>;
22
+ onDelete(index: string): Promise<{
23
+ collections: string[];
24
+ }>;
25
+ createAssetsCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
26
+ private getDigitalTwinMappings;
27
+ createDevicesCollection(engineId: string): Promise<InternalCollection>;
28
+ createMeasuresCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
29
+ private getMeasuresMappings;
30
+ private getModels;
31
+ }
@@ -0,0 +1,115 @@
1
+ import { Plugin, PluginContext, JSONObject } from "kuzzle";
2
+ import { MeasureDefinition } from "../modules/measure";
3
+ import { AssetModelDefinition, DeviceModelDefinition } from "../modules/model";
4
+ import { DeviceManagerConfiguration } from "./DeviceManagerConfiguration";
5
+ import { KuzzleRole } from "lib/modules/shared/types/KuzzleRole";
6
+ export declare class DeviceManagerPlugin extends Plugin {
7
+ config: DeviceManagerConfiguration;
8
+ roles: KuzzleRole[];
9
+ private deviceManagerEngine;
10
+ private adminConfigManager;
11
+ private engineConfigManager;
12
+ private engineController;
13
+ private assetModule;
14
+ private deviceModule;
15
+ private decoderModule;
16
+ private measureModule;
17
+ private modelModule;
18
+ private modelsRegister;
19
+ private decodersRegister;
20
+ private get sdk();
21
+ get models(): {
22
+ /**
23
+ * Register an asset model
24
+ *
25
+ * @param engineGroup Engine group name
26
+ * @param model Name of the asset model
27
+ * @param definition.measuresNames Array describing measures names and types
28
+ * @param definition.metadataMappings Metadata mappings definition
29
+ * @param definition.defaultMetadata Default metadata values
30
+ *
31
+ * @example
32
+ * ```
33
+ * deviceManager.models.registerAsset(
34
+ * "logistic",
35
+ * "container",
36
+ * {
37
+ * measuresNames: [
38
+ * { name: "temperatureExt", type: "temperature" },
39
+ * { name: "temperatureInt", type: "temperature" },
40
+ * { name: "position", type: "position" },
41
+ * ],
42
+ * metadataMappings: {
43
+ * weight: { type: "integer" },
44
+ * height: { type: "integer" },
45
+ * },
46
+ * defaultMetadata: {
47
+ * height: 20
48
+ * }
49
+ * }
50
+ * );
51
+ * ```
52
+ */
53
+ registerAsset: (engineGroup: string, model: string, definition: AssetModelDefinition) => void;
54
+ /**
55
+ * Register a device model
56
+ *
57
+ * @param model Name of the device model
58
+ * @param definition.decoded Decoder used to decode payloads
59
+ * @param definition.metadataMappings Metadata mappings definition
60
+ * @param definition.defaultMetadata Default metadata values
61
+ *
62
+ * @example
63
+ * ```
64
+ * deviceManager.models.registerDevice(
65
+ * "Abeeway",
66
+ * {
67
+ * decoder: new DummyTempPositionDecoder(),
68
+ * metadataMappings: {
69
+ * serial: { type: "keyword" },
70
+ * }
71
+ * }
72
+ * );
73
+ * ```
74
+ */
75
+ registerDevice: (model: string, definition: DeviceModelDefinition) => void;
76
+ /**
77
+ * Register a new measure
78
+ *
79
+ * @param name Name of the measure
80
+ * @param valuesMappings Mappings for the measure values
81
+ *
82
+ * @example
83
+ * ```
84
+ * deviceManager.models.registerMeasure("acceleration", {
85
+ * x: { type: "float" },
86
+ * y: { type: "float" },
87
+ * z: { type: "float" },
88
+ * });
89
+ * ```
90
+ */
91
+ registerMeasure: (name: string, measureDefinition: MeasureDefinition) => void;
92
+ };
93
+ constructor();
94
+ /**
95
+ * Init the plugin
96
+ */
97
+ init(config: JSONObject, context: PluginContext): Promise<void>;
98
+ private createDefaultRoles;
99
+ /**
100
+ * Initialize the administration index of the plugin
101
+ */
102
+ private initDatabase;
103
+ /**
104
+ * Merge custom mappings defined in the Decoder into the "payloads" collection
105
+ * mappings.
106
+ *
107
+ * Those custom mappings allow to search raw payloads more efficiently.
108
+ */
109
+ private getPayloadsMappings;
110
+ /**
111
+ * Initialize the config document if it does not exists
112
+ */
113
+ private initializeConfig;
114
+ private pipeCheckEngine;
115
+ }
@@ -0,0 +1,7 @@
1
+ export declare enum InternalCollection {
2
+ ASSETS = "assets",
3
+ DEVICES = "devices",
4
+ MEASURES = "measures",
5
+ MODELS = "models",
6
+ CONFIG = "config"
7
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./DeviceManagerConfiguration";
2
+ export * from "./DeviceManagerEngine";
3
+ export * from "./DeviceManagerPlugin";
4
+ export * from "./InternalCollection";
@@ -0,0 +1,41 @@
1
+ import { PluginContext } from "kuzzle";
2
+ import { Decoder, DecoderContent } from "../../modules/decoder";
3
+ export declare class DecodersRegister {
4
+ private context;
5
+ /**
6
+ * Map<deviceModel, Decoder>
7
+ */
8
+ private _decoders;
9
+ private get sdk();
10
+ get decoders(): Decoder[];
11
+ init(context: PluginContext): void;
12
+ get(deviceModel: string): Decoder;
13
+ list(): DecoderContent[];
14
+ /**
15
+ * Registers a new decoder for a device model.
16
+ * Decoder and device models share a 1:1 relationship
17
+ *
18
+ * This will register a new API action:
19
+ * - controller: `device-manager/payload`
20
+ * - action: `action` property of the decoder or the device model in kebab-case
21
+ *
22
+ * @param decoder Instantiated decoder
23
+ *
24
+ * @returns Corresponding API action requestPayload
25
+ */
26
+ register(decoder: Decoder): {
27
+ action: string;
28
+ controller: string;
29
+ };
30
+ printDecoders(): void;
31
+ /**
32
+ * Creates default roles, profiles and users associated to the generated actions
33
+ * in the Payload controller.
34
+ *
35
+ * This method never returns a rejected promise.
36
+ */
37
+ createDefaultRights(): Promise<void>;
38
+ private createDefaultUsers;
39
+ private createDefaultProfiles;
40
+ private createDefaultRoles;
41
+ }
@@ -0,0 +1,17 @@
1
+ import { JSONObject } from "kuzzle";
2
+ import { MeasureDefinition } from "lib/modules/measure";
3
+ import { DeviceManagerPlugin } from "../DeviceManagerPlugin";
4
+ export declare class ModelsRegister {
5
+ private config;
6
+ private context;
7
+ private assetModels;
8
+ private deviceModels;
9
+ private measureModels;
10
+ private get sdk();
11
+ init(plugin: DeviceManagerPlugin): void;
12
+ loadModels(): Promise<void>;
13
+ registerAsset(engineGroup: string, model: string, metadataMappings: JSONObject, measures: Record<string, string>, defaultMetadata?: JSONObject): void;
14
+ registerDevice(model: string, measures: Record<string, string>, metadataMappings?: JSONObject, defaultMetadata?: JSONObject): void;
15
+ registerMeasure(type: string, measureDefinition: MeasureDefinition): void;
16
+ private load;
17
+ }
@@ -0,0 +1,6 @@
1
+ import { Module } from "../shared/Module";
2
+ export declare class AssetModule extends Module {
3
+ private assetService;
4
+ private assetController;
5
+ init(): Promise<void>;
6
+ }
@@ -0,0 +1,44 @@
1
+ import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle";
2
+ import { MeasureContent } from "../measure/";
3
+ import { Metadata } from "../shared";
4
+ import { DeviceManagerPlugin } from "../../core";
5
+ import { AssetContent } from "./types/AssetContent";
6
+ export declare class AssetService {
7
+ private context;
8
+ private config;
9
+ private get sdk();
10
+ private get app();
11
+ constructor(plugin: DeviceManagerPlugin);
12
+ /**
13
+ * Returns measures history for an asset
14
+ *
15
+ * @param engineId Engine ID
16
+ * @param assetId Asset ID
17
+ * @param options.size Number of measures to return
18
+ * @param options.startAt Returns measures starting from this date (ISO8601)
19
+ * @param options.endAt Returns measures until this date (ISO8601)
20
+ */
21
+ getMeasureHistory(engineId: string, assetId: string, { size, startAt, endAt, }: {
22
+ size?: number;
23
+ startAt?: string;
24
+ endAt?: string;
25
+ }): Promise<KDocument<MeasureContent>[]>;
26
+ get(engineId: string, assetId: string): Promise<KDocument<AssetContent>>;
27
+ update(engineId: string, assetId: string, metadata: Metadata, { refresh }: {
28
+ refresh: any;
29
+ }): Promise<KDocument<AssetContent>>;
30
+ create(engineId: string, model: string, reference: string, metadata: JSONObject, { refresh }: {
31
+ refresh: any;
32
+ }): Promise<KDocument<AssetContent>>;
33
+ delete(engineId: string, assetId: string, { refresh, strict }: {
34
+ refresh: any;
35
+ strict: boolean;
36
+ }): Promise<void>;
37
+ search(engineId: string, searchBody: JSONObject, { from, size, scroll, lang, }: {
38
+ from?: number;
39
+ size?: number;
40
+ scroll?: string;
41
+ lang?: string;
42
+ }): Promise<SearchResult<KHit<AssetContent>>>;
43
+ private getEngine;
44
+ }
@@ -0,0 +1,14 @@
1
+ import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
+ import { AssetService } from "./AssetService";
3
+ import { ApiAssetCreateResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult } from "./types/AssetApi";
4
+ export declare class AssetsController {
5
+ definition: ControllerDefinition;
6
+ private assetService;
7
+ constructor(assetService: AssetService);
8
+ get(request: KuzzleRequest): Promise<ApiAssetGetResult>;
9
+ update(request: KuzzleRequest): Promise<ApiAssetUpdateResult>;
10
+ create(request: KuzzleRequest): Promise<ApiAssetCreateResult>;
11
+ delete(request: KuzzleRequest): Promise<ApiAssetDeleteResult>;
12
+ search(request: KuzzleRequest): Promise<ApiAssetSearchResult>;
13
+ getMeasures(request: KuzzleRequest): Promise<ApiAssetGetMeasuresResult>;
14
+ }
@@ -0,0 +1,38 @@
1
+ export declare const assetsMappings: {
2
+ dynamic: string;
3
+ properties: {
4
+ model: {
5
+ type: string;
6
+ fields: {
7
+ text: {
8
+ type: string;
9
+ };
10
+ };
11
+ };
12
+ reference: {
13
+ type: string;
14
+ fields: {
15
+ text: {
16
+ type: string;
17
+ };
18
+ };
19
+ };
20
+ metadata: {
21
+ properties: {};
22
+ };
23
+ measures: {
24
+ properties: {};
25
+ };
26
+ linkedDevices: {
27
+ properties: {
28
+ _id: {
29
+ type: string;
30
+ };
31
+ measures: {
32
+ dynamic: string;
33
+ properties: {};
34
+ };
35
+ };
36
+ };
37
+ };
38
+ };
@@ -0,0 +1,8 @@
1
+ export * from "./collections/assetsMappings";
2
+ export * from "./types/AssetContent";
3
+ export * from "./types/AssetEvents";
4
+ export * from "./types/AssetApi";
5
+ export * from "./model/AssetSerializer";
6
+ export * from "./AssetModule";
7
+ export * from "./roles/RoleAssetsAdmin";
8
+ export * from "./roles/RoleAssetsReader";
@@ -0,0 +1,10 @@
1
+ import { KDocument } from "kuzzle";
2
+ import { AssetContent, AssetMeasureContext } from "../types/AssetContent";
3
+ export declare class AssetSerializer {
4
+ static id(model: string, reference: string): string;
5
+ static serialize(asset: KDocument<AssetContent>): KDocument<AssetContent>;
6
+ /**
7
+ * Get asset description to contextualize measure data point
8
+ */
9
+ static measureContext(asset: KDocument<AssetContent>, measureName: string): AssetMeasureContext;
10
+ }
@@ -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 "lib/modules/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;
@@ -0,0 +1,16 @@
1
+ export declare const assetsAdmin: {
2
+ controllers: {
3
+ "device-manager/assets": {
4
+ actions: {
5
+ "*": boolean;
6
+ };
7
+ };
8
+ "device-manager/models": {
9
+ actions: {
10
+ deleteAsset: boolean;
11
+ listAssets: boolean;
12
+ writeAsset: boolean;
13
+ };
14
+ };
15
+ };
16
+ };
@@ -0,0 +1,16 @@
1
+ export declare const assetsReader: {
2
+ controllers: {
3
+ "device-manager/assets": {
4
+ actions: {
5
+ get: boolean;
6
+ getMeasures: boolean;
7
+ search: boolean;
8
+ };
9
+ };
10
+ "device-manager/models": {
11
+ actions: {
12
+ listAssets: boolean;
13
+ };
14
+ };
15
+ };
16
+ };
@@ -0,0 +1,58 @@
1
+ import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle";
2
+ import { MeasureContent } from "../../../modules/measure";
3
+ import { Metadata } from "../../shared";
4
+ import { AssetContent } from "./AssetContent";
5
+ interface AssetsControllerRequest {
6
+ controller: "device-manager/assets";
7
+ engineId: string;
8
+ }
9
+ export interface ApiAssetGetRequest extends AssetsControllerRequest {
10
+ action: "get";
11
+ _id: string;
12
+ }
13
+ export type ApiAssetGetResult = KDocument<AssetContent>;
14
+ export interface ApiAssetUpdateRequest extends AssetsControllerRequest {
15
+ action: "update";
16
+ _id: string;
17
+ refresh?: string;
18
+ body: {
19
+ metadata: Metadata;
20
+ };
21
+ }
22
+ export type ApiAssetUpdateResult = KDocument<AssetContent>;
23
+ export interface ApiAssetCreateRequest extends AssetsControllerRequest {
24
+ action: "create";
25
+ refresh?: string;
26
+ body: {
27
+ model: string;
28
+ reference: string;
29
+ metadata?: Metadata;
30
+ };
31
+ }
32
+ export type ApiAssetCreateResult = KDocument<AssetContent>;
33
+ export interface ApiAssetDeleteRequest extends AssetsControllerRequest {
34
+ action: "delete";
35
+ _id: string;
36
+ refresh?: string;
37
+ strict?: boolean;
38
+ }
39
+ export type ApiAssetDeleteResult = void;
40
+ export interface ApiAssetSearchRequest extends AssetsControllerRequest {
41
+ action: "search";
42
+ from?: number;
43
+ size?: number;
44
+ scrollTTL?: string;
45
+ body: JSONObject;
46
+ }
47
+ export type ApiAssetSearchResult = SearchResult<KHit<AssetContent>>;
48
+ export interface ApiAssetGetMeasuresRequest extends AssetsControllerRequest {
49
+ action: "getMeasures";
50
+ _id: string;
51
+ size?: number;
52
+ startAt?: string;
53
+ endAt?: string;
54
+ }
55
+ export type ApiAssetGetMeasuresResult = {
56
+ measures: Array<KDocument<MeasureContent<JSONObject>>>;
57
+ };
58
+ export {};
@@ -0,0 +1,41 @@
1
+ import { JSONObject } from "kuzzle";
2
+ import { DigitalTwinContent, Metadata } from "../../shared";
3
+ /**
4
+ * Asset document content
5
+ */
6
+ export interface AssetContent<TMeasures extends JSONObject = any, TMetadata extends Metadata = any> extends DigitalTwinContent<TMeasures, TMetadata> {
7
+ /**
8
+ * Link with attached device
9
+ */
10
+ linkedDevices: Array<{
11
+ /**
12
+ * Device ID
13
+ */
14
+ _id: string;
15
+ /**
16
+ * Names lookup table for measures
17
+ *
18
+ * Record<deviceName, assetName>
19
+ *
20
+ * @example
21
+ *
22
+ * {
23
+ * "temperature": "externalTemperature",
24
+ * }
25
+ */
26
+ measures: Record<string, string>;
27
+ }>;
28
+ }
29
+ /**
30
+ * Asset description used to contextualize each measure data point
31
+ */
32
+ export type AssetMeasureContext<TMetadata extends Metadata = Metadata> = {
33
+ /**
34
+ * ID of the asset
35
+ */
36
+ _id: string;
37
+ /**
38
+ * Name of the measure for the Asset
39
+ */
40
+ measureName: string;
41
+ } & Pick<AssetContent<JSONObject, TMetadata>, "model" | "reference" | "metadata">;
@@ -0,0 +1,17 @@
1
+ import { KDocument } from "kuzzle";
2
+ import { Metadata } from "../../../modules/shared";
3
+ import { AssetContent } from "./AssetContent";
4
+ export type EventAssetUpdateBefore = {
5
+ name: "device-manager:asset:update:before";
6
+ args: [{
7
+ asset: KDocument<AssetContent>;
8
+ metadata: Metadata;
9
+ }];
10
+ };
11
+ export type EventAssetUpdateAfter = {
12
+ name: "device-manager:asset:update:after";
13
+ args: [{
14
+ asset: KDocument<AssetContent>;
15
+ metadata: Metadata;
16
+ }];
17
+ };