opal-security 3.2.1 → 3.2.2
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 +28 -25
- package/lib/commands/login.js +8 -1
- package/lib/commands/request/create.d.ts +2 -0
- package/lib/commands/request/create.js +41 -20
- package/lib/commands/request/get.js +5 -57
- package/lib/commands/request/list.js +3 -60
- package/lib/graphql/gql.d.ts +35 -15
- package/lib/graphql/gql.js +9 -5
- package/lib/graphql/graphql.d.ts +286 -228
- package/lib/graphql/graphql.js +1674 -1095
- package/lib/labels.d.ts +3 -0
- package/lib/labels.js +37 -0
- package/lib/lib/request/api/index.d.ts +6 -0
- package/lib/lib/request/api/index.js +20 -0
- package/lib/lib/request/api/mutations/create-request.d.ts +8 -0
- package/lib/lib/request/api/mutations/create-request.js +159 -0
- package/lib/lib/request/api/queries/apps.d.ts +4 -0
- package/lib/lib/request/api/queries/apps.js +73 -0
- package/lib/lib/request/api/queries/assets.d.ts +6 -0
- package/lib/lib/request/api/queries/assets.js +136 -0
- package/lib/lib/request/api/queries/request-defaults.d.ts +5 -0
- package/lib/lib/request/api/queries/request-defaults.js +51 -0
- package/lib/lib/request/api/queries/requests.d.ts +4 -0
- package/lib/lib/request/api/queries/requests.js +163 -0
- package/lib/lib/request/api/queries/roles.d.ts +5 -0
- package/lib/lib/request/api/queries/roles.js +239 -0
- package/lib/{utils → lib/request}/displays.d.ts +4 -2
- package/lib/{utils → lib/request}/displays.js +41 -19
- package/lib/lib/request/prompts/apps-prompt.d.ts +4 -0
- package/lib/lib/request/prompts/apps-prompt.js +35 -0
- package/lib/lib/request/prompts/asset-prompt.d.ts +5 -0
- package/lib/lib/request/prompts/asset-prompt.js +81 -0
- package/lib/lib/request/prompts/duration-prompt.d.ts +2 -0
- package/lib/lib/request/prompts/duration-prompt.js +122 -0
- package/lib/lib/request/prompts/index.d.ts +8 -0
- package/lib/lib/request/prompts/index.js +20 -0
- package/lib/lib/request/prompts/reason-prompt.d.ts +2 -0
- package/lib/lib/request/prompts/reason-prompt.js +20 -0
- package/lib/lib/request/prompts/role-prompt.d.ts +4 -0
- package/lib/lib/request/prompts/role-prompt.js +44 -0
- package/lib/lib/request/prompts/validate-prompt.d.ts +4 -0
- package/lib/lib/request/prompts/validate-prompt.js +29 -0
- package/lib/lib/request/request-utils.d.ts +15 -0
- package/lib/lib/request/request-utils.js +467 -0
- package/lib/lib/request/types.d.ts +55 -0
- package/lib/lib/request/types.js +15 -0
- package/lib/lib/util.d.ts +1 -0
- package/lib/lib/util.js +16 -0
- package/lib/types.d.ts +19 -3
- package/lib/types.js +18 -2
- package/oclif.manifest.json +54 -38
- package/package.json +1 -1
- package/lib/lib/requests.d.ts +0 -54
- package/lib/lib/requests.js +0 -1160
- package/lib/utils/utils.d.ts +0 -1
- package/lib/utils/utils.js +0 -18
package/lib/labels.d.ts
ADDED
package/lib/labels.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DisplayLabels = exports.connectionTypeLabelByType = void 0;
|
|
4
|
+
const graphql_1 = require("./graphql/graphql");
|
|
5
|
+
exports.connectionTypeLabelByType = {
|
|
6
|
+
[graphql_1.ConnectionType.ActiveDirectory]: "Active Directory",
|
|
7
|
+
[graphql_1.ConnectionType.Aws]: "Amazon Web Services (Legacy)",
|
|
8
|
+
[graphql_1.ConnectionType.AwsSso]: "Amazon Web Services",
|
|
9
|
+
[graphql_1.ConnectionType.Custom]: "Custom Integration",
|
|
10
|
+
[graphql_1.ConnectionType.CustomConnector]: "Custom App Connector",
|
|
11
|
+
[graphql_1.ConnectionType.Duo]: "Duo",
|
|
12
|
+
[graphql_1.ConnectionType.Gcp]: "Google Cloud Platform",
|
|
13
|
+
[graphql_1.ConnectionType.GitHub]: "GitHub",
|
|
14
|
+
[graphql_1.ConnectionType.GitLab]: "GitLab",
|
|
15
|
+
[graphql_1.ConnectionType.GoogleGroups]: "Google Groups",
|
|
16
|
+
[graphql_1.ConnectionType.GoogleWorkspace]: "Google Workspace",
|
|
17
|
+
[graphql_1.ConnectionType.Ldap]: "LDAP",
|
|
18
|
+
[graphql_1.ConnectionType.Mongo]: "MongoDB Database",
|
|
19
|
+
[graphql_1.ConnectionType.MongoAtlas]: "MongoDB Atlas Database",
|
|
20
|
+
[graphql_1.ConnectionType.OktaDirectory]: "Okta Directory",
|
|
21
|
+
[graphql_1.ConnectionType.Opal]: "Opal",
|
|
22
|
+
[graphql_1.ConnectionType.Pagerduty]: "PagerDuty",
|
|
23
|
+
[graphql_1.ConnectionType.Tailscale]: "Tailscale",
|
|
24
|
+
[graphql_1.ConnectionType.Salesforce]: "Salesforce",
|
|
25
|
+
[graphql_1.ConnectionType.Workday]: "Workday",
|
|
26
|
+
[graphql_1.ConnectionType.Mysql]: "MySQL",
|
|
27
|
+
[graphql_1.ConnectionType.Mariadb]: "MariaDB",
|
|
28
|
+
[graphql_1.ConnectionType.Postgres]: "PostgreSQL",
|
|
29
|
+
[graphql_1.ConnectionType.Teleport]: "Teleport",
|
|
30
|
+
[graphql_1.ConnectionType.AzureAd]: "Azure",
|
|
31
|
+
[graphql_1.ConnectionType.Snowflake]: "Snowflake",
|
|
32
|
+
[graphql_1.ConnectionType.Databricks]: "Databricks",
|
|
33
|
+
};
|
|
34
|
+
exports.DisplayLabels = {
|
|
35
|
+
[graphql_1.EntityType.Resource]: "Resource",
|
|
36
|
+
[graphql_1.EntityType.Group]: "Group",
|
|
37
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { queryRequestableApps } from "./queries/apps";
|
|
2
|
+
export { queryRequestableAssets, queryCatalogItems } from "./queries/assets";
|
|
3
|
+
export { queryAssetRoles, queryAssociatedItems } from "./queries/roles";
|
|
4
|
+
export { queryRequestDefaults } from "./queries/request-defaults";
|
|
5
|
+
export { queryRequest, queryRequests } from "./queries/requests";
|
|
6
|
+
export { createRequest } from "./mutations/create-request";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRequest = exports.queryRequests = exports.queryRequest = exports.queryRequestDefaults = exports.queryAssociatedItems = exports.queryAssetRoles = exports.queryCatalogItems = exports.queryRequestableAssets = exports.queryRequestableApps = void 0;
|
|
4
|
+
// Query exports
|
|
5
|
+
var apps_1 = require("./queries/apps");
|
|
6
|
+
Object.defineProperty(exports, "queryRequestableApps", { enumerable: true, get: function () { return apps_1.queryRequestableApps; } });
|
|
7
|
+
var assets_1 = require("./queries/assets");
|
|
8
|
+
Object.defineProperty(exports, "queryRequestableAssets", { enumerable: true, get: function () { return assets_1.queryRequestableAssets; } });
|
|
9
|
+
Object.defineProperty(exports, "queryCatalogItems", { enumerable: true, get: function () { return assets_1.queryCatalogItems; } });
|
|
10
|
+
var roles_1 = require("./queries/roles");
|
|
11
|
+
Object.defineProperty(exports, "queryAssetRoles", { enumerable: true, get: function () { return roles_1.queryAssetRoles; } });
|
|
12
|
+
Object.defineProperty(exports, "queryAssociatedItems", { enumerable: true, get: function () { return roles_1.queryAssociatedItems; } });
|
|
13
|
+
var request_defaults_1 = require("./queries/request-defaults");
|
|
14
|
+
Object.defineProperty(exports, "queryRequestDefaults", { enumerable: true, get: function () { return request_defaults_1.queryRequestDefaults; } });
|
|
15
|
+
var requests_1 = require("./queries/requests");
|
|
16
|
+
Object.defineProperty(exports, "queryRequest", { enumerable: true, get: function () { return requests_1.queryRequest; } });
|
|
17
|
+
Object.defineProperty(exports, "queryRequests", { enumerable: true, get: function () { return requests_1.queryRequests; } });
|
|
18
|
+
// Mutation exports
|
|
19
|
+
var create_request_1 = require("./mutations/create-request");
|
|
20
|
+
Object.defineProperty(exports, "createRequest", { enumerable: true, get: function () { return create_request_1.createRequest; } });
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ApolloClient, NormalizedCacheObject } from "@apollo/client";
|
|
2
|
+
import type { Command } from "@oclif/core";
|
|
3
|
+
import type { RequestedGroupInput, RequestedResourceInput } from "../../../../graphql/graphql";
|
|
4
|
+
export declare function createRequest(cmd: Command, client: ApolloClient<NormalizedCacheObject>, requestedResources: RequestedResourceInput[], requestedGroups: RequestedGroupInput[], reason: string, durationInMinutes?: number): Promise<{
|
|
5
|
+
__typename?: "Request";
|
|
6
|
+
id: string;
|
|
7
|
+
status: import("../../../../graphql/graphql").RequestStatus;
|
|
8
|
+
} | undefined>;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRequest = createRequest;
|
|
4
|
+
const graphql_1 = require("../../../../graphql");
|
|
5
|
+
const CREATE_REQUEST_MUTATION = (0, graphql_1.graphql)(`
|
|
6
|
+
mutation CreateRequest(
|
|
7
|
+
$requestedResources: [RequestedResourceInput!]!
|
|
8
|
+
$requestedGroups: [RequestedGroupInput!]!
|
|
9
|
+
$reason: String!
|
|
10
|
+
$durationInMinutes: Int
|
|
11
|
+
) {
|
|
12
|
+
createRequest(
|
|
13
|
+
input: {
|
|
14
|
+
requestedResources: $requestedResources
|
|
15
|
+
requestedGroups: $requestedGroups
|
|
16
|
+
reason: $reason
|
|
17
|
+
durationInMinutes: $durationInMinutes
|
|
18
|
+
}
|
|
19
|
+
) {
|
|
20
|
+
... on CreateRequestResult {
|
|
21
|
+
request {
|
|
22
|
+
id
|
|
23
|
+
status
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
... on RequestDurationTooLargeError {
|
|
27
|
+
message
|
|
28
|
+
}
|
|
29
|
+
... on RequestRequiresUserAuthTokenForConnectionError {
|
|
30
|
+
message
|
|
31
|
+
}
|
|
32
|
+
... on NoReviewersSetForOwnerError {
|
|
33
|
+
message
|
|
34
|
+
ownerId
|
|
35
|
+
}
|
|
36
|
+
... on NoReviewersSetForResourceError {
|
|
37
|
+
message
|
|
38
|
+
resourceId
|
|
39
|
+
}
|
|
40
|
+
... on NoReviewersSetForGroupError {
|
|
41
|
+
message
|
|
42
|
+
groupId
|
|
43
|
+
}
|
|
44
|
+
... on NoManagerSetForRequestingUserError {
|
|
45
|
+
message
|
|
46
|
+
}
|
|
47
|
+
... on MfaInvalidError {
|
|
48
|
+
message
|
|
49
|
+
}
|
|
50
|
+
... on BulkRequestTooLargeError {
|
|
51
|
+
message
|
|
52
|
+
}
|
|
53
|
+
... on ItemCannotBeRequestedError {
|
|
54
|
+
message
|
|
55
|
+
}
|
|
56
|
+
... on UserCannotRequestAccessForTargetGroupError {
|
|
57
|
+
message
|
|
58
|
+
groupId
|
|
59
|
+
userId
|
|
60
|
+
}
|
|
61
|
+
... on GroupNestingNotAllowedError {
|
|
62
|
+
message
|
|
63
|
+
fromGroupId
|
|
64
|
+
toGroupId
|
|
65
|
+
}
|
|
66
|
+
... on TargetUserHasNestedAccessError {
|
|
67
|
+
message
|
|
68
|
+
groupIds
|
|
69
|
+
}
|
|
70
|
+
... on RequestReasonMissingError {
|
|
71
|
+
message
|
|
72
|
+
}
|
|
73
|
+
... on RequestFieldValueMissingError {
|
|
74
|
+
message
|
|
75
|
+
fieldName
|
|
76
|
+
}
|
|
77
|
+
... on LinkedGroupNotRequestableError {
|
|
78
|
+
message
|
|
79
|
+
sourceGroupId
|
|
80
|
+
groupBindingId
|
|
81
|
+
}
|
|
82
|
+
... on RequestReasonBelowMinLengthError {
|
|
83
|
+
message
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
`);
|
|
89
|
+
async function createRequest(cmd, client, requestedResources, requestedGroups, reason, durationInMinutes) {
|
|
90
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
91
|
+
try {
|
|
92
|
+
const resp = await client.mutate({
|
|
93
|
+
mutation: CREATE_REQUEST_MUTATION,
|
|
94
|
+
variables: {
|
|
95
|
+
requestedResources: requestedResources,
|
|
96
|
+
requestedGroups: requestedGroups,
|
|
97
|
+
reason: reason,
|
|
98
|
+
durationInMinutes: durationInMinutes,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
switch ((_a = resp.data) === null || _a === void 0 ? void 0 : _a.createRequest.__typename) {
|
|
102
|
+
case "CreateRequestResult":
|
|
103
|
+
return (_b = resp.data) === null || _b === void 0 ? void 0 : _b.createRequest.request;
|
|
104
|
+
case "RequestDurationTooLargeError":
|
|
105
|
+
cmd.log((_c = resp.data) === null || _c === void 0 ? void 0 : _c.createRequest.message);
|
|
106
|
+
break;
|
|
107
|
+
case "RequestRequiresUserAuthTokenForConnectionError":
|
|
108
|
+
cmd.log((_d = resp.data) === null || _d === void 0 ? void 0 : _d.createRequest.message);
|
|
109
|
+
break;
|
|
110
|
+
case "NoReviewersSetForOwnerError":
|
|
111
|
+
cmd.log((_e = resp.data) === null || _e === void 0 ? void 0 : _e.createRequest.message);
|
|
112
|
+
break;
|
|
113
|
+
case "NoReviewersSetForResourceError":
|
|
114
|
+
cmd.log((_f = resp.data) === null || _f === void 0 ? void 0 : _f.createRequest.message);
|
|
115
|
+
break;
|
|
116
|
+
case "NoReviewersSetForGroupError":
|
|
117
|
+
cmd.log((_g = resp.data) === null || _g === void 0 ? void 0 : _g.createRequest.message);
|
|
118
|
+
break;
|
|
119
|
+
case "NoManagerSetForRequestingUserError":
|
|
120
|
+
cmd.log((_h = resp.data) === null || _h === void 0 ? void 0 : _h.createRequest.message);
|
|
121
|
+
break;
|
|
122
|
+
case "MfaInvalidError":
|
|
123
|
+
cmd.log((_j = resp.data) === null || _j === void 0 ? void 0 : _j.createRequest.message);
|
|
124
|
+
break;
|
|
125
|
+
case "BulkRequestTooLargeError":
|
|
126
|
+
cmd.log((_k = resp.data) === null || _k === void 0 ? void 0 : _k.createRequest.message);
|
|
127
|
+
break;
|
|
128
|
+
case "ItemCannotBeRequestedError":
|
|
129
|
+
cmd.log((_l = resp.data) === null || _l === void 0 ? void 0 : _l.createRequest.message);
|
|
130
|
+
break;
|
|
131
|
+
case "UserCannotRequestAccessForTargetGroupError":
|
|
132
|
+
cmd.log((_m = resp.data) === null || _m === void 0 ? void 0 : _m.createRequest.message);
|
|
133
|
+
break;
|
|
134
|
+
case "GroupNestingNotAllowedError":
|
|
135
|
+
cmd.log((_o = resp.data) === null || _o === void 0 ? void 0 : _o.createRequest.message);
|
|
136
|
+
break;
|
|
137
|
+
case "TargetUserHasNestedAccessError":
|
|
138
|
+
cmd.log((_p = resp.data) === null || _p === void 0 ? void 0 : _p.createRequest.message);
|
|
139
|
+
break;
|
|
140
|
+
case "RequestReasonMissingError":
|
|
141
|
+
cmd.log((_q = resp.data) === null || _q === void 0 ? void 0 : _q.createRequest.message);
|
|
142
|
+
break;
|
|
143
|
+
case "RequestFieldValueMissingError":
|
|
144
|
+
cmd.log((_r = resp.data) === null || _r === void 0 ? void 0 : _r.createRequest.message);
|
|
145
|
+
break;
|
|
146
|
+
case "LinkedGroupNotRequestableError":
|
|
147
|
+
cmd.log((_s = resp.data) === null || _s === void 0 ? void 0 : _s.createRequest.message);
|
|
148
|
+
break;
|
|
149
|
+
case "RequestReasonBelowMinLengthError":
|
|
150
|
+
cmd.log((_t = resp.data) === null || _t === void 0 ? void 0 : _t.createRequest.message);
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
if (error instanceof Error || typeof error === "string") {
|
|
156
|
+
cmd.error(error);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ApolloClient, NormalizedCacheObject } from "@apollo/client";
|
|
2
|
+
import type { Command } from "@oclif/core";
|
|
3
|
+
import type { PromptChoice } from "../../types";
|
|
4
|
+
export declare function queryRequestableApps(cmd: Command, client: ApolloClient<NormalizedCacheObject>, input: string | undefined): Promise<PromptChoice[] | undefined>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryRequestableApps = queryRequestableApps;
|
|
4
|
+
const graphql_1 = require("../../../../graphql");
|
|
5
|
+
// TODO: add pagination ability from CLI. (Load more...) option
|
|
6
|
+
const GET_REQUESTABLE_APPS_QUERY = (0, graphql_1.graphql)(`
|
|
7
|
+
query GetRequestableAppsQuery($searchQuery: String) {
|
|
8
|
+
appsV2(
|
|
9
|
+
filters: {
|
|
10
|
+
access: REQUESTABLE
|
|
11
|
+
searchQuery: $searchQuery
|
|
12
|
+
}
|
|
13
|
+
) @connection(key: "paginated-app-dropdown") {
|
|
14
|
+
edges {
|
|
15
|
+
node {
|
|
16
|
+
id
|
|
17
|
+
displayName
|
|
18
|
+
... on Connection {
|
|
19
|
+
connectionType
|
|
20
|
+
}
|
|
21
|
+
... on Resource {
|
|
22
|
+
resourceType
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
pageInfo {
|
|
27
|
+
hasNextPage
|
|
28
|
+
hasPreviousPage
|
|
29
|
+
startCursor
|
|
30
|
+
endCursor
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
`);
|
|
35
|
+
async function queryRequestableApps(cmd, client, input) {
|
|
36
|
+
var _a, _b;
|
|
37
|
+
try {
|
|
38
|
+
const resp = await client.query({
|
|
39
|
+
query: GET_REQUESTABLE_APPS_QUERY,
|
|
40
|
+
variables: {
|
|
41
|
+
searchQuery: input || "",
|
|
42
|
+
},
|
|
43
|
+
fetchPolicy: "network-only", // to avoid caching
|
|
44
|
+
});
|
|
45
|
+
return (_b = (_a = resp === null || resp === void 0 ? void 0 : resp.data) === null || _a === void 0 ? void 0 : _a.appsV2) === null || _b === void 0 ? void 0 : _b.edges.map((edge) => {
|
|
46
|
+
let type = undefined;
|
|
47
|
+
switch (edge.node.__typename) {
|
|
48
|
+
case "Resource":
|
|
49
|
+
type = edge.node.resourceType;
|
|
50
|
+
break;
|
|
51
|
+
case "Connection":
|
|
52
|
+
type = edge.node.connectionType;
|
|
53
|
+
break;
|
|
54
|
+
default:
|
|
55
|
+
type = edge.node.__typename;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
message: `${edge.node.displayName} [${type}]`,
|
|
59
|
+
value: {
|
|
60
|
+
id: edge.node.id,
|
|
61
|
+
name: edge.node.displayName,
|
|
62
|
+
type: type,
|
|
63
|
+
toString: () => edge.node.displayName,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error instanceof Error || typeof error === "string") {
|
|
70
|
+
cmd.error(error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ApolloClient, ApolloQueryResult, NormalizedCacheObject } from "@apollo/client";
|
|
2
|
+
import type { Command } from "@oclif/core";
|
|
3
|
+
import type { GetCatalogItemQuery } from "../../../../graphql/graphql";
|
|
4
|
+
import { type PromptChoice } from "../../types";
|
|
5
|
+
export declare function queryRequestableAssets(cmd: Command, client: ApolloClient<NormalizedCacheObject>, appId: string, input: string | undefined): Promise<PromptChoice[] | undefined>;
|
|
6
|
+
export declare function queryCatalogItems(cmd: Command, client: ApolloClient<NormalizedCacheObject>, assetId: string): Promise<ApolloQueryResult<GetCatalogItemQuery>>;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryRequestableAssets = queryRequestableAssets;
|
|
4
|
+
exports.queryCatalogItems = queryCatalogItems;
|
|
5
|
+
const graphql_1 = require("../../../../graphql");
|
|
6
|
+
const types_1 = require("../../types");
|
|
7
|
+
const GET_ASSETS_QUERY = (0, graphql_1.graphql)(`
|
|
8
|
+
query PaginatedEntityDropdown(
|
|
9
|
+
$id: UUID!
|
|
10
|
+
$searchQuery: String
|
|
11
|
+
) {
|
|
12
|
+
app(id: $id) {
|
|
13
|
+
__typename
|
|
14
|
+
... on App {
|
|
15
|
+
id
|
|
16
|
+
items(
|
|
17
|
+
input: {
|
|
18
|
+
access: REQUESTABLE
|
|
19
|
+
searchQuery: $searchQuery
|
|
20
|
+
includeOnlyRequestable: true
|
|
21
|
+
}
|
|
22
|
+
) {
|
|
23
|
+
items {
|
|
24
|
+
key
|
|
25
|
+
resource {
|
|
26
|
+
id
|
|
27
|
+
name
|
|
28
|
+
}
|
|
29
|
+
group {
|
|
30
|
+
id
|
|
31
|
+
name
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
cursor
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
... on AppNotFoundError {
|
|
38
|
+
message
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
`);
|
|
43
|
+
async function queryRequestableAssets(cmd, client, appId, input) {
|
|
44
|
+
var _a, _b, _c, _d, _e, _f;
|
|
45
|
+
try {
|
|
46
|
+
const resp = await client.query({
|
|
47
|
+
query: GET_ASSETS_QUERY,
|
|
48
|
+
variables: {
|
|
49
|
+
id: appId || "",
|
|
50
|
+
searchQuery: input || "",
|
|
51
|
+
},
|
|
52
|
+
fetchPolicy: "network-only", // to avoid caching
|
|
53
|
+
});
|
|
54
|
+
// no fall through doesn't consider process.exit();
|
|
55
|
+
let x;
|
|
56
|
+
switch (resp.data.app.__typename) {
|
|
57
|
+
case "App":
|
|
58
|
+
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) => {
|
|
59
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
60
|
+
const name = ((_a = item.resource) === null || _a === void 0 ? void 0 : _a.name) || ((_b = item.group) === null || _b === void 0 ? void 0 : _b.name);
|
|
61
|
+
const id = ((_c = item.resource) === null || _c === void 0 ? void 0 : _c.id) || ((_d = item.group) === null || _d === void 0 ? void 0 : _d.id);
|
|
62
|
+
const type = ((_e = item.resource) === null || _e === void 0 ? void 0 : _e.__typename) || ((_f = item.group) === null || _f === void 0 ? void 0 : _f.__typename);
|
|
63
|
+
return {
|
|
64
|
+
message: `${name} [${type}]`,
|
|
65
|
+
value: {
|
|
66
|
+
name: name || "",
|
|
67
|
+
id: id || "",
|
|
68
|
+
type: (0, types_1.entityTypeFromString)(((_g = item.resource) === null || _g === void 0 ? void 0 : _g.__typename) || ((_h = item.group) === null || _h === void 0 ? void 0 : _h.__typename)),
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
case "AppNotFoundError":
|
|
73
|
+
x = cmd.error((_f = (_e = resp.data) === null || _e === void 0 ? void 0 : _e.app) === null || _f === void 0 ? void 0 : _f.message);
|
|
74
|
+
break;
|
|
75
|
+
default:
|
|
76
|
+
cmd.error(resp.error || "Unknown error occurred.");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (error instanceof Error || typeof error === "string") {
|
|
81
|
+
cmd.error(error);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const CATALOG_ITEM = (0, graphql_1.graphql)(`
|
|
86
|
+
query GetCatalogItem($uuid: UUID!) {
|
|
87
|
+
catalogItem(id: $uuid) {
|
|
88
|
+
__typename
|
|
89
|
+
... on Connection {
|
|
90
|
+
id
|
|
91
|
+
displayName
|
|
92
|
+
}
|
|
93
|
+
... on Resource {
|
|
94
|
+
id
|
|
95
|
+
displayName
|
|
96
|
+
connection {
|
|
97
|
+
id
|
|
98
|
+
displayName
|
|
99
|
+
}
|
|
100
|
+
accessLevels{
|
|
101
|
+
accessLevelName
|
|
102
|
+
accessLevelRemoteId
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
...on Group {
|
|
106
|
+
id
|
|
107
|
+
name
|
|
108
|
+
connection {
|
|
109
|
+
id
|
|
110
|
+
displayName
|
|
111
|
+
}
|
|
112
|
+
accessLevels{
|
|
113
|
+
accessLevelName
|
|
114
|
+
accessLevelRemoteId
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
... on UserFacingError {
|
|
118
|
+
message
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
`);
|
|
123
|
+
async function queryCatalogItems(cmd, client, assetId) {
|
|
124
|
+
try {
|
|
125
|
+
return await client.query({
|
|
126
|
+
query: CATALOG_ITEM,
|
|
127
|
+
variables: {
|
|
128
|
+
uuid: assetId || "",
|
|
129
|
+
},
|
|
130
|
+
fetchPolicy: "network-only", // to avoid caching
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
catch (_a) {
|
|
134
|
+
cmd.error("Unknown error retreiving catalog items");
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ApolloClient, NormalizedCacheObject } from "@apollo/client";
|
|
2
|
+
import type { Command } from "@oclif/core";
|
|
3
|
+
import type { RequestConfigurationGroupInput, RequestConfigurationResourceInput } from "../../../../graphql/graphql";
|
|
4
|
+
import type { RequestDefaults } from "../../types";
|
|
5
|
+
export declare function queryRequestDefaults(cmd: Command, client: ApolloClient<NormalizedCacheObject>, requestedResources: RequestConfigurationResourceInput[], requestedGroups: RequestConfigurationGroupInput[]): Promise<RequestDefaults | undefined>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryRequestDefaults = queryRequestDefaults;
|
|
4
|
+
const graphql_1 = require("../../../../graphql");
|
|
5
|
+
const REQUEST_DEFAULTS_QUERY = (0, graphql_1.graphql)(`
|
|
6
|
+
query RequestDefaults(
|
|
7
|
+
$requestedResources: [RequestConfigurationResourceInput!]!
|
|
8
|
+
$requestedGroups: [RequestConfigurationGroupInput!]!
|
|
9
|
+
) {
|
|
10
|
+
requestDefaults(input: {
|
|
11
|
+
requestedResources: $requestedResources,
|
|
12
|
+
requestedGroups: $requestedGroups,
|
|
13
|
+
}
|
|
14
|
+
) {
|
|
15
|
+
... on RequestDefaults {
|
|
16
|
+
durationOptions {
|
|
17
|
+
durationInMinutes
|
|
18
|
+
label
|
|
19
|
+
}
|
|
20
|
+
recommendedDurationInMinutes
|
|
21
|
+
defaultDurationInMinutes
|
|
22
|
+
maxDurationInMinutes
|
|
23
|
+
requireSupportTicket
|
|
24
|
+
reasonOptional
|
|
25
|
+
requesterIsAdmin
|
|
26
|
+
messages {
|
|
27
|
+
entityId
|
|
28
|
+
level
|
|
29
|
+
code
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}`);
|
|
34
|
+
async function queryRequestDefaults(cmd, client, requestedResources, requestedGroups) {
|
|
35
|
+
try {
|
|
36
|
+
const resp = await client.query({
|
|
37
|
+
query: REQUEST_DEFAULTS_QUERY,
|
|
38
|
+
variables: {
|
|
39
|
+
requestedResources: requestedResources,
|
|
40
|
+
requestedGroups: requestedGroups,
|
|
41
|
+
},
|
|
42
|
+
fetchPolicy: "network-only", // to avoid caching
|
|
43
|
+
});
|
|
44
|
+
return resp.data.requestDefaults;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error instanceof Error || typeof error === "string") {
|
|
48
|
+
cmd.error(error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ApolloClient, NormalizedCacheObject } from "@apollo/client";
|
|
2
|
+
export declare const queryRequest: (client: ApolloClient<NormalizedCacheObject>, requestId: string) => Promise<import("@apollo/client").ApolloQueryResult<import("../../../../graphql/graphql").GetRequestQuery>>;
|
|
3
|
+
export declare const queryRequests: (client: ApolloClient<NormalizedCacheObject>, pageSize: number, showPendingOnly: boolean) => Promise<import("@apollo/client").ApolloQueryResult<import("../../../../graphql/graphql").GetRequestsQuery>>;
|
|
4
|
+
export declare const queryBundle: (client: ApolloClient<NormalizedCacheObject>, bundleId: string) => Promise<import("@apollo/client").ApolloQueryResult<import("../../../../graphql/graphql").GetBundleQuery>>;
|