kuzzle-device-manager 2.11.0-dev.1 → 3.0.0-3-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/modules/asset/AssetModule.d.ts +1 -4
  5. package/dist/lib/modules/asset/AssetModule.js +0 -13
  6. package/dist/lib/modules/asset/AssetModule.js.map +1 -1
  7. package/dist/lib/modules/asset/AssetService.d.ts +7 -4
  8. package/dist/lib/modules/asset/AssetService.js +119 -50
  9. package/dist/lib/modules/asset/AssetService.js.map +1 -1
  10. package/dist/lib/modules/asset/AssetsController.d.ts +25 -7
  11. package/dist/lib/modules/asset/AssetsController.js +123 -36
  12. package/dist/lib/modules/asset/AssetsController.js.map +1 -1
  13. package/dist/lib/modules/asset/collections/assetsMappings.js +10 -15
  14. package/dist/lib/modules/asset/collections/assetsMappings.js.map +1 -1
  15. package/dist/lib/modules/asset/exports.d.ts +0 -4
  16. package/dist/lib/modules/asset/exports.js +0 -4
  17. package/dist/lib/modules/asset/exports.js.map +1 -1
  18. package/dist/lib/modules/asset/index.d.ts +1 -3
  19. package/dist/lib/modules/asset/index.js +1 -3
  20. package/dist/lib/modules/asset/index.js.map +1 -1
  21. package/dist/lib/modules/asset/model/AssetSerializer.js +0 -1
  22. package/dist/lib/modules/asset/model/AssetSerializer.js.map +1 -1
  23. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js +1 -1
  24. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js.map +1 -1
  25. package/dist/lib/modules/asset/types/AssetApi.d.ts +124 -9
  26. package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -16
  27. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
  28. package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
  29. package/dist/lib/modules/decoder/DecodedPayload.js +13 -2
  30. package/dist/lib/modules/decoder/DecodedPayload.js.map +1 -1
  31. package/dist/lib/modules/decoder/Decoder.d.ts +1 -1
  32. package/dist/lib/modules/decoder/Decoder.js.map +1 -1
  33. package/dist/lib/modules/decoder/DecoderModule.js.map +1 -1
  34. package/dist/lib/modules/decoder/DecodersController.d.ts +4 -1
  35. package/dist/lib/modules/decoder/DecodersController.js +3 -0
  36. package/dist/lib/modules/decoder/DecodersController.js.map +1 -1
  37. package/dist/lib/modules/decoder/DecodersRegister.js +4 -1
  38. package/dist/lib/modules/decoder/DecodersRegister.js.map +1 -1
  39. package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
  40. package/dist/lib/modules/decoder/PayloadService.js +136 -26
  41. package/dist/lib/modules/decoder/PayloadService.js.map +1 -1
  42. package/dist/lib/modules/decoder/PayloadsController.js +1 -1
  43. package/dist/lib/modules/decoder/PayloadsController.js.map +1 -1
  44. package/dist/lib/modules/device/DeviceService.d.ts +6 -47
  45. package/dist/lib/modules/device/DeviceService.js +157 -291
  46. package/dist/lib/modules/device/DeviceService.js.map +1 -1
  47. package/dist/lib/modules/device/DevicesController.d.ts +5 -5
  48. package/dist/lib/modules/device/DevicesController.js +35 -23
  49. package/dist/lib/modules/device/DevicesController.js.map +1 -1
  50. package/dist/lib/modules/device/collections/deviceMappings.d.ts +6 -0
  51. package/dist/lib/modules/device/collections/deviceMappings.js +76 -6
  52. package/dist/lib/modules/device/collections/deviceMappings.js.map +1 -1
  53. package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +2 -2
  54. package/dist/lib/modules/device/roles/RoleDevicesAdmin.js +7 -4
  55. package/dist/lib/modules/device/roles/RoleDevicesAdmin.js.map +1 -1
  56. package/dist/lib/modules/device/roles/specificRoles/RoleDevicesAssetAssociation.js +4 -1
  57. package/dist/lib/modules/device/roles/specificRoles/RoleDevicesAssetAssociation.js.map +1 -1
  58. package/dist/lib/modules/device/types/DeviceApi.d.ts +69 -41
  59. package/dist/lib/modules/device/types/DeviceContent.d.ts +56 -5
  60. package/dist/lib/modules/device/types/DeviceEvents.d.ts +9 -24
  61. package/dist/lib/modules/group/GroupsController.d.ts +37 -0
  62. package/dist/lib/modules/group/GroupsController.js +472 -0
  63. package/dist/lib/modules/group/GroupsController.js.map +1 -0
  64. package/dist/lib/modules/group/GroupsModule.d.ts +10 -0
  65. package/dist/lib/modules/group/GroupsModule.js +25 -0
  66. package/dist/lib/modules/group/GroupsModule.js.map +1 -0
  67. package/dist/lib/modules/group/GroupsService.d.ts +118 -0
  68. package/dist/lib/modules/group/GroupsService.js +518 -0
  69. package/dist/lib/modules/group/GroupsService.js.map +1 -0
  70. package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
  71. package/dist/lib/modules/{asset/collections/assetsGroupsMapping.js → group/collections/groupsMappings.js} +4 -12
  72. package/dist/lib/modules/group/collections/groupsMappings.js.map +1 -0
  73. package/dist/lib/modules/group/exports.d.ts +5 -0
  74. package/dist/lib/modules/group/exports.js +22 -0
  75. package/dist/lib/modules/group/exports.js.map +1 -0
  76. package/dist/lib/modules/group/index.d.ts +4 -0
  77. package/dist/lib/modules/{measure/measures → group}/index.js +4 -5
  78. package/dist/lib/modules/group/index.js.map +1 -0
  79. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
  80. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.js → group/roles/RoleGroupsAdmin.js} +7 -7
  81. package/dist/lib/modules/group/roles/RoleGroupsAdmin.js.map +1 -0
  82. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
  83. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.js → group/roles/RoleGroupsReader.js} +7 -7
  84. package/dist/lib/modules/group/roles/RoleGroupsReader.js.map +1 -0
  85. package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
  86. package/dist/lib/modules/{asset/types/AssetGroupsApi.js → group/types/GroupContent.js} +1 -1
  87. package/dist/lib/modules/group/types/GroupContent.js.map +1 -0
  88. package/dist/lib/modules/group/types/GroupsApi.d.ts +141 -0
  89. package/dist/lib/modules/{asset/types/AssetGroupContent.js → group/types/GroupsApi.js} +1 -1
  90. package/dist/lib/modules/group/types/GroupsApi.js.map +1 -0
  91. package/dist/lib/modules/measure/MeasureExporter.js +14 -6
  92. package/dist/lib/modules/measure/MeasureExporter.js.map +1 -1
  93. package/dist/lib/modules/measure/MeasureService.d.ts +11 -43
  94. package/dist/lib/modules/measure/MeasureService.js +86 -375
  95. package/dist/lib/modules/measure/MeasureService.js.map +1 -1
  96. package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
  97. package/dist/lib/modules/measure/MeasureSourcesBuilder.js +5 -15
  98. package/dist/lib/modules/measure/MeasureSourcesBuilder.js.map +1 -1
  99. package/dist/lib/modules/measure/MeasureTargetBuilder.d.ts +1 -1
  100. package/dist/lib/modules/measure/MeasureTargetBuilder.js +2 -2
  101. package/dist/lib/modules/measure/MeasureTargetBuilder.js.map +1 -1
  102. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -91
  103. package/dist/lib/modules/measure/collections/measuresMappings.js +7 -11
  104. package/dist/lib/modules/measure/collections/measuresMappings.js.map +1 -1
  105. package/dist/lib/modules/measure/exports.d.ts +0 -1
  106. package/dist/lib/modules/measure/exports.js +0 -1
  107. package/dist/lib/modules/measure/exports.js.map +1 -1
  108. package/dist/lib/modules/measure/index.d.ts +0 -1
  109. package/dist/lib/modules/measure/index.js +0 -1
  110. package/dist/lib/modules/measure/index.js.map +1 -1
  111. package/dist/lib/modules/measure/types/MeasureContent.d.ts +9 -2
  112. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +6 -149
  113. package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
  114. package/dist/lib/modules/measure/types/MeasureSources.js.map +1 -1
  115. package/dist/lib/modules/measure/types/MeasureTarget.d.ts +1 -1
  116. package/dist/lib/modules/measure/types/MeasureTarget.js +1 -1
  117. package/dist/lib/modules/measure/types/MeasureTarget.js.map +1 -1
  118. package/dist/lib/modules/model/ModelModule.js.map +1 -1
  119. package/dist/lib/modules/model/ModelSerializer.js +15 -0
  120. package/dist/lib/modules/model/ModelSerializer.js.map +1 -1
  121. package/dist/lib/modules/model/ModelService.d.ts +20 -14
  122. package/dist/lib/modules/model/ModelService.js +301 -117
  123. package/dist/lib/modules/model/ModelService.js.map +1 -1
  124. package/dist/lib/modules/model/ModelsController.d.ts +1 -1
  125. package/dist/lib/modules/model/ModelsController.js +32 -19
  126. package/dist/lib/modules/model/ModelsController.js.map +1 -1
  127. package/dist/lib/modules/model/ModelsRegister.d.ts +6 -5
  128. package/dist/lib/modules/model/ModelsRegister.js +10 -8
  129. package/dist/lib/modules/model/ModelsRegister.js.map +1 -1
  130. package/dist/lib/modules/model/collections/modelsMappings.js +20 -1
  131. package/dist/lib/modules/model/collections/modelsMappings.js.map +1 -1
  132. package/dist/lib/modules/model/types/ModelApi.d.ts +14 -9
  133. package/dist/lib/modules/model/types/ModelContent.d.ts +34 -3
  134. package/dist/lib/modules/model/types/ModelContent.js.map +1 -1
  135. package/dist/lib/modules/model/types/ModelDefinition.d.ts +6 -2
  136. package/dist/lib/modules/model/types/ModelEvents.d.ts +3 -1
  137. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +15 -6
  138. package/dist/lib/modules/plugin/DeviceManagerEngine.js +151 -54
  139. package/dist/lib/modules/plugin/DeviceManagerEngine.js.map +1 -1
  140. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +10 -8
  141. package/dist/lib/modules/plugin/DeviceManagerPlugin.js +41 -44
  142. package/dist/lib/modules/plugin/DeviceManagerPlugin.js.map +1 -1
  143. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -14
  144. package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
  145. package/dist/lib/modules/plugin/types/InternalCollection.js +1 -1
  146. package/dist/lib/modules/plugin/types/InternalCollection.js.map +1 -1
  147. package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
  148. package/dist/lib/modules/plugin/types/exports.js +1 -0
  149. package/dist/lib/modules/plugin/types/exports.js.map +1 -1
  150. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +3 -1
  151. package/dist/lib/modules/shared/services/AbstractExporter.js +7 -3
  152. package/dist/lib/modules/shared/services/AbstractExporter.js.map +1 -1
  153. package/dist/lib/modules/shared/services/BaseService.js.map +1 -1
  154. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +6 -1
  155. package/dist/lib/modules/shared/services/DigitalTwinExporter.js +49 -7
  156. package/dist/lib/modules/shared/services/DigitalTwinExporter.js.map +1 -1
  157. package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +70 -2
  158. package/dist/lib/modules/shared/services/DigitalTwinService.js +309 -1
  159. package/dist/lib/modules/shared/services/DigitalTwinService.js.map +1 -1
  160. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -5
  161. package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
  162. package/package.json +15 -9
  163. package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -24
  164. package/dist/lib/modules/asset/AssetsGroupsController.js +0 -239
  165. package/dist/lib/modules/asset/AssetsGroupsController.js.map +0 -1
  166. package/dist/lib/modules/asset/AssetsGroupsService.d.ts +0 -49
  167. package/dist/lib/modules/asset/AssetsGroupsService.js +0 -172
  168. package/dist/lib/modules/asset/AssetsGroupsService.js.map +0 -1
  169. package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
  170. package/dist/lib/modules/asset/collections/assetsGroupsMapping.js.map +0 -1
  171. package/dist/lib/modules/asset/roles/RoleAssetsGroupsAdmin.js.map +0 -1
  172. package/dist/lib/modules/asset/roles/RoleAssetsGroupsReader.js.map +0 -1
  173. package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -11
  174. package/dist/lib/modules/asset/types/AssetGroupContent.js.map +0 -1
  175. package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
  176. package/dist/lib/modules/asset/types/AssetGroupsApi.js.map +0 -1
  177. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
  178. package/dist/lib/modules/measure/measures/BatteryMeasure.js +0 -19
  179. package/dist/lib/modules/measure/measures/BatteryMeasure.js.map +0 -1
  180. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
  181. package/dist/lib/modules/measure/measures/HumidityMeasure.js +0 -19
  182. package/dist/lib/modules/measure/measures/HumidityMeasure.js.map +0 -1
  183. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
  184. package/dist/lib/modules/measure/measures/MovementMeasure.js +0 -17
  185. package/dist/lib/modules/measure/measures/MovementMeasure.js.map +0 -1
  186. package/dist/lib/modules/measure/measures/PositionMeasure.d.ts +0 -10
  187. package/dist/lib/modules/measure/measures/PositionMeasure.js +0 -43
  188. package/dist/lib/modules/measure/measures/PositionMeasure.js.map +0 -1
  189. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
  190. package/dist/lib/modules/measure/measures/TemperatureMeasure.js +0 -19
  191. package/dist/lib/modules/measure/measures/TemperatureMeasure.js.map +0 -1
  192. package/dist/lib/modules/measure/measures/index.d.ts +0 -5
  193. package/dist/lib/modules/measure/measures/index.js.map +0 -1
@@ -1,14 +1,65 @@
1
- import { JSONObject } from "kuzzle-sdk";
1
+ import { JSONObject, KDocumentContent } from "kuzzle-sdk";
2
2
  import { DigitalTwinContent, Metadata } from "../../shared";
3
3
  /**
4
4
  * Device document content
5
5
  */
6
- export interface DeviceContent<TMeasures extends JSONObject = any, TMetadata extends Metadata = any> extends DigitalTwinContent<TMeasures, TMetadata> {
6
+ export interface DeviceContent<TMetadata extends Metadata = any> extends DigitalTwinContent<TMetadata> {
7
7
  /**
8
- * Linked asset unique identifier
8
+ * Link with attached assets
9
9
  */
10
- assetId: string | null;
10
+ linkedMeasures: Array<{
11
+ /**
12
+ * Asset ID
13
+ */
14
+ assetId: string;
15
+ /**
16
+ * Slots of the linked measures
17
+ *
18
+ * Array<{ asset: string, device: string, type: string }>
19
+ *
20
+ * @example
21
+ *
22
+ * [
23
+ * { asset: "externalTemperature", device: "temperature", }
24
+ * ]
25
+ */
26
+ measureSlots: Array<{
27
+ asset: string;
28
+ device: string;
29
+ }>;
30
+ }>;
11
31
  /**
12
32
  */
13
- engineId: string;
33
+ engineId: string | null;
34
+ /**
35
+ * Path's of device's groups
36
+ */
37
+ groups: Array<{
38
+ path: string;
39
+ date: number;
40
+ }>;
41
+ }
42
+ /**
43
+ * Platform index Device document content
44
+ */
45
+ interface DeviceProvisioningContentFields extends Pick<DeviceContent, "model" | "reference" | "engineId" | "measureSlots"> {
46
+ /**
47
+ * Date of provisioning of the device on the platform
48
+ */
49
+ provisionedAt: number;
50
+ /**
51
+ * Date of last measure from the device
52
+ */
53
+ lastMeasuredAt: number | null;
54
+ /**
55
+ * An array containing the 5 last measures from the device
56
+ */
57
+ lastMeasures: Array<{
58
+ measureName: string;
59
+ values: JSONObject;
60
+ measuredAt: number;
61
+ type: string;
62
+ }>;
14
63
  }
64
+ export type DeviceProvisioningContent = DeviceProvisioningContentFields & KDocumentContent;
65
+ export {};
@@ -1,8 +1,8 @@
1
1
  import { User } from "kuzzle";
2
2
  import { KDocument } from "kuzzle-sdk";
3
- import { Metadata } from "../../../modules/shared";
3
+ import { DeviceModelContent } from "../../model";
4
+ import { Metadata } from "../../shared";
4
5
  import { DeviceContent } from "./DeviceContent";
5
- import { ApiDeviceLinkAssetRequest } from "./DeviceApi";
6
6
  export type EventDeviceUpdateBefore = {
7
7
  name: "device-manager:device:update:before";
8
8
  args: [{
@@ -17,28 +17,6 @@ export type EventDeviceUpdateAfter = {
17
17
  metadata: Metadata;
18
18
  }];
19
19
  };
20
- /**
21
- * @internal
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
- };
34
- export type AskDeviceUnlinkAsset = {
35
- name: "ask:device-manager:device:unlink-asset";
36
- payload: {
37
- deviceId: string;
38
- user: User;
39
- };
40
- result: void;
41
- };
42
20
  export type AskDeviceDetachEngine = {
43
21
  name: "ask:device-manager:device:detach-engine";
44
22
  payload: {
@@ -56,3 +34,10 @@ export type AskDeviceAttachEngine = {
56
34
  };
57
35
  result: void;
58
36
  };
37
+ export type AskDeviceRefreshModel = {
38
+ name: "ask:device-manager:device:refresh-model";
39
+ payload: {
40
+ deviceModel: DeviceModelContent;
41
+ };
42
+ result: void;
43
+ };
@@ -0,0 +1,37 @@
1
+ import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
+ import { DeviceManagerPlugin } from "../plugin";
3
+ import { ApiGroupAddAssetsResult, ApiGroupAddDevicesResult, ApiGroupCreateResult, ApiGroupDeleteResult, ApiGroupGetResult, ApiGroupListItemsResult, ApiGroupMCreateResult, ApiGroupMUpdateResult, ApiGroupMUpsertResult, ApiGroupRemoveAssetsResult, ApiGroupRemoveDevicesResult, ApiGroupSearchResult, ApiGroupUpdateResult, ApiGroupUpsertResult, GroupsBodyRequest } from "./types/GroupsApi";
4
+ import { GroupsService } from "./GroupsService";
5
+ import { KuzzleLogger } from "kuzzle-logger";
6
+ export declare class GroupsController {
7
+ private plugin;
8
+ private groupsService;
9
+ definition: ControllerDefinition;
10
+ readonly logger: KuzzleLogger;
11
+ constructor(plugin: DeviceManagerPlugin, groupsService: GroupsService, logger: KuzzleLogger);
12
+ private get sdk();
13
+ private get as();
14
+ /**
15
+ * Check that the path property is valid, and closest parent exists.
16
+ * @param {string} engineId Engine ID
17
+ * @param {string} path The path of a group
18
+ * @throws {BadRequestError} If the path is not a string or if the path is not valid.
19
+ * @returns {void}
20
+ */
21
+ checkPath(engineId: string, path: GroupsBodyRequest["path"], groupId?: string): Promise<void>;
22
+ checkGroupName(engineId: string, name: GroupsBodyRequest["name"], assetId?: string): Promise<void>;
23
+ create(request: KuzzleRequest): Promise<ApiGroupCreateResult>;
24
+ get(request: KuzzleRequest): Promise<ApiGroupGetResult>;
25
+ upsert(request: KuzzleRequest): Promise<ApiGroupUpsertResult>;
26
+ update(request: KuzzleRequest): Promise<ApiGroupUpdateResult>;
27
+ delete(request: KuzzleRequest): Promise<ApiGroupDeleteResult>;
28
+ search(request: KuzzleRequest): Promise<ApiGroupSearchResult>;
29
+ listItems(request: KuzzleRequest): Promise<ApiGroupListItemsResult>;
30
+ addAssets(request: KuzzleRequest): Promise<ApiGroupAddAssetsResult>;
31
+ removeAssets(request: KuzzleRequest): Promise<ApiGroupRemoveAssetsResult>;
32
+ addDevices(request: KuzzleRequest): Promise<ApiGroupAddDevicesResult>;
33
+ removeDevices(request: KuzzleRequest): Promise<ApiGroupRemoveDevicesResult>;
34
+ mCreate(request: KuzzleRequest): Promise<ApiGroupMCreateResult>;
35
+ mUpdate(request: KuzzleRequest): Promise<ApiGroupMUpdateResult>;
36
+ mUpsert(request: KuzzleRequest): Promise<ApiGroupMUpsertResult>;
37
+ }
@@ -0,0 +1,472 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupsController = void 0;
4
+ const kuzzle_1 = require("kuzzle");
5
+ const plugin_1 = require("../plugin");
6
+ class GroupsController {
7
+ constructor(plugin, groupsService, logger) {
8
+ this.plugin = plugin;
9
+ this.groupsService = groupsService;
10
+ this.logger = logger;
11
+ /* eslint-disable sort-keys */
12
+ this.definition = {
13
+ actions: {
14
+ create: {
15
+ handler: this.create.bind(this),
16
+ http: [
17
+ {
18
+ path: "device-manager/:engineId/groups/:_id",
19
+ verb: "post",
20
+ },
21
+ ],
22
+ },
23
+ get: {
24
+ handler: this.get.bind(this),
25
+ http: [{ path: "device-manager/:engineId/groups/:_id", verb: "get" }],
26
+ },
27
+ update: {
28
+ handler: this.update.bind(this),
29
+ http: [{ path: "device-manager/:engineId/groups/:_id", verb: "put" }],
30
+ },
31
+ upsert: {
32
+ handler: this.upsert.bind(this),
33
+ http: [{ path: "device-manager/:engineId/groups", verb: "put" }],
34
+ },
35
+ delete: {
36
+ handler: this.delete.bind(this),
37
+ http: [
38
+ {
39
+ path: "device-manager/:engineId/groups/:_id",
40
+ verb: "delete",
41
+ },
42
+ ],
43
+ },
44
+ search: {
45
+ handler: this.search.bind(this),
46
+ http: [
47
+ {
48
+ path: "device-manager/:engineId/groups/_search",
49
+ verb: "get",
50
+ },
51
+ {
52
+ path: "device-manager/:engineId/groups/_search",
53
+ verb: "post",
54
+ },
55
+ ],
56
+ },
57
+ addAssets: {
58
+ handler: this.addAssets.bind(this),
59
+ http: [
60
+ {
61
+ path: "device-manager/:engineId/groups/:_id/addAssets",
62
+ verb: "post",
63
+ },
64
+ ],
65
+ },
66
+ removeAssets: {
67
+ handler: this.removeAssets.bind(this),
68
+ http: [
69
+ {
70
+ path: "device-manager/:engineId/groups/removeAssets",
71
+ verb: "post",
72
+ },
73
+ ],
74
+ },
75
+ addDevices: {
76
+ handler: this.addDevices.bind(this),
77
+ http: [
78
+ {
79
+ path: "device-manager/:engineId/groups/addDevices",
80
+ verb: "post",
81
+ },
82
+ ],
83
+ },
84
+ removeDevices: {
85
+ handler: this.removeDevices.bind(this),
86
+ http: [
87
+ {
88
+ path: "device-manager/:engineId/groups/removeDevices",
89
+ verb: "post",
90
+ },
91
+ ],
92
+ },
93
+ listItems: {
94
+ handler: this.listItems.bind(this),
95
+ http: [
96
+ {
97
+ path: "device-manager/:engineId/groups/:_id/listItems",
98
+ verb: "get",
99
+ },
100
+ ],
101
+ },
102
+ mCreate: {
103
+ handler: this.mCreate.bind(this),
104
+ http: [
105
+ {
106
+ path: "device-manager/:engineId/groups/_mCreate",
107
+ verb: "post",
108
+ },
109
+ ],
110
+ },
111
+ mUpdate: {
112
+ handler: this.mUpdate.bind(this),
113
+ http: [
114
+ {
115
+ path: "device-manager/:engineId/groups/_mUpdate",
116
+ verb: "put",
117
+ },
118
+ ],
119
+ },
120
+ mUpsert: {
121
+ handler: this.mUpsert.bind(this),
122
+ http: [
123
+ {
124
+ path: "device-manager/:engineId/groups/_mUpsert",
125
+ verb: "put",
126
+ },
127
+ ],
128
+ },
129
+ },
130
+ };
131
+ /* eslint-enable sort-keys */
132
+ }
133
+ get sdk() {
134
+ return this.plugin.context.accessors.sdk;
135
+ }
136
+ get as() {
137
+ return (user) => {
138
+ if (user?._id) {
139
+ return this.sdk.as(user, { checkRights: false });
140
+ }
141
+ return this.sdk;
142
+ };
143
+ }
144
+ /**
145
+ * Check that the path property is valid, and closest parent exists.
146
+ * @param {string} engineId Engine ID
147
+ * @param {string} path The path of a group
148
+ * @throws {BadRequestError} If the path is not a string or if the path is not valid.
149
+ * @returns {void}
150
+ */
151
+ async checkPath(engineId, path, groupId) {
152
+ if (typeof path !== "string") {
153
+ throw new kuzzle_1.BadRequestError("The path property should be a string");
154
+ }
155
+ const groups = path.split(".");
156
+ const lastGroup = groups.pop();
157
+ if (groupId && lastGroup !== groupId) {
158
+ throw new kuzzle_1.BadRequestError(`The last part of the path "${path}" should be the group ID "${groupId}"`);
159
+ }
160
+ if (groups.length === 0) {
161
+ return;
162
+ }
163
+ const closestParentId = groups[groups.length - 1];
164
+ let parent;
165
+ try {
166
+ parent = await this.sdk.document.get(engineId, plugin_1.InternalCollection.GROUPS, closestParentId);
167
+ }
168
+ catch {
169
+ throw new kuzzle_1.BadRequestError(`The closest parent group "${closestParentId}" does not exist`);
170
+ }
171
+ if (!parent) {
172
+ throw new kuzzle_1.BadRequestError(`The closest parent group "${closestParentId}" does not exist`);
173
+ }
174
+ if (parent._source.path !== groups.join(".")) {
175
+ throw new kuzzle_1.BadRequestError(`The parent path does not match`);
176
+ }
177
+ }
178
+ async checkGroupName(engineId, name, assetId) {
179
+ if (typeof name !== "string") {
180
+ return;
181
+ }
182
+ const groupsCount = await this.sdk.document.count(engineId, plugin_1.InternalCollection.GROUPS, {
183
+ query: {
184
+ bool: {
185
+ must: [
186
+ {
187
+ regexp: {
188
+ name: {
189
+ case_insensitive: true,
190
+ value: name,
191
+ },
192
+ },
193
+ },
194
+ ],
195
+ must_not: [
196
+ {
197
+ terms: {
198
+ _id: typeof assetId === "string" ? [assetId] : [],
199
+ },
200
+ },
201
+ ],
202
+ },
203
+ },
204
+ });
205
+ if (groupsCount > 0) {
206
+ throw new kuzzle_1.BadRequestError(`A group with name "${name}" already exist`);
207
+ }
208
+ }
209
+ async create(request) {
210
+ const engineId = request.getString("engineId");
211
+ const name = request.getBodyString("name");
212
+ const metadata = request.getBodyObject("metadata", {});
213
+ const body = request.getBody();
214
+ const model = body.model ?? null;
215
+ const _id = request.getId({
216
+ generator: () => kuzzle_1.NameGenerator.generateRandomName({ prefix: "group" }),
217
+ ifMissing: "generate",
218
+ });
219
+ let path = body.path ?? _id;
220
+ if (!path.includes(_id)) {
221
+ path += `.${_id}`;
222
+ }
223
+ await this.checkPath(engineId, path, _id);
224
+ await this.checkGroupName(engineId, name);
225
+ if (typeof name !== "string") {
226
+ throw new kuzzle_1.BadRequestError(`A group must have a name`);
227
+ }
228
+ return this.groupsService.create(_id, engineId, metadata, model, name, path, request);
229
+ }
230
+ async get(request) {
231
+ const engineId = request.getString("engineId");
232
+ const _id = request.getId();
233
+ return this.groupsService.get(engineId, _id, request);
234
+ }
235
+ async upsert(request) {
236
+ const engineId = request.getString("engineId");
237
+ const _id = request.getId({
238
+ generator: () => kuzzle_1.NameGenerator.generateRandomName({ prefix: "group" }),
239
+ ifMissing: "generate",
240
+ });
241
+ const body = request.getBody();
242
+ const name = body.name;
243
+ let path = body.path;
244
+ const model = body.model;
245
+ const metadata = body.metadata;
246
+ if (name !== undefined) {
247
+ await this.checkGroupName(engineId, name, _id);
248
+ }
249
+ if (path !== undefined) {
250
+ await this.checkPath(engineId, path, _id);
251
+ }
252
+ const group = await this.get(request);
253
+ if (!group) {
254
+ path = body.path ?? _id;
255
+ if (!path.includes(_id)) {
256
+ path += `.${_id}`;
257
+ }
258
+ return this.groupsService.create(_id, engineId, metadata, model, name, path, request);
259
+ }
260
+ return this.groupsService.update(request, _id, engineId, name, path, metadata);
261
+ }
262
+ async update(request) {
263
+ const engineId = request.getString("engineId");
264
+ const _id = request.getId();
265
+ const body = request.getBody();
266
+ const name = body.name;
267
+ const path = body.path;
268
+ const metadata = body.metadata;
269
+ if (name !== undefined) {
270
+ await this.checkGroupName(engineId, name, _id);
271
+ }
272
+ if (path !== undefined) {
273
+ await this.checkPath(engineId, path, _id);
274
+ }
275
+ return this.groupsService.update(request, _id, engineId, name, path, metadata);
276
+ }
277
+ async delete(request) {
278
+ const engineId = request.getString("engineId");
279
+ const _id = request.getId();
280
+ await this.groupsService.delete(_id, engineId, request);
281
+ }
282
+ async search(request) {
283
+ const engineId = request.getString("engineId");
284
+ const searchParams = request.getSearchParams();
285
+ return this.groupsService.search(engineId, searchParams, request);
286
+ }
287
+ async listItems(request) {
288
+ const engineId = request.getString("engineId");
289
+ const _id = request.getId();
290
+ const includeChildren = request.getBodyBoolean("includeChildren");
291
+ const searchParams = request.getSearchParams();
292
+ const { from, size } = searchParams;
293
+ return this.groupsService.listItems(engineId, _id, includeChildren, { from, size }, request);
294
+ }
295
+ async addAssets(request) {
296
+ const engineId = request.getString("engineId");
297
+ const body = request.getBody();
298
+ const path = request.getBodyString("path");
299
+ const assetIds = body.assetIds;
300
+ this.checkPath(engineId, path);
301
+ return this.groupsService.addAssets(engineId, path, assetIds, request);
302
+ }
303
+ async removeAssets(request) {
304
+ const engineId = request.getString("engineId");
305
+ const body = request.getBody();
306
+ const path = request.getBodyString("path");
307
+ const assetIds = body.assetIds;
308
+ this.checkPath(engineId, path);
309
+ return this.groupsService.removeAssets(engineId, path, assetIds, request);
310
+ }
311
+ async addDevices(request) {
312
+ const engineId = request.getString("engineId");
313
+ const body = request.getBody();
314
+ const path = request.getBodyString("path");
315
+ const deviceIds = body.deviceIds;
316
+ this.checkPath(engineId, path);
317
+ return this.groupsService.addDevices(engineId, path, deviceIds, request);
318
+ }
319
+ async removeDevices(request) {
320
+ const engineId = request.getString("engineId");
321
+ const body = request.getBody();
322
+ const path = request.getBodyString("path");
323
+ const deviceIds = body.deviceIds;
324
+ this.checkPath(engineId, path);
325
+ return this.groupsService.removeDevices(engineId, path, deviceIds, request);
326
+ }
327
+ async mCreate(request) {
328
+ const engineId = request.getString("engineId");
329
+ const groups = request.getBodyArray("groups");
330
+ const errors = [];
331
+ const promises = [];
332
+ const toCreate = [];
333
+ for (const g of groups) {
334
+ const name = g.name;
335
+ const metadata = g.metadata ?? {};
336
+ const model = g.model ?? null;
337
+ const _id = g._id ?? kuzzle_1.NameGenerator.generateRandomName({ prefix: "group" });
338
+ let path = g.path ?? _id;
339
+ if (!path.includes(_id)) {
340
+ path += `.${_id}`;
341
+ }
342
+ promises.push(async () => {
343
+ try {
344
+ if (typeof name !== "string") {
345
+ throw new kuzzle_1.BadRequestError(`A group must have a name`);
346
+ }
347
+ await this.checkPath(engineId, path, _id);
348
+ await this.checkGroupName(engineId, name);
349
+ toCreate.push({ _id, metadata, model, name, path });
350
+ }
351
+ catch (error) {
352
+ let reason = "";
353
+ let status = 400;
354
+ if (error instanceof kuzzle_1.KuzzleError) {
355
+ reason = error.message;
356
+ status = error.code;
357
+ }
358
+ errors.push({
359
+ document: { _id, body: { metadata, model, name, path } },
360
+ reason,
361
+ status,
362
+ });
363
+ }
364
+ });
365
+ }
366
+ await Promise.allSettled(promises.map((f) => new Promise((resolve) => f().then(resolve))));
367
+ const res = await this.groupsService.mCreate(engineId, toCreate);
368
+ return {
369
+ errors: [...res.errors, ...errors],
370
+ successes: res.successes,
371
+ };
372
+ }
373
+ async mUpdate(request) {
374
+ const engineId = request.getString("engineId");
375
+ const groups = request.getBodyArray("groups");
376
+ const errors = [];
377
+ const promises = [];
378
+ const toUpdate = [];
379
+ for (const g of groups) {
380
+ const name = g.name;
381
+ const metadata = g.metadata ?? {};
382
+ const model = g.model ?? null;
383
+ const _id = g._id;
384
+ const path = g.path;
385
+ promises.push(async () => {
386
+ try {
387
+ if (typeof _id !== "string") {
388
+ throw new kuzzle_1.BadRequestError(`A group must have an _id`);
389
+ }
390
+ if (name) {
391
+ if (typeof name !== "string" || name.trim() === "") {
392
+ throw new kuzzle_1.BadRequestError(`A group name must be a non-empty string`);
393
+ }
394
+ await this.checkGroupName(engineId, name, _id);
395
+ }
396
+ if (path) {
397
+ await this.checkPath(engineId, path, _id);
398
+ }
399
+ toUpdate.push({ _id, metadata, model, name, path });
400
+ }
401
+ catch (error) {
402
+ let reason = "";
403
+ let status = 400;
404
+ if (error instanceof kuzzle_1.KuzzleError) {
405
+ reason = error.message;
406
+ status = error.code;
407
+ }
408
+ errors.push({
409
+ document: { _id, body: { metadata, model, name, path } },
410
+ reason,
411
+ status,
412
+ });
413
+ }
414
+ });
415
+ }
416
+ await Promise.allSettled(promises.map((f) => new Promise((resolve) => f().then(resolve))));
417
+ const res = await this.groupsService.mUpdate(engineId, toUpdate, request);
418
+ return { errors: [...res.errors, ...errors], successes: res.successes };
419
+ }
420
+ async mUpsert(request) {
421
+ const engineId = request.getString("engineId");
422
+ const groups = request.getBodyArray("groups");
423
+ const errors = [];
424
+ const promises = [];
425
+ const toUpsert = [];
426
+ for (const g of groups) {
427
+ const name = g.name;
428
+ const metadata = g.metadata ?? {};
429
+ const model = g.model ?? null;
430
+ const _id = g._id ?? kuzzle_1.NameGenerator.generateRandomName({ prefix: "group" });
431
+ let path = g.path;
432
+ promises.push(async () => {
433
+ try {
434
+ if (typeof _id !== "string") {
435
+ throw new kuzzle_1.BadRequestError(`A group must have an _id`);
436
+ }
437
+ if (name) {
438
+ if (typeof name !== "string" || name.trim() === "") {
439
+ throw new kuzzle_1.BadRequestError(`A group name must be a non-empty string`);
440
+ }
441
+ await this.checkGroupName(engineId, name, _id);
442
+ }
443
+ if (path) {
444
+ if (!g._id) {
445
+ path += `.${_id}`;
446
+ }
447
+ await this.checkPath(engineId, path, _id);
448
+ }
449
+ toUpsert.push({ _id, metadata, model, name, path });
450
+ }
451
+ catch (error) {
452
+ let reason = "";
453
+ let status = 400;
454
+ if (error instanceof kuzzle_1.KuzzleError) {
455
+ reason = error.message;
456
+ status = error.code;
457
+ }
458
+ errors.push({
459
+ document: { _id, body: { metadata, model, name, path } },
460
+ reason,
461
+ status,
462
+ });
463
+ }
464
+ });
465
+ }
466
+ await Promise.allSettled(promises.map((f) => new Promise((resolve) => f().then(resolve))));
467
+ const res = await this.groupsService.mUpsert(engineId, toUpsert, request);
468
+ return { errors: [...errors, ...res.errors], successes: res.successes };
469
+ }
470
+ }
471
+ exports.GroupsController = GroupsController;
472
+ //# sourceMappingURL=GroupsController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupsController.js","sourceRoot":"","sources":["../../../../lib/modules/group/GroupsController.ts"],"names":[],"mappings":";;;AAAA,mCAQgB;AAEhB,sCAAoE;AA4BpE,MAAa,gBAAgB;IAG3B,YACU,MAA2B,EAC3B,aAA4B,EACpC,MAAoB;QAFZ,WAAM,GAAN,MAAM,CAAqB;QAC3B,kBAAa,GAAb,aAAa,CAAe;QAGpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,8BAA8B;QAC9B,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,sCAAsC;4BAC5C,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF;gBACD,GAAG,EAAE;oBACH,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5B,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;iBACtE;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;iBACtE;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,iCAAiC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;iBACjE;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,sCAAsC;4BAC5C,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,yCAAyC;4BAC/C,IAAI,EAAE,KAAK;yBACZ;wBACD;4BACE,IAAI,EAAE,yCAAyC;4BAC/C,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF;gBACD,SAAS,EAAE;oBACT,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClC,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,gDAAgD;4BACtD,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF;gBACD,YAAY,EAAE;oBACZ,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrC,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,8CAA8C;4BACpD,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF;gBACD,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBACnC,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,4CAA4C;4BAClD,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF;gBACD,aAAa,EAAE;oBACb,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;oBACtC,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,+CAA+C;4BACrD,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF;gBACD,SAAS,EAAE;oBACT,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClC,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,gDAAgD;4BACtD,IAAI,EAAE,KAAK;yBACZ;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;oBAChC,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,0CAA0C;4BAChD,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;oBAChC,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,0CAA0C;4BAChD,IAAI,EAAE,KAAK;yBACZ;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;oBAChC,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,0CAA0C;4BAChD,IAAI,EAAE,KAAK;yBACZ;qBACF;iBACF;aACF;SACF,CAAC;QACF,6BAA6B;IAC/B,CAAC;IAED,IAAY,GAAG;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;IAC3C,CAAC;IAED,IAAY,EAAE;QACZ,OAAO,CAAC,IAAiB,EAAe,EAAE;YACxC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,IAA+B,EAC/B,OAAgB;QAEhB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,wBAAe,CAAC,sCAAsC,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,OAAO,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,wBAAe,CACvB,8BAA8B,IAAI,6BAA6B,OAAO,GAAG,CAC1E,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAClC,QAAQ,EACR,2BAAkB,CAAC,MAAM,EACzB,eAAe,CAChB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,wBAAe,CACvB,6BAA6B,eAAe,kBAAkB,CAC/D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,wBAAe,CACvB,6BAA6B,eAAe,kBAAkB,CAC/D,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,wBAAe,CAAC,gCAAgC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,IAA+B,EAC/B,OAAgB;QAEhB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAC/C,QAAQ,EACR,2BAAkB,CAAC,MAAM,EACzB;YACE,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,IAAI,EAAE;wBACJ;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE;oCACJ,gBAAgB,EAAE,IAAI;oCACtB,KAAK,EAAE,IAAI;iCACZ;6BACF;yBACF;qBACF;oBACD,QAAQ,EAAE;wBACR;4BACE,KAAK,EAAE;gCACL,GAAG,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;6BAClD;yBACF;qBACF;iBACF;aACF;SACF,CACF,CAAC;QAEF,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,wBAAe,CAAC,sBAAsB,IAAI,iBAAiB,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAmC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;QAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,SAAS,EAAE,GAAG,EAAE,CAAC,sBAAa,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACtE,SAAS,EAAE,UAAU;SACtB,CAAC,CAAC;QAEH,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,wBAAe,CAAC,0BAA0B,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAC9B,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAsB;QAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE5B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,SAAS,EAAE,GAAG,EAAE,CAAC,sBAAa,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACtE,SAAS,EAAE,UAAU;SACtB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAuB,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YACpB,CAAC;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAC9B,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,CACR,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAC9B,OAAO,EACP,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAuB,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAC9B,OAAO,EACP,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAsB;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC/C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;QACpC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CACjC,QAAQ,EACR,GAAG,EACH,eAAe,EACf,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAsB;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAsC,CAAC;QACnE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,OAAsB;QAEtB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAyC,CAAC;QACtE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAsB;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAuC,CAAC;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAAsB;QAEtB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAA0C,CAAC;QACvE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAsB;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,QAAQ,GAA+B,EAAE,CAAC;QAChD,MAAM,QAAQ,GAMT,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACpB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YAE9B,MAAM,GAAG,GACP,CAAC,CAAC,GAAG,IAAI,sBAAa,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YACpB,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC;oBACH,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7B,MAAM,IAAI,wBAAe,CAAC,0BAA0B,CAAC,CAAC;oBACxD,CAAC;oBACD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAE1C,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAE1C,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,MAAM,GAAW,EAAE,CAAC;oBACxB,IAAI,MAAM,GAAW,GAAG,CAAC;oBACzB,IAAI,KAAK,YAAY,oBAAW,EAAE,CAAC;wBACjC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;wBACvB,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;oBACtB,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;wBACxD,MAAM;wBACN,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,CAAC,UAAU,CACtB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACjE,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjE,OAAO;YACL,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC;YAClC,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAsB;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,QAAQ,GAA+B,EAAE,CAAC;QAChD,MAAM,QAAQ,GAMT,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACpB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YAE9B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;YAClB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC;oBACH,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;wBAC5B,MAAM,IAAI,wBAAe,CAAC,0BAA0B,CAAC,CAAC;oBACxD,CAAC;oBACD,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;4BACnD,MAAM,IAAI,wBAAe,CACvB,yCAAyC,CAC1C,CAAC;wBACJ,CAAC;wBACD,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBACjD,CAAC;oBAED,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC5C,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,MAAM,GAAW,EAAE,CAAC;oBACxB,IAAI,MAAM,GAAW,GAAG,CAAC;oBACzB,IAAI,KAAK,YAAY,oBAAW,EAAE,CAAC;wBACjC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;wBACvB,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;oBACtB,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;wBACxD,MAAM;wBACN,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,CAAC,UAAU,CACtB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACjE,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1E,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,OAAsB;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,QAAQ,GAA+B,EAAE,CAAC;QAChD,MAAM,QAAQ,GAMT,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACpB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YAE9B,MAAM,GAAG,GACP,CAAC,CAAC,GAAG,IAAI,sBAAa,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,GAAW,CAAC,CAAC,IAAI,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,CAAC;oBACH,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;wBAC5B,MAAM,IAAI,wBAAe,CAAC,0BAA0B,CAAC,CAAC;oBACxD,CAAC;oBACD,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;4BACnD,MAAM,IAAI,wBAAe,CACvB,yCAAyC,CAC1C,CAAC;wBACJ,CAAC;wBACD,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBACjD,CAAC;oBAED,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;4BACX,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;wBACpB,CAAC;wBACD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC5C,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,MAAM,GAAW,EAAE,CAAC;oBACxB,IAAI,MAAM,GAAW,GAAG,CAAC;oBACzB,IAAI,KAAK,YAAY,oBAAW,EAAE,CAAC;wBACjC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;wBACvB,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;oBACtB,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;wBACxD,MAAM;wBACN,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,CAAC,UAAU,CACtB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACjE,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1E,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IAC1E,CAAC;CACF;AA7kBD,4CA6kBC"}
@@ -0,0 +1,10 @@
1
+ import { DeviceManagerPlugin } from "../plugin";
2
+ import { Module } from "../shared/Module";
3
+ import { KuzzleLogger } from "kuzzle-logger";
4
+ export declare class GroupsModule extends Module {
5
+ private groupsController;
6
+ private groupsService;
7
+ readonly logger: KuzzleLogger;
8
+ constructor(plugin: DeviceManagerPlugin);
9
+ init(): Promise<void>;
10
+ }