opal-security 3.1.1-beta.4600715 → 3.1.1-beta.4ab1987
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/README.md +18 -18
- package/lib/graphql/gql.d.ts +7 -2
- package/lib/graphql/gql.js +2 -1
- package/lib/graphql/graphql.d.ts +19 -1
- package/lib/graphql/graphql.js +114 -5
- package/lib/lib/requests.d.ts +1 -0
- package/lib/lib/requests.js +106 -51
- package/oclif.manifest.json +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ $ npm install -g opal-security
|
|
|
22
22
|
$ opal COMMAND
|
|
23
23
|
running command...
|
|
24
24
|
$ opal (--version)
|
|
25
|
-
opal-security/3.1.1-beta.
|
|
25
|
+
opal-security/3.1.1-beta.4ab1987 linux-x64 node-v20.19.1
|
|
26
26
|
$ opal --help [COMMAND]
|
|
27
27
|
USAGE
|
|
28
28
|
$ opal COMMAND
|
|
@@ -101,7 +101,7 @@ EXAMPLES
|
|
|
101
101
|
$ opal aws:identity
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
_See code: [src/commands/aws/identity.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
104
|
+
_See code: [src/commands/aws/identity.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/aws/identity.ts)_
|
|
105
105
|
|
|
106
106
|
## `opal clear-auth-provider`
|
|
107
107
|
|
|
@@ -121,7 +121,7 @@ EXAMPLES
|
|
|
121
121
|
$ opal clear-auth-provider
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
_See code: [src/commands/clear-auth-provider.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
124
|
+
_See code: [src/commands/clear-auth-provider.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/clear-auth-provider.ts)_
|
|
125
125
|
|
|
126
126
|
## `opal curl-example`
|
|
127
127
|
|
|
@@ -138,7 +138,7 @@ DESCRIPTION
|
|
|
138
138
|
Prints out an example cURL command containing the parameters the CLI uses to query the Opal server.
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
_See code: [src/commands/curl-example.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
141
|
+
_See code: [src/commands/curl-example.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/curl-example.ts)_
|
|
142
142
|
|
|
143
143
|
## `opal groups get`
|
|
144
144
|
|
|
@@ -159,7 +159,7 @@ EXAMPLES
|
|
|
159
159
|
$ opal groups:get --id 54052a3e-5375-4392-aeaf-0c6c44c131d4
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
-
_See code: [src/commands/groups/get.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
162
|
+
_See code: [src/commands/groups/get.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/groups/get.ts)_
|
|
163
163
|
|
|
164
164
|
## `opal help [COMMANDS]`
|
|
165
165
|
|
|
@@ -209,7 +209,7 @@ EXAMPLES
|
|
|
209
209
|
$ opal iam-roles:start --id 51f7176b-0464-4a6f-8369-e951e187b398 --profileName "custom-profile"
|
|
210
210
|
```
|
|
211
211
|
|
|
212
|
-
_See code: [src/commands/iam-roles/start.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
212
|
+
_See code: [src/commands/iam-roles/start.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/iam-roles/start.ts)_
|
|
213
213
|
|
|
214
214
|
## `opal kube-roles start`
|
|
215
215
|
|
|
@@ -240,7 +240,7 @@ EXAMPLES
|
|
|
240
240
|
$ opal kube-roles:start --id 51f7176b-0464-4a6f-8369-e951e187b398 --accessLevelRemoteId "arn:aws:iam::712234975475:role/acme-eks-cluster-admin-role"
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
-
_See code: [src/commands/kube-roles/start.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
243
|
+
_See code: [src/commands/kube-roles/start.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/kube-roles/start.ts)_
|
|
244
244
|
|
|
245
245
|
## `opal login`
|
|
246
246
|
|
|
@@ -261,7 +261,7 @@ EXAMPLES
|
|
|
261
261
|
$ opal login
|
|
262
262
|
```
|
|
263
263
|
|
|
264
|
-
_See code: [src/commands/login.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
264
|
+
_See code: [src/commands/login.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/login.ts)_
|
|
265
265
|
|
|
266
266
|
## `opal logout`
|
|
267
267
|
|
|
@@ -281,7 +281,7 @@ EXAMPLES
|
|
|
281
281
|
$ opal logout
|
|
282
282
|
```
|
|
283
283
|
|
|
284
|
-
_See code: [src/commands/logout.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
284
|
+
_See code: [src/commands/logout.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/logout.ts)_
|
|
285
285
|
|
|
286
286
|
## `opal postgres-instances start`
|
|
287
287
|
|
|
@@ -318,7 +318,7 @@ EXAMPLES
|
|
|
318
318
|
$ opal postgres-instances:start --id 51f7176b-0464-4a6f-8369-e951e187b398 --accessLevelRemoteId fullaccess --action view
|
|
319
319
|
```
|
|
320
320
|
|
|
321
|
-
_See code: [src/commands/postgres-instances/start.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
321
|
+
_See code: [src/commands/postgres-instances/start.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/postgres-instances/start.ts)_
|
|
322
322
|
|
|
323
323
|
## `opal resources get`
|
|
324
324
|
|
|
@@ -339,7 +339,7 @@ EXAMPLES
|
|
|
339
339
|
$ opal resources:get --id 54052a3e-5375-4392-aeaf-0c6c44c131d4
|
|
340
340
|
```
|
|
341
341
|
|
|
342
|
-
_See code: [src/commands/resources/get.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
342
|
+
_See code: [src/commands/resources/get.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/resources/get.ts)_
|
|
343
343
|
|
|
344
344
|
## `opal set-auth-provider`
|
|
345
345
|
|
|
@@ -365,7 +365,7 @@ EXAMPLES
|
|
|
365
365
|
$ opal set-auth-provider --clientID 1234asdf --issuerUrl https://auth.example.com
|
|
366
366
|
```
|
|
367
367
|
|
|
368
|
-
_See code: [src/commands/set-auth-provider.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
368
|
+
_See code: [src/commands/set-auth-provider.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/set-auth-provider.ts)_
|
|
369
369
|
|
|
370
370
|
## `opal set-custom-header`
|
|
371
371
|
|
|
@@ -386,7 +386,7 @@ EXAMPLES
|
|
|
386
386
|
$ opal set-custom-header --header 'cf-access-token: $TOKEN'
|
|
387
387
|
```
|
|
388
388
|
|
|
389
|
-
_See code: [src/commands/set-custom-header.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
389
|
+
_See code: [src/commands/set-custom-header.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/set-custom-header.ts)_
|
|
390
390
|
|
|
391
391
|
## `opal set-token`
|
|
392
392
|
|
|
@@ -406,7 +406,7 @@ EXAMPLES
|
|
|
406
406
|
$ opal set-token
|
|
407
407
|
```
|
|
408
408
|
|
|
409
|
-
_See code: [src/commands/set-token.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
409
|
+
_See code: [src/commands/set-token.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/set-token.ts)_
|
|
410
410
|
|
|
411
411
|
## `opal set-url [URL]`
|
|
412
412
|
|
|
@@ -430,7 +430,7 @@ EXAMPLES
|
|
|
430
430
|
$ opal set-url
|
|
431
431
|
```
|
|
432
432
|
|
|
433
|
-
_See code: [src/commands/set-url.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
433
|
+
_See code: [src/commands/set-url.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/set-url.ts)_
|
|
434
434
|
|
|
435
435
|
## `opal ssh copyFrom`
|
|
436
436
|
|
|
@@ -461,7 +461,7 @@ EXAMPLES
|
|
|
461
461
|
$ opal ssh:copyFrom --src instance/dir --dest my/dir --id 51f7176b-0464-4a6f-8369-e951e187b398
|
|
462
462
|
```
|
|
463
463
|
|
|
464
|
-
_See code: [src/commands/ssh/copyFrom.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
464
|
+
_See code: [src/commands/ssh/copyFrom.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/ssh/copyFrom.ts)_
|
|
465
465
|
|
|
466
466
|
## `opal ssh copyTo`
|
|
467
467
|
|
|
@@ -492,7 +492,7 @@ EXAMPLES
|
|
|
492
492
|
$ opal ssh:copyTo --src my/dir --dest instance/dir --id 51f7176b-0464-4a6f-8369-e951e187b398
|
|
493
493
|
```
|
|
494
494
|
|
|
495
|
-
_See code: [src/commands/ssh/copyTo.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
495
|
+
_See code: [src/commands/ssh/copyTo.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/ssh/copyTo.ts)_
|
|
496
496
|
|
|
497
497
|
## `opal ssh start`
|
|
498
498
|
|
|
@@ -519,7 +519,7 @@ EXAMPLES
|
|
|
519
519
|
$ opal ssh:start --id 51f7176b-0464-4a6f-8369-e951e187b398
|
|
520
520
|
```
|
|
521
521
|
|
|
522
|
-
_See code: [src/commands/ssh/start.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.
|
|
522
|
+
_See code: [src/commands/ssh/start.ts](https://github.com/opalsecurity/opal-cli/blob/v3.1.1-beta.4ab1987/src/commands/ssh/start.ts)_
|
|
523
523
|
|
|
524
524
|
## `opal version`
|
|
525
525
|
|
package/lib/graphql/gql.d.ts
CHANGED
|
@@ -18,7 +18,8 @@ type Documents = {
|
|
|
18
18
|
"\nquery CheckAuthSessionQuery {\n organizationSettings {\n ... on OrganizationSettingsResult {\n settings {\n id\n }\n }\n }\n}\n": typeof types.CheckAuthSessionQueryDocument;
|
|
19
19
|
'\n query GetRequestableAppsQuery($searchQuery: String) {\n appsV2(\n filters: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n }\n ) @connection(key: "paginated-app-dropdown") {\n edges {\n node {\n id\n displayName\n ... on Connection {\n connectionType\n }\n ... on Resource {\n resourceType\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n ': typeof types.GetRequestableAppsQueryDocument;
|
|
20
20
|
"\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n }\n group {\n id\n name\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n": typeof types.PaginatedEntityDropdownDocument;
|
|
21
|
-
"\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n
|
|
21
|
+
"\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n ... on ResourceAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n": typeof types.ResourceAccessLevelsDocument;
|
|
22
|
+
"\nquery GroupAccessLevels($groupId: GroupId!) {\n groupAccessLevels(\n input: { groupId: $groupId }\n ) {\n ... on GroupAccessLevelsResult {\n groupId\n accessLevels {\n ... on GroupAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n}\n": typeof types.GroupAccessLevelsDocument;
|
|
22
23
|
"\n query RequestDefaults(\n $requestedResources: [RequestConfigurationResourceInput!]!\n $requestedGroups: [RequestConfigurationGroupInput!]!\n ) {\n requestDefaults(input: {\n requestedResources: $requestedResources,\n requestedGroups: $requestedGroups,\n }\n ) {\n durationOptions {\n durationInMinutes\n label\n }\n recommendedDurationInMinutes\n defaultDurationInMinutes\n maxDurationInMinutes\n requireSupportTicket\n reasonOptional\n requesterIsAdmin\n }\n }": typeof types.RequestDefaultsDocument;
|
|
23
24
|
};
|
|
24
25
|
declare const documents: Documents;
|
|
@@ -62,7 +63,11 @@ export declare function graphql(source: "\n query PaginatedEntityDropdown(\n $
|
|
|
62
63
|
/**
|
|
63
64
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
64
65
|
*/
|
|
65
|
-
export declare function graphql(source: "\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n
|
|
66
|
+
export declare function graphql(source: "\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n ... on ResourceAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n"): (typeof documents)["\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n ... on ResourceAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n"];
|
|
67
|
+
/**
|
|
68
|
+
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
69
|
+
*/
|
|
70
|
+
export declare function graphql(source: "\nquery GroupAccessLevels($groupId: GroupId!) {\n groupAccessLevels(\n input: { groupId: $groupId }\n ) {\n ... on GroupAccessLevelsResult {\n groupId\n accessLevels {\n ... on GroupAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n}\n"): (typeof documents)["\nquery GroupAccessLevels($groupId: GroupId!) {\n groupAccessLevels(\n input: { groupId: $groupId }\n ) {\n ... on GroupAccessLevelsResult {\n groupId\n accessLevels {\n ... on GroupAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n}\n"];
|
|
66
71
|
/**
|
|
67
72
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
68
73
|
*/
|
package/lib/graphql/gql.js
CHANGED
|
@@ -10,7 +10,8 @@ const documents = {
|
|
|
10
10
|
"\nquery CheckAuthSessionQuery {\n organizationSettings {\n ... on OrganizationSettingsResult {\n settings {\n id\n }\n }\n }\n}\n": types.CheckAuthSessionQueryDocument,
|
|
11
11
|
'\n query GetRequestableAppsQuery($searchQuery: String) {\n appsV2(\n filters: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n }\n ) @connection(key: "paginated-app-dropdown") {\n edges {\n node {\n id\n displayName\n ... on Connection {\n connectionType\n }\n ... on Resource {\n resourceType\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n ': types.GetRequestableAppsQueryDocument,
|
|
12
12
|
"\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n }\n group {\n id\n name\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n": types.PaginatedEntityDropdownDocument,
|
|
13
|
-
"\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n
|
|
13
|
+
"\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n ... on ResourceAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n": types.ResourceAccessLevelsDocument,
|
|
14
|
+
"\nquery GroupAccessLevels($groupId: GroupId!) {\n groupAccessLevels(\n input: { groupId: $groupId }\n ) {\n ... on GroupAccessLevelsResult {\n groupId\n accessLevels {\n ... on GroupAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n}\n": types.GroupAccessLevelsDocument,
|
|
14
15
|
"\n query RequestDefaults(\n $requestedResources: [RequestConfigurationResourceInput!]!\n $requestedGroups: [RequestConfigurationGroupInput!]!\n ) {\n requestDefaults(input: {\n requestedResources: $requestedResources,\n requestedGroups: $requestedGroups,\n }\n ) {\n durationOptions {\n durationInMinutes\n label\n }\n recommendedDurationInMinutes\n defaultDurationInMinutes\n maxDurationInMinutes\n requireSupportTicket\n reasonOptional\n requesterIsAdmin\n }\n }": types.RequestDefaultsDocument,
|
|
15
16
|
};
|
|
16
17
|
function graphql(source) {
|
package/lib/graphql/graphql.d.ts
CHANGED
|
@@ -11629,7 +11629,7 @@ export type ResourceAccessLevelsQuery = {
|
|
|
11629
11629
|
accessLevels: {
|
|
11630
11630
|
__typename: "ResourceAccessLevelsResult";
|
|
11631
11631
|
accessLevels: Array<{
|
|
11632
|
-
__typename
|
|
11632
|
+
__typename?: "ResourceAccessLevel";
|
|
11633
11633
|
accessLevelName: string;
|
|
11634
11634
|
accessLevelRemoteId: string;
|
|
11635
11635
|
}>;
|
|
@@ -11638,6 +11638,23 @@ export type ResourceAccessLevelsQuery = {
|
|
|
11638
11638
|
message: string;
|
|
11639
11639
|
};
|
|
11640
11640
|
};
|
|
11641
|
+
export type GroupAccessLevelsQueryVariables = Exact<{
|
|
11642
|
+
groupId: Scalars["GroupId"]["input"];
|
|
11643
|
+
}>;
|
|
11644
|
+
export type GroupAccessLevelsQuery = {
|
|
11645
|
+
__typename?: "Query";
|
|
11646
|
+
groupAccessLevels: {
|
|
11647
|
+
__typename?: "GroupAccessLevelsResult";
|
|
11648
|
+
groupId: string;
|
|
11649
|
+
accessLevels?: Array<{
|
|
11650
|
+
__typename?: "GroupAccessLevel";
|
|
11651
|
+
accessLevelName: string;
|
|
11652
|
+
accessLevelRemoteId: string;
|
|
11653
|
+
}> | null;
|
|
11654
|
+
} | {
|
|
11655
|
+
__typename?: "GroupNotFoundError";
|
|
11656
|
+
};
|
|
11657
|
+
};
|
|
11641
11658
|
export type RequestDefaultsQueryVariables = Exact<{
|
|
11642
11659
|
requestedResources: Array<RequestConfigurationResourceInput> | RequestConfigurationResourceInput;
|
|
11643
11660
|
requestedGroups: Array<RequestConfigurationGroupInput> | RequestConfigurationGroupInput;
|
|
@@ -11666,4 +11683,5 @@ export declare const CheckAuthSessionQueryDocument: DocumentNode<CheckAuthSessio
|
|
|
11666
11683
|
export declare const GetRequestableAppsQueryDocument: DocumentNode<GetRequestableAppsQueryQuery, GetRequestableAppsQueryQueryVariables>;
|
|
11667
11684
|
export declare const PaginatedEntityDropdownDocument: DocumentNode<PaginatedEntityDropdownQuery, PaginatedEntityDropdownQueryVariables>;
|
|
11668
11685
|
export declare const ResourceAccessLevelsDocument: DocumentNode<ResourceAccessLevelsQuery, ResourceAccessLevelsQueryVariables>;
|
|
11686
|
+
export declare const GroupAccessLevelsDocument: DocumentNode<GroupAccessLevelsQuery, GroupAccessLevelsQueryVariables>;
|
|
11669
11687
|
export declare const RequestDefaultsDocument: DocumentNode<RequestDefaultsQuery, RequestDefaultsQueryVariables>;
|
package/lib/graphql/graphql.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GroupUserSource = exports.GroupUserSortByField = exports.GroupType = exports.GroupResourceSource = exports.GroupBindingsSortByField = exports.GroupBindingSuggestionsSortByField = exports.GeneralSettingType = exports.FiltersMatchMode = exports.FilterRule = exports.FactorType = exports.EventType = exports.EventSeverity = exports.ErrorNotificationSettingType = exports.EntityType = exports.ConnectionValidationStatus = exports.ConnectionValidationSeverity = exports.ConnectionType = exports.BundlesSortByField = exports.BundleItemsSortByField = exports.AuthType = exports.AuthSessionStatus = exports.AuthFlowType = exports.AssociatedItemsSortByField = exports.AssignmentsSortByField = exports.AppsSortByField = exports.AppType = exports.AppItemsSortByField = exports.AppCategory = exports.ApiAuthType = exports.ApiAccessLevel = exports.AldwinRole = exports.AccessType = exports.AccessRuleStatus = exports.AccessReviewUserWarningType = exports.AccessReviewType = exports.AccessReviewTab = exports.AccessReviewSummaryStatus = exports.AccessReviewStatus = exports.AccessReviewReviewerAssignmentPolicy = exports.AccessReviewItemsSortByField = exports.AccessReviewItemStatus = exports.AccessReviewItemOutcome = exports.AccessReviewGroupResourceVisibilityPolicy = exports.AccessReviewGroupItemKind = exports.AccessReviewEndUserView = exports.AccessReviewAssignedStatus = exports.AccessReviewAction = exports.AccessOption = exports.AccessChangeType = exports.AwsIdentityCenterImportSetting = void 0;
|
|
4
4
|
exports.TagsSortByField = exports.TagFilterMatchMode = exports.SyncType = exports.SyncTaskStatus = exports.SubEventsSortByField = exports.StringFormatType = exports.SortDirection = exports.ServiceType = exports.SearchType = exports.RolePermissionTargetType = exports.RolePermission = exports.RoleAssignmentsSortByField = exports.RoleAssignmentSource = exports.RiskLevel = exports.ReviewerUserStatus = exports.ReviewerAction = exports.ReviewStageOperator = exports.ResourceUserSource = exports.ResourceUserSortByField = exports.ResourceType = exports.RequestsSortByField = exports.RequestType = exports.RequestTemplateCustomFieldType = exports.RequestStatus = exports.RequestMessageLevel = exports.RequestMessageCode = exports.RequestApprovalType = exports.RecommendationsSubscoreType = exports.RecommendationsMetricType = exports.RecommendationsFeedbackType = exports.RecommendationsEntityType = exports.PubsubPublishMessageType = exports.PubsubPublishMessageStatusCode = exports.PubsubPublishConnectionType = exports.ProvisionSource = exports.PropagationTaskType = exports.PropagationStatusCode = exports.OwnersSortByField = exports.OrganizationType = exports.OidcProviderType = exports.NotificationType = exports.MessageChannelType = exports.MfaProvider = exports.IntegrationType = exports.ImportSetting = exports.IdpConnectionUserAttributeUseAs = exports.IdpConnectionType = exports.IdentityCategory = exports.HrIdpStatus = exports.HealthStatus = void 0;
|
|
5
|
-
exports.RequestDefaultsDocument = exports.ResourceAccessLevelsDocument = exports.PaginatedEntityDropdownDocument = exports.GetRequestableAppsQueryDocument = exports.CheckAuthSessionQueryDocument = exports.GetRequestsDocument = exports.GetRequestDocument = exports.GetGroupDocument = exports.RequestDecisionLevel = exports.WebhookPubsubPublishConnectionAuthType = exports.WebhookPubsubPublishConnectionApiKeyLocation = exports.Visibility = exports.VerifyFactorStatus = exports.UsersSortByField = exports.UserProductRole = exports.UserErrorType = exports.UsageAttributionType = exports.UiSource = exports.TimePeriod = exports.TimeBucket = exports.ThirdPartyProvider = exports.TaskTrigger = void 0;
|
|
5
|
+
exports.RequestDefaultsDocument = exports.GroupAccessLevelsDocument = exports.ResourceAccessLevelsDocument = exports.PaginatedEntityDropdownDocument = exports.GetRequestableAppsQueryDocument = exports.CheckAuthSessionQueryDocument = exports.GetRequestsDocument = exports.GetRequestDocument = exports.GetGroupDocument = exports.RequestDecisionLevel = exports.WebhookPubsubPublishConnectionAuthType = exports.WebhookPubsubPublishConnectionApiKeyLocation = exports.Visibility = exports.VerifyFactorStatus = exports.UsersSortByField = exports.UserProductRole = exports.UserErrorType = exports.UsageAttributionType = exports.UiSource = exports.TimePeriod = exports.TimeBucket = exports.ThirdPartyProvider = exports.TaskTrigger = void 0;
|
|
6
6
|
var AwsIdentityCenterImportSetting;
|
|
7
7
|
(function (AwsIdentityCenterImportSetting) {
|
|
8
8
|
AwsIdentityCenterImportSetting["All"] = "ALL";
|
|
@@ -2667,10 +2667,6 @@ exports.ResourceAccessLevelsDocument = {
|
|
|
2667
2667
|
selectionSet: {
|
|
2668
2668
|
kind: "SelectionSet",
|
|
2669
2669
|
selections: [
|
|
2670
|
-
{
|
|
2671
|
-
kind: "Field",
|
|
2672
|
-
name: { kind: "Name", value: "__typename" },
|
|
2673
|
-
},
|
|
2674
2670
|
{
|
|
2675
2671
|
kind: "InlineFragment",
|
|
2676
2672
|
typeCondition: {
|
|
@@ -2730,6 +2726,119 @@ exports.ResourceAccessLevelsDocument = {
|
|
|
2730
2726
|
},
|
|
2731
2727
|
],
|
|
2732
2728
|
};
|
|
2729
|
+
exports.GroupAccessLevelsDocument = {
|
|
2730
|
+
kind: "Document",
|
|
2731
|
+
definitions: [
|
|
2732
|
+
{
|
|
2733
|
+
kind: "OperationDefinition",
|
|
2734
|
+
operation: "query",
|
|
2735
|
+
name: { kind: "Name", value: "GroupAccessLevels" },
|
|
2736
|
+
variableDefinitions: [
|
|
2737
|
+
{
|
|
2738
|
+
kind: "VariableDefinition",
|
|
2739
|
+
variable: {
|
|
2740
|
+
kind: "Variable",
|
|
2741
|
+
name: { kind: "Name", value: "groupId" },
|
|
2742
|
+
},
|
|
2743
|
+
type: {
|
|
2744
|
+
kind: "NonNullType",
|
|
2745
|
+
type: {
|
|
2746
|
+
kind: "NamedType",
|
|
2747
|
+
name: { kind: "Name", value: "GroupId" },
|
|
2748
|
+
},
|
|
2749
|
+
},
|
|
2750
|
+
},
|
|
2751
|
+
],
|
|
2752
|
+
selectionSet: {
|
|
2753
|
+
kind: "SelectionSet",
|
|
2754
|
+
selections: [
|
|
2755
|
+
{
|
|
2756
|
+
kind: "Field",
|
|
2757
|
+
name: { kind: "Name", value: "groupAccessLevels" },
|
|
2758
|
+
arguments: [
|
|
2759
|
+
{
|
|
2760
|
+
kind: "Argument",
|
|
2761
|
+
name: { kind: "Name", value: "input" },
|
|
2762
|
+
value: {
|
|
2763
|
+
kind: "ObjectValue",
|
|
2764
|
+
fields: [
|
|
2765
|
+
{
|
|
2766
|
+
kind: "ObjectField",
|
|
2767
|
+
name: { kind: "Name", value: "groupId" },
|
|
2768
|
+
value: {
|
|
2769
|
+
kind: "Variable",
|
|
2770
|
+
name: { kind: "Name", value: "groupId" },
|
|
2771
|
+
},
|
|
2772
|
+
},
|
|
2773
|
+
],
|
|
2774
|
+
},
|
|
2775
|
+
},
|
|
2776
|
+
],
|
|
2777
|
+
selectionSet: {
|
|
2778
|
+
kind: "SelectionSet",
|
|
2779
|
+
selections: [
|
|
2780
|
+
{
|
|
2781
|
+
kind: "InlineFragment",
|
|
2782
|
+
typeCondition: {
|
|
2783
|
+
kind: "NamedType",
|
|
2784
|
+
name: { kind: "Name", value: "GroupAccessLevelsResult" },
|
|
2785
|
+
},
|
|
2786
|
+
selectionSet: {
|
|
2787
|
+
kind: "SelectionSet",
|
|
2788
|
+
selections: [
|
|
2789
|
+
{
|
|
2790
|
+
kind: "Field",
|
|
2791
|
+
name: { kind: "Name", value: "groupId" },
|
|
2792
|
+
},
|
|
2793
|
+
{
|
|
2794
|
+
kind: "Field",
|
|
2795
|
+
name: { kind: "Name", value: "accessLevels" },
|
|
2796
|
+
selectionSet: {
|
|
2797
|
+
kind: "SelectionSet",
|
|
2798
|
+
selections: [
|
|
2799
|
+
{
|
|
2800
|
+
kind: "InlineFragment",
|
|
2801
|
+
typeCondition: {
|
|
2802
|
+
kind: "NamedType",
|
|
2803
|
+
name: {
|
|
2804
|
+
kind: "Name",
|
|
2805
|
+
value: "GroupAccessLevel",
|
|
2806
|
+
},
|
|
2807
|
+
},
|
|
2808
|
+
selectionSet: {
|
|
2809
|
+
kind: "SelectionSet",
|
|
2810
|
+
selections: [
|
|
2811
|
+
{
|
|
2812
|
+
kind: "Field",
|
|
2813
|
+
name: {
|
|
2814
|
+
kind: "Name",
|
|
2815
|
+
value: "accessLevelName",
|
|
2816
|
+
},
|
|
2817
|
+
},
|
|
2818
|
+
{
|
|
2819
|
+
kind: "Field",
|
|
2820
|
+
name: {
|
|
2821
|
+
kind: "Name",
|
|
2822
|
+
value: "accessLevelRemoteId",
|
|
2823
|
+
},
|
|
2824
|
+
},
|
|
2825
|
+
],
|
|
2826
|
+
},
|
|
2827
|
+
},
|
|
2828
|
+
],
|
|
2829
|
+
},
|
|
2830
|
+
},
|
|
2831
|
+
],
|
|
2832
|
+
},
|
|
2833
|
+
},
|
|
2834
|
+
],
|
|
2835
|
+
},
|
|
2836
|
+
},
|
|
2837
|
+
],
|
|
2838
|
+
},
|
|
2839
|
+
},
|
|
2840
|
+
],
|
|
2841
|
+
};
|
|
2733
2842
|
exports.RequestDefaultsDocument = {
|
|
2734
2843
|
kind: "Document",
|
|
2735
2844
|
definitions: [
|
package/lib/lib/requests.d.ts
CHANGED
package/lib/lib/requests.js
CHANGED
|
@@ -12,6 +12,7 @@ exports.submitFinalRequest = submitFinalRequest;
|
|
|
12
12
|
const inquirer = require("inquirer");
|
|
13
13
|
const graphql_1 = require("../graphql");
|
|
14
14
|
inquirer.registerPrompt("autocomplete", require("inquirer-autocomplete-prompt"));
|
|
15
|
+
const { AutoComplete } = require("enquirer");
|
|
15
16
|
function createEmptyRequestMetadata() {
|
|
16
17
|
// Initialize with empty defaults
|
|
17
18
|
const requestDefaults = {
|
|
@@ -81,10 +82,11 @@ async function queryRequestableApps(cmd, client, input) {
|
|
|
81
82
|
}
|
|
82
83
|
const label = `${edge.node.displayName} (${type})`;
|
|
83
84
|
return {
|
|
84
|
-
|
|
85
|
+
message: label,
|
|
85
86
|
value: {
|
|
86
87
|
id: edge.node.id,
|
|
87
88
|
name: label,
|
|
89
|
+
toString: () => label,
|
|
88
90
|
},
|
|
89
91
|
};
|
|
90
92
|
});
|
|
@@ -147,16 +149,17 @@ async function queryRequestableAssets(cmd, client, appId, input) {
|
|
|
147
149
|
switch (resp.data.app.__typename) {
|
|
148
150
|
case "App":
|
|
149
151
|
return (_d = (_c = (_b = (_a = resp.data) === null || _a === void 0 ? void 0 : _a.app) === null || _b === void 0 ? void 0 : _b.items) === null || _c === void 0 ? void 0 : _c.items) === null || _d === void 0 ? void 0 : _d.map((item) => {
|
|
150
|
-
var _a, _b, _c, _d, _e, _f;
|
|
152
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
151
153
|
const name = ((_a = item.resource) === null || _a === void 0 ? void 0 : _a.name) || ((_b = item.group) === null || _b === void 0 ? void 0 : _b.name);
|
|
152
154
|
const id = ((_c = item.resource) === null || _c === void 0 ? void 0 : _c.id) || ((_d = item.group) === null || _d === void 0 ? void 0 : _d.id);
|
|
153
155
|
const type = ((_e = item.resource) === null || _e === void 0 ? void 0 : _e.__typename) || ((_f = item.group) === null || _f === void 0 ? void 0 : _f.__typename);
|
|
154
156
|
const label = `${name} (${type})`;
|
|
155
157
|
return {
|
|
156
|
-
|
|
158
|
+
message: label,
|
|
157
159
|
value: {
|
|
158
160
|
name: label,
|
|
159
161
|
id: id,
|
|
162
|
+
type: ((_g = item.resource) === null || _g === void 0 ? void 0 : _g.__typename) || ((_h = item.group) === null || _h === void 0 ? void 0 : _h.__typename),
|
|
160
163
|
},
|
|
161
164
|
};
|
|
162
165
|
});
|
|
@@ -182,7 +185,6 @@ const RESOURCE_ROLES_QUERY = (0, graphql_1.graphql)(`
|
|
|
182
185
|
__typename
|
|
183
186
|
... on ResourceAccessLevelsResult {
|
|
184
187
|
accessLevels {
|
|
185
|
-
__typename
|
|
186
188
|
... on ResourceAccessLevel {
|
|
187
189
|
accessLevelName
|
|
188
190
|
accessLevelRemoteId
|
|
@@ -195,34 +197,82 @@ const RESOURCE_ROLES_QUERY = (0, graphql_1.graphql)(`
|
|
|
195
197
|
}
|
|
196
198
|
}
|
|
197
199
|
`);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
+
const GROUP_ROLES_QUERY = (0, graphql_1.graphql)(`
|
|
201
|
+
query GroupAccessLevels($groupId: GroupId!) {
|
|
202
|
+
groupAccessLevels(
|
|
203
|
+
input: { groupId: $groupId }
|
|
204
|
+
) {
|
|
205
|
+
... on GroupAccessLevelsResult {
|
|
206
|
+
groupId
|
|
207
|
+
accessLevels {
|
|
208
|
+
... on GroupAccessLevel {
|
|
209
|
+
accessLevelName
|
|
210
|
+
accessLevelRemoteId
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
`);
|
|
217
|
+
async function queryAssetRoles(cmd, client, assetType, assetId) {
|
|
218
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
200
219
|
try {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
let x;
|
|
210
|
-
switch (resp.data.accessLevels.__typename) {
|
|
211
|
-
case "ResourceAccessLevelsResult":
|
|
212
|
-
return (_c = (_b = (_a = resp.data) === null || _a === void 0 ? void 0 : _a.accessLevels) === null || _b === void 0 ? void 0 : _b.accessLevels) === null || _c === void 0 ? void 0 : _c.map((role) => {
|
|
213
|
-
return {
|
|
214
|
-
name: role.accessLevelName,
|
|
215
|
-
value: {
|
|
216
|
-
name: role.accessLevelName,
|
|
217
|
-
id: role.accessLevelRemoteId,
|
|
218
|
-
},
|
|
219
|
-
};
|
|
220
|
+
switch (assetType) {
|
|
221
|
+
case "Resource": {
|
|
222
|
+
const resp = await client.query({
|
|
223
|
+
query: RESOURCE_ROLES_QUERY,
|
|
224
|
+
variables: {
|
|
225
|
+
resourceId: assetId,
|
|
226
|
+
},
|
|
227
|
+
fetchPolicy: "network-only", // to avoid caching
|
|
220
228
|
});
|
|
221
|
-
|
|
222
|
-
x
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
229
|
+
// no fall through doesn't consider process.exit();
|
|
230
|
+
let x;
|
|
231
|
+
switch (resp.data.accessLevels.__typename) {
|
|
232
|
+
case "ResourceAccessLevelsResult":
|
|
233
|
+
return (_c = (_b = (_a = resp.data) === null || _a === void 0 ? void 0 : _a.accessLevels) === null || _b === void 0 ? void 0 : _b.accessLevels) === null || _c === void 0 ? void 0 : _c.map((role) => {
|
|
234
|
+
return {
|
|
235
|
+
name: role.accessLevelName,
|
|
236
|
+
value: {
|
|
237
|
+
name: role.accessLevelName,
|
|
238
|
+
id: role.accessLevelRemoteId,
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
});
|
|
242
|
+
case "ResourceNotFoundError":
|
|
243
|
+
x = cmd.error((_e = (_d = resp.data) === null || _d === void 0 ? void 0 : _d.accessLevels) === null || _e === void 0 ? void 0 : _e.message);
|
|
244
|
+
break;
|
|
245
|
+
default:
|
|
246
|
+
cmd.error(resp.error || "Unknown error occurred.");
|
|
247
|
+
}
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
case "Group": {
|
|
251
|
+
const resp = await client.query({
|
|
252
|
+
query: GROUP_ROLES_QUERY,
|
|
253
|
+
variables: {
|
|
254
|
+
groupId: assetId,
|
|
255
|
+
},
|
|
256
|
+
fetchPolicy: "network-only", // to avoid caching
|
|
257
|
+
});
|
|
258
|
+
// no fall through doesn't consider process.exit();
|
|
259
|
+
let x;
|
|
260
|
+
switch (resp.data.groupAccessLevels.__typename) {
|
|
261
|
+
case "GroupAccessLevelsResult":
|
|
262
|
+
return (_h = (_g = (_f = resp.data) === null || _f === void 0 ? void 0 : _f.groupAccessLevels) === null || _g === void 0 ? void 0 : _g.accessLevels) === null || _h === void 0 ? void 0 : _h.map((role) => {
|
|
263
|
+
return {
|
|
264
|
+
name: role.accessLevelName,
|
|
265
|
+
value: {
|
|
266
|
+
name: role.accessLevelName,
|
|
267
|
+
id: role.accessLevelRemoteId,
|
|
268
|
+
},
|
|
269
|
+
};
|
|
270
|
+
});
|
|
271
|
+
default:
|
|
272
|
+
x = cmd.error(resp.error || "Unknown error occurred.");
|
|
273
|
+
}
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
226
276
|
}
|
|
227
277
|
}
|
|
228
278
|
catch (error) {
|
|
@@ -273,18 +323,18 @@ async function queryRequestDefaults(cmd, client, requestedResources, requestedGr
|
|
|
273
323
|
}
|
|
274
324
|
// Helper functions
|
|
275
325
|
async function selectRequestableItems(cmd, client, requestMap) {
|
|
276
|
-
const
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
pageSize: 15,
|
|
326
|
+
const initialChoices = (await queryRequestableApps(cmd, client, "")) || [];
|
|
327
|
+
const appPrompt = new AutoComplete({
|
|
328
|
+
name: "App",
|
|
329
|
+
message: "Select an app:",
|
|
330
|
+
limit: 15,
|
|
331
|
+
choices: initialChoices,
|
|
332
|
+
async suggest(input) {
|
|
333
|
+
const filteredChoices = await queryRequestableApps(cmd, client, input || "");
|
|
334
|
+
return filteredChoices || initialChoices;
|
|
286
335
|
},
|
|
287
|
-
|
|
336
|
+
});
|
|
337
|
+
const App = await appPrompt.run();
|
|
288
338
|
// Set the app in the requestMap and call choose assets step
|
|
289
339
|
if (!(App.id in requestMap)) {
|
|
290
340
|
requestMap[App.id] = {
|
|
@@ -295,13 +345,16 @@ async function selectRequestableItems(cmd, client, requestMap) {
|
|
|
295
345
|
await chooseAssets(cmd, client, App.id, requestMap);
|
|
296
346
|
}
|
|
297
347
|
async function chooseAssets(cmd, client, appId, requestMap) {
|
|
298
|
-
|
|
299
|
-
const
|
|
348
|
+
const initialChoices = queryRequestableAssets(cmd, client, appId, "") || [];
|
|
349
|
+
const assetPrompt = new AutoComplete({
|
|
300
350
|
name: "Assets",
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
choices
|
|
351
|
+
message: "Select one or more assets:",
|
|
352
|
+
limit: 15,
|
|
353
|
+
multiple: true,
|
|
354
|
+
async choices(input) {
|
|
355
|
+
const filteredChoices = await queryRequestableAssets(cmd, client, appId, input);
|
|
356
|
+
return filteredChoices || initialChoices;
|
|
357
|
+
},
|
|
305
358
|
validate: (answer) => {
|
|
306
359
|
if (answer.length < 1) {
|
|
307
360
|
return "You must select at least one item.";
|
|
@@ -309,14 +362,16 @@ async function chooseAssets(cmd, client, appId, requestMap) {
|
|
|
309
362
|
return true;
|
|
310
363
|
},
|
|
311
364
|
});
|
|
365
|
+
const Assets = await assetPrompt.run();
|
|
312
366
|
const entry = requestMap[appId];
|
|
313
367
|
for (const asset of Assets) {
|
|
314
368
|
if (entry === undefined) {
|
|
315
|
-
throw new Error(`
|
|
369
|
+
throw new Error(`Error formatting app ${appId} in request`);
|
|
316
370
|
}
|
|
317
371
|
if (!(asset.id in entry.assets)) {
|
|
318
372
|
entry.assets[asset.id] = {
|
|
319
373
|
assetName: asset.name,
|
|
374
|
+
type: asset.type,
|
|
320
375
|
roles: {},
|
|
321
376
|
};
|
|
322
377
|
}
|
|
@@ -325,7 +380,9 @@ async function chooseAssets(cmd, client, appId, requestMap) {
|
|
|
325
380
|
}
|
|
326
381
|
async function chooseRoles(cmd, client, appId, assetId, requestMap) {
|
|
327
382
|
var _a;
|
|
328
|
-
const
|
|
383
|
+
const entry = requestMap[appId];
|
|
384
|
+
const assetEntry = entry === null || entry === void 0 ? void 0 : entry.assets[assetId];
|
|
385
|
+
const resourceRoles = (_a = (await queryAssetRoles(cmd, client, assetEntry.type, assetId))) !== null && _a !== void 0 ? _a : [];
|
|
329
386
|
if (resourceRoles !== undefined &&
|
|
330
387
|
(resourceRoles.length === 0 ||
|
|
331
388
|
(resourceRoles.length === 1 && resourceRoles[0].name === ""))) {
|
|
@@ -343,8 +400,6 @@ async function chooseRoles(cmd, client, appId, assetId, requestMap) {
|
|
|
343
400
|
return true;
|
|
344
401
|
},
|
|
345
402
|
});
|
|
346
|
-
const entry = requestMap[appId];
|
|
347
|
-
const assetEntry = entry === null || entry === void 0 ? void 0 : entry.assets[assetId];
|
|
348
403
|
if (entry === undefined || assetEntry === undefined) {
|
|
349
404
|
throw new Error(`App ${appId} or Asset ${assetId} not found in requestMap`);
|
|
350
405
|
}
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opal-security",
|
|
3
3
|
"description": "Opal allows you to centrally manage access to all of your sensitive systems.",
|
|
4
|
-
"version": "3.1.1-beta.
|
|
4
|
+
"version": "3.1.1-beta.4ab1987",
|
|
5
5
|
"author": "Stephen Cobbe",
|
|
6
6
|
"bin": {
|
|
7
7
|
"opal": "./bin/run"
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"argon2": "^0.40.1",
|
|
17
17
|
"chalk": "^2.4.2",
|
|
18
18
|
"cli-table3": "^0.6.5",
|
|
19
|
+
"enquirer": "^2.4.1",
|
|
19
20
|
"graphql": "^15.5.0",
|
|
20
21
|
"inquirer": "^8.2.6",
|
|
21
22
|
"inquirer-autocomplete-prompt": "^2.0.1",
|