@forge/cli 0.0.0-experimental-819498d → 0.0.0-experimental-a9f00a0
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 +2901 -7
- package/README.md +18 -19
- package/npm-shrinkwrap.json +1957 -4159
- package/out/analytics-client/analytics-client.d.ts +0 -24
- package/out/analytics-client/analytics-client.d.ts.map +1 -1
- package/out/analytics-client/analytics-client.js +0 -115
- package/out/analytics-client/analytics-message-handler.d.ts +1 -5
- package/out/analytics-client/analytics-message-handler.d.ts.map +1 -1
- package/out/analytics-client/analytics-message-handler.js +2 -30
- package/out/autocomplete/autocomplete-config.json +16 -26
- package/out/bin/cli.js +0 -2
- package/out/bin/postinstall.js +0 -13
- package/out/command-line/anon-user-id.js +6 -10
- package/out/command-line/command.d.ts +7 -3
- package/out/command-line/command.d.ts.map +1 -1
- package/out/command-line/command.js +56 -60
- package/out/command-line/controller/deploy-controller.d.ts +13 -2
- package/out/command-line/controller/deploy-controller.d.ts.map +1 -1
- package/out/command-line/controller/deploy-controller.js +67 -5
- package/out/command-line/controller/install-controller.d.ts +2 -1
- package/out/command-line/controller/install-controller.d.ts.map +1 -1
- package/out/command-line/controller/install-controller.js +28 -32
- package/out/command-line/controller/lint-controller.js +1 -1
- package/out/command-line/controller/pre-command-controller.js +1 -1
- package/out/command-line/controller/prerequisites-controller.d.ts +11 -0
- package/out/command-line/controller/prerequisites-controller.d.ts.map +1 -0
- package/out/command-line/controller/prerequisites-controller.js +34 -0
- package/out/command-line/controller/stubController.d.ts +9 -0
- package/out/command-line/controller/stubController.d.ts.map +1 -0
- package/out/command-line/controller/stubController.js +15 -0
- package/out/command-line/controller/tunnel-controller.d.ts.map +1 -1
- package/out/command-line/controller/tunnel-controller.js +0 -1
- package/out/command-line/dependency-injection.d.ts +11 -3
- package/out/command-line/dependency-injection.d.ts.map +1 -1
- package/out/command-line/dependency-injection.js +38 -23
- package/out/command-line/index.d.ts.map +1 -1
- package/out/command-line/index.js +4 -0
- package/out/command-line/register-app-commands.d.ts.map +1 -1
- package/out/command-line/register-app-commands.js +1 -9
- package/out/command-line/register-authentication-command.d.ts.map +1 -1
- package/out/command-line/register-authentication-command.js +0 -16
- package/out/command-line/register-deployment-commands.d.ts +8 -0
- package/out/command-line/register-deployment-commands.d.ts.map +1 -1
- package/out/command-line/register-environment-variables-commands.d.ts +1 -1
- package/out/command-line/register-environment-variables-commands.d.ts.map +1 -1
- package/out/command-line/register-environment-variables-commands.js +22 -7
- package/out/command-line/register-installation-commands.d.ts +1 -1
- package/out/command-line/register-installation-commands.d.ts.map +1 -1
- package/out/command-line/register-installation-commands.js +19 -13
- package/out/command-line/register-providers-commands.d.ts +3 -0
- package/out/command-line/register-providers-commands.d.ts.map +1 -0
- package/out/command-line/register-providers-commands.js +43 -0
- package/out/command-line/register-webtrigger-commands.d.ts.map +1 -1
- package/out/command-line/register-webtrigger-commands.js +9 -11
- package/out/command-line/unique-machine-id.d.ts.map +1 -1
- package/out/command-line/unique-machine-id.js +1 -10
- package/out/command-line/version-info.d.ts +1 -0
- package/out/command-line/version-info.d.ts.map +1 -1
- package/out/command-line/version-info.js +3 -2
- package/out/command-line/view/deploy-view.d.ts +7 -1
- package/out/command-line/view/deploy-view.d.ts.map +1 -1
- package/out/command-line/view/deploy-view.js +22 -5
- package/out/command-line/view/install-view.d.ts +5 -5
- package/out/command-line/view/install-view.d.ts.map +1 -1
- package/out/command-line/view/install-view.js +20 -15
- package/out/command-line/view/lint-view.d.ts +3 -2
- package/out/command-line/view/lint-view.d.ts.map +1 -1
- package/out/command-line/view/lint-view.js +3 -0
- package/out/command-line/view/lite-lint-view.d.ts +3 -2
- package/out/command-line/view/lite-lint-view.d.ts.map +1 -1
- package/out/command-line/view/lite-lint-view.js +3 -0
- package/out/deploy/deployer/deploy-monitor-graphql-client.js +1 -1
- package/out/deploy/deployer/trigger-deploy-graphql-client.js +1 -1
- package/out/deploy/packager/archiver.d.ts +3 -2
- package/out/deploy/packager/archiver.d.ts.map +1 -1
- package/out/deploy/packager/archiver.js +10 -2
- package/out/deploy/packager/packager.d.ts +1 -3
- package/out/deploy/packager/packager.d.ts.map +1 -1
- package/out/deploy/packager/packager.js +2 -25
- package/out/deploy/uploader/artifact-graphql-client.js +2 -2
- package/out/environment-variables/graphql-client.d.ts +1 -1
- package/out/environment-variables/graphql-client.js +3 -3
- package/out/installations/graphql-client.d.ts +7 -9
- package/out/installations/graphql-client.d.ts.map +1 -1
- package/out/installations/graphql-client.js +61 -85
- package/out/installations/install-app-site.d.ts +2 -8
- package/out/installations/install-app-site.d.ts.map +1 -1
- package/out/installations/install-app-site.js +2 -3
- package/out/installations/uninstall-app.d.ts +0 -1
- package/out/installations/uninstall-app.d.ts.map +1 -1
- package/out/installations/uninstall-app.js +2 -4
- package/out/migration-keys/graphql-client.d.ts +8 -0
- package/out/migration-keys/graphql-client.d.ts.map +1 -0
- package/out/migration-keys/graphql-client.js +55 -0
- package/out/providers/configure-provider.d.ts +19 -0
- package/out/providers/configure-provider.d.ts.map +1 -0
- package/out/providers/configure-provider.js +14 -0
- package/out/providers/graphql-client.d.ts +12 -0
- package/out/providers/graphql-client.d.ts.map +1 -0
- package/out/providers/graphql-client.js +47 -0
- package/out/service/installation-service.d.ts +13 -11
- package/out/service/installation-service.d.ts.map +1 -1
- package/out/service/installation-service.js +38 -13
- package/out/service/lint-service.d.ts +2 -2
- package/out/service/lint-service.d.ts.map +1 -1
- package/out/service/lint-service.js +2 -2
- package/out/service/lite-lint-service.d.ts +3 -3
- package/out/service/lite-lint-service.d.ts.map +1 -1
- package/out/service/lite-lint-service.js +2 -2
- package/out/service/migration-keys-service.d.ts +19 -0
- package/out/service/migration-keys-service.d.ts.map +1 -0
- package/out/service/migration-keys-service.js +14 -0
- package/out/service/resource-packaging-service.d.ts +3 -2
- package/out/service/resource-packaging-service.d.ts.map +1 -1
- package/out/service/resource-packaging-service.js +6 -2
- package/out/service/tunnel-analytics-service.d.ts +0 -5
- package/out/service/tunnel-analytics-service.d.ts.map +1 -1
- package/out/service/tunnel-analytics-service.js +3 -14
- package/out/service/tunnel-service.d.ts +1 -3
- package/out/service/tunnel-service.d.ts.map +1 -1
- package/out/service/tunnel-service.js +8 -9
- package/out/webtrigger/get-webtrigger-url.d.ts +10 -4
- package/out/webtrigger/get-webtrigger-url.d.ts.map +1 -1
- package/out/webtrigger/get-webtrigger-url.js +11 -21
- package/out/webtrigger/graphql-client.d.ts +14 -0
- package/out/webtrigger/graphql-client.d.ts.map +1 -0
- package/out/webtrigger/graphql-client.js +52 -0
- package/out/workers/forge-cli-workers.js +2 -2
- package/package.json +12 -13
- package/out/bin/preinstall.d.ts +0 -3
- package/out/bin/preinstall.d.ts.map +0 -1
- package/out/bin/preinstall.js +0 -9
- package/out/command-line/cli-prerequisites.d.ts +0 -3
- package/out/command-line/cli-prerequisites.d.ts.map +0 -1
- package/out/command-line/cli-prerequisites.js +0 -37
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installation-service.d.ts","sourceRoot":"","sources":["../../src/service/installation-service.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"installation-service.d.ts","sourceRoot":"","sources":["../../src/service/installation-service.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EAQf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,yBAA0B,SAAQ,gCAAgC;IACjF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,UAAU,yBAAyB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;CACzG;AAED,MAAM,WAAW,6BAA6B;IAC5C,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG;AAKD,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,6BAA6B;gBAF7B,YAAY,EAAE,iBAAiB,EAC/B,uBAAuB,EAAE,0BAA0B,EACnD,6BAA6B,EAAE,6BAA6B;IAG/E,OAAO,CAAC,mBAAmB;IAiBd,oBAAoB,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IAOlF,gCAAgC,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IAU9F,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOrE,mBAAmB,CAC9B,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IAkBnB,OAAO,CAAC,uCAAuC;IAgBlC,4BAA4B,CACvC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;CAyBlD"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InstallationService = void 0;
|
|
4
4
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
5
6
|
const graphql_client_1 = require("../installations/graphql-client");
|
|
6
7
|
const IDENTITY_PRODUCT_NAME = 'identity';
|
|
8
|
+
const JIRA_SERVICE_DESK_PRODUCT_NAME = 'jira-servicedesk';
|
|
7
9
|
class InstallationService {
|
|
8
10
|
constructor(getAppConfig, listInstallationsClient, upgradeAppInstallationsClient) {
|
|
9
11
|
this.getAppConfig = getAppConfig;
|
|
@@ -22,43 +24,66 @@ class InstallationService {
|
|
|
22
24
|
});
|
|
23
25
|
}
|
|
24
26
|
async listAppInstallations(filter) {
|
|
25
|
-
const { id: appId
|
|
27
|
+
const { id: appId } = await this.getAppConfig();
|
|
26
28
|
const installations = await this.listInstallationsClient.listInstallations(appId);
|
|
27
|
-
return {
|
|
29
|
+
return { installations: this.filterInstallations(installations, Object.assign({}, filter)) };
|
|
28
30
|
}
|
|
29
|
-
async
|
|
30
|
-
const {
|
|
31
|
-
return {
|
|
31
|
+
async listNonTechnicalAppInstallations(filter) {
|
|
32
|
+
const { installations } = await this.listAppInstallations(filter);
|
|
33
|
+
return {
|
|
34
|
+
installations: installations.filter(({ product }) => product !== IDENTITY_PRODUCT_NAME && product !== JIRA_SERVICE_DESK_PRODUCT_NAME)
|
|
35
|
+
};
|
|
32
36
|
}
|
|
33
37
|
async hasOutdatedProductInstallation(environment) {
|
|
34
|
-
const { installations } = await this.
|
|
38
|
+
const { installations } = await this.listNonTechnicalAppInstallations({
|
|
35
39
|
environment
|
|
36
40
|
});
|
|
37
41
|
return installations.some((installation) => !installation.version.isLatest);
|
|
38
42
|
}
|
|
39
43
|
async upgradeInstallation(site, product, environmentKey, appId) {
|
|
40
44
|
try {
|
|
41
|
-
|
|
45
|
+
await this.upgradeAppInstallationsClient.upgradeInstallation({
|
|
42
46
|
site,
|
|
43
47
|
product,
|
|
44
48
|
environmentKey,
|
|
45
49
|
appId
|
|
46
50
|
});
|
|
47
|
-
return
|
|
51
|
+
return false;
|
|
48
52
|
}
|
|
49
53
|
catch (e) {
|
|
50
54
|
if (e.code === graphql_client_1.ALREADY_UPGRADED_CODE) {
|
|
51
|
-
return
|
|
52
|
-
alreadyUpdated: true
|
|
53
|
-
};
|
|
55
|
+
return true;
|
|
54
56
|
}
|
|
55
57
|
else {
|
|
56
58
|
throw e;
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
getPermissionsFromAppEnvironmentVersion(appEnvironmentVersion) {
|
|
63
|
+
const permissions = appEnvironmentVersion === null || appEnvironmentVersion === void 0 ? void 0 : appEnvironmentVersion.permissions[0];
|
|
64
|
+
if (!permissions) {
|
|
65
|
+
return { scopes: [], egressAddresses: [] };
|
|
66
|
+
}
|
|
67
|
+
const scopes = permissions.scopes.map((s) => s.key);
|
|
68
|
+
const egressAddresses = (permissions === null || permissions === void 0 ? void 0 : permissions.egress) ? cli_shared_1.flatMap(permissions.egress, ({ addresses }) => addresses !== null && addresses !== void 0 ? addresses : []) : [];
|
|
69
|
+
return { scopes, egressAddresses };
|
|
70
|
+
}
|
|
71
|
+
async getAppEnvironmentPermissions(appId, environmentKey) {
|
|
72
|
+
const versionDetails = await this.listInstallationsClient.getVersions(appId, environmentKey, 2);
|
|
73
|
+
const versions = versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.nodes;
|
|
74
|
+
if (!versions || versions.length === 0)
|
|
75
|
+
return;
|
|
76
|
+
const [{ scopes }, oldVersion] = versions.map((appEnvironmentVersion) => this.getPermissionsFromAppEnvironmentVersion(appEnvironmentVersion));
|
|
77
|
+
if (!oldVersion) {
|
|
78
|
+
return {
|
|
79
|
+
scopes,
|
|
80
|
+
egressAddresses: [],
|
|
81
|
+
addedScopes: scopes
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const { scopes: oldScopes } = oldVersion;
|
|
85
|
+
const addedScopes = lodash_1.difference(scopes, oldScopes);
|
|
86
|
+
return { scopes, egressAddresses: [], addedScopes };
|
|
62
87
|
}
|
|
63
88
|
}
|
|
64
89
|
exports.InstallationService = InstallationService;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { ConfigFile, FileSystemReader } from '@forge/cli-shared';
|
|
3
|
-
import { LintFixState, LintResult, ProblemCount } from '@forge/lint';
|
|
3
|
+
import { LintFixState, LintResult, LintLogger, ProblemCount } from '@forge/lint';
|
|
4
4
|
interface LintOptions {
|
|
5
5
|
fix?: boolean;
|
|
6
6
|
}
|
|
@@ -13,7 +13,7 @@ export declare class LintService {
|
|
|
13
13
|
private readonly configFile;
|
|
14
14
|
private readonly fileSystemReader;
|
|
15
15
|
constructor(configFile: ConfigFile, fileSystemReader: FileSystemReader);
|
|
16
|
-
run(environment: string, { fix }: LintOptions, directory?: string, lintFunction?: (filesToLint: string[], manifest: import("@forge/manifest").ManifestSchema, environment: string, parseFunction?: ((filepath: string, parser: (code: string,
|
|
16
|
+
run(environment: string, { fix }: LintOptions, logger: LintLogger, directory?: string, lintFunction?: (filesToLint: string[], manifest: import("@forge/manifest").ManifestSchema, environment: string, logger: Pick<import("@forge/cli-shared/src").Logger, "info">, parseFunction?: ((filepath: string, parser: (code: string, filepath: string, parseOptions?: Partial<import("@forge/lint").ParseOptions> | undefined) => Promise<import("@forge/lint").ASTParseResult>, readFilePromise?: typeof import("fs").readFile.__promisify__ | undefined) => Promise<import("@forge/lint").LintInput>) | undefined, linters?: import("@forge/lint").LinterInterface[] | undefined) => Promise<LintResult[]>): Promise<RunResult>;
|
|
17
17
|
private fix;
|
|
18
18
|
problemCount(lintResults: LintResult[]): ProblemCount;
|
|
19
19
|
private failedScopesFromLintResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint-service.d.ts","sourceRoot":"","sources":["../../src/service/lint-service.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAsB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAEL,YAAY,EACZ,UAAU,EAGV,YAAY,EACb,MAAM,aAAa,CAAC;AAErB,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,UAAU,SAAS;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAc,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAzD,UAAU,EAAE,UAAU,EAAmB,gBAAgB,EAAE,gBAAgB;IAE3F,GAAG,CACd,WAAW,EAAE,MAAM,EACnB,EAAE,GAAG,EAAE,EAAE,WAAW,EACpB,SAAS,SAAoB,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"lint-service.d.ts","sourceRoot":"","sources":["../../src/service/lint-service.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAsB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAEL,YAAY,EACZ,UAAU,EAGV,UAAU,EACV,YAAY,EACb,MAAM,aAAa,CAAC;AAErB,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,UAAU,SAAS;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAc,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAzD,UAAU,EAAE,UAAU,EAAmB,gBAAgB,EAAE,gBAAgB;IAE3F,GAAG,CACd,WAAW,EAAE,MAAM,EACnB,EAAE,GAAG,EAAE,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,SAAS,SAAoB,EAC7B,YAAY,okBAAO,GAClB,OAAO,CAAC,SAAS,CAAC;YAYP,GAAG;IASV,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,YAAY;IAI5D,OAAO,CAAC,0BAA0B;IAI3B,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE;CAOzD"}
|
|
@@ -9,10 +9,10 @@ class LintService {
|
|
|
9
9
|
this.configFile = configFile;
|
|
10
10
|
this.fileSystemReader = fileSystemReader;
|
|
11
11
|
}
|
|
12
|
-
async run(environment, { fix }, directory = exports.DEFAULT_DIRECTORY, lintFunction = lint_1.lint) {
|
|
12
|
+
async run(environment, { fix }, logger, directory = exports.DEFAULT_DIRECTORY, lintFunction = lint_1.lint) {
|
|
13
13
|
const exclude = [...(await cli_shared_1.listGitIgnoreFiles(this.fileSystemReader)), '.git', 'node_modules'];
|
|
14
14
|
const filesToLint = await this.fileSystemReader.recursiveReadDir(directory, exclude);
|
|
15
|
-
const lintResults = await lintFunction(filesToLint, await this.configFile.readConfig(), environment);
|
|
15
|
+
const lintResults = await lintFunction(filesToLint, await this.configFile.readConfig(), environment, logger);
|
|
16
16
|
if (fix) {
|
|
17
17
|
return { lintResults, fixResults: await this.fix(lintResults) };
|
|
18
18
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { LintResult } from '@forge/lint';
|
|
1
|
+
import { LintLogger, LintResult } from '@forge/lint';
|
|
2
2
|
export declare class LiteLintService {
|
|
3
3
|
private readonly lintService;
|
|
4
4
|
private readonly problemCounter;
|
|
5
|
-
constructor(lintService?: (linter?: import("@forge/lint").LinterInterface | undefined) => Promise<LintResult[]>, problemCounter?: (lintResults: LintResult[]) => import("@forge/lint").ProblemCount);
|
|
6
|
-
run(checkSchema: boolean): Promise<LintResult[]>;
|
|
5
|
+
constructor(lintService?: (logger: Pick<import("@forge/cli-shared/src").Logger, "info">, linter?: import("@forge/lint").LinterInterface | undefined) => Promise<LintResult[]>, problemCounter?: (lintResults: LintResult[]) => import("@forge/lint").ProblemCount);
|
|
6
|
+
run(checkSchema: boolean, logger: LintLogger): Promise<LintResult[]>;
|
|
7
7
|
private filterResults;
|
|
8
8
|
hasErrors(report: LintResult[]): boolean;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lite-lint-service.d.ts","sourceRoot":"","sources":["../../src/service/lite-lint-service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"lite-lint-service.d.ts","sourceRoot":"","sources":["../../src/service/lite-lint-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,UAAU,EAAgB,UAAU,EAAE,MAAM,aAAa,CAAC;AAG7E,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,WAAW;IAAa,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAvD,WAAW,sJAAW,EAAmB,cAAc,oEAAe;IAEtF,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKjF,OAAO,CAAC,aAAa;IASd,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO;CAGhD"}
|
|
@@ -8,8 +8,8 @@ class LiteLintService {
|
|
|
8
8
|
this.lintService = lintService;
|
|
9
9
|
this.problemCounter = problemCounter;
|
|
10
10
|
}
|
|
11
|
-
async run(checkSchema) {
|
|
12
|
-
const report = await this.lintService();
|
|
11
|
+
async run(checkSchema, logger) {
|
|
12
|
+
const report = await this.lintService(logger);
|
|
13
13
|
return this.filterResults(report, checkSchema);
|
|
14
14
|
}
|
|
15
15
|
filterResults(report, checkSchema) {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AppConfigProvider } from 'packages/forge-cli-shared/src/apps';
|
|
2
|
+
export declare type MigrationKeys = {
|
|
3
|
+
jira?: string;
|
|
4
|
+
confluence?: string;
|
|
5
|
+
};
|
|
6
|
+
export interface AppEnvironmentMigrationKeys {
|
|
7
|
+
migrationKeys?: MigrationKeys | null;
|
|
8
|
+
mpacAppKey?: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface GetMigrationKeysClient {
|
|
11
|
+
getLatestMigrationKeys(appId: string, environmentKey: string): Promise<AppEnvironmentMigrationKeys>;
|
|
12
|
+
}
|
|
13
|
+
export declare class MigrationKeysService {
|
|
14
|
+
private readonly migrationKeysClient;
|
|
15
|
+
private readonly getAppConfig;
|
|
16
|
+
constructor(migrationKeysClient: GetMigrationKeysClient, getAppConfig: AppConfigProvider);
|
|
17
|
+
getMigrationKeysForAppEnvironment(environmentKey: string): Promise<AppEnvironmentMigrationKeys>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=migration-keys-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-keys-service.d.ts","sourceRoot":"","sources":["../../src/service/migration-keys-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,oBAAY,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,MAAM,WAAW,2BAA2B;IAC1C,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AACD,MAAM,WAAW,sBAAsB;IACrC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACrG;AAED,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,mBAAmB,EAAE,sBAAsB,EAC3C,YAAY,EAAE,iBAAiB;IAGrC,iCAAiC,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAI7G"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MigrationKeysService = void 0;
|
|
4
|
+
class MigrationKeysService {
|
|
5
|
+
constructor(migrationKeysClient, getAppConfig) {
|
|
6
|
+
this.migrationKeysClient = migrationKeysClient;
|
|
7
|
+
this.getAppConfig = getAppConfig;
|
|
8
|
+
}
|
|
9
|
+
async getMigrationKeysForAppEnvironment(environmentKey) {
|
|
10
|
+
const { id: appId } = await this.getAppConfig();
|
|
11
|
+
return await this.migrationKeysClient.getLatestMigrationKeys(appId, environmentKey);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.MigrationKeysService = MigrationKeysService;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Modules } from '@forge/manifest';
|
|
2
|
-
import { FileSystemReader, ResourceDetails, BridgeScriptService } from '@forge/cli-shared';
|
|
2
|
+
import { FileSystemReader, ResourceDetails, BridgeScriptService, IframeResizerScriptService } from '@forge/cli-shared';
|
|
3
3
|
import { Archiver } from '../deploy';
|
|
4
4
|
export declare class ResourceDirectoryMissingError extends Error {
|
|
5
5
|
constructor(key: string, dir: string);
|
|
@@ -33,7 +33,8 @@ export declare class ResourcePackagingService {
|
|
|
33
33
|
private readonly fileSystemReader;
|
|
34
34
|
private readonly appDir;
|
|
35
35
|
private readonly bridgeScriptService;
|
|
36
|
-
|
|
36
|
+
private readonly iframeResizerScriptService;
|
|
37
|
+
constructor(archiverFactory: () => Archiver, fileSystemReader: FileSystemReader, appDir: string, bridgeScriptService: BridgeScriptService, iframeResizerScriptService: IframeResizerScriptService);
|
|
37
38
|
private getResourcesInformation;
|
|
38
39
|
private transformRelativeResourcePathsToAbsolute;
|
|
39
40
|
private processFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-packaging-service.d.ts","sourceRoot":"","sources":["../../src/service/resource-packaging-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"resource-packaging-service.d.ts","sourceRoot":"","sources":["../../src/service/resource-packaging-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,eAAe,EAGf,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAKrC,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAGrC;AAED,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAGrC;AAeD,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,4BAA6B,SAAQ,KAAK;;CAItD;AAED,qBAAa,0BAA2B,SAAQ,KAAK;;CAIpD;AAED,qBAAa,kCAAmC,SAAQ,KAAK;gBAC/C,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAGnD;AAED,qBAAa,oCAAqC,SAAQ,KAAK;gBACjD,WAAW,EAAE,MAAM;CAGhC;AAED,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAJ1B,eAAe,EAAE,MAAM,QAAQ,EAC/B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,mBAAmB,EACxC,0BAA0B,EAAE,0BAA0B;YAG3D,uBAAuB;IAerC,OAAO,CAAC,wCAAwC;IAIhD,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,iCAAiC;YAM3B,qBAAqB;IAatB,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAiCtG"}
|
|
@@ -42,11 +42,12 @@ class DetailedMalformedHtmlEntrypointError extends Error {
|
|
|
42
42
|
}
|
|
43
43
|
exports.DetailedMalformedHtmlEntrypointError = DetailedMalformedHtmlEntrypointError;
|
|
44
44
|
class ResourcePackagingService {
|
|
45
|
-
constructor(archiverFactory, fileSystemReader, appDir, bridgeScriptService) {
|
|
45
|
+
constructor(archiverFactory, fileSystemReader, appDir, bridgeScriptService, iframeResizerScriptService) {
|
|
46
46
|
this.archiverFactory = archiverFactory;
|
|
47
47
|
this.fileSystemReader = fileSystemReader;
|
|
48
48
|
this.appDir = appDir;
|
|
49
49
|
this.bridgeScriptService = bridgeScriptService;
|
|
50
|
+
this.iframeResizerScriptService = iframeResizerScriptService;
|
|
50
51
|
}
|
|
51
52
|
async getResourcesInformation(resources) {
|
|
52
53
|
return await Promise.all(resources.map(async ({ key, directory, resourceType }) => {
|
|
@@ -65,7 +66,10 @@ class ResourcePackagingService {
|
|
|
65
66
|
}
|
|
66
67
|
processFile(filePath, content) {
|
|
67
68
|
if (filePath === CUSTOM_UI_ENTRYPOINT) {
|
|
68
|
-
|
|
69
|
+
const contentWithIframeResizerScript = this.iframeResizerScriptService.injectIframeResizer(content, () => {
|
|
70
|
+
throw new MalformedHtmlEntrypointError();
|
|
71
|
+
});
|
|
72
|
+
return this.bridgeScriptService.injectBridgeCore(contentWithIframeResizerScript, () => {
|
|
69
73
|
throw new MalformedHtmlEntrypointError();
|
|
70
74
|
});
|
|
71
75
|
}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { PersonalApiCredentialsValidated } from '@forge/cli-shared';
|
|
2
|
-
import { AnalyticsClientReporter } from '../analytics-client/analytics-client';
|
|
3
2
|
import { DownloadProgressCallbacks } from '../command-line/view/tunnel-view';
|
|
4
3
|
export declare class TunnelAnalyticsService {
|
|
5
|
-
private readonly analyticsClientReporter;
|
|
6
|
-
constructor(analyticsClientReporter: AnalyticsClientReporter);
|
|
7
|
-
reportDockerVersion(creds: PersonalApiCredentialsValidated, dockerVersion: string | null): void;
|
|
8
|
-
reportTunnelClosed(creds: PersonalApiCredentialsValidated): void;
|
|
9
4
|
getImageDownloadReporters(creds: PersonalApiCredentialsValidated): DownloadProgressCallbacks;
|
|
10
5
|
}
|
|
11
6
|
//# sourceMappingURL=tunnel-analytics-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-analytics-service.d.ts","sourceRoot":"","sources":["../../src/service/tunnel-analytics-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tunnel-analytics-service.d.ts","sourceRoot":"","sources":["../../src/service/tunnel-analytics-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,qBAAa,sBAAsB;IAC1B,yBAAyB,CAAC,KAAK,EAAE,+BAA+B,GAAG,yBAAyB;CAOpG"}
|
|
@@ -2,22 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TunnelAnalyticsService = void 0;
|
|
4
4
|
class TunnelAnalyticsService {
|
|
5
|
-
constructor(analyticsClientReporter) {
|
|
6
|
-
this.analyticsClientReporter = analyticsClientReporter;
|
|
7
|
-
}
|
|
8
|
-
reportDockerVersion(creds, dockerVersion) {
|
|
9
|
-
this.analyticsClientReporter.reportSuccess('docker version check', creds, {
|
|
10
|
-
dockerVersion
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
reportTunnelClosed(creds) {
|
|
14
|
-
this.analyticsClientReporter.reportSuccess('close tunnel', creds, {});
|
|
15
|
-
}
|
|
16
5
|
getImageDownloadReporters(creds) {
|
|
17
6
|
return {
|
|
18
|
-
onStart: () =>
|
|
19
|
-
onFailure: () =>
|
|
20
|
-
onSuccess: () =>
|
|
7
|
+
onStart: () => void 0,
|
|
8
|
+
onFailure: () => void 0,
|
|
9
|
+
onSuccess: () => void 0
|
|
21
10
|
};
|
|
22
11
|
}
|
|
23
12
|
}
|
|
@@ -2,7 +2,6 @@ import { HiddenError, PersonalApiCredentialsValidated } from '@forge/cli-shared'
|
|
|
2
2
|
import { spawn } from 'cross-spawn';
|
|
3
3
|
import { DockerService } from './docker-service';
|
|
4
4
|
import { ConfigFilePortFindingService } from './port-finding-service';
|
|
5
|
-
import { TunnelAnalyticsService } from './tunnel-analytics-service';
|
|
6
5
|
export interface TunnelOptions {
|
|
7
6
|
debug?: boolean;
|
|
8
7
|
}
|
|
@@ -36,8 +35,7 @@ export declare class LocalTunnelService extends TunnelService {
|
|
|
36
35
|
}
|
|
37
36
|
export declare class DockerTunnelService extends TunnelService {
|
|
38
37
|
private readonly dockerService;
|
|
39
|
-
|
|
40
|
-
constructor(configFilePortFindingService: ConfigFilePortFindingService, dockerService: DockerService, analyticsService: TunnelAnalyticsService);
|
|
38
|
+
constructor(configFilePortFindingService: ConfigFilePortFindingService, dockerService: DockerService);
|
|
41
39
|
run(tunnelOptions: TunnelOptions, creds: {
|
|
42
40
|
email: string;
|
|
43
41
|
token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../src/service/tunnel-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,WAAW,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../src/service/tunnel-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,WAAW,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,eAAO,MAAM,cAAc,wBAAwB,CAAC;AAcpD,eAAO,MAAM,UAAU,QAEuB,CAAC;AAE/C,qBAAa,uBAAwB,SAAQ,WAAW;CAAG;AAE3D,8BAAsB,aAAa;IACrB,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B;gBAA1D,4BAA4B,EAAE,4BAA4B;aAEzE,GAAG,CACjB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,+BAA+B,EACtC,YAAY,EAAE,OAAO,EACrB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC;cAEA,gBAAgB,CAC9B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,OAAO,EACrB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,+BAA+B,GAChD,OAAO,CAAC,MAAM,EAAE,CAAC;IA+BpB,SAAS,CAAC,cAAc,CACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,MAAM,EAAE;IAwBX,SAAS,CAAC,2BAA2B,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE;IAItF,SAAS,CAAC,kCAAkC,IAAI,MAAM,EAAE;IAUxD,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ1F,SAAS,CAAC,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAYvF,SAAS,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAQ3C,SAAS,CAAC,gBAAgB,IAAI,MAAM,EAAE;CAavC;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACtC,GAAG,CACd,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAC1D,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;CA0BjB;AAED,qBAAa,mBAAoB,SAAQ,aAAa;IAGlD,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAD9B,4BAA4B,EAAE,4BAA4B,EACzC,aAAa,EAAE,aAAa;IAKlC,GAAG,CACd,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAC1D,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,IAAI,CAAC;IAyBH,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;YAKnD,qBAAqB;CAOpC"}
|
|
@@ -38,7 +38,7 @@ class TunnelService {
|
|
|
38
38
|
async getDockerOptions(tunnelOptions, debugEnabled, { email, token }) {
|
|
39
39
|
try {
|
|
40
40
|
const graphqlGateway = cli_shared_1.getGraphqlGateway();
|
|
41
|
-
|
|
41
|
+
return [
|
|
42
42
|
'--rm',
|
|
43
43
|
`--name`,
|
|
44
44
|
exports.CONTAINER_NAME,
|
|
@@ -56,9 +56,10 @@ class TunnelService {
|
|
|
56
56
|
`FORGE_GRAPHQL_GATEWAY=${graphqlGateway}`,
|
|
57
57
|
`--env`,
|
|
58
58
|
`VERBOSE_MODE=${debugEnabled}`,
|
|
59
|
+
`--env`,
|
|
60
|
+
`CLI_DETAILS=${JSON.stringify(cliDetails)}`,
|
|
59
61
|
`${exports.IMAGE_NAME}`
|
|
60
62
|
];
|
|
61
|
-
return dockerOptions;
|
|
62
63
|
}
|
|
63
64
|
catch (e) {
|
|
64
65
|
throw new HiddenDockerTunnelError("Couldn't populate docker options for tunneling");
|
|
@@ -99,11 +100,12 @@ class TunnelService {
|
|
|
99
100
|
return Object.assign(Object.assign({}, env), { PATH: process.env.PATH || '', FORCE_COLOR: '1' });
|
|
100
101
|
}
|
|
101
102
|
transformDockerOptionsToEnvVars(options) {
|
|
102
|
-
const envVarRegex = new RegExp('
|
|
103
|
+
const envVarRegex = new RegExp('^(\\w+)=(.+)$', 'g');
|
|
103
104
|
const envVars = options.filter((opt) => envVarRegex.test(opt));
|
|
104
105
|
const envVarObj = {};
|
|
105
106
|
envVars.forEach((envVar) => {
|
|
106
|
-
|
|
107
|
+
envVarRegex.lastIndex = 0;
|
|
108
|
+
const [, key, val] = envVarRegex.exec(envVar);
|
|
107
109
|
envVarObj[key] = val;
|
|
108
110
|
});
|
|
109
111
|
return envVarObj;
|
|
@@ -146,10 +148,9 @@ class LocalTunnelService extends TunnelService {
|
|
|
146
148
|
}
|
|
147
149
|
exports.LocalTunnelService = LocalTunnelService;
|
|
148
150
|
class DockerTunnelService extends TunnelService {
|
|
149
|
-
constructor(configFilePortFindingService, dockerService
|
|
151
|
+
constructor(configFilePortFindingService, dockerService) {
|
|
150
152
|
super(configFilePortFindingService);
|
|
151
153
|
this.dockerService = dockerService;
|
|
152
|
-
this.analyticsService = analyticsService;
|
|
153
154
|
}
|
|
154
155
|
async run(tunnelOptions, creds, debugEnabled) {
|
|
155
156
|
await this.validateDockerVersion(creds, debugEnabled);
|
|
@@ -170,7 +171,6 @@ class DockerTunnelService extends TunnelService {
|
|
|
170
171
|
...resourcePortEnvVarOption,
|
|
171
172
|
...dockerOptions
|
|
172
173
|
]);
|
|
173
|
-
docker.on('exit', () => this.analyticsService.reportTunnelClosed(creds));
|
|
174
174
|
this.dockerService.startCleanupWorker([docker.pid], exports.CONTAINER_NAME);
|
|
175
175
|
}
|
|
176
176
|
async bootstrapDocker() {
|
|
@@ -178,8 +178,7 @@ class DockerTunnelService extends TunnelService {
|
|
|
178
178
|
return this.dockerService.downloadImage(exports.IMAGE_NAME);
|
|
179
179
|
}
|
|
180
180
|
async validateDockerVersion(creds, debugEnabled) {
|
|
181
|
-
const { major, minor
|
|
182
|
-
this.analyticsService.reportDockerVersion(creds, full);
|
|
181
|
+
const { major, minor } = await this.dockerService.getDockerVersion(debugEnabled);
|
|
183
182
|
if (major < 17 || (major === 17 && minor < 3)) {
|
|
184
183
|
throw new HiddenDockerTunnelError();
|
|
185
184
|
}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { AppConfigProvider } from '@forge/cli-shared';
|
|
2
|
-
import { GlobalEdgeClient } from '@forge/cli-shared';
|
|
3
2
|
import { AppEnvironmentClient } from '@forge/cli-shared';
|
|
4
3
|
import { Installation } from '../service/installation-service';
|
|
4
|
+
import { WebTriggerGraphQLClient } from './graphql-client';
|
|
5
5
|
export interface Context {
|
|
6
6
|
contextId: string;
|
|
7
7
|
environmentARI: string;
|
|
8
8
|
extensionKey: string;
|
|
9
9
|
}
|
|
10
|
+
export interface WebTriggerUrlDetails {
|
|
11
|
+
appId: string;
|
|
12
|
+
contextId: string;
|
|
13
|
+
environmentId: string;
|
|
14
|
+
triggerKey: string;
|
|
15
|
+
}
|
|
10
16
|
export interface WebTriggerClient {
|
|
11
17
|
getInstallation(appId: string, installationId: string): Promise<Installation>;
|
|
12
18
|
}
|
|
@@ -14,8 +20,8 @@ export declare class GetWebTriggerURLCommand {
|
|
|
14
20
|
private readonly getAppConfig;
|
|
15
21
|
private readonly webTriggerClient;
|
|
16
22
|
private readonly appEnvironmentClient;
|
|
17
|
-
private readonly
|
|
18
|
-
constructor(getAppConfig: AppConfigProvider, webTriggerClient: WebTriggerClient, appEnvironmentClient: AppEnvironmentClient,
|
|
19
|
-
execute(installationId: string, functionKey: string
|
|
23
|
+
private readonly webTriggerGraphqlClient;
|
|
24
|
+
constructor(getAppConfig: AppConfigProvider, webTriggerClient: WebTriggerClient, appEnvironmentClient: AppEnvironmentClient, webTriggerGraphqlClient: WebTriggerGraphQLClient);
|
|
25
|
+
execute(installationId: string, functionKey: string): Promise<string>;
|
|
20
26
|
}
|
|
21
27
|
//# sourceMappingURL=get-webtrigger-url.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-webtrigger-url.d.ts","sourceRoot":"","sources":["../../src/webtrigger/get-webtrigger-url.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-webtrigger-url.d.ts","sourceRoot":"","sources":["../../src/webtrigger/get-webtrigger-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/E;AACD,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;gBAHvB,YAAY,EAAE,iBAAiB,EAC/B,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,EAAE,oBAAoB,EAC1C,uBAAuB,EAAE,uBAAuB;IAGtD,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAcnF"}
|
|
@@ -1,33 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GetWebTriggerURLCommand = void 0;
|
|
4
|
-
const cs_ari_1 = require("@forge/util/packages/cs-ari");
|
|
5
|
-
const url_1 = require("url");
|
|
6
|
-
const cli_shared_1 = require("@forge/cli-shared");
|
|
7
|
-
function buildWebtriggerURL(appId, context, extension, isProduction) {
|
|
8
|
-
const hostname = isProduction ? `${appId}.hello.atlassian-dev.net` : `${appId}.xen.atlassian-dev.net`;
|
|
9
|
-
const urlObj = new url_1.URL(`/x0/${cli_shared_1.encodeContext(context, extension)}`, `https://${hostname}`);
|
|
10
|
-
return urlObj.toString();
|
|
11
|
-
}
|
|
12
4
|
class GetWebTriggerURLCommand {
|
|
13
|
-
constructor(getAppConfig, webTriggerClient, appEnvironmentClient,
|
|
5
|
+
constructor(getAppConfig, webTriggerClient, appEnvironmentClient, webTriggerGraphqlClient) {
|
|
14
6
|
this.getAppConfig = getAppConfig;
|
|
15
7
|
this.webTriggerClient = webTriggerClient;
|
|
16
8
|
this.appEnvironmentClient = appEnvironmentClient;
|
|
17
|
-
this.
|
|
9
|
+
this.webTriggerGraphqlClient = webTriggerGraphqlClient;
|
|
18
10
|
}
|
|
19
|
-
async execute(installationId, functionKey
|
|
11
|
+
async execute(installationId, functionKey) {
|
|
20
12
|
const { id: appId } = await this.getAppConfig();
|
|
21
|
-
const {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const extension = cli_shared_1.buildExtensionAri(appAri.appId, environmentId, functionKey);
|
|
30
|
-
return buildWebtriggerURL(appAri.appId, context, extension, isProduction);
|
|
13
|
+
const { environmentKey, context } = await this.webTriggerClient.getInstallation(appId, installationId);
|
|
14
|
+
const environmentId = await this.appEnvironmentClient.getAppEnvironmentId(appId, environmentKey);
|
|
15
|
+
return await this.webTriggerGraphqlClient.createWebTriggerUrl({
|
|
16
|
+
appId: '',
|
|
17
|
+
contextId: context,
|
|
18
|
+
environmentId: environmentId,
|
|
19
|
+
triggerKey: functionKey
|
|
20
|
+
});
|
|
31
21
|
}
|
|
32
22
|
}
|
|
33
23
|
exports.GetWebTriggerURLCommand = GetWebTriggerURLCommand;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { GraphQLClient, GraphQlMutationError } from '@forge/cli-shared';
|
|
2
|
+
import { WebTriggerUrlDetails } from './get-webtrigger-url';
|
|
3
|
+
export declare class WebTriggerCreationError extends GraphQlMutationError {
|
|
4
|
+
constructor(message: string, code: string | undefined);
|
|
5
|
+
}
|
|
6
|
+
export declare class MissingWebTriggerUrlError extends GraphQlMutationError {
|
|
7
|
+
constructor(requestId: string | undefined);
|
|
8
|
+
}
|
|
9
|
+
export declare class WebTriggerGraphQLClient {
|
|
10
|
+
private readonly graphQLClient;
|
|
11
|
+
constructor(graphQLClient: GraphQLClient);
|
|
12
|
+
createWebTriggerUrl({ appId, contextId, environmentId, triggerKey }: WebTriggerUrlDetails): Promise<string>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=graphql-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../../src/webtrigger/graphql-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAyC,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,qBAAa,uBAAwB,SAAQ,oBAAoB;gBACnD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS;CAGtD;AAED,qBAAa,yBAA0B,SAAQ,oBAAoB;gBACrD,SAAS,EAAE,MAAM,GAAG,SAAS;CAO1C;AAED,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAE5C,mBAAmB,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACX,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;CAoC1C"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebTriggerGraphQLClient = exports.MissingWebTriggerUrlError = exports.WebTriggerCreationError = void 0;
|
|
4
|
+
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
|
+
class WebTriggerCreationError extends cli_shared_1.GraphQlMutationError {
|
|
6
|
+
constructor(message, code) {
|
|
7
|
+
super(cli_shared_1.Text.webtrigger.error.creationError(message), code);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WebTriggerCreationError = WebTriggerCreationError;
|
|
11
|
+
class MissingWebTriggerUrlError extends cli_shared_1.GraphQlMutationError {
|
|
12
|
+
constructor(requestId) {
|
|
13
|
+
super(cli_shared_1.Text.webtrigger.error.creationError(`Web Trigger URL not found after successful creation, requestId: ${requestId !== null && requestId !== void 0 ? requestId : 'N/A'}`));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.MissingWebTriggerUrlError = MissingWebTriggerUrlError;
|
|
17
|
+
class WebTriggerGraphQLClient {
|
|
18
|
+
constructor(graphQLClient) {
|
|
19
|
+
this.graphQLClient = graphQLClient;
|
|
20
|
+
}
|
|
21
|
+
async createWebTriggerUrl({ appId, contextId, environmentId, triggerKey }) {
|
|
22
|
+
const query = `
|
|
23
|
+
mutation forge_cli_createWebTriggerUrl($input: WebTriggerUrlInput!) {
|
|
24
|
+
createWebTriggerUrl(input: $input) {
|
|
25
|
+
statusCode
|
|
26
|
+
success
|
|
27
|
+
message
|
|
28
|
+
url
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
32
|
+
const variables = {
|
|
33
|
+
input: {
|
|
34
|
+
appId,
|
|
35
|
+
contextId,
|
|
36
|
+
envId: environmentId,
|
|
37
|
+
triggerKey
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const { response: { createWebTriggerUrl: { success, statusCode, message, url } }, requestId } = await this.graphQLClient.mutate(query, variables);
|
|
41
|
+
if (!success) {
|
|
42
|
+
throw new WebTriggerCreationError(message, statusCode.toString());
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (url) {
|
|
46
|
+
return url;
|
|
47
|
+
}
|
|
48
|
+
throw new MissingWebTriggerUrlError(requestId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.WebTriggerGraphQLClient = WebTriggerGraphQLClient;
|
|
@@ -9,10 +9,10 @@ const cached_config_service_1 = require("../service/cached-config-service");
|
|
|
9
9
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
10
10
|
const unique_machine_id_1 = require("../command-line/unique-machine-id");
|
|
11
11
|
const workerInfo = JSON.parse(process.argv[2]);
|
|
12
|
-
const cachedConf =
|
|
12
|
+
const cachedConf = cli_shared_1.CachedConf.getCache(unique_machine_id_1.FORGE_CLI_PACKAGE);
|
|
13
13
|
const cachedConfigService = new cached_config_service_1.CachedConfigService(cachedConf);
|
|
14
14
|
const ALL_WORKERS = [
|
|
15
|
-
new analytics_message_worker_1.AnalyticsMessageWorker(new local_file_storage_1.LocalFileStorage(), new analytics_message_handler_1.AnalyticsMessageHandler(
|
|
15
|
+
new analytics_message_worker_1.AnalyticsMessageWorker(new local_file_storage_1.LocalFileStorage(), new analytics_message_handler_1.AnalyticsMessageHandler(), cachedConfigService),
|
|
16
16
|
new version_check_worker_1.VersionCheckWorker(workerInfo)
|
|
17
17
|
];
|
|
18
18
|
const TIMEOUT = 10 * 1000;
|