@forge/cli 12.2.0-next.5-experimental-255e232 → 12.3.0-next.0-experimental-47556b0
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/CHANGELOG.md +202 -9
- package/README.md +0 -8
- package/npm-shrinkwrap.json +54 -54
- package/out/command-line/controller/install-controller.d.ts +1 -1
- package/out/command-line/controller/install-controller.d.ts.map +1 -1
- package/out/command-line/controller/install-controller.js +6 -7
- package/out/command-line/controller/install-controller.js.map +1 -1
- package/out/command-line/dependency-injection.d.ts +6 -1
- package/out/command-line/dependency-injection.d.ts.map +1 -1
- package/out/command-line/dependency-injection.js +11 -1
- package/out/command-line/dependency-injection.js.map +1 -1
- package/out/command-line/index.d.ts.map +1 -1
- package/out/command-line/index.js +2 -0
- package/out/command-line/index.js.map +1 -1
- package/out/command-line/register-app-commands.d.ts +3 -2
- package/out/command-line/register-app-commands.d.ts.map +1 -1
- package/out/command-line/register-app-commands.js +42 -6
- package/out/command-line/register-app-commands.js.map +1 -1
- package/out/command-line/register-deployment-commands.d.ts +2 -1
- package/out/command-line/register-deployment-commands.d.ts.map +1 -1
- package/out/command-line/register-deployment-commands.js +38 -3
- package/out/command-line/register-deployment-commands.js.map +1 -1
- package/out/command-line/register-show-commands.d.ts +3 -0
- package/out/command-line/register-show-commands.d.ts.map +1 -0
- package/out/command-line/register-show-commands.js +141 -0
- package/out/command-line/register-show-commands.js.map +1 -0
- package/out/containers/container-command.d.ts +5 -1
- package/out/containers/container-command.d.ts.map +1 -1
- package/out/containers/container-command.js +45 -1
- package/out/containers/container-command.js.map +1 -1
- package/out/deployments/deployments-graphql-client.d.ts +9 -0
- package/out/deployments/deployments-graphql-client.d.ts.map +1 -0
- package/out/deployments/deployments-graphql-client.js +73 -0
- package/out/deployments/deployments-graphql-client.js.map +1 -0
- package/out/devspace/devspace-service.d.ts +16 -0
- package/out/devspace/devspace-service.d.ts.map +1 -0
- package/out/devspace/devspace-service.js +103 -0
- package/out/devspace/devspace-service.js.map +1 -0
- package/out/devspace/graphql-client.d.ts +39 -0
- package/out/devspace/graphql-client.d.ts.map +1 -0
- package/out/devspace/graphql-client.js +116 -0
- package/out/devspace/graphql-client.js.map +1 -0
- package/out/devspace/index.d.ts +3 -0
- package/out/devspace/index.d.ts.map +1 -0
- package/out/devspace/index.js +6 -0
- package/out/devspace/index.js.map +1 -0
- package/out/service/deployment-service.d.ts +37 -0
- package/out/service/deployment-service.d.ts.map +1 -0
- package/out/service/deployment-service.js +24 -0
- package/out/service/deployment-service.js.map +1 -0
- package/package.json +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ContainerCommand = exports.UnexpectedAppContainerRegistryLoginError = void 0;
|
|
3
|
+
exports.ContainerCommand = exports.UnexpectedAppContainerServicesError = exports.UnexpectedAppContainerRegistryLoginError = void 0;
|
|
4
4
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
5
|
class UnexpectedAppContainerRegistryLoginError extends Error {
|
|
6
6
|
constructor() {
|
|
@@ -8,6 +8,12 @@ class UnexpectedAppContainerRegistryLoginError extends Error {
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.UnexpectedAppContainerRegistryLoginError = UnexpectedAppContainerRegistryLoginError;
|
|
11
|
+
class UnexpectedAppContainerServicesError extends Error {
|
|
12
|
+
constructor() {
|
|
13
|
+
super('Unable to retrieve app container services');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.UnexpectedAppContainerServicesError = UnexpectedAppContainerServicesError;
|
|
11
17
|
class ContainerCommand {
|
|
12
18
|
client;
|
|
13
19
|
getAppConfig;
|
|
@@ -65,6 +71,44 @@ class ContainerCommand {
|
|
|
65
71
|
});
|
|
66
72
|
return appContainers ?? [];
|
|
67
73
|
}
|
|
74
|
+
async getContainerServiceDetails(environmentKey, serviceNames) {
|
|
75
|
+
const { id: appId } = await this.getAppConfig();
|
|
76
|
+
const query = `
|
|
77
|
+
query forge_cli_appContainerServices($appId: ID!, $environmentKey: String!, $serviceNames: [String!]!) {
|
|
78
|
+
appContainerServices(appId: $appId, environmentKey: $environmentKey, serviceNames: $serviceNames) {
|
|
79
|
+
services {
|
|
80
|
+
key
|
|
81
|
+
runningCount
|
|
82
|
+
pendingCount
|
|
83
|
+
maxCount
|
|
84
|
+
minCount
|
|
85
|
+
serviceStatus
|
|
86
|
+
versionStatus
|
|
87
|
+
createdAt
|
|
88
|
+
updatedAt
|
|
89
|
+
containers {
|
|
90
|
+
key
|
|
91
|
+
instances {
|
|
92
|
+
id
|
|
93
|
+
createdAt
|
|
94
|
+
healthStatus
|
|
95
|
+
containerStatus
|
|
96
|
+
imageURI
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}`;
|
|
102
|
+
const { appContainerServices } = await this.client.query(query, {
|
|
103
|
+
appId,
|
|
104
|
+
environmentKey,
|
|
105
|
+
serviceNames
|
|
106
|
+
});
|
|
107
|
+
if (!appContainerServices) {
|
|
108
|
+
throw new UnexpectedAppContainerServicesError();
|
|
109
|
+
}
|
|
110
|
+
return appContainerServices;
|
|
111
|
+
}
|
|
68
112
|
async deleteContainer(key) {
|
|
69
113
|
const { id: appId } = await this.getAppConfig();
|
|
70
114
|
const mutation = `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-command.js","sourceRoot":"","sources":["../../src/containers/container-command.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"container-command.js","sourceRoot":"","sources":["../../src/containers/container-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { GraphQLClient } from '@forge/cli-shared';
|
|
2
|
+
import { Deployment, DeploymentFilterOptions, IntervalInput, ListAppDeploymentsClient } from '../service/deployment-service';
|
|
3
|
+
export declare class DeploymentsGraphqlClient implements ListAppDeploymentsClient {
|
|
4
|
+
private readonly graphqlClient;
|
|
5
|
+
constructor(graphqlClient: GraphQLClient);
|
|
6
|
+
listDeployments(appId: string, interval: IntervalInput, filter?: DeploymentFilterOptions): Promise<Deployment[]>;
|
|
7
|
+
private getAllDeployments;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=deployments-graphql-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments-graphql-client.d.ts","sourceRoot":"","sources":["../../src/deployments/deployments-graphql-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,aAAa,EACb,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,qBAAa,wBAAyB,YAAW,wBAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAE5C,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,MAAM,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,UAAU,EAAE,CAAC;YAKV,iBAAiB;CAqEhC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeploymentsGraphqlClient = void 0;
|
|
4
|
+
class DeploymentsGraphqlClient {
|
|
5
|
+
graphqlClient;
|
|
6
|
+
constructor(graphqlClient) {
|
|
7
|
+
this.graphqlClient = graphqlClient;
|
|
8
|
+
}
|
|
9
|
+
async listDeployments(appId, interval, filter) {
|
|
10
|
+
const deployments = await this.getAllDeployments(appId, interval, filter);
|
|
11
|
+
return deployments;
|
|
12
|
+
}
|
|
13
|
+
async getAllDeployments(appId, interval, filter) {
|
|
14
|
+
const query = `
|
|
15
|
+
query getAppDeployments($appId: ID!, $interval: IntervalInput!, $first: Int, $after: String) {
|
|
16
|
+
app(id: $appId) {
|
|
17
|
+
deployments(interval: $interval, first: $first, after: $after) @optIn(to: ["xls-deployments-by-interval", "xls-deployments-major-version"]) {
|
|
18
|
+
nodes {
|
|
19
|
+
status
|
|
20
|
+
environmentKey
|
|
21
|
+
buildTag
|
|
22
|
+
majorVersion {
|
|
23
|
+
version
|
|
24
|
+
}
|
|
25
|
+
createdBy {
|
|
26
|
+
accountId
|
|
27
|
+
accountStatus
|
|
28
|
+
name
|
|
29
|
+
}
|
|
30
|
+
createdAt
|
|
31
|
+
}
|
|
32
|
+
pageInfo {
|
|
33
|
+
hasNextPage
|
|
34
|
+
endCursor
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
const output = [];
|
|
41
|
+
let cursor = filter?.after;
|
|
42
|
+
let hasNext = true;
|
|
43
|
+
do {
|
|
44
|
+
const { app } = await this.graphqlClient.query(query, {
|
|
45
|
+
appId,
|
|
46
|
+
interval,
|
|
47
|
+
first: filter?.first || 100,
|
|
48
|
+
after: cursor
|
|
49
|
+
});
|
|
50
|
+
if (!app?.deployments?.nodes) {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
const { nodes, pageInfo } = app.deployments;
|
|
54
|
+
for (const node of nodes) {
|
|
55
|
+
if (node) {
|
|
56
|
+
output.push({
|
|
57
|
+
environmentKey: node.environmentKey,
|
|
58
|
+
status: node.status,
|
|
59
|
+
buildTag: node.buildTag,
|
|
60
|
+
majorVersion: node.majorVersion,
|
|
61
|
+
createdBy: node.createdBy,
|
|
62
|
+
createdAt: node.createdAt
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
cursor = pageInfo.endCursor;
|
|
67
|
+
hasNext = pageInfo.hasNextPage;
|
|
68
|
+
} while (hasNext && cursor);
|
|
69
|
+
return output;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.DeploymentsGraphqlClient = DeploymentsGraphqlClient;
|
|
73
|
+
//# sourceMappingURL=deployments-graphql-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments-graphql-client.js","sourceRoot":"","sources":["../../src/deployments/deployments-graphql-client.ts"],"names":[],"mappings":";;;AASA,MAAa,wBAAwB;IACN;IAA7B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,eAAe,CAC1B,KAAa,EACb,QAAuB,EACvB,MAAgC;QAEhC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1E,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,KAAa,EACb,QAAuB,EACvB,MAAgC;QAEhC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;KAyBb,CAAC;QAEF,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC;QAC3B,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,GAAG;YACD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE;gBACpD,KAAK;gBACL,QAAQ;gBACR,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG;gBAC3B,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE;gBAC5B,MAAM;aACP;YAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC;YAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,IAAI,EAAE;oBACR,MAAM,CAAC,IAAI,CAAC;wBACV,cAAc,EAAE,IAAI,CAAC,cAAc;wBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;qBAC1B,CAAC,CAAC;iBACJ;aACF;YAED,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC5B,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC;SAChC,QAAQ,OAAO,IAAI,MAAM,EAAE;QAE5B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAjFD,4DAiFC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CommandLineUI } from '@forge/cli-shared';
|
|
2
|
+
import { DevSpaceClient, DevSpaceDetails, DevSpaceCreateResult } from './graphql-client';
|
|
3
|
+
export declare class DevSpaceService {
|
|
4
|
+
private readonly devSpaceClient;
|
|
5
|
+
constructor(devSpaceClient: DevSpaceClient);
|
|
6
|
+
private fetchAllDevSpaces;
|
|
7
|
+
private doesDevSpaceAlreadyExists;
|
|
8
|
+
getDevSpaces(ui: CommandLineUI): Promise<DevSpaceDetails[]>;
|
|
9
|
+
selectDevSpace(ui: CommandLineUI, devSpaces: DevSpaceDetails[]): Promise<{
|
|
10
|
+
devSpace: DevSpaceDetails;
|
|
11
|
+
isNewlyCreated: boolean;
|
|
12
|
+
} | null>;
|
|
13
|
+
createDevSpaceFlow(ui: CommandLineUI): Promise<DevSpaceCreateResult | null>;
|
|
14
|
+
private promptForNameAndCreate;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=devspace-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devspace-service.d.ts","sourceRoot":"","sources":["../../src/devspace/devspace-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAQ,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMzF,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;YAE7C,iBAAiB;IAU/B,OAAO,CAAC,yBAAyB;IAKpB,YAAY,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAI3D,cAAc,CACzB,EAAE,EAAE,aAAa,EACjB,SAAS,EAAE,eAAe,EAAE,GAC3B,OAAO,CAAC;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IA2C5D,kBAAkB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAS1E,sBAAsB;CAiCrC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DevSpaceService = void 0;
|
|
4
|
+
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
|
+
const DEV_SPACE_ERROR_MESSAGES = {
|
|
6
|
+
NAME_ALREADY_EXISTS: 'Developer space with this name already exists'
|
|
7
|
+
};
|
|
8
|
+
class DevSpaceService {
|
|
9
|
+
devSpaceClient;
|
|
10
|
+
constructor(devSpaceClient) {
|
|
11
|
+
this.devSpaceClient = devSpaceClient;
|
|
12
|
+
}
|
|
13
|
+
async fetchAllDevSpaces() {
|
|
14
|
+
const devSpaceIds = await this.devSpaceClient.getDevSpacesWithLinkingAccess();
|
|
15
|
+
if (!devSpaceIds || devSpaceIds.length === 0) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
return await this.devSpaceClient.getDevSpaceDetails(devSpaceIds);
|
|
19
|
+
}
|
|
20
|
+
doesDevSpaceAlreadyExists(error) {
|
|
21
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
22
|
+
return errorMessage.includes(DEV_SPACE_ERROR_MESSAGES.NAME_ALREADY_EXISTS);
|
|
23
|
+
}
|
|
24
|
+
async getDevSpaces(ui) {
|
|
25
|
+
return await ui.displayTemporaryMessage(() => this.fetchAllDevSpaces(), cli_shared_1.Text.devSpace.fetching);
|
|
26
|
+
}
|
|
27
|
+
async selectDevSpace(ui, devSpaces) {
|
|
28
|
+
try {
|
|
29
|
+
if (devSpaces.length === 0) {
|
|
30
|
+
ui.info(cli_shared_1.Text.devSpace.noSpacesFound(cli_shared_1.Text.devSpace.documentationLink));
|
|
31
|
+
const created = await this.createDevSpaceFlow(ui);
|
|
32
|
+
if (created) {
|
|
33
|
+
return { devSpace: { id: created.id, name: created.name }, isNewlyCreated: true };
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const choices = devSpaces.map((ds) => ds.name);
|
|
38
|
+
choices.push(cli_shared_1.Text.devSpace.createNewOption);
|
|
39
|
+
const selectedName = await ui.promptForList(cli_shared_1.Text.devSpace.selectPrompt, choices);
|
|
40
|
+
if (selectedName === cli_shared_1.Text.devSpace.createNewOption) {
|
|
41
|
+
ui.info(cli_shared_1.Text.devSpace.createNewSpaceInfo(cli_shared_1.Text.devSpace.documentationLink));
|
|
42
|
+
ui.emptyLine();
|
|
43
|
+
try {
|
|
44
|
+
const created = await this.createDevSpaceFlow(ui);
|
|
45
|
+
if (created) {
|
|
46
|
+
return { devSpace: { id: created.id, name: created.name }, isNewlyCreated: true };
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
52
|
+
ui.error(new Error(cli_shared_1.Text.devSpace.error.create(errorMessage)));
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const selectedDevSpace = devSpaces.find((ds) => ds.name === selectedName);
|
|
57
|
+
if (!selectedDevSpace) {
|
|
58
|
+
throw new Error(cli_shared_1.Text.devSpace.error.selectedNotFound);
|
|
59
|
+
}
|
|
60
|
+
return { devSpace: selectedDevSpace, isNewlyCreated: false };
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
64
|
+
ui.error(new Error(cli_shared_1.Text.devSpace.error.fetchOrSelect(errorMessage)));
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async createDevSpaceFlow(ui) {
|
|
69
|
+
const cont = await ui.confirm(cli_shared_1.Text.devSpace.createContinuePrompt);
|
|
70
|
+
if (!cont) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return await this.promptForNameAndCreate(ui);
|
|
74
|
+
}
|
|
75
|
+
async promptForNameAndCreate(ui, isRetry = false) {
|
|
76
|
+
if (isRetry) {
|
|
77
|
+
ui.info(cli_shared_1.Text.devSpace.error.nameAlreadyExists);
|
|
78
|
+
ui.emptyLine();
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
ui.info(cli_shared_1.Text.devSpace.createMessage);
|
|
82
|
+
}
|
|
83
|
+
const name = await ui.promptForText(cli_shared_1.Text.devSpace.createPrompt);
|
|
84
|
+
if (!name || !name.trim()) {
|
|
85
|
+
ui.info(cli_shared_1.Text.devSpace.nameRequired);
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
ui.emptyLine();
|
|
89
|
+
ui.clearSpinner();
|
|
90
|
+
try {
|
|
91
|
+
const result = await ui.displayProgress(() => this.devSpaceClient.createDevSpace({ name: name.trim() }), cli_shared_1.Text.devSpace.createInProgress, (result) => cli_shared_1.Text.devSpace.createdAndContributing(result.name));
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (this.doesDevSpaceAlreadyExists(error)) {
|
|
96
|
+
return await this.promptForNameAndCreate(ui, true);
|
|
97
|
+
}
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.DevSpaceService = DevSpaceService;
|
|
103
|
+
//# sourceMappingURL=devspace-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devspace-service.js","sourceRoot":"","sources":["../../src/devspace/devspace-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { GraphQLClient } from '@forge/cli-shared';
|
|
2
|
+
export interface DevSpaceDetails {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
export interface DevSpaceBulkResult {
|
|
7
|
+
developerSpaceId: string;
|
|
8
|
+
success: boolean;
|
|
9
|
+
details?: {
|
|
10
|
+
name: string;
|
|
11
|
+
logo?: string;
|
|
12
|
+
};
|
|
13
|
+
error?: {
|
|
14
|
+
code: string;
|
|
15
|
+
message: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export interface DevConsoleCreateDeveloperSpaceInput {
|
|
19
|
+
name: string;
|
|
20
|
+
}
|
|
21
|
+
export interface DevSpaceCreateResult {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
}
|
|
25
|
+
export interface DevSpaceClient {
|
|
26
|
+
getDevSpacesWithLinkingAccess(): Promise<string[]>;
|
|
27
|
+
getDevSpaceDetails(devSpaceIds: string[]): Promise<DevSpaceDetails[]>;
|
|
28
|
+
getDevSpaceDetailsBulk(devSpaceIds: string[]): Promise<DevSpaceBulkResult[]>;
|
|
29
|
+
createDevSpace(input: DevConsoleCreateDeveloperSpaceInput): Promise<DevSpaceCreateResult>;
|
|
30
|
+
}
|
|
31
|
+
export declare class DevSpaceGraphQLClient implements DevSpaceClient {
|
|
32
|
+
private readonly graphqlClient;
|
|
33
|
+
constructor(graphqlClient: GraphQLClient);
|
|
34
|
+
getDevSpacesWithLinkingAccess(): Promise<string[]>;
|
|
35
|
+
getDevSpaceDetails(devSpaceIds: string[]): Promise<DevSpaceDetails[]>;
|
|
36
|
+
getDevSpaceDetailsBulk(devSpaceIds: string[]): Promise<DevSpaceBulkResult[]>;
|
|
37
|
+
createDevSpace(input: DevConsoleCreateDeveloperSpaceInput): Promise<DevSpaceCreateResult>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=graphql-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../../src/devspace/graphql-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAwB,MAAM,mBAAmB,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,6BAA6B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACtE,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC7E,cAAc,CAAC,KAAK,EAAE,mCAAmC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC3F;AAED,qBAAa,qBAAsB,YAAW,cAAc;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAE5C,6BAA6B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoBlD,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4BrE,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmC5E,cAAc,CAAC,KAAK,EAAE,mCAAmC,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA+CvG"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DevSpaceGraphQLClient = void 0;
|
|
4
|
+
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
|
+
class DevSpaceGraphQLClient {
|
|
6
|
+
graphqlClient;
|
|
7
|
+
constructor(graphqlClient) {
|
|
8
|
+
this.graphqlClient = graphqlClient;
|
|
9
|
+
}
|
|
10
|
+
async getDevSpacesWithLinkingAccess() {
|
|
11
|
+
const query = `
|
|
12
|
+
query GetDevSpaceWithLinkingAccess {
|
|
13
|
+
ecosystem {
|
|
14
|
+
devConsole {
|
|
15
|
+
getDeveloperSpaceWithLinkingAccess
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
const result = await this.graphqlClient.query(query, {});
|
|
21
|
+
const devSpaceIds = result?.ecosystem?.devConsole?.getDeveloperSpaceWithLinkingAccess;
|
|
22
|
+
if (!devSpaceIds || !Array.isArray(devSpaceIds)) {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
return devSpaceIds;
|
|
26
|
+
}
|
|
27
|
+
async getDevSpaceDetails(devSpaceIds) {
|
|
28
|
+
const batchSize = 10;
|
|
29
|
+
const batches = [];
|
|
30
|
+
for (let i = 0; i < devSpaceIds.length; i += batchSize) {
|
|
31
|
+
batches.push(devSpaceIds.slice(i, i + batchSize));
|
|
32
|
+
}
|
|
33
|
+
const batchResults = await Promise.all(batches.map((batch) => this.getDevSpaceDetailsBulk(batch)));
|
|
34
|
+
const devSpaceDetails = [];
|
|
35
|
+
for (const results of batchResults) {
|
|
36
|
+
for (const result of results) {
|
|
37
|
+
if (result.success && result.details) {
|
|
38
|
+
devSpaceDetails.push({
|
|
39
|
+
id: result.developerSpaceId,
|
|
40
|
+
name: result.details.name
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return devSpaceDetails;
|
|
46
|
+
}
|
|
47
|
+
async getDevSpaceDetailsBulk(devSpaceIds) {
|
|
48
|
+
const query = `
|
|
49
|
+
query GetDevSpaceDetails($devSpaceIds: [String!]!) {
|
|
50
|
+
ecosystem {
|
|
51
|
+
devConsole {
|
|
52
|
+
getDeveloperSpaceDetails(developerSpaceIds: $devSpaceIds) {
|
|
53
|
+
results {
|
|
54
|
+
developerSpaceId
|
|
55
|
+
success
|
|
56
|
+
details {
|
|
57
|
+
name
|
|
58
|
+
}
|
|
59
|
+
error {
|
|
60
|
+
code
|
|
61
|
+
message
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
const result = await this.graphqlClient.query(query, {
|
|
70
|
+
devSpaceIds: devSpaceIds
|
|
71
|
+
});
|
|
72
|
+
const bulkResult = result?.ecosystem?.devConsole?.getDeveloperSpaceDetails;
|
|
73
|
+
if (!bulkResult || !bulkResult.results || !Array.isArray(bulkResult.results)) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
return bulkResult.results;
|
|
77
|
+
}
|
|
78
|
+
async createDevSpace(input) {
|
|
79
|
+
const mutation = `
|
|
80
|
+
mutation CreateDeveloperSpace($input: DevConsoleCreateDeveloperSpaceInput!) {
|
|
81
|
+
ecosystem {
|
|
82
|
+
devConsole {
|
|
83
|
+
createDeveloperSpace(input: $input) {
|
|
84
|
+
devSpace {
|
|
85
|
+
id
|
|
86
|
+
name
|
|
87
|
+
}
|
|
88
|
+
success
|
|
89
|
+
errors {
|
|
90
|
+
message
|
|
91
|
+
extensions {
|
|
92
|
+
statusCode
|
|
93
|
+
errorType
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
`;
|
|
101
|
+
const { response: { ecosystem: { devConsole: { createDeveloperSpace: { devSpace, success, errors } } } }, requestId } = await this.graphqlClient.mutate(mutation, {
|
|
102
|
+
input
|
|
103
|
+
});
|
|
104
|
+
const error = (0, cli_shared_1.getError)(errors);
|
|
105
|
+
if (!success) {
|
|
106
|
+
throw new cli_shared_1.GraphQlMutationError(`${error.message} (requestId: ${requestId || 'unknown'})`, {
|
|
107
|
+
requestId,
|
|
108
|
+
code: error.code,
|
|
109
|
+
statusCode: error.statusCode
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return devSpace;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.DevSpaceGraphQLClient = DevSpaceGraphQLClient;
|
|
116
|
+
//# sourceMappingURL=graphql-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-client.js","sourceRoot":"","sources":["../../src/devspace/graphql-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/devspace/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./graphql-client"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./devspace-service"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devspace/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,6DAAmC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AppConfigProvider } from '@forge/cli-shared';
|
|
2
|
+
export interface Deployment {
|
|
3
|
+
environmentKey: string;
|
|
4
|
+
status: string;
|
|
5
|
+
buildTag?: string;
|
|
6
|
+
majorVersion?: {
|
|
7
|
+
version: string;
|
|
8
|
+
};
|
|
9
|
+
createdBy?: {
|
|
10
|
+
accountId: string;
|
|
11
|
+
accountStatus: string;
|
|
12
|
+
name: string;
|
|
13
|
+
};
|
|
14
|
+
createdAt: string;
|
|
15
|
+
}
|
|
16
|
+
export interface AppDeploymentsList {
|
|
17
|
+
deployments: Deployment[];
|
|
18
|
+
}
|
|
19
|
+
export interface DeploymentFilterOptions {
|
|
20
|
+
environmentKey?: string;
|
|
21
|
+
first?: number;
|
|
22
|
+
after?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ListAppDeploymentsClient {
|
|
25
|
+
listDeployments(appId: string, interval: IntervalInput, filter?: DeploymentFilterOptions): Promise<Deployment[]>;
|
|
26
|
+
}
|
|
27
|
+
export interface IntervalInput {
|
|
28
|
+
startTime?: string;
|
|
29
|
+
endTime?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class DeploymentService {
|
|
32
|
+
private readonly getAppConfig;
|
|
33
|
+
private readonly listDeploymentsClient;
|
|
34
|
+
constructor(getAppConfig: AppConfigProvider, listDeploymentsClient: ListAppDeploymentsClient);
|
|
35
|
+
listAppDeployments(interval?: IntervalInput, filter?: DeploymentFilterOptions): Promise<AppDeploymentsList>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=deployment-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-service.d.ts","sourceRoot":"","sources":["../../src/service/deployment-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAClH;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBADrB,YAAY,EAAE,iBAAiB,EAC/B,qBAAqB,EAAE,wBAAwB;IAGrD,kBAAkB,CAC7B,QAAQ,CAAC,EAAE,aAAa,EACxB,MAAM,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,kBAAkB,CAAC;CAe/B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeploymentService = void 0;
|
|
4
|
+
class DeploymentService {
|
|
5
|
+
getAppConfig;
|
|
6
|
+
listDeploymentsClient;
|
|
7
|
+
constructor(getAppConfig, listDeploymentsClient) {
|
|
8
|
+
this.getAppConfig = getAppConfig;
|
|
9
|
+
this.listDeploymentsClient = listDeploymentsClient;
|
|
10
|
+
}
|
|
11
|
+
async listAppDeployments(interval, filter) {
|
|
12
|
+
const { id: appId } = await this.getAppConfig();
|
|
13
|
+
const defaultInterval = interval
|
|
14
|
+
? interval
|
|
15
|
+
: {
|
|
16
|
+
startTime: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
|
|
17
|
+
endTime: new Date().toISOString().split('T')[0]
|
|
18
|
+
};
|
|
19
|
+
const deployments = await this.listDeploymentsClient.listDeployments(appId, defaultInterval, filter);
|
|
20
|
+
return { deployments };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.DeploymentService = DeploymentService;
|
|
24
|
+
//# sourceMappingURL=deployment-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-service.js","sourceRoot":"","sources":["../../src/service/deployment-service.ts"],"names":[],"mappings":";;;AAoCA,MAAa,iBAAiB;IAET;IACA;IAFnB,YACmB,YAA+B,EAC/B,qBAA+C;QAD/C,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,0BAAqB,GAArB,qBAAqB,CAA0B;IAC/D,CAAC;IAEG,KAAK,CAAC,kBAAkB,CAC7B,QAAwB,EACxB,MAAgC;QAEhC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAGhD,MAAM,eAAe,GAAkB,QAAQ;YAC7C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC;gBACE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtF,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAChD,CAAC;QAEN,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAErG,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF;AAxBD,8CAwBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/cli",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.3.0-next.0-experimental-47556b0",
|
|
4
4
|
"description": "A command line interface for managing Atlassian-hosted apps",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
@@ -18,15 +18,15 @@
|
|
|
18
18
|
"postinstall": "node -e \"fs.existsSync('./out/bin/postinstall.js') && require('./out/bin/postinstall.js')\""
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@forge/bundler": "6.1.
|
|
22
|
-
"@forge/cli-shared": "8.
|
|
23
|
-
"@forge/egress": "2.0.
|
|
24
|
-
"@forge/lint": "5.10.
|
|
25
|
-
"@forge/manifest": "10.
|
|
21
|
+
"@forge/bundler": "6.1.2-next.0-experimental-47556b0",
|
|
22
|
+
"@forge/cli-shared": "8.3.0-next.0-experimental-47556b0",
|
|
23
|
+
"@forge/egress": "2.0.2-next.0-experimental-47556b0",
|
|
24
|
+
"@forge/lint": "5.10.1-next.0-experimental-47556b0",
|
|
25
|
+
"@forge/manifest": "10.2.1-next.0-experimental-47556b0",
|
|
26
26
|
"@forge/i18n": "0.0.7",
|
|
27
|
-
"@forge/runtime": "6.0.
|
|
28
|
-
"@forge/tunnel": "6.0.
|
|
29
|
-
"@forge/util": "2.0.0
|
|
27
|
+
"@forge/runtime": "6.0.2",
|
|
28
|
+
"@forge/tunnel": "6.0.3-next.0-experimental-47556b0",
|
|
29
|
+
"@forge/util": "2.0.0",
|
|
30
30
|
"@sentry/node": "7.106.0",
|
|
31
31
|
"ajv": "^8.12.0",
|
|
32
32
|
"archiver": "^7.0.1",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"diff": "^7.0.0",
|
|
43
43
|
"env-paths": "^2.2.1",
|
|
44
44
|
"exponential-backoff": "^3.1.2",
|
|
45
|
-
"form-data": "^4.0.
|
|
45
|
+
"form-data": "^4.0.4",
|
|
46
46
|
"fs-extra": "^11.2.0",
|
|
47
47
|
"hidefile": "^3.0.0",
|
|
48
48
|
"latest-version": "^7.0.0",
|