@itwin/access-control-client 0.1.0
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.
- package/LICENSE.md +9 -0
- package/README.md +15 -0
- package/lib/cjs/AccessControlClient.d.ts +10 -0
- package/lib/cjs/AccessControlClient.d.ts.map +1 -0
- package/lib/cjs/AccessControlClient.js +15 -0
- package/lib/cjs/AccessControlClient.js.map +1 -0
- package/lib/cjs/access-control-client.d.ts +3 -0
- package/lib/cjs/access-control-client.d.ts.map +1 -0
- package/lib/cjs/access-control-client.js +19 -0
- package/lib/cjs/access-control-client.js.map +1 -0
- package/lib/cjs/accessControlTypes.d.ts +80 -0
- package/lib/cjs/accessControlTypes.d.ts.map +1 -0
- package/lib/cjs/accessControlTypes.js +10 -0
- package/lib/cjs/accessControlTypes.js.map +1 -0
- package/lib/cjs/subClients/BaseClient.d.ts +30 -0
- package/lib/cjs/subClients/BaseClient.d.ts.map +1 -0
- package/lib/cjs/subClients/BaseClient.js +78 -0
- package/lib/cjs/subClients/BaseClient.js.map +1 -0
- package/lib/cjs/subClients/MembersClient.d.ts +44 -0
- package/lib/cjs/subClients/MembersClient.d.ts.map +1 -0
- package/lib/cjs/subClients/MembersClient.js +66 -0
- package/lib/cjs/subClients/MembersClient.js.map +1 -0
- package/lib/cjs/subClients/PermissionsClient.d.ts +20 -0
- package/lib/cjs/subClients/PermissionsClient.d.ts.map +1 -0
- package/lib/cjs/subClients/PermissionsClient.js +25 -0
- package/lib/cjs/subClients/PermissionsClient.js.map +1 -0
- package/lib/cjs/subClients/RolesClient.d.ts +43 -0
- package/lib/cjs/subClients/RolesClient.d.ts.map +1 -0
- package/lib/cjs/subClients/RolesClient.js +57 -0
- package/lib/cjs/subClients/RolesClient.js.map +1 -0
- package/lib/esm/AccessControlClient.d.ts +10 -0
- package/lib/esm/AccessControlClient.d.ts.map +1 -0
- package/lib/esm/AccessControlClient.js +11 -0
- package/lib/esm/AccessControlClient.js.map +1 -0
- package/lib/esm/access-control-client.d.ts +3 -0
- package/lib/esm/access-control-client.d.ts.map +1 -0
- package/lib/esm/access-control-client.js +7 -0
- package/lib/esm/access-control-client.js.map +1 -0
- package/lib/esm/accessControlTypes.d.ts +80 -0
- package/lib/esm/accessControlTypes.d.ts.map +1 -0
- package/lib/esm/accessControlTypes.js +9 -0
- package/lib/esm/accessControlTypes.js.map +1 -0
- package/lib/esm/subClients/BaseClient.d.ts +30 -0
- package/lib/esm/subClients/BaseClient.d.ts.map +1 -0
- package/lib/esm/subClients/BaseClient.js +74 -0
- package/lib/esm/subClients/BaseClient.js.map +1 -0
- package/lib/esm/subClients/MembersClient.d.ts +44 -0
- package/lib/esm/subClients/MembersClient.d.ts.map +1 -0
- package/lib/esm/subClients/MembersClient.js +62 -0
- package/lib/esm/subClients/MembersClient.js.map +1 -0
- package/lib/esm/subClients/PermissionsClient.d.ts +20 -0
- package/lib/esm/subClients/PermissionsClient.d.ts.map +1 -0
- package/lib/esm/subClients/PermissionsClient.js +21 -0
- package/lib/esm/subClients/PermissionsClient.js.map +1 -0
- package/lib/esm/subClients/RolesClient.d.ts +43 -0
- package/lib/esm/subClients/RolesClient.d.ts.map +1 -0
- package/lib/esm/subClients/RolesClient.js +53 -0
- package/lib/esm/subClients/RolesClient.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RolesClient = void 0;
|
|
4
|
+
const BaseClient_1 = require("./BaseClient");
|
|
5
|
+
class RolesClient extends BaseClient_1.BaseClient {
|
|
6
|
+
/** Retrieves a list of available user roles that are defined for a specified iTwin
|
|
7
|
+
* @param accessToken The client access token string
|
|
8
|
+
* @param iTwinId The id of the iTwin
|
|
9
|
+
* @returns Roles
|
|
10
|
+
*/
|
|
11
|
+
async getITwinRolesAsync(accessToken, iTwinId) {
|
|
12
|
+
const url = `${this._baseUrl}/${iTwinId}/roles`;
|
|
13
|
+
return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "roles");
|
|
14
|
+
}
|
|
15
|
+
/** Retrieves the specified role for the specified iTwin
|
|
16
|
+
* @param accessToken The client access token string
|
|
17
|
+
* @param iTwinId The id of the iTwin
|
|
18
|
+
* @returns Role
|
|
19
|
+
*/
|
|
20
|
+
async getITwinRoleAsync(accessToken, iTwinId, roleId) {
|
|
21
|
+
const url = `${this._baseUrl}/${iTwinId}/roles/${roleId}`;
|
|
22
|
+
return this.sendGenericAPIRequest(accessToken, "GET", url);
|
|
23
|
+
}
|
|
24
|
+
/** Creates a new iTwin Role
|
|
25
|
+
* @param accessToken The client access token string
|
|
26
|
+
* @param iTwinId The id of the iTwin
|
|
27
|
+
* @param role The role to be created
|
|
28
|
+
* @returns Role
|
|
29
|
+
*/
|
|
30
|
+
async createITwinRoleAsync(accessToken, iTwinId, role) {
|
|
31
|
+
const url = `${this._baseUrl}/${iTwinId}/roles`;
|
|
32
|
+
return this.sendGenericAPIRequest(accessToken, "POST", url, role, "role");
|
|
33
|
+
}
|
|
34
|
+
/** Delete the specified iTwin role
|
|
35
|
+
* @param accessToken The client access token string
|
|
36
|
+
* @param iTwinId The id of the iTwin
|
|
37
|
+
* @param roleId The id of the role to remove
|
|
38
|
+
* @returns No Content
|
|
39
|
+
*/
|
|
40
|
+
async deleteITwinRoleAsync(accessToken, iTwinId, roleId) {
|
|
41
|
+
const url = `${this._baseUrl}/${iTwinId}/roles/${roleId}`;
|
|
42
|
+
return this.sendGenericAPIRequest(accessToken, "DELETE", url);
|
|
43
|
+
}
|
|
44
|
+
/** Update the specified iTwin role
|
|
45
|
+
* @param accessToken The client access token string
|
|
46
|
+
* @param iTwinId The id of the iTwin
|
|
47
|
+
* @param roleId The id of the role to update
|
|
48
|
+
* @param role The updated role
|
|
49
|
+
* @returns Role
|
|
50
|
+
*/
|
|
51
|
+
async updateITwinRoleAsync(accessToken, iTwinId, roleId, role) {
|
|
52
|
+
const url = `${this._baseUrl}/${iTwinId}/roles/${roleId}`;
|
|
53
|
+
return this.sendGenericAPIRequest(accessToken, "PATCH", url, role, "role");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.RolesClient = RolesClient;
|
|
57
|
+
//# sourceMappingURL=RolesClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RolesClient.js","sourceRoot":"","sources":["../../../src/subClients/RolesClient.ts"],"names":[],"mappings":";;;AASA,6CAA0C;AAE1C,MAAa,WAAY,SAAQ,uBAAU;IACzC;;;;QAII;IACG,KAAK,CAAC,kBAAkB,CAC7B,WAAwB,EACxB,OAAe;QAEf,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC;QAChD,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAED;;;;QAII;IACG,KAAK,CAAC,iBAAiB,CAC5B,WAAwB,EACxB,OAAe,EACf,MAAc;QAEd,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,MAAM,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;QAKI;IACG,KAAK,CAAC,oBAAoB,CAC/B,WAAwB,EACxB,OAAe,EACf,IAAa;QAEb,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC;QAChD,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;QAKI;IACG,KAAK,CAAC,oBAAoB,CAC/B,WAAwB,EACxB,OAAe,EACf,MAAc;QAEd,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,MAAM,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;QAMI;IACG,KAAK,CAAC,oBAAoB,CAC/B,WAAwB,EACxB,OAAe,EACf,MAAc,EACd,IAAa;QAEb,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,MAAM,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;CACF;AA1ED,kCA0EC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccessControlClient\r\n */\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\nimport type { AccessControlAPIResponse, IRolesClient, NewRole, Role } from \"../accessControlTypes\";\r\nimport { BaseClient } from \"./BaseClient\";\r\n\r\nexport class RolesClient extends BaseClient implements IRolesClient{\r\n /** Retrieves a list of available user roles that are defined for a specified iTwin\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @returns Roles\r\n */\r\n public async getITwinRolesAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n ): Promise<AccessControlAPIResponse<Role[]>>{\r\n const url = `${this._baseUrl}/${iTwinId}/roles`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"roles\");\r\n }\r\n\r\n /** Retrieves the specified role for the specified iTwin\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @returns Role\r\n */\r\n public async getITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n ): Promise<AccessControlAPIResponse<Role>>{\r\n const url = `${this._baseUrl}/${iTwinId}/roles/${roleId}`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url);\r\n }\r\n\r\n /** Creates a new iTwin Role\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param role The role to be created\r\n * @returns Role\r\n */\r\n public async createITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n role: NewRole\r\n ): Promise<AccessControlAPIResponse<Role>>{\r\n const url = `${this._baseUrl}/${iTwinId}/roles`;\r\n return this.sendGenericAPIRequest(accessToken, \"POST\", url, role, \"role\");\r\n }\r\n\r\n /** Delete the specified iTwin role\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param roleId The id of the role to remove\r\n * @returns No Content\r\n */\r\n public async deleteITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n ): Promise<AccessControlAPIResponse<undefined>>{\r\n const url = `${this._baseUrl}/${iTwinId}/roles/${roleId}`;\r\n return this.sendGenericAPIRequest(accessToken, \"DELETE\", url);\r\n }\r\n\r\n /** Update the specified iTwin role\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param roleId The id of the role to update\r\n * @param role The updated role\r\n * @returns Role\r\n */\r\n public async updateITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n role: NewRole\r\n ): Promise<AccessControlAPIResponse<Role>>{\r\n const url = `${this._baseUrl}/${iTwinId}/roles/${roleId}`;\r\n return this.sendGenericAPIRequest(accessToken, \"PATCH\", url, role, \"role\");\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module AccessControlClient
|
|
3
|
+
*/
|
|
4
|
+
import type { IAccessControlClient, IMembersClient, IPermissionsClient, IRolesClient } from "./accessControlTypes";
|
|
5
|
+
export declare class AccessControlClient implements IAccessControlClient {
|
|
6
|
+
permissions: IPermissionsClient;
|
|
7
|
+
roles: IRolesClient;
|
|
8
|
+
members: IMembersClient;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=AccessControlClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessControlClient.d.ts","sourceRoot":"","sources":["../../src/AccessControlClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKnH,qBAAa,mBAAoB,YAAW,oBAAoB;IACvD,WAAW,EAAE,kBAAkB,CAA2B;IAC1D,KAAK,EAAE,YAAY,CAAqB;IACxC,OAAO,EAAE,cAAc,CAAuB;CACtD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MembersClient } from "./subClients/MembersClient";
|
|
2
|
+
import { PermissionsClient } from "./subClients/PermissionsClient";
|
|
3
|
+
import { RolesClient } from "./subClients/RolesClient";
|
|
4
|
+
export class AccessControlClient {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.permissions = new PermissionsClient();
|
|
7
|
+
this.roles = new RolesClient();
|
|
8
|
+
this.members = new MembersClient();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=AccessControlClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessControlClient.js","sourceRoot":"","sources":["../../src/AccessControlClient.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,OAAO,mBAAmB;IAAhC;QACS,gBAAW,GAAuB,IAAI,iBAAiB,EAAE,CAAC;QAC1D,UAAK,GAAiB,IAAI,WAAW,EAAE,CAAC;QACxC,YAAO,GAAmB,IAAI,aAAa,EAAE,CAAC;IACvD,CAAC;CAAA","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccessControlClient\r\n */\r\nimport type { IAccessControlClient, IMembersClient, IPermissionsClient, IRolesClient } from \"./accessControlTypes\";\r\nimport { MembersClient } from \"./subClients/MembersClient\";\r\nimport { PermissionsClient } from \"./subClients/PermissionsClient\";\r\nimport { RolesClient } from \"./subClients/RolesClient\";\r\n\r\nexport class AccessControlClient implements IAccessControlClient {\r\n public permissions: IPermissionsClient = new PermissionsClient();\r\n public roles: IRolesClient = new RolesClient();\r\n public members: IMembersClient = new MembersClient();\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-control-client.d.ts","sourceRoot":"","sources":["../../src/access-control-client.ts"],"names":[],"mappings":"AAIA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
export * from "./AccessControlClient";
|
|
6
|
+
export * from "./accessControlTypes";
|
|
7
|
+
//# sourceMappingURL=access-control-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-control-client.js","sourceRoot":"","sources":["../../src/access-control-client.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nexport * from \"./AccessControlClient\";\r\nexport * from \"./accessControlTypes\";\r\n"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module AccessControlClient
|
|
3
|
+
*/
|
|
4
|
+
import type { AccessToken } from "@itwin/core-bentley";
|
|
5
|
+
export interface IAccessControlClient {
|
|
6
|
+
permissions: IPermissionsClient;
|
|
7
|
+
roles: IRolesClient;
|
|
8
|
+
members: IMembersClient;
|
|
9
|
+
}
|
|
10
|
+
export interface IPermissionsClient {
|
|
11
|
+
/** Retrieves the list of all available permissions **/
|
|
12
|
+
getPermissionsAsync(accessToken: AccessToken): Promise<AccessControlAPIResponse<Permission[]>>;
|
|
13
|
+
/** Retrieves a list of permissions the identity has for a specified iTwin */
|
|
14
|
+
getITwinPermissionsAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Permission[]>>;
|
|
15
|
+
}
|
|
16
|
+
export interface IMembersClient {
|
|
17
|
+
/** Retrieves a list of team members and their roles assigned to a specified iTwin. */
|
|
18
|
+
queryITwinMembersAsync(accessToken: AccessToken, iTwinId: string, arg?: AccessControlQueryArg): Promise<AccessControlAPIResponse<Member[]>>;
|
|
19
|
+
/** Retrieves a specific member for a specified iTwin. */
|
|
20
|
+
getITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<Member>>;
|
|
21
|
+
/** Add new iTwin members */
|
|
22
|
+
addITwinMembersAsync(accessToken: AccessToken, iTwinId: string, newMembers: NewMember[]): Promise<AccessControlAPIResponse<undefined>>;
|
|
23
|
+
/** Remove the specified iTwin member */
|
|
24
|
+
removeITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<undefined>>;
|
|
25
|
+
/** Update iTwin team member roles */
|
|
26
|
+
updateITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string, roleIds: string[]): Promise<AccessControlAPIResponse<Member>>;
|
|
27
|
+
}
|
|
28
|
+
export interface IRolesClient {
|
|
29
|
+
/** Retrieves a list of roles the for a specified iTwin */
|
|
30
|
+
getITwinRolesAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Role[]>>;
|
|
31
|
+
/** Retrieves a role for a specified iTwin */
|
|
32
|
+
getITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<Role>>;
|
|
33
|
+
/** Creates a new iTwin Role */
|
|
34
|
+
createITwinRoleAsync(accessToken: AccessToken, iTwinId: string, role: NewRole): Promise<AccessControlAPIResponse<Role>>;
|
|
35
|
+
/** Removes an existing iTwin Role */
|
|
36
|
+
deleteITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<undefined>>;
|
|
37
|
+
/** Updates an existing iTwin Role */
|
|
38
|
+
updateITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string, role: NewRole): Promise<AccessControlAPIResponse<Role>>;
|
|
39
|
+
}
|
|
40
|
+
export interface AccessControlQueryArg {
|
|
41
|
+
top?: number;
|
|
42
|
+
skip?: number;
|
|
43
|
+
}
|
|
44
|
+
export interface AccessControlAPIResponse<T> {
|
|
45
|
+
data?: T;
|
|
46
|
+
status: number;
|
|
47
|
+
error?: Error;
|
|
48
|
+
}
|
|
49
|
+
export interface Error {
|
|
50
|
+
code: string;
|
|
51
|
+
message: string;
|
|
52
|
+
details?: ErrorDetail[];
|
|
53
|
+
target?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface ErrorDetail {
|
|
56
|
+
code: string;
|
|
57
|
+
message: string;
|
|
58
|
+
target?: string;
|
|
59
|
+
}
|
|
60
|
+
export declare type Permission = string;
|
|
61
|
+
export interface Member {
|
|
62
|
+
id: string;
|
|
63
|
+
email: string;
|
|
64
|
+
givenName: string;
|
|
65
|
+
surname: string;
|
|
66
|
+
organization: string;
|
|
67
|
+
roles: Omit<Role, "permissions">[];
|
|
68
|
+
}
|
|
69
|
+
export interface NewMember {
|
|
70
|
+
email: string;
|
|
71
|
+
roleId: string;
|
|
72
|
+
}
|
|
73
|
+
export interface Role {
|
|
74
|
+
id: string;
|
|
75
|
+
displayName: string;
|
|
76
|
+
description: string;
|
|
77
|
+
permissions: Permission[];
|
|
78
|
+
}
|
|
79
|
+
export declare type NewRole = Omit<Role, "id">;
|
|
80
|
+
//# sourceMappingURL=accessControlTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessControlTypes.d.ts","sourceRoot":"","sources":["../../src/accessControlTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module AccessControlClient
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=accessControlTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessControlTypes.js","sourceRoot":"","sources":["../../src/accessControlTypes.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccessControlClient\r\n */\r\n\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\n\r\nexport interface IAccessControlClient {\r\n permissions: IPermissionsClient;\r\n roles: IRolesClient;\r\n members: IMembersClient;\r\n}\r\n\r\nexport interface IPermissionsClient {\r\n /** Retrieves the list of all available permissions **/\r\n getPermissionsAsync(\r\n accessToken: AccessToken,\r\n ): Promise<AccessControlAPIResponse<Permission[]>>;\r\n\r\n /** Retrieves a list of permissions the identity has for a specified iTwin */\r\n getITwinPermissionsAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string\r\n ): Promise<AccessControlAPIResponse<Permission[]>>;\r\n}\r\n\r\nexport interface IMembersClient{\r\n /** Retrieves a list of team members and their roles assigned to a specified iTwin. */\r\n queryITwinMembersAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n arg?: AccessControlQueryArg\r\n ): Promise<AccessControlAPIResponse<Member[]>>;\r\n\r\n /** Retrieves a specific member for a specified iTwin. */\r\n getITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string\r\n ): Promise<AccessControlAPIResponse<Member>>;\r\n\r\n /** Add new iTwin members */\r\n addITwinMembersAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n newMembers: NewMember[]\r\n ): Promise<AccessControlAPIResponse<undefined>>;\r\n\r\n /** Remove the specified iTwin member */\r\n removeITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string\r\n ): Promise<AccessControlAPIResponse<undefined>>;\r\n\r\n /** Update iTwin team member roles */\r\n updateITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string,\r\n roleIds: string[]\r\n ): Promise<AccessControlAPIResponse<Member>>;\r\n}\r\n\r\nexport interface IRolesClient {\r\n /** Retrieves a list of roles the for a specified iTwin */\r\n getITwinRolesAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n ): Promise<AccessControlAPIResponse<Role[]>>;\r\n\r\n /** Retrieves a role for a specified iTwin */\r\n getITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n ): Promise<AccessControlAPIResponse<Role>>;\r\n\r\n /** Creates a new iTwin Role */\r\n createITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n role: NewRole\r\n ): Promise<AccessControlAPIResponse<Role>>;\r\n\r\n /** Removes an existing iTwin Role */\r\n deleteITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n ): Promise<AccessControlAPIResponse<undefined>>;\r\n\r\n /** Updates an existing iTwin Role */\r\n updateITwinRoleAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n roleId: string,\r\n role: NewRole\r\n ): Promise<AccessControlAPIResponse<Role>>;\r\n}\r\n\r\nexport interface AccessControlQueryArg {\r\n top?: number;\r\n skip?: number;\r\n}\r\n\r\nexport interface AccessControlAPIResponse<T> {\r\n data?: T;\r\n status: number;\r\n error?: Error;\r\n}\r\n\r\nexport interface Error {\r\n code: string;\r\n message: string;\r\n details?: ErrorDetail[];\r\n target?: string;\r\n}\r\n\r\nexport interface ErrorDetail {\r\n code: string;\r\n message: string;\r\n target?: string;\r\n}\r\n\r\nexport type Permission = string;\r\n\r\nexport interface Member {\r\n id: string;\r\n email: string;\r\n givenName: string;\r\n surname: string;\r\n organization: string;\r\n roles: Omit<Role, \"permissions\">[];\r\n}\r\n\r\nexport interface NewMember {\r\n email: string;\r\n roleId: string;\r\n}\r\n\r\nexport interface Role {\r\n id: string;\r\n displayName: string;\r\n description: string;\r\n permissions: Permission[];\r\n}\r\n\r\nexport type NewRole = Omit<Role, \"id\">;\r\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module AccessControlClient
|
|
3
|
+
*/
|
|
4
|
+
import type { AccessToken } from "@itwin/core-bentley";
|
|
5
|
+
import type { Method } from "axios";
|
|
6
|
+
import type { AxiosRequestConfig } from "axios";
|
|
7
|
+
import type { AccessControlAPIResponse, AccessControlQueryArg } from "../accessControlTypes";
|
|
8
|
+
export declare class BaseClient {
|
|
9
|
+
protected _baseUrl: string;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Sends a basic API request
|
|
13
|
+
* @param accessTokenString The client access token string
|
|
14
|
+
* @param method The method type of the request (ex. GET, POST, DELETE, etc)
|
|
15
|
+
* @param url The url of the request
|
|
16
|
+
*/
|
|
17
|
+
protected sendGenericAPIRequest(accessToken: AccessToken, method: Method, url: string, data?: any, property?: string): Promise<AccessControlAPIResponse<any>>;
|
|
18
|
+
/**
|
|
19
|
+
* Build the request methods, headers, and other options
|
|
20
|
+
* @param accessTokenString The client access token string
|
|
21
|
+
*/
|
|
22
|
+
protected getRequestOptions(accessTokenString: string, method: Method, url: string, data?: any): AxiosRequestConfig;
|
|
23
|
+
/**
|
|
24
|
+
* Build a query to be appended to a URL
|
|
25
|
+
* @param queryArg Object container queryable properties
|
|
26
|
+
* @returns query string with AccessControlQueryArg applied, which should be appended to a url
|
|
27
|
+
*/
|
|
28
|
+
protected getQueryString(queryArg: AccessControlQueryArg): string;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=BaseClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/BaseClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAE5F,qBAAa,UAAU;IACrB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAkD;;IAW5E;;;;;QAKI;cACY,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAuBzC;;;QAGI;IACJ,SAAS,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,kBAAkB;IAenH;;;;QAII;IACJ,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM;CAgBlE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
export class BaseClient {
|
|
3
|
+
constructor() {
|
|
4
|
+
this._baseUrl = "https://api.bentley.com/accesscontrol/itwins";
|
|
5
|
+
const urlPrefix = process.env.IMJS_URL_PREFIX;
|
|
6
|
+
if (urlPrefix) {
|
|
7
|
+
const baseUrl = new URL(this._baseUrl);
|
|
8
|
+
baseUrl.hostname = urlPrefix + baseUrl.hostname;
|
|
9
|
+
this._baseUrl = baseUrl.href;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Sends a basic API request
|
|
14
|
+
* @param accessTokenString The client access token string
|
|
15
|
+
* @param method The method type of the request (ex. GET, POST, DELETE, etc)
|
|
16
|
+
* @param url The url of the request
|
|
17
|
+
*/
|
|
18
|
+
async sendGenericAPIRequest(accessToken, method, url, data, property) {
|
|
19
|
+
const requestOptions = this.getRequestOptions(accessToken, method, url, data);
|
|
20
|
+
try {
|
|
21
|
+
const response = await axios(requestOptions);
|
|
22
|
+
return {
|
|
23
|
+
status: response.status,
|
|
24
|
+
data: response.data.error || response.data === "" ? undefined : property ? response.data[property] : response.data,
|
|
25
|
+
error: response.data.error,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
return {
|
|
30
|
+
status: 500,
|
|
31
|
+
error: {
|
|
32
|
+
code: "InternalServerError",
|
|
33
|
+
message: "An internal exception happened while calling iTwins Service",
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build the request methods, headers, and other options
|
|
40
|
+
* @param accessTokenString The client access token string
|
|
41
|
+
*/
|
|
42
|
+
getRequestOptions(accessTokenString, method, url, data) {
|
|
43
|
+
return {
|
|
44
|
+
method,
|
|
45
|
+
url,
|
|
46
|
+
data,
|
|
47
|
+
headers: {
|
|
48
|
+
"authorization": accessTokenString,
|
|
49
|
+
"content-type": "application/json",
|
|
50
|
+
},
|
|
51
|
+
validateStatus(status) {
|
|
52
|
+
return status < 500; // Resolve only if the status code is less than 500
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Build a query to be appended to a URL
|
|
58
|
+
* @param queryArg Object container queryable properties
|
|
59
|
+
* @returns query string with AccessControlQueryArg applied, which should be appended to a url
|
|
60
|
+
*/
|
|
61
|
+
getQueryString(queryArg) {
|
|
62
|
+
let queryString = "";
|
|
63
|
+
if (queryArg.top) {
|
|
64
|
+
queryString += `&$top=${queryArg.top}`;
|
|
65
|
+
}
|
|
66
|
+
if (queryArg.skip) {
|
|
67
|
+
queryString += `&$skip=${queryArg.skip}`;
|
|
68
|
+
}
|
|
69
|
+
// trim & from start of string
|
|
70
|
+
queryString.replace(/^&+/, "");
|
|
71
|
+
return queryString;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=BaseClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseClient.js","sourceRoot":"","sources":["../../../src/subClients/BaseClient.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,OAAO,UAAU;IAGrB;QAFU,aAAQ,GAAW,8CAA8C,CAAC;QAG1E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC9C,IAAI,SAAS,EAAE;YACb,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;YAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;SAC9B;IACH,CAAC;IAED;;;;;QAKI;IACM,KAAK,CAAC,qBAAqB,CACnC,WAAwB,EACxB,MAAc,EACd,GAAW,EACX,IAAU,EACV,QAAiB;QAEjB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAE9E,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;YAE7C,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;gBAClH,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;aAC3B,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE;oBACL,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EACJ,6DAA6D;iBACjE;aACF,CAAC;SACH;IACH,CAAC;IAED;;;QAGI;IACM,iBAAiB,CAAC,iBAAyB,EAAE,MAAc,EAAE,GAAW,EAAE,IAAU;QAC5F,OAAO;YACL,MAAM;YACN,GAAG;YACH,IAAI;YACJ,OAAO,EAAE;gBACP,eAAe,EAAE,iBAAiB;gBAClC,cAAc,EAAE,kBAAkB;aACnC;YACD,cAAc,CAAC,MAAM;gBACnB,OAAO,MAAM,GAAG,GAAG,CAAC,CAAC,mDAAmD;YAC1E,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;QAII;IACM,cAAc,CAAC,QAA+B;QACtD,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,QAAQ,CAAC,GAAG,EAAE;YAChB,WAAW,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE,CAAC;SACxC;QAED,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,WAAW,IAAI,UAAU,QAAQ,CAAC,IAAI,EAAE,CAAC;SAC1C;QAED,8BAA8B;QAC9B,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,OAAO,WAAW,CAAC;IACrB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccessControlClient\r\n */\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\nimport type { Method } from \"axios\";\r\nimport type { AxiosRequestConfig } from \"axios\";\r\nimport axios from \"axios\";\r\nimport type { AccessControlAPIResponse, AccessControlQueryArg} from \"../accessControlTypes\";\r\n\r\nexport class BaseClient {\r\n protected _baseUrl: string = \"https://api.bentley.com/accesscontrol/itwins\";\r\n\r\n public constructor() {\r\n const urlPrefix = process.env.IMJS_URL_PREFIX;\r\n if (urlPrefix) {\r\n const baseUrl = new URL(this._baseUrl);\r\n baseUrl.hostname = urlPrefix + baseUrl.hostname;\r\n this._baseUrl = baseUrl.href;\r\n }\r\n }\r\n\r\n /**\r\n * Sends a basic API request\r\n * @param accessTokenString The client access token string\r\n * @param method The method type of the request (ex. GET, POST, DELETE, etc)\r\n * @param url The url of the request\r\n */\r\n protected async sendGenericAPIRequest(\r\n accessToken: AccessToken,\r\n method: Method,\r\n url: string,\r\n data?: any,\r\n property?: string\r\n ): Promise<AccessControlAPIResponse<any>> { // TODO: Change any response\r\n const requestOptions = this.getRequestOptions(accessToken, method, url, data);\r\n\r\n try {\r\n const response = await axios(requestOptions);\r\n\r\n return {\r\n status: response.status,\r\n data: response.data.error || response.data === \"\" ? undefined : property ? response.data[property] : response.data,\r\n error: response.data.error,\r\n };\r\n } catch (err) {\r\n return {\r\n status: 500,\r\n error: {\r\n code: \"InternalServerError\",\r\n message:\r\n \"An internal exception happened while calling iTwins Service\",\r\n },\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Build the request methods, headers, and other options\r\n * @param accessTokenString The client access token string\r\n */\r\n protected getRequestOptions(accessTokenString: string, method: Method, url: string, data?: any): AxiosRequestConfig {\r\n return {\r\n method,\r\n url,\r\n data,\r\n headers: {\r\n \"authorization\": accessTokenString,\r\n \"content-type\": \"application/json\",\r\n },\r\n validateStatus(status) {\r\n return status < 500; // Resolve only if the status code is less than 500\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Build a query to be appended to a URL\r\n * @param queryArg Object container queryable properties\r\n * @returns query string with AccessControlQueryArg applied, which should be appended to a url\r\n */\r\n protected getQueryString(queryArg: AccessControlQueryArg): string {\r\n let queryString = \"\";\r\n\r\n if (queryArg.top) {\r\n queryString += `&$top=${queryArg.top}`;\r\n }\r\n\r\n if (queryArg.skip) {\r\n queryString += `&$skip=${queryArg.skip}`;\r\n }\r\n\r\n // trim & from start of string\r\n queryString.replace(/^&+/, \"\");\r\n\r\n return queryString;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module AccessControlClient
|
|
3
|
+
*/
|
|
4
|
+
import type { AccessToken } from "@itwin/core-bentley";
|
|
5
|
+
import type { AccessControlAPIResponse, AccessControlQueryArg, IMembersClient, Member, NewMember } from "../accessControlTypes";
|
|
6
|
+
import { BaseClient } from "./BaseClient";
|
|
7
|
+
export declare class MembersClient extends BaseClient implements IMembersClient {
|
|
8
|
+
/** Retrieves a list of iTwin members and their roles assignments.
|
|
9
|
+
* @param accessToken The client access token string
|
|
10
|
+
* @param iTwinId The id of the iTwin
|
|
11
|
+
* @returns Array of members
|
|
12
|
+
*/
|
|
13
|
+
queryITwinMembersAsync(accessToken: AccessToken, iTwinId: string, arg?: AccessControlQueryArg): Promise<AccessControlAPIResponse<Member[]>>;
|
|
14
|
+
/** Retrieves a specific member for a specified iTwin.
|
|
15
|
+
* @param accessToken The client access token string
|
|
16
|
+
* @param iTwinId The id of the iTwin
|
|
17
|
+
* @param memberId The id of the member
|
|
18
|
+
* @returns Member
|
|
19
|
+
*/
|
|
20
|
+
getITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<Member>>;
|
|
21
|
+
/** Add new iTwin members
|
|
22
|
+
* @param accessToken The client access token string
|
|
23
|
+
* @param iTwinId The id of the iTwin
|
|
24
|
+
* @param newMembers The list of new members to be added along with their role
|
|
25
|
+
* @returns No Content
|
|
26
|
+
*/
|
|
27
|
+
addITwinMembersAsync(accessToken: AccessToken, iTwinId: string, newMembers: NewMember[]): Promise<AccessControlAPIResponse<undefined>>;
|
|
28
|
+
/** Remove the specified member from the iTwin
|
|
29
|
+
* @param accessToken The client access token string
|
|
30
|
+
* @param iTwinId The id of the iTwin
|
|
31
|
+
* @param memberId The id of the member
|
|
32
|
+
* @returns No Content
|
|
33
|
+
*/
|
|
34
|
+
removeITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string): Promise<AccessControlAPIResponse<undefined>>;
|
|
35
|
+
/** Update iTwin team member roles
|
|
36
|
+
* @param accessToken The client access token string
|
|
37
|
+
* @param iTwinId The id of the iTwin
|
|
38
|
+
* @param memberId The id of the member
|
|
39
|
+
* @param roleIds The ids of the roles to be assigned
|
|
40
|
+
* @returns Member
|
|
41
|
+
*/
|
|
42
|
+
updateITwinMemberAsync(accessToken: AccessToken, iTwinId: string, memberId: string, roleIds: string[]): Promise<AccessControlAPIResponse<Member>>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=MembersClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MembersClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/MembersClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,aAAc,SAAQ,UAAW,YAAW,cAAc;IACrE;;;;QAII;IACS,sBAAsB,CACjC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,qBAAqB,GAC1B,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC;IAM9C;;;;;QAKI;IACS,mBAAmB,CAC9B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAK5C;;;;;QAKI;IACS,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAQ/C;;;;;QAKI;IACS,sBAAsB,CACjC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAK/C;;;;;;QAMI;IACS,sBAAsB,CACjC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;CAO7C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { BaseClient } from "./BaseClient";
|
|
2
|
+
export class MembersClient extends BaseClient {
|
|
3
|
+
/** Retrieves a list of iTwin members and their roles assignments.
|
|
4
|
+
* @param accessToken The client access token string
|
|
5
|
+
* @param iTwinId The id of the iTwin
|
|
6
|
+
* @returns Array of members
|
|
7
|
+
*/
|
|
8
|
+
async queryITwinMembersAsync(accessToken, iTwinId, arg) {
|
|
9
|
+
let url = `${this._baseUrl}/${iTwinId}/members`;
|
|
10
|
+
if (arg)
|
|
11
|
+
url += `?${this.getQueryString(arg)}`;
|
|
12
|
+
return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "members"); // TODO: Consider how to handle paging
|
|
13
|
+
}
|
|
14
|
+
/** Retrieves a specific member for a specified iTwin.
|
|
15
|
+
* @param accessToken The client access token string
|
|
16
|
+
* @param iTwinId The id of the iTwin
|
|
17
|
+
* @param memberId The id of the member
|
|
18
|
+
* @returns Member
|
|
19
|
+
*/
|
|
20
|
+
async getITwinMemberAsync(accessToken, iTwinId, memberId) {
|
|
21
|
+
const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;
|
|
22
|
+
return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "member");
|
|
23
|
+
}
|
|
24
|
+
/** Add new iTwin members
|
|
25
|
+
* @param accessToken The client access token string
|
|
26
|
+
* @param iTwinId The id of the iTwin
|
|
27
|
+
* @param newMembers The list of new members to be added along with their role
|
|
28
|
+
* @returns No Content
|
|
29
|
+
*/
|
|
30
|
+
async addITwinMembersAsync(accessToken, iTwinId, newMembers) {
|
|
31
|
+
const url = `${this._baseUrl}/${iTwinId}/members`;
|
|
32
|
+
const body = {
|
|
33
|
+
members: newMembers,
|
|
34
|
+
};
|
|
35
|
+
return this.sendGenericAPIRequest(accessToken, "POST", url, body);
|
|
36
|
+
}
|
|
37
|
+
/** Remove the specified member from the iTwin
|
|
38
|
+
* @param accessToken The client access token string
|
|
39
|
+
* @param iTwinId The id of the iTwin
|
|
40
|
+
* @param memberId The id of the member
|
|
41
|
+
* @returns No Content
|
|
42
|
+
*/
|
|
43
|
+
async removeITwinMemberAsync(accessToken, iTwinId, memberId) {
|
|
44
|
+
const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;
|
|
45
|
+
return this.sendGenericAPIRequest(accessToken, "DELETE", url);
|
|
46
|
+
}
|
|
47
|
+
/** Update iTwin team member roles
|
|
48
|
+
* @param accessToken The client access token string
|
|
49
|
+
* @param iTwinId The id of the iTwin
|
|
50
|
+
* @param memberId The id of the member
|
|
51
|
+
* @param roleIds The ids of the roles to be assigned
|
|
52
|
+
* @returns Member
|
|
53
|
+
*/
|
|
54
|
+
async updateITwinMemberAsync(accessToken, iTwinId, memberId, roleIds) {
|
|
55
|
+
const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;
|
|
56
|
+
const body = {
|
|
57
|
+
roleIds,
|
|
58
|
+
};
|
|
59
|
+
return this.sendGenericAPIRequest(accessToken, "PATCH", url, body, "member");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=MembersClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MembersClient.js","sourceRoot":"","sources":["../../../src/subClients/MembersClient.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C;;;;QAII;IACG,KAAK,CAAC,sBAAsB,CACjC,WAAwB,EACxB,OAAe,EACf,GAA2B;QAE3B,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,CAAC;QAChD,IAAI,GAAG;YAAE,GAAG,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,sCAAsC;IAC1H,CAAC;IAED;;;;;QAKI;IACG,KAAK,CAAC,mBAAmB,CAC9B,WAAwB,EACxB,OAAe,EACf,QAAgB;QAEhB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED;;;;;QAKI;IACG,KAAK,CAAC,oBAAoB,CAC/B,WAAwB,EACxB,OAAe,EACf,UAAuB;QAEvB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,UAAU,CAAC;QAClD,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,UAAU;SACpB,CAAC;QACF,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED;;;;;QAKI;IACG,KAAK,CAAC,sBAAsB,CACjC,WAAwB,EACxB,OAAe,EACf,QAAgB;QAEhB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;QAMI;IACG,KAAK,CAAC,sBAAsB,CACjC,WAAwB,EACxB,OAAe,EACf,QAAgB,EAChB,OAAiB;QAEjB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG;YACX,OAAO;SACR,CAAC;QACF,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccessControlClient\r\n */\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\nimport type { AccessControlAPIResponse, AccessControlQueryArg, IMembersClient, Member, NewMember } from \"../accessControlTypes\";\r\nimport { BaseClient } from \"./BaseClient\";\r\n\r\nexport class MembersClient extends BaseClient implements IMembersClient{\r\n /** Retrieves a list of iTwin members and their roles assignments.\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @returns Array of members\r\n */\r\n public async queryITwinMembersAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n arg?: AccessControlQueryArg\r\n ): Promise<AccessControlAPIResponse<Member[]>>{\r\n let url = `${this._baseUrl}/${iTwinId}/members`;\r\n if (arg) url += `?${this.getQueryString(arg)}`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"members\"); // TODO: Consider how to handle paging\r\n }\r\n\r\n /** Retrieves a specific member for a specified iTwin.\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param memberId The id of the member\r\n * @returns Member\r\n */\r\n public async getITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string\r\n ): Promise<AccessControlAPIResponse<Member>>{\r\n const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"member\");\r\n }\r\n\r\n /** Add new iTwin members\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param newMembers The list of new members to be added along with their role\r\n * @returns No Content\r\n */\r\n public async addITwinMembersAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n newMembers: NewMember[]\r\n ): Promise<AccessControlAPIResponse<undefined>>{\r\n const url = `${this._baseUrl}/${iTwinId}/members`;\r\n const body = {\r\n members: newMembers,\r\n };\r\n return this.sendGenericAPIRequest(accessToken, \"POST\", url, body);\r\n }\r\n\r\n /** Remove the specified member from the iTwin\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param memberId The id of the member\r\n * @returns No Content\r\n */\r\n public async removeITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string\r\n ): Promise<AccessControlAPIResponse<undefined>> {\r\n const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;\r\n return this.sendGenericAPIRequest(accessToken, \"DELETE\", url);\r\n }\r\n\r\n /** Update iTwin team member roles\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @param memberId The id of the member\r\n * @param roleIds The ids of the roles to be assigned\r\n * @returns Member\r\n */\r\n public async updateITwinMemberAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n memberId: string,\r\n roleIds: string[]\r\n ): Promise<AccessControlAPIResponse<Member>> {\r\n const url = `${this._baseUrl}/${iTwinId}/members/${memberId}`;\r\n const body = {\r\n roleIds,\r\n };\r\n return this.sendGenericAPIRequest(accessToken, \"PATCH\", url, body, \"member\");\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module AccessControlClient
|
|
3
|
+
*/
|
|
4
|
+
import type { AccessToken } from "@itwin/core-bentley";
|
|
5
|
+
import type { AccessControlAPIResponse, IPermissionsClient, Permission } from "../accessControlTypes";
|
|
6
|
+
import { BaseClient } from "./BaseClient";
|
|
7
|
+
export declare class PermissionsClient extends BaseClient implements IPermissionsClient {
|
|
8
|
+
/** Retrieves the list of all available permissions
|
|
9
|
+
* @param accessToken The client access token string
|
|
10
|
+
* @returns Array of permissions
|
|
11
|
+
*/
|
|
12
|
+
getPermissionsAsync(accessToken: AccessToken): Promise<AccessControlAPIResponse<Permission[]>>;
|
|
13
|
+
/** Retrieves a list of permissions the identity has for a specified iTwin
|
|
14
|
+
* @param accessToken The client access token string
|
|
15
|
+
* @param iTwinId The id of the iTwin
|
|
16
|
+
* @returns Array of permissions
|
|
17
|
+
*/
|
|
18
|
+
getITwinPermissionsAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Permission[]>>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=PermissionsClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/PermissionsClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,iBAAkB,SAAQ,UAAW,YAAW,kBAAkB;IAC7E;;;QAGI;IACS,mBAAmB,CAC9B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,CAAC;IAKlD;;;;QAII;IACS,wBAAwB,CACnC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,CAAC;CAInD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseClient } from "./BaseClient";
|
|
2
|
+
export class PermissionsClient extends BaseClient {
|
|
3
|
+
/** Retrieves the list of all available permissions
|
|
4
|
+
* @param accessToken The client access token string
|
|
5
|
+
* @returns Array of permissions
|
|
6
|
+
*/
|
|
7
|
+
async getPermissionsAsync(accessToken) {
|
|
8
|
+
const url = `${this._baseUrl}/permissions`;
|
|
9
|
+
return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "permissions");
|
|
10
|
+
}
|
|
11
|
+
/** Retrieves a list of permissions the identity has for a specified iTwin
|
|
12
|
+
* @param accessToken The client access token string
|
|
13
|
+
* @param iTwinId The id of the iTwin
|
|
14
|
+
* @returns Array of permissions
|
|
15
|
+
*/
|
|
16
|
+
async getITwinPermissionsAsync(accessToken, iTwinId) {
|
|
17
|
+
const url = `${this._baseUrl}/${iTwinId}/permissions`;
|
|
18
|
+
return this.sendGenericAPIRequest(accessToken, "GET", url, undefined, "permissions");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=PermissionsClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsClient.js","sourceRoot":"","sources":["../../../src/subClients/PermissionsClient.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C;;;QAGI;IACG,KAAK,CAAC,mBAAmB,CAC9B,WAAwB;QAExB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,cAAc,CAAC;QAC3C,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACvF,CAAC;IAED;;;;QAII;IACG,KAAK,CAAC,wBAAwB,CACnC,WAAwB,EACxB,OAAe;QAEf,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,cAAc,CAAC;QACtD,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACvF,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccessControlClient\r\n */\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\nimport type { AccessControlAPIResponse, IPermissionsClient, Permission } from \"../accessControlTypes\";\r\nimport { BaseClient } from \"./BaseClient\";\r\n\r\nexport class PermissionsClient extends BaseClient implements IPermissionsClient{\r\n /** Retrieves the list of all available permissions\r\n * @param accessToken The client access token string\r\n * @returns Array of permissions\r\n */\r\n public async getPermissionsAsync(\r\n accessToken: AccessToken,\r\n ): Promise<AccessControlAPIResponse<Permission[]>>{\r\n const url = `${this._baseUrl}/permissions`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"permissions\");\r\n }\r\n\r\n /** Retrieves a list of permissions the identity has for a specified iTwin\r\n * @param accessToken The client access token string\r\n * @param iTwinId The id of the iTwin\r\n * @returns Array of permissions\r\n */\r\n public async getITwinPermissionsAsync(\r\n accessToken: AccessToken,\r\n iTwinId: string,\r\n ): Promise<AccessControlAPIResponse<Permission[]>>{\r\n const url = `${this._baseUrl}/${iTwinId}/permissions`;\r\n return this.sendGenericAPIRequest(accessToken, \"GET\", url, undefined, \"permissions\");\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module AccessControlClient
|
|
3
|
+
*/
|
|
4
|
+
import type { AccessToken } from "@itwin/core-bentley";
|
|
5
|
+
import type { AccessControlAPIResponse, IRolesClient, NewRole, Role } from "../accessControlTypes";
|
|
6
|
+
import { BaseClient } from "./BaseClient";
|
|
7
|
+
export declare class RolesClient extends BaseClient implements IRolesClient {
|
|
8
|
+
/** Retrieves a list of available user roles that are defined for a specified iTwin
|
|
9
|
+
* @param accessToken The client access token string
|
|
10
|
+
* @param iTwinId The id of the iTwin
|
|
11
|
+
* @returns Roles
|
|
12
|
+
*/
|
|
13
|
+
getITwinRolesAsync(accessToken: AccessToken, iTwinId: string): Promise<AccessControlAPIResponse<Role[]>>;
|
|
14
|
+
/** Retrieves the specified role for the specified iTwin
|
|
15
|
+
* @param accessToken The client access token string
|
|
16
|
+
* @param iTwinId The id of the iTwin
|
|
17
|
+
* @returns Role
|
|
18
|
+
*/
|
|
19
|
+
getITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<Role>>;
|
|
20
|
+
/** Creates a new iTwin Role
|
|
21
|
+
* @param accessToken The client access token string
|
|
22
|
+
* @param iTwinId The id of the iTwin
|
|
23
|
+
* @param role The role to be created
|
|
24
|
+
* @returns Role
|
|
25
|
+
*/
|
|
26
|
+
createITwinRoleAsync(accessToken: AccessToken, iTwinId: string, role: NewRole): Promise<AccessControlAPIResponse<Role>>;
|
|
27
|
+
/** Delete the specified iTwin role
|
|
28
|
+
* @param accessToken The client access token string
|
|
29
|
+
* @param iTwinId The id of the iTwin
|
|
30
|
+
* @param roleId The id of the role to remove
|
|
31
|
+
* @returns No Content
|
|
32
|
+
*/
|
|
33
|
+
deleteITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string): Promise<AccessControlAPIResponse<undefined>>;
|
|
34
|
+
/** Update the specified iTwin role
|
|
35
|
+
* @param accessToken The client access token string
|
|
36
|
+
* @param iTwinId The id of the iTwin
|
|
37
|
+
* @param roleId The id of the role to update
|
|
38
|
+
* @param role The updated role
|
|
39
|
+
* @returns Role
|
|
40
|
+
*/
|
|
41
|
+
updateITwinRoleAsync(accessToken: AccessToken, iTwinId: string, roleId: string, role: NewRole): Promise<AccessControlAPIResponse<Role>>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=RolesClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RolesClient.d.ts","sourceRoot":"","sources":["../../../src/subClients/RolesClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,WAAY,SAAQ,UAAW,YAAW,YAAY;IACjE;;;;QAII;IACS,kBAAkB,CAC7B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC;IAK5C;;;;QAII;IACS,iBAAiB,CAC5B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAK1C;;;;;QAKI;IACS,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAK1C;;;;;QAKI;IACS,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAK/C;;;;;;QAMI;IACS,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;CAI3C"}
|