@forge/cli-shared 9.3.0-next.10 → 9.3.0-next.11-experimental-4b981ef
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 +31 -0
- package/out/apps/template-module.d.ts.map +1 -1
- package/out/apps/template-module.js +4 -5
- package/out/apps/template.d.ts.map +1 -1
- package/out/apps/template.js +4 -10
- package/out/graphql/graphql-types.d.ts +1405 -27
- package/out/graphql/graphql-types.d.ts.map +1 -1
- package/out/graphql/graphql-types.js +196 -48
- package/out/graphql/minimal-graphql-runner.d.ts +1 -2
- package/out/graphql/minimal-graphql-runner.d.ts.map +1 -1
- package/out/http-client/feedback-post-client.d.ts +0 -1
- package/out/http-client/feedback-post-client.d.ts.map +1 -1
- package/out/http-client/feedback-post-client.js +1 -3
- package/out/http-client/file-uploader.d.ts.map +1 -1
- package/out/http-client/file-uploader.js +36 -9
- package/out/http-client/global-edge-http-client.d.ts +0 -1
- package/out/http-client/global-edge-http-client.d.ts.map +1 -1
- package/out/http-client/trace.d.ts +3 -2
- package/out/http-client/trace.d.ts.map +1 -1
- package/out/service/statsig-service.d.ts +1 -1
- package/out/service/statsig-service.d.ts.map +1 -1
- package/out/service/statsig-service.js +3 -5
- package/out/shared/error-handling.d.ts.map +1 -1
- package/out/shared/error-handling.js +30 -4
- package/package.json +2 -4
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { GraphQLClient } from 'graphql-request';
|
|
2
2
|
import { GraphQLError } from 'graphql';
|
|
3
|
-
import { Headers as NodeFetchHeaders } from 'node-fetch';
|
|
4
3
|
import { Authenticator, AuthorizationHeader } from '../auth';
|
|
5
4
|
import { CLIDetails, EnvironmentOptions } from '../index';
|
|
6
5
|
import { BaseError, UserError } from '../shared';
|
|
@@ -31,7 +30,7 @@ export declare class GraphQLProviderServiceError extends BaseError {
|
|
|
31
30
|
export declare class GraphqlError extends Error {
|
|
32
31
|
constructor(data: any, requestId?: string);
|
|
33
32
|
}
|
|
34
|
-
export type Headers = Pick<
|
|
33
|
+
export type Headers = Pick<globalThis.Headers, 'get'>;
|
|
35
34
|
export declare class MinimalGraphQLRunner implements GraphQLRunner {
|
|
36
35
|
private readonly authenticator;
|
|
37
36
|
private readonly endpoint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-graphql-runner.d.ts","sourceRoot":"","sources":["../../src/graphql/minimal-graphql-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"minimal-graphql-runner.d.ts","sourceRoot":"","sources":["../../src/graphql/minimal-graphql-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAqD,MAAM,UAAU,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAuB,SAAS,EAAE,MAAM,WAAW,CAAC;AAItE,OAAO,EAAE,iCAAiC,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE/F,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAE9D,eAAO,MAAM,cAAc,EAAE,kBAM5B,CAAC;AACF,qBAAa,0BAA2B,SAAQ,SAAS;CAAG;AAM5D,qBAAa,0BAA2B,SAAQ,SAAS;;CAIxD;AAED,qBAAa,uBAAwB,SAAQ,SAAS;;CAIrD;AAED,qBAAa,2BAA4B,SAAQ,SAAS;IAMtD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGpB,SAAS,EAAE,OAAO,EACnC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,YAAY,EAAE;IASxB,OAAO,QAAO,MAAM,GAAG,SAAS,CAE9B;IAEF,aAAa,QAAO,MAAM,GAAG,SAAS,CAEpC;IAEF,YAAY,QAAO,MAAM,GAAG,SAAS,CAEnC;IAEK,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,YAAa,SAAQ,KAAK;gBACzB,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM;CAG1C;AAED,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAEtD,qBAAa,oBAAqB,YAAW,aAAa;IAEtD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GAAG,SAAS;IAGxC,GAAG,CAAC,UAAU,SAAS,SAAS,EAAE,SAAS,EAAE,WAAW,GAAG,iCAAiC,EACvG,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,UAAU;;kBAMD,SAAS;oBACD,WAAW,GAAG,SAAS;;cAIrC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB;IAMpF,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;YAYvF,cAAc;IAQ5B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;YAIV,4BAA4B;IA6C1C,OAAO,CAAC,YAAY;CAarB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-post-client.d.ts","sourceRoot":"","sources":["../../src/http-client/feedback-post-client.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"feedback-post-client.d.ts","sourceRoot":"","sources":["../../src/http-client/feedback-post-client.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzD;AAqBD,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,QAAQ,CAAC,yBAAyB,oHACiF;IAEtG,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;CASrE"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HttpsFeedbackPostClient = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
|
|
6
4
|
const prepareRequestBody = (feedback) => {
|
|
7
5
|
return {
|
|
8
6
|
fields: [
|
|
@@ -24,7 +22,7 @@ const prepareRequestBody = (feedback) => {
|
|
|
24
22
|
class HttpsFeedbackPostClient {
|
|
25
23
|
forgeFeedbackCollectorUrl = 'https://jsd-widget.atlassian.com/api/embeddable/b8a921af-5e55-4b6f-a219-590251ab908f/request?requestTypeId=326';
|
|
26
24
|
async sendFeedback(feedback) {
|
|
27
|
-
return (
|
|
25
|
+
return fetch(this.forgeFeedbackCollectorUrl, {
|
|
28
26
|
method: 'POST',
|
|
29
27
|
headers: {
|
|
30
28
|
'Content-Type': 'application/json'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader.d.ts","sourceRoot":"","sources":["../../src/http-client/file-uploader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-uploader.d.ts","sourceRoot":"","sources":["../../src/http-client/file-uploader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,qBAAa,qBAAsB,SAAQ,KAAK;CAAG;AACnD,qBAAa,uBAAwB,SAAQ,KAAK;CAAG;AACrD,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAGlD,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAyDD,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,gBAAgB;IAE5C,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAa1E"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HttpFileUploader = exports.UploadFileEmptyError = exports.UploadFileNotFoundError = exports.CannotUploadFileError = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
5
|
+
const http_1 = tslib_1.__importDefault(require("http"));
|
|
6
|
+
const https_1 = tslib_1.__importDefault(require("https"));
|
|
7
|
+
const url_1 = require("url");
|
|
6
8
|
const ui_1 = require("../ui");
|
|
7
9
|
class CannotUploadFileError extends Error {
|
|
8
10
|
}
|
|
@@ -13,6 +15,7 @@ exports.UploadFileNotFoundError = UploadFileNotFoundError;
|
|
|
13
15
|
class UploadFileEmptyError extends Error {
|
|
14
16
|
}
|
|
15
17
|
exports.UploadFileEmptyError = UploadFileEmptyError;
|
|
18
|
+
const NODE_REQUEST_TIMEOUT_MS = 30_000;
|
|
16
19
|
const validateFileContents = (filePath, fileContents) => {
|
|
17
20
|
if (!fileContents) {
|
|
18
21
|
throw new UploadFileNotFoundError(ui_1.Text.upload.error.notFound(filePath));
|
|
@@ -27,6 +30,33 @@ const checkResponse = async (response) => {
|
|
|
27
30
|
throw new CannotUploadFileError(ui_1.Text.upload.error.status(response.status, await response.text()));
|
|
28
31
|
}
|
|
29
32
|
};
|
|
33
|
+
const uploadWithNodeRequest = (url, headers, fileContents) => {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
const parsedUrl = new url_1.URL(url);
|
|
36
|
+
const transport = parsedUrl.protocol === 'https:' ? https_1.default : http_1.default;
|
|
37
|
+
const request = transport.request(parsedUrl, {
|
|
38
|
+
method: 'PUT',
|
|
39
|
+
headers
|
|
40
|
+
}, (response) => {
|
|
41
|
+
const chunks = [];
|
|
42
|
+
response.on('data', (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
|
43
|
+
response.on('end', () => {
|
|
44
|
+
const body = Buffer.concat(chunks).toString('utf-8');
|
|
45
|
+
resolve(new Response(body, {
|
|
46
|
+
status: response.statusCode ?? 500,
|
|
47
|
+
statusText: response.statusMessage,
|
|
48
|
+
headers: response.headers
|
|
49
|
+
}));
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
request.setTimeout(NODE_REQUEST_TIMEOUT_MS, () => {
|
|
53
|
+
request.destroy(new Error(`Request timed out after ${NODE_REQUEST_TIMEOUT_MS}ms`));
|
|
54
|
+
});
|
|
55
|
+
request.on('error', reject);
|
|
56
|
+
request.write(fileContents);
|
|
57
|
+
request.end();
|
|
58
|
+
});
|
|
59
|
+
};
|
|
30
60
|
class HttpFileUploader {
|
|
31
61
|
fileSystem;
|
|
32
62
|
constructor(fileSystem) {
|
|
@@ -35,14 +65,11 @@ class HttpFileUploader {
|
|
|
35
65
|
async uploadFromPath(url, filePath) {
|
|
36
66
|
const fileContents = this.fileSystem.readBinaryFile(filePath);
|
|
37
67
|
const validFileContents = validateFileContents(filePath, fileContents);
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
},
|
|
44
|
-
body: validFileContents
|
|
45
|
-
});
|
|
68
|
+
const headers = {
|
|
69
|
+
'Content-Type': 'application/zip',
|
|
70
|
+
'Content-Length': validFileContents.length.toString()
|
|
71
|
+
};
|
|
72
|
+
const response = await uploadWithNodeRequest(url, headers, validFileContents);
|
|
46
73
|
await checkResponse(response);
|
|
47
74
|
}
|
|
48
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-edge-http-client.d.ts","sourceRoot":"","sources":["../../src/http-client/global-edge-http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"global-edge-http-client.d.ts","sourceRoot":"","sources":["../../src/http-client/global-edge-http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,GAAG,EAAE,GAAG;CAGrB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,GAAG,EAAE,GAAG;CAGrB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5C;AAED,qBAAa,oBAAqB,YAAW,gBAAgB;IAC/C,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,KAAK;IAEzB,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBnD,OAAO,CAAC,QAAQ;CAIjB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function getAtlassianTraceId(headers:
|
|
1
|
+
type HeadersWithGet = Pick<Headers, 'get'>;
|
|
2
|
+
export declare function getAtlassianTraceId(headers: HeadersWithGet): string | undefined;
|
|
3
|
+
export {};
|
|
3
4
|
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/http-client/trace.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/http-client/trace.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAE3C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAE/E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AppEnvironmentType } from '../graphql/graphql-types';
|
|
2
2
|
import { CLIDetails, ConfigSectionReader, CredentialGetter, getEnvironmentConfig, Logger } from '../index';
|
|
3
|
-
export type FeatureGate = 'forge-cli-test-gate' | 'is-logs-v-2-api-enabled' | 'forge-cli-bundle-runtime-loader' | 'forge-cli-enable-teamwork-graph-product-support' | 'forge-cli-enable-developer-space-enforcement-flow' | 'forge-cli-enable-typescript-bundler' | 'forge-cli-enable-self-managed-tunnel' | 'forge-cli-enable-combined-artifact-upload';
|
|
3
|
+
export type FeatureGate = 'forge-cli-test-gate' | 'is-logs-v-2-api-enabled' | 'forge-cli-bundle-runtime-loader' | 'forge-cli-enable-teamwork-graph-product-support' | 'forge-cli-enable-developer-space-enforcement-flow' | 'forge-cli-enable-typescript-bundler' | 'forge-cli-enable-self-managed-tunnel' | 'fg-forge-cli-enable-combined-artifact-upload';
|
|
4
4
|
export type DynamicConfig = {
|
|
5
5
|
'forge-cli-test-dynamic-configs': string[];
|
|
6
6
|
'xls-forge-cli-deprecated-runtimes': string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statsig-service.d.ts","sourceRoot":"","sources":["../../src/service/statsig-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"statsig-service.d.ts","sourceRoot":"","sources":["../../src/service/statsig-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StatsigService = exports.StatsigReader = void 0;
|
|
4
4
|
exports.cacheStatsigResult = cacheStatsigResult;
|
|
5
|
-
const tslib_1 = require("tslib");
|
|
6
|
-
const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
|
|
7
5
|
const index_1 = require("../index");
|
|
8
6
|
class StatsigReader {
|
|
9
7
|
async testForgeCliTestGate() {
|
|
@@ -49,7 +47,7 @@ class StatsigReader {
|
|
|
49
47
|
else if (process.env.FORGE_CLI_ENABLE_COMBINED_ARTIFACT_UPLOAD === 'false') {
|
|
50
48
|
return false;
|
|
51
49
|
}
|
|
52
|
-
return (await this.checkGate('forge-cli-enable-combined-artifact-upload', { environmentType })) ?? false;
|
|
50
|
+
return (await this.checkGate('fg-forge-cli-enable-combined-artifact-upload', { environmentType })) ?? false;
|
|
53
51
|
}
|
|
54
52
|
async getCustomSpinnerConfig() {
|
|
55
53
|
return (await this.getDynamicConfig('forge-cli-enable-custom-spinner')) ?? null;
|
|
@@ -131,7 +129,7 @@ class StatsigService extends StatsigReader {
|
|
|
131
129
|
const baseURL = this.getEnvironmentFn(BASE_FEATURE_FLAG_SERVICE_URL);
|
|
132
130
|
const apiKey = this.getEnvironmentFn(STATSIG_API_KEYS);
|
|
133
131
|
const context = await this.context();
|
|
134
|
-
const response = await (
|
|
132
|
+
const response = await fetch(`${baseURL}/frontend/gates`, {
|
|
135
133
|
headers: {
|
|
136
134
|
'x-api-key': apiKey,
|
|
137
135
|
'Content-Type': 'application/json'
|
|
@@ -163,7 +161,7 @@ class StatsigService extends StatsigReader {
|
|
|
163
161
|
const baseURL = this.getEnvironmentFn(BASE_FEATURE_FLAG_SERVICE_URL);
|
|
164
162
|
const apiKey = this.getEnvironmentFn(STATSIG_API_KEYS);
|
|
165
163
|
const context = await this.context();
|
|
166
|
-
const response = await (
|
|
164
|
+
const response = await fetch(`${baseURL}/configurations`, {
|
|
167
165
|
headers: {
|
|
168
166
|
'x-api-key': apiKey,
|
|
169
167
|
'Content-Type': 'application/json'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../src/shared/error-handling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAKF,MAAM,WAAW,kBAAkB;IACjC,aAAa,IAAI,cAAc,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../src/shared/error-handling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAKF,MAAM,WAAW,kBAAkB;IACjC,aAAa,IAAI,cAAc,CAAC;CACjC;AA8CD,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAW3C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,GAAG,cAAc,CAOzD;AAED,qBAAa,SAAU,SAAQ,KAAM,YAAW,kBAAkB;IAE9D,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;gBAA9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,EACjD,OAAO,CAAC,EAAE,MAAM;IAKX,aAAa,IAAI,cAAc;IAM/B,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;CAG7D;AAUD,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,EACd,OAAO,KAAK,EACZ,OAAO,MAAM,GAAG,IAAI,EACpB,wBAAwB,qBAAqB,KAC5C,OAAO,CAAC,KAAK,CAmCf,CAAC;AAOF,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAK1C,CAAC;AASF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,KAAK,CAIrG;AAMD,eAAO,MAAM,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,KAIhE,CAAC;AAEF,qBAAa,eAAgB,SAAQ,SAAS;CAAG;AAEjD,qBAAa,cAAe,SAAQ,SAAS;CAAG;AAEhD,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,qBAAa,uBAAwB,SAAQ,SAAS;CAAG;AAEzD,qBAAa,aAAc,SAAQ,SAAS;IAGxC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAD3B,OAAO,CAAC,EAAE,MAAM,EACC,UAAU,GAAE,OAAe;IAKvC,WAAW;CAGnB;AAUD,qBAAa,wBAAyB,SAAQ,SAAS;gBAMzC,OAAO,CAAC,EAAE,MAAM;CAG7B;AAUD,qBAAa,mBAAoB,SAAQ,SAAS;gBAMpC,OAAO,CAAC,EAAE,MAAM;CAG7B"}
|
|
@@ -11,14 +11,40 @@ const assistant_cli_1 = require("./assistant-cli");
|
|
|
11
11
|
function isErrorWithAnalytics(e) {
|
|
12
12
|
return e.getAttributes !== undefined;
|
|
13
13
|
}
|
|
14
|
+
const NETWORK_CONNECTIVITY_ERROR_CODES = new Set([
|
|
15
|
+
'ENOTFOUND',
|
|
16
|
+
'ECONNRESET',
|
|
17
|
+
'ECONNREFUSED',
|
|
18
|
+
'ECONNABORTED',
|
|
19
|
+
'ENETUNREACH',
|
|
20
|
+
'EHOSTUNREACH',
|
|
21
|
+
'EAI_AGAIN',
|
|
22
|
+
'ETIMEDOUT',
|
|
23
|
+
'UND_ERR_CONNECT_TIMEOUT',
|
|
24
|
+
'UND_ERR_HEADERS_TIMEOUT',
|
|
25
|
+
'UND_ERR_SOCKET'
|
|
26
|
+
]);
|
|
27
|
+
function isLikelyNetworkError(e) {
|
|
28
|
+
if (!(e instanceof Error)) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (e instanceof TypeError && e.message === 'fetch failed') {
|
|
32
|
+
const causeCode = e.cause && typeof e.cause === 'object' && typeof e.cause.code === 'string'
|
|
33
|
+
? e.cause.code
|
|
34
|
+
: undefined;
|
|
35
|
+
return causeCode ? NETWORK_CONNECTIVITY_ERROR_CODES.has(causeCode) : false;
|
|
36
|
+
}
|
|
37
|
+
if (e.constructor?.name === 'FetchError' && e.type === 'system') {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
14
42
|
function isUserError(e) {
|
|
15
43
|
if (isErrorWithAnalytics(e)) {
|
|
16
44
|
return e.getAttributes().isUserError ?? false;
|
|
17
45
|
}
|
|
18
|
-
if (e
|
|
19
|
-
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
46
|
+
if (isLikelyNetworkError(e)) {
|
|
47
|
+
return true;
|
|
22
48
|
}
|
|
23
49
|
return false;
|
|
24
50
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/cli-shared",
|
|
3
|
-
"version": "9.3.0-next.
|
|
3
|
+
"version": "9.3.0-next.11-experimental-4b981ef",
|
|
4
4
|
"description": "Common functionality for Forge CLI",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"generate-graphql-types": "graphql-codegen --config src/graphql/codegen.yml"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@forge/manifest": "13.3.0-next.7",
|
|
15
|
+
"@forge/manifest": "13.3.0-next.7-experimental-4b981ef",
|
|
16
16
|
"@forge/util": "3.0.0",
|
|
17
17
|
"@forge/i18n": "1.0.0",
|
|
18
18
|
"@sentry/node": "7.106.0",
|
|
@@ -39,7 +39,6 @@
|
|
|
39
39
|
"inquirer-autocomplete-prompt": "^2.0.1",
|
|
40
40
|
"io-ts": "^2.2.22",
|
|
41
41
|
"keytar": "^7.9.0",
|
|
42
|
-
"node-fetch": "2.7.0",
|
|
43
42
|
"ora": "^5.4.1",
|
|
44
43
|
"recursive-readdir": "^2.2.3",
|
|
45
44
|
"semver": "^7.6.0",
|
|
@@ -66,7 +65,6 @@
|
|
|
66
65
|
"@types/inquirer-autocomplete-prompt": "^1.3.5",
|
|
67
66
|
"@types/jest": "^29.5.14",
|
|
68
67
|
"@types/node": "20.19.1",
|
|
69
|
-
"@types/node-fetch": "^2.6.12",
|
|
70
68
|
"@types/recursive-readdir": "^2.2.4",
|
|
71
69
|
"@types/tmp": "^0.2.6",
|
|
72
70
|
"jest-matcher-specific-error": "^1.0.0",
|