@forge/cli 5.2.1-next.0 → 6.0.0-next.3
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 +46 -0
- package/npm-shrinkwrap.json +1068 -795
- package/out/analytics-client/analytics-client.js +2 -2
- package/out/analytics-client/analytics-message-handler.d.ts.map +1 -1
- package/out/analytics-client/analytics-message-handler.js +1 -1
- package/out/autocomplete/index.js +6 -5
- package/out/autocomplete/util.js +4 -2
- package/out/bin/cli.js +1 -1
- package/out/bin/postinstall.js +3 -3
- package/out/command-line/anon-user-id.js +1 -1
- package/out/command-line/command.d.ts.map +1 -1
- package/out/command-line/command.js +19 -17
- package/out/command-line/controller/autocomplete-controller.js +2 -2
- package/out/command-line/controller/feedback-controller.js +1 -1
- package/out/command-line/controller/install-controller.js +8 -8
- package/out/command-line/controller/prerequisites-controller.js +4 -4
- package/out/command-line/controller/tunnel-controller.js +1 -1
- package/out/command-line/dependency-injection.d.ts +2 -2
- package/out/command-line/dependency-injection.js +8 -7
- package/out/command-line/environment.js +3 -2
- package/out/command-line/index.d.ts +1 -1
- package/out/command-line/index.d.ts.map +1 -1
- package/out/command-line/index.js +21 -19
- package/out/command-line/register-app-commands.js +4 -4
- package/out/command-line/register-authentication-command.js +2 -2
- package/out/command-line/register-autocomplete-commands.js +2 -1
- package/out/command-line/register-deployment-commands.js +2 -1
- package/out/command-line/register-environment-variables-commands.js +2 -1
- package/out/command-line/register-feedback-commands.js +2 -1
- package/out/command-line/register-installation-commands.js +15 -12
- package/out/command-line/register-lint-command.js +2 -1
- package/out/command-line/register-log-commands.js +9 -8
- package/out/command-line/register-providers-commands.js +2 -1
- package/out/command-line/register-settings-commands.js +2 -1
- package/out/command-line/register-tunnel-commands.js +2 -1
- package/out/command-line/register-webtrigger-commands.js +3 -2
- package/out/command-line/unique-machine-id.js +4 -3
- package/out/command-line/version-info.d.ts.map +1 -1
- package/out/command-line/version-info.js +7 -4
- package/out/command-line/view/deploy-view.js +2 -2
- package/out/command-line/view/install-view.js +7 -7
- package/out/command-line/view/lint-view.d.ts +1 -1
- package/out/command-line/view/lint-view.d.ts.map +1 -1
- package/out/command-line/view/lite-lint-view.d.ts +1 -1
- package/out/command-line/view/lite-lint-view.d.ts.map +1 -1
- package/out/command-line/view/tunnel-view.js +1 -1
- package/out/deploy/deployer/deployer.js +1 -1
- package/out/deploy/deployer/trigger-deploy-graphql-client.js +1 -1
- package/out/deploy/package-upload-deploy.js +1 -1
- package/out/deploy/packager/archiver.js +4 -4
- package/out/deploy/packager/runtime-bundler.js +1 -1
- package/out/deploy/uploader/artifact-graphql-client.js +2 -2
- package/out/environment-variables/graphql-client.d.ts +2 -2
- package/out/environment-variables/graphql-client.d.ts.map +1 -1
- package/out/environment-variables/graphql-client.js +2 -2
- package/out/installations/graphql-client.js +6 -6
- package/out/installations/shared.d.ts.map +1 -1
- package/out/installations/shared.js +2 -1
- package/out/installations/site-translation/bitbucket.js +5 -4
- package/out/providers/graphql-client.js +1 -1
- package/out/service/command-suggestion-service.js +1 -1
- package/out/service/docker-service.js +4 -4
- package/out/service/installation-service.js +6 -6
- package/out/service/lint-service.d.ts +1 -1
- package/out/service/lint-service.d.ts.map +1 -1
- package/out/service/lint-service.js +3 -3
- package/out/service/lite-lint-service.d.ts +1 -1
- package/out/service/lite-lint-service.d.ts.map +1 -1
- package/out/service/migration-keys-service.d.ts +1 -1
- package/out/service/migration-keys-service.d.ts.map +1 -1
- package/out/service/port-finding-service.js +1 -1
- package/out/service/resource-packaging-service.js +4 -4
- package/out/service/resources-uploader-service.js +1 -1
- package/out/service/tunnel-service.js +8 -8
- package/out/storage/local-file-storage.js +1 -1
- package/out/webtrigger/get-webtrigger-url.js +2 -2
- package/out/workers/forge-cli-workers.js +1 -1
- package/out/workers/tunnel-clean-up-worker.js +1 -1
- package/out/workers/version-check-worker.js +1 -1
- package/out/workers/worker-info.js +3 -2
- package/out/workers/worker.d.ts.map +1 -1
- package/out/workers/worker.js +5 -3
- package/out/workers/workers-starter.js +1 -1
- package/package.json +8 -7
|
@@ -22,9 +22,10 @@ const DEFAULT_BITBUCKET_ENDPOINT = 'https://api.bitbucket.org';
|
|
|
22
22
|
const BITBUCKET_URL = new url_1.URL('https://bitbucket.org');
|
|
23
23
|
const RESOURCE_TYPE = 'workspace';
|
|
24
24
|
const RESOURCE_OWNER = 'bitbucket';
|
|
25
|
-
|
|
25
|
+
const getBitbucketEndpoint = () => {
|
|
26
26
|
return process.env.BITBUCKET_ENDPOINT || DEFAULT_BITBUCKET_ENDPOINT;
|
|
27
27
|
};
|
|
28
|
+
exports.getBitbucketEndpoint = getBitbucketEndpoint;
|
|
28
29
|
class BitbucketTranslator {
|
|
29
30
|
ariBelongsToProduct(ari) {
|
|
30
31
|
return ari.resourceOwner === RESOURCE_OWNER;
|
|
@@ -51,7 +52,7 @@ class BitbucketTranslator {
|
|
|
51
52
|
async getWorkspaceId(site) {
|
|
52
53
|
const workspaceName = this.extractWorkspaceName(site);
|
|
53
54
|
const url = this.buildFetchUrl(workspaceName);
|
|
54
|
-
const res = await node_fetch_1.default(url);
|
|
55
|
+
const res = await (0, node_fetch_1.default)(url);
|
|
55
56
|
if (!res.ok) {
|
|
56
57
|
throw new InvalidWorkspaceError(site);
|
|
57
58
|
}
|
|
@@ -69,7 +70,7 @@ class BitbucketTranslator {
|
|
|
69
70
|
}
|
|
70
71
|
async getWorkspaceUrl(workspaceId) {
|
|
71
72
|
const url = this.buildFetchUrl(this.decorateWorkspaceId(workspaceId));
|
|
72
|
-
const res = await node_fetch_1.default(url);
|
|
73
|
+
const res = await (0, node_fetch_1.default)(url);
|
|
73
74
|
if (!res.ok) {
|
|
74
75
|
return null;
|
|
75
76
|
}
|
|
@@ -92,7 +93,7 @@ class BitbucketTranslator {
|
|
|
92
93
|
return workspaceIdWithBraces.replace(/\{|\}/gi, '');
|
|
93
94
|
}
|
|
94
95
|
buildFetchUrl(workspaceNameOrId) {
|
|
95
|
-
const urlObj = new url_1.URL(`${exports.getBitbucketEndpoint()}/2.0/workspaces/${workspaceNameOrId}`);
|
|
96
|
+
const urlObj = new url_1.URL(`${(0, exports.getBitbucketEndpoint)()}/2.0/workspaces/${workspaceNameOrId}`);
|
|
96
97
|
return urlObj.toString();
|
|
97
98
|
}
|
|
98
99
|
extractWorkspaceName(workspaceURL) {
|
|
@@ -38,7 +38,7 @@ class GraphqlClient {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
|
-
const error = cli_shared_1.getError(errors);
|
|
41
|
+
const error = (0, cli_shared_1.getError)(errors);
|
|
42
42
|
if (!success) {
|
|
43
43
|
throw new cli_shared_1.GraphQlMutationError(`${error.message} (requestId: ${requestId || 'unknown'})`, error.code);
|
|
44
44
|
}
|
|
@@ -6,7 +6,7 @@ class CommandSuggestionService {
|
|
|
6
6
|
getSuggestions(input, list) {
|
|
7
7
|
const set = [...list, ...list.map((item) => item.split(':')[0])];
|
|
8
8
|
let result = set.filter((search) => search.includes(input));
|
|
9
|
-
const dym = didyoumean_1.default(input, set);
|
|
9
|
+
const dym = (0, didyoumean_1.default)(input, set);
|
|
10
10
|
if (dym) {
|
|
11
11
|
result.push(dym);
|
|
12
12
|
result = [...result, ...set.filter((search) => search.includes(dym))];
|
|
@@ -22,7 +22,7 @@ var DockerErrorCode;
|
|
|
22
22
|
})(DockerErrorCode = exports.DockerErrorCode || (exports.DockerErrorCode = {}));
|
|
23
23
|
class DockerService {
|
|
24
24
|
runContainer(args) {
|
|
25
|
-
return cross_spawn_1.spawn('docker', ['run', ...args], { stdio: 'inherit' });
|
|
25
|
+
return (0, cross_spawn_1.spawn)('docker', ['run', ...args], { stdio: 'inherit' });
|
|
26
26
|
}
|
|
27
27
|
async getDockerVersion(debugEnabled) {
|
|
28
28
|
if (!command_exists_1.default.sync('docker')) {
|
|
@@ -46,10 +46,10 @@ class DockerService {
|
|
|
46
46
|
await this.execPromise(`docker rm -f ${containerName}`);
|
|
47
47
|
}
|
|
48
48
|
downloadImage(imageName) {
|
|
49
|
-
return cross_spawn_1.spawn('docker', ['pull', imageName]);
|
|
49
|
+
return (0, cross_spawn_1.spawn)('docker', ['pull', imageName]);
|
|
50
50
|
}
|
|
51
51
|
startCleanupWorker(pids, containerName) {
|
|
52
|
-
const dockerCleanUp = cross_spawn_1.spawn(process.env.NODE_ENV === 'development' ? 'ts-node' : 'node', [path_1.default.join(__dirname, '../workers/tunnel-cleanup-worker')], { stdio: ['ignore', 'ignore', 'ignore', 'ipc'] });
|
|
52
|
+
const dockerCleanUp = (0, cross_spawn_1.spawn)(process.env.NODE_ENV === 'development' ? 'ts-node' : 'node', [path_1.default.join(__dirname, '../workers/tunnel-cleanup-worker')], { stdio: ['ignore', 'ignore', 'ignore', 'ipc'] });
|
|
53
53
|
const message = {
|
|
54
54
|
pids,
|
|
55
55
|
containers: [containerName]
|
|
@@ -58,7 +58,7 @@ class DockerService {
|
|
|
58
58
|
}
|
|
59
59
|
execPromise(cmd) {
|
|
60
60
|
return new Promise((resolve) => {
|
|
61
|
-
child_process_1.exec(cmd, (err, stdout, stderr) => {
|
|
61
|
+
(0, child_process_1.exec)(cmd, (err, stdout, stderr) => {
|
|
62
62
|
resolve({
|
|
63
63
|
err: err,
|
|
64
64
|
stdout: stdout,
|
|
@@ -14,12 +14,12 @@ class InstallationService {
|
|
|
14
14
|
this.upgradeAppInstallationsClient = upgradeAppInstallationsClient;
|
|
15
15
|
}
|
|
16
16
|
filterInstallations(installations, { site: filterSite, product: filterProduct, environment: filterEnvironment }) {
|
|
17
|
-
const isDefaultEnvironment = (env) => env === cli_shared_1.optionToEnvironment(cli_shared_1.DEFAULT_ENVIRONMENT_OPTION);
|
|
17
|
+
const isDefaultEnvironment = (env) => env === (0, cli_shared_1.optionToEnvironment)(cli_shared_1.DEFAULT_ENVIRONMENT_OPTION);
|
|
18
18
|
return installations.filter(({ product, site, environmentKey }) => {
|
|
19
|
-
const matchProduct = !filterProduct || filterProduct === cli_shared_1.capitalizeProduct(product);
|
|
19
|
+
const matchProduct = !filterProduct || filterProduct === (0, cli_shared_1.capitalizeProduct)(product);
|
|
20
20
|
const matchSite = !filterSite || filterSite === site;
|
|
21
21
|
const matchEnvironment = filterEnvironment
|
|
22
|
-
? isDefaultEnvironment(filterEnvironment) || filterEnvironment === cli_shared_1.environmentToOption(environmentKey)
|
|
22
|
+
? isDefaultEnvironment(filterEnvironment) || filterEnvironment === (0, cli_shared_1.environmentToOption)(environmentKey)
|
|
23
23
|
: true;
|
|
24
24
|
return matchProduct && matchSite && matchEnvironment;
|
|
25
25
|
});
|
|
@@ -66,7 +66,7 @@ class InstallationService {
|
|
|
66
66
|
return { scopes: [], egressAddresses: [] };
|
|
67
67
|
}
|
|
68
68
|
const scopes = permissions.scopes.map((s) => s.key);
|
|
69
|
-
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
|
+
const egressAddresses = (permissions === null || permissions === void 0 ? void 0 : permissions.egress) ? (0, cli_shared_1.flatMap)(permissions.egress, ({ addresses }) => addresses !== null && addresses !== void 0 ? addresses : []) : [];
|
|
70
70
|
return { scopes, egressAddresses };
|
|
71
71
|
}
|
|
72
72
|
async getAppEnvironmentPermissions(appId, environmentKey) {
|
|
@@ -75,7 +75,7 @@ class InstallationService {
|
|
|
75
75
|
if (!versions || versions.length === 0)
|
|
76
76
|
return;
|
|
77
77
|
const [{ scopes, egressAddresses }, oldVersion] = versions.map((appEnvironmentVersion) => this.getPermissionsFromAppEnvironmentVersion(appEnvironmentVersion));
|
|
78
|
-
const groupedEgressAddresses = egress_1.sortAndGroupEgressPermissionsByDomain(egressAddresses);
|
|
78
|
+
const groupedEgressAddresses = (0, egress_1.sortAndGroupEgressPermissionsByDomain)(egressAddresses);
|
|
79
79
|
if (!oldVersion) {
|
|
80
80
|
return {
|
|
81
81
|
scopes,
|
|
@@ -84,7 +84,7 @@ class InstallationService {
|
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
86
|
const { scopes: oldScopes } = oldVersion;
|
|
87
|
-
const addedScopes = lodash_1.difference(scopes, oldScopes);
|
|
87
|
+
const addedScopes = (0, lodash_1.difference)(scopes, oldScopes);
|
|
88
88
|
return { scopes, egressAddresses: groupedEgressAddresses, addedScopes };
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -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, logger: LintLogger, directory?: string, lintFunction?: (filesToLint: string[], manifest: import("@forge/manifest").ManifestSchema, environment: string, logger:
|
|
16
|
+
run(environment: string, { fix }: LintOptions, logger: LintLogger, directory?: string, lintFunction?: (filesToLint: string[], manifest: import("@forge/manifest").ManifestSchema, environment: string, logger: LintLogger, 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,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,
|
|
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,0hBAAO,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"}
|
|
@@ -10,7 +10,7 @@ class LintService {
|
|
|
10
10
|
this.fileSystemReader = fileSystemReader;
|
|
11
11
|
}
|
|
12
12
|
async run(environment, { fix }, logger, directory = exports.DEFAULT_DIRECTORY, lintFunction = lint_1.lint) {
|
|
13
|
-
const exclude = [...(await cli_shared_1.listGitIgnoreFiles(this.fileSystemReader)), '.git', 'node_modules'];
|
|
13
|
+
const exclude = [...(await (0, cli_shared_1.listGitIgnoreFiles)(this.fileSystemReader)), '.git', 'node_modules'];
|
|
14
14
|
const filesToLint = await this.fileSystemReader.recursiveReadDir(directory, exclude);
|
|
15
15
|
const lintResults = await lintFunction(filesToLint, await this.configFile.readConfig(), environment, logger);
|
|
16
16
|
if (fix) {
|
|
@@ -23,10 +23,10 @@ class LintService {
|
|
|
23
23
|
return lintResults.reduce((promiseChain, nextResult) => promiseChain.then((state) => nextResult.runFixer(state)), Promise.resolve(initialState));
|
|
24
24
|
}
|
|
25
25
|
problemCount(lintResults) {
|
|
26
|
-
return lint_1.problemCount(lintResults);
|
|
26
|
+
return (0, lint_1.problemCount)(lintResults);
|
|
27
27
|
}
|
|
28
28
|
failedScopesFromLintResult({ errors, warnings }) {
|
|
29
|
-
return Array.from(lint_1.findMissingPermissions(errors, warnings, 'missingPermission'));
|
|
29
|
+
return Array.from((0, lint_1.findMissingPermissions)(errors, warnings, 'missingPermission'));
|
|
30
30
|
}
|
|
31
31
|
failedScopes(lintResults) {
|
|
32
32
|
return lintResults.reduce((acc, lintResult) => {
|
|
@@ -2,7 +2,7 @@ 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?: (logger:
|
|
5
|
+
constructor(lintService?: (logger: LintLogger, linter?: import("@forge/lint").LinterInterface | undefined) => Promise<LintResult[]>, problemCounter?: (lintResults: LintResult[]) => import("@forge/lint").ProblemCount);
|
|
6
6
|
run(checkSchema: boolean, logger: LintLogger): Promise<LintResult[]>;
|
|
7
7
|
private filterResults;
|
|
8
8
|
hasErrors(report: LintResult[]): boolean;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,4GAAW,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"}
|
|
@@ -1 +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,
|
|
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,mBAAmB,CAAC;AACtD,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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ConfigFilePortFindingService = void 0;
|
|
4
4
|
const portfinder_1 = require("portfinder");
|
|
5
5
|
const util_1 = require("util");
|
|
6
|
-
const getPortsPromise = util_1.promisify(portfinder_1.getPorts);
|
|
6
|
+
const getPortsPromise = (0, util_1.promisify)(portfinder_1.getPorts);
|
|
7
7
|
class ConfigFilePortFindingService {
|
|
8
8
|
constructor(configFile) {
|
|
9
9
|
this.configFile = configFile;
|
|
@@ -64,7 +64,7 @@ class ResourcePackagingService {
|
|
|
64
64
|
transformRelativeResourcePathsToAbsolute(appDir, resources) {
|
|
65
65
|
return resources.map(({ key, path, resourceType }) => ({
|
|
66
66
|
key,
|
|
67
|
-
directory: resourceType === 'nativeUI' ? path : path_1.join(appDir, path),
|
|
67
|
+
directory: resourceType === 'nativeUI' ? path : (0, path_1.join)(appDir, path),
|
|
68
68
|
resourceType
|
|
69
69
|
}));
|
|
70
70
|
}
|
|
@@ -85,7 +85,7 @@ class ResourcePackagingService {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
assertDirectoryIncludesEntrypoint(directory, filePaths) {
|
|
88
|
-
if (!filePaths.map((path) => path_1.relative(directory, path)).includes(CUSTOM_UI_ENTRYPOINT)) {
|
|
88
|
+
if (!filePaths.map((path) => (0, path_1.relative)(directory, path)).includes(CUSTOM_UI_ENTRYPOINT)) {
|
|
89
89
|
throw new MissingHtmlEntrypointError();
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -93,7 +93,7 @@ class ResourcePackagingService {
|
|
|
93
93
|
await Promise.all(filePaths.map(async (filePath) => {
|
|
94
94
|
const file = await this.fileSystemReader.readBinaryFileAsync(filePath);
|
|
95
95
|
if (file) {
|
|
96
|
-
const relativePathToArchiveRoot = path_1.relative(directory, filePath);
|
|
96
|
+
const relativePathToArchiveRoot = (0, path_1.relative)(directory, filePath);
|
|
97
97
|
archiver.addFile(relativePathToArchiveRoot, this.processFile(relativePathToArchiveRoot, file));
|
|
98
98
|
}
|
|
99
99
|
}));
|
|
@@ -112,7 +112,7 @@ class ResourcePackagingService {
|
|
|
112
112
|
zipPath: archivePath,
|
|
113
113
|
rawSize: this.fileSystemReader.bytesToMb(await this.fileSystemReader.getFolderSizeAsync(directory)),
|
|
114
114
|
zipSize: this.fileSystemReader.bytesToMb(this.fileSystemReader.getSize(archivePath)),
|
|
115
|
-
extensions: [...new Set(filePaths.map((file) => path_1.extname(file)))],
|
|
115
|
+
extensions: [...new Set(filePaths.map((file) => (0, path_1.extname)(file)))],
|
|
116
116
|
fileCount: filePaths.length
|
|
117
117
|
};
|
|
118
118
|
}
|
|
@@ -22,7 +22,7 @@ class ResourcesUploaderService {
|
|
|
22
22
|
formData.append(k, v);
|
|
23
23
|
});
|
|
24
24
|
formData.append('file', content);
|
|
25
|
-
const response = await node_fetch_1.default(preSignedUrl.uploadUrl, {
|
|
25
|
+
const response = await (0, node_fetch_1.default)(preSignedUrl.uploadUrl, {
|
|
26
26
|
method: 'POST',
|
|
27
27
|
body: formData
|
|
28
28
|
});
|
|
@@ -12,14 +12,14 @@ const version_info_1 = require("../command-line/version-info");
|
|
|
12
12
|
const DISABLE_TTY = process.env.DISABLE_TTY === 'true';
|
|
13
13
|
const CUR_WORK_APP_DIR = process.env.CUR_WORK_APP_DIR;
|
|
14
14
|
exports.CONTAINER_NAME = 'forge-tunnel-docker';
|
|
15
|
-
const cliDetails = version_info_1.getCLIDetails();
|
|
15
|
+
const cliDetails = (0, version_info_1.getCLIDetails)();
|
|
16
16
|
let versionTags;
|
|
17
17
|
if ((cliDetails === null || cliDetails === void 0 ? void 0 : cliDetails.version) !== undefined) {
|
|
18
18
|
if (process.env.FORGE_IN_LOCAL_E2E === 'true') {
|
|
19
19
|
versionTags = ['e2e'];
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
|
-
versionTags = semver_1.prerelease(cliDetails.version) || ['latest'];
|
|
22
|
+
versionTags = (0, semver_1.prerelease)(cliDetails.version) || ['latest'];
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
@@ -37,7 +37,7 @@ class TunnelService {
|
|
|
37
37
|
}
|
|
38
38
|
async getDockerOptions(tunnelOptions, debugEnabled, { email, token }) {
|
|
39
39
|
try {
|
|
40
|
-
const graphqlGateway = cli_shared_1.getGraphqlGateway();
|
|
40
|
+
const graphqlGateway = (0, cli_shared_1.getGraphqlGateway)();
|
|
41
41
|
return [
|
|
42
42
|
'--rm',
|
|
43
43
|
`--name`,
|
|
@@ -66,7 +66,7 @@ class TunnelService {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
getPortOptions(port, resourcePorts, cspReporterPort) {
|
|
69
|
-
const resourcePortOptions = cli_shared_1.flatMap(Object.values(resourcePorts), (resourcePort) => [
|
|
69
|
+
const resourcePortOptions = (0, cli_shared_1.flatMap)(Object.values(resourcePorts), (resourcePort) => [
|
|
70
70
|
'-p',
|
|
71
71
|
`${resourcePort}:${resourcePort}`
|
|
72
72
|
]);
|
|
@@ -119,7 +119,7 @@ class TunnelService {
|
|
|
119
119
|
getVolumeOptions() {
|
|
120
120
|
const options = [`-v=${CUR_WORK_APP_DIR || process.cwd()}:/app:cached`];
|
|
121
121
|
if (process.env.FORGE_DEV_DOCKER_TUNNEL) {
|
|
122
|
-
options.push(`-v=${path_1.join(__dirname, '../../../forge-tunnel/hardcopied_node_modules/node_modules')}:/tunnel/node_modules:cached`, `-v=${path_1.join(__dirname, '../../../forge-tunnel/out')}:/tunnel/out:cached`);
|
|
122
|
+
options.push(`-v=${(0, path_1.join)(__dirname, '../../../forge-tunnel/hardcopied_node_modules/node_modules')}:/tunnel/node_modules:cached`, `-v=${(0, path_1.join)(__dirname, '../../../forge-tunnel/out')}:/tunnel/out:cached`);
|
|
123
123
|
}
|
|
124
124
|
if (process.env.FORGE_TUNNEL_MOUNT_DIRECTORIES) {
|
|
125
125
|
const mounts = process.env.FORGE_TUNNEL_MOUNT_DIRECTORIES.split(',');
|
|
@@ -134,7 +134,7 @@ exports.TunnelService = TunnelService;
|
|
|
134
134
|
class LocalTunnelService extends TunnelService {
|
|
135
135
|
async run(tunnelOptions, creds, debugEnabled, onError) {
|
|
136
136
|
const dockerOptions = await this.getDockerOptions(tunnelOptions, debugEnabled, creds);
|
|
137
|
-
const port = await portfinder_1.getPortPromise();
|
|
137
|
+
const port = await (0, portfinder_1.getPortPromise)();
|
|
138
138
|
const resourcePorts = await this.configFilePortFindingService.findPorts();
|
|
139
139
|
const cspReporterPort = await this.configFilePortFindingService.findPortAfter(Object.values(resourcePorts));
|
|
140
140
|
const portOptions = this.getPortOptions(port, resourcePorts, cspReporterPort);
|
|
@@ -146,7 +146,7 @@ class LocalTunnelService extends TunnelService {
|
|
|
146
146
|
...envVariablesOptions,
|
|
147
147
|
...resourcePortEnvVarOption
|
|
148
148
|
]));
|
|
149
|
-
cross_spawn_1.spawn('forge-tunnel', [], {
|
|
149
|
+
(0, cross_spawn_1.spawn)('forge-tunnel', [], {
|
|
150
150
|
stdio: 'inherit',
|
|
151
151
|
env: Object.assign(Object.assign({}, env), { FORGE_DEV_TUNNEL: 'true' })
|
|
152
152
|
}).on('error', onError);
|
|
@@ -162,7 +162,7 @@ class DockerTunnelService extends TunnelService {
|
|
|
162
162
|
async run(tunnelOptions, creds, debugEnabled) {
|
|
163
163
|
await this.validateDockerVersion(creds, debugEnabled);
|
|
164
164
|
const dockerOptions = await this.getDockerOptions(tunnelOptions, debugEnabled, creds);
|
|
165
|
-
const port = await portfinder_1.getPortPromise();
|
|
165
|
+
const port = await (0, portfinder_1.getPortPromise)();
|
|
166
166
|
const resourcePorts = await this.configFilePortFindingService.findPorts(port);
|
|
167
167
|
const cspReporterPort = await this.configFilePortFindingService.findPortAfter(Object.values(resourcePorts));
|
|
168
168
|
const portOptions = this.getPortOptions(port, resourcePorts, cspReporterPort);
|
|
@@ -49,5 +49,5 @@ class LocalFileStorage {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
exports.LocalFileStorage = LocalFileStorage;
|
|
52
|
-
LocalFileStorage.STORAGE_PATHS = env_paths_1.default('forge-cli');
|
|
52
|
+
LocalFileStorage.STORAGE_PATHS = (0, env_paths_1.default)('forge-cli');
|
|
53
53
|
LocalFileStorage.FOLDER = LocalFileStorage.STORAGE_PATHS.data;
|
|
@@ -13,8 +13,8 @@ class GetWebTriggerURLCommand {
|
|
|
13
13
|
const { id: appId } = await this.getAppConfig();
|
|
14
14
|
const { environmentKey, context } = await this.webTriggerClient.getInstallation(appId, installationId);
|
|
15
15
|
const environmentId = await this.appEnvironmentClient.getAppEnvironmentId(appId, environmentKey);
|
|
16
|
-
const ari = cs_ari_1.parse(appId);
|
|
17
|
-
const appAri = cs_ari_1.parseAppAri(ari);
|
|
16
|
+
const ari = (0, cs_ari_1.parse)(appId);
|
|
17
|
+
const appAri = (0, cs_ari_1.parseAppAri)(ari);
|
|
18
18
|
return await this.webTriggerGraphqlClient.createWebTriggerUrl({
|
|
19
19
|
appId: appAri.appId,
|
|
20
20
|
contextId: context,
|
|
@@ -16,6 +16,6 @@ const ALL_WORKERS = [
|
|
|
16
16
|
new version_check_worker_1.VersionCheckWorker(workerInfo)
|
|
17
17
|
];
|
|
18
18
|
const TIMEOUT = 10 * 1000;
|
|
19
|
-
worker_1.handleWithTimeout(() => Promise.all(ALL_WORKERS.map((worker) => worker.doWork())), TIMEOUT)
|
|
19
|
+
(0, worker_1.handleWithTimeout)(() => Promise.all(ALL_WORKERS.map((worker) => worker.doWork())), TIMEOUT)
|
|
20
20
|
.finally(() => process.exit(0))
|
|
21
21
|
.catch((e) => process.exit(1));
|
|
@@ -15,7 +15,7 @@ class TunnelCleanUpWorker {
|
|
|
15
15
|
pids.forEach((pid) => {
|
|
16
16
|
process.kill(pid, os_1.constants.signals.SIGINT);
|
|
17
17
|
});
|
|
18
|
-
cross_spawn_1.spawn('docker', ['rm', '-f', ...containers]);
|
|
18
|
+
(0, cross_spawn_1.spawn)('docker', ['rm', '-f', ...containers]);
|
|
19
19
|
process.exit(0);
|
|
20
20
|
};
|
|
21
21
|
process.on('message', messageHandler);
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getWorkerInfo = void 0;
|
|
4
4
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
|
-
|
|
5
|
+
const getWorkerInfo = (cliDetails) => {
|
|
6
6
|
if (!cliDetails) {
|
|
7
7
|
return undefined;
|
|
8
8
|
}
|
|
9
9
|
return {
|
|
10
10
|
name: cliDetails.name,
|
|
11
11
|
checkForUpdate: cliDetails.latest === undefined,
|
|
12
|
-
environment: cli_shared_1.getEnvironment()
|
|
12
|
+
environment: (0, cli_shared_1.getEnvironment)()
|
|
13
13
|
};
|
|
14
14
|
};
|
|
15
|
+
exports.getWorkerInfo = getWorkerInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/workers/worker.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,YAAa,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/workers/worker.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,YAAa,MAAM,KAAG,QAAQ,IAAI,CAA2D,CAAC;AAOhH,eAAO,MAAM,iBAAiB,WAAkB,MAAM,QAAQ,IAAI,GAAG,IAAI,EAAE,CAAC,WAAW,MAAM,KAAG,QAAQ,IAAI,CAE3G,CAAC;AAEF,MAAM,WAAW,MAAM;IACrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB"}
|
package/out/workers/worker.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleWithTimeout = exports.timer = void 0;
|
|
4
|
-
|
|
5
|
-
exports.
|
|
6
|
-
|
|
4
|
+
const timer = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));
|
|
5
|
+
exports.timer = timer;
|
|
6
|
+
const handleWithTimeout = async (action, timeout) => {
|
|
7
|
+
await Promise.race([action(), (0, exports.timer)(timeout)]);
|
|
7
8
|
};
|
|
9
|
+
exports.handleWithTimeout = handleWithTimeout;
|
|
@@ -12,7 +12,7 @@ class WorkersStarter {
|
|
|
12
12
|
prg = 'ts-node';
|
|
13
13
|
filePath = './forge-cli-workers.ts';
|
|
14
14
|
}
|
|
15
|
-
const workers = cross_spawn_1.spawn(prg, [path_1.default.join(__dirname, filePath), JSON.stringify(workerInfo || '')], {
|
|
15
|
+
const workers = (0, cross_spawn_1.spawn)(prg, [path_1.default.join(__dirname, filePath), JSON.stringify(workerInfo || '')], {
|
|
16
16
|
detached: true,
|
|
17
17
|
stdio: 'ignore'
|
|
18
18
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0-next.3",
|
|
4
4
|
"description": "A command line interface for managing Atlassian-hosted apps",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"postinstall": "node -e \"process.exitCode = fs.existsSync('./out/bin/postinstall.js')\" || node ./out/bin/postinstall.js"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@forge/bundler": "
|
|
22
|
-
"@forge/cli-shared": "3.2.
|
|
21
|
+
"@forge/bundler": "4.0.0-next.2",
|
|
22
|
+
"@forge/cli-shared": "3.2.2-next.1",
|
|
23
23
|
"@forge/egress": "^1.1.1",
|
|
24
|
-
"@forge/lint": "3.2.
|
|
25
|
-
"@forge/manifest": "4.4.0",
|
|
24
|
+
"@forge/lint": "3.2.8-next.1",
|
|
25
|
+
"@forge/manifest": "4.4.1-next.0",
|
|
26
26
|
"@forge/util": "1.2.0",
|
|
27
27
|
"ajv": "^6.12.5",
|
|
28
28
|
"archiver": "^5.2.0",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"sanitize-filename": "^1.6.3",
|
|
49
49
|
"semver": "^6.3.0",
|
|
50
50
|
"tmp": "^0.1.0",
|
|
51
|
-
"tslib": "^
|
|
51
|
+
"tslib": "^2.4.0",
|
|
52
52
|
"uuid": "^3.4.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@types/fs-extra": "^8.0.1",
|
|
61
61
|
"@types/hidefile": "^3.0.0",
|
|
62
62
|
"@types/inquirer": "^6.5.0",
|
|
63
|
-
"@types/jest": "^
|
|
63
|
+
"@types/jest": "^29.1.2",
|
|
64
64
|
"@types/js-yaml": "^3.12.2",
|
|
65
65
|
"@types/minimatch": "^3.0.3",
|
|
66
66
|
"@types/mkdirp": "^1.0.0",
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
"@types/unzipper": "^0.10.1",
|
|
73
73
|
"@types/uuid": "^3.4.7",
|
|
74
74
|
"@types/webpack": "^5.28.0",
|
|
75
|
+
"jest": "^29.1.2",
|
|
75
76
|
"jest-fixtures": "^0.6.0",
|
|
76
77
|
"memfs": "^3.4.1"
|
|
77
78
|
},
|