@forge/cli-shared 9.4.1-next.2 → 9.4.1-next.3-experimental-e9e08bb
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 +23 -0
- package/out/graphql/graphql-types.d.ts +511 -119
- package/out/graphql/graphql-types.d.ts.map +1 -1
- package/out/graphql/graphql-types.js +117 -62
- package/out/tunnel/compose-project-lifecycle.d.ts +39 -0
- package/out/tunnel/compose-project-lifecycle.d.ts.map +1 -0
- package/out/tunnel/compose-project-lifecycle.js +105 -0
- package/out/tunnel/docker-compose-lifecycle.d.ts +3 -0
- package/out/tunnel/docker-compose-lifecycle.d.ts.map +1 -1
- package/out/tunnel/docker-compose-lifecycle.js +10 -8
- package/out/tunnel/index.d.ts +1 -0
- package/out/tunnel/index.d.ts.map +1 -1
- package/out/tunnel/index.js +1 -0
- package/out/tunnel/tunnel-options.d.ts +2 -0
- package/out/tunnel/tunnel-options.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Logger } from '../ui/logger';
|
|
2
|
+
export interface ComposeCommandResult {
|
|
3
|
+
out?: string;
|
|
4
|
+
err?: string;
|
|
5
|
+
exitCode?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ComposeOptions {
|
|
8
|
+
cwd: string;
|
|
9
|
+
log: boolean;
|
|
10
|
+
config: string;
|
|
11
|
+
composeOptions: string[];
|
|
12
|
+
callback?: (chunk: Buffer) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface ComposeAdapter {
|
|
15
|
+
pullOne(service: string, options: ComposeOptions): Promise<unknown>;
|
|
16
|
+
exec(command: string, args: string[], options: ComposeOptions): Promise<ComposeCommandResult>;
|
|
17
|
+
down(options: ComposeOptions): Promise<unknown>;
|
|
18
|
+
}
|
|
19
|
+
export interface ComposeServiceState {
|
|
20
|
+
name: string;
|
|
21
|
+
service: string;
|
|
22
|
+
state: string;
|
|
23
|
+
health?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class ComposeProjectLifecycle {
|
|
26
|
+
private readonly configPath;
|
|
27
|
+
private readonly projectName;
|
|
28
|
+
private readonly logger;
|
|
29
|
+
private readonly adapter;
|
|
30
|
+
constructor(configPath: string, projectName: string, logger: Logger, adapter?: ComposeAdapter);
|
|
31
|
+
private options;
|
|
32
|
+
pull(services: string[]): Promise<void>;
|
|
33
|
+
up(services: string[]): Promise<void>;
|
|
34
|
+
down(): Promise<void>;
|
|
35
|
+
states(): Promise<ComposeServiceState[]>;
|
|
36
|
+
logs(service: string, lines?: number): Promise<string>;
|
|
37
|
+
}
|
|
38
|
+
export declare const parseComposePs: (output: string) => ComposeServiceState[];
|
|
39
|
+
//# sourceMappingURL=compose-project-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-project-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tunnel/compose-project-lifecycle.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC9F,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAA+B;IAG3D,OAAO,CAAC,OAAO;IAUF,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,MAAM,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IASxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC;CAYhE;AAED,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,mBAAmB,EAyBlE,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseComposePs = exports.ComposeProjectLifecycle = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const path = tslib_1.__importStar(require("path"));
|
|
6
|
+
const docker_compose_1 = require("docker-compose");
|
|
7
|
+
const docker_compose_lifecycle_1 = require("./docker-compose-lifecycle");
|
|
8
|
+
const defaultAdapter = {
|
|
9
|
+
pullOne: (service, options) => (0, docker_compose_1.pullOne)(service, options),
|
|
10
|
+
exec: (command, args, options) => (0, docker_compose_1.execCompose)(command, args, options),
|
|
11
|
+
down: (options) => (0, docker_compose_1.downAll)(options)
|
|
12
|
+
};
|
|
13
|
+
class ComposeProjectLifecycle {
|
|
14
|
+
configPath;
|
|
15
|
+
projectName;
|
|
16
|
+
logger;
|
|
17
|
+
adapter;
|
|
18
|
+
constructor(configPath, projectName, logger, adapter = defaultAdapter) {
|
|
19
|
+
this.configPath = configPath;
|
|
20
|
+
this.projectName = projectName;
|
|
21
|
+
this.logger = logger;
|
|
22
|
+
this.adapter = adapter;
|
|
23
|
+
}
|
|
24
|
+
options(log = false) {
|
|
25
|
+
return {
|
|
26
|
+
cwd: path.dirname(this.configPath),
|
|
27
|
+
log,
|
|
28
|
+
config: this.configPath,
|
|
29
|
+
composeOptions: [`-p${this.projectName}`],
|
|
30
|
+
callback: (0, docker_compose_lifecycle_1.createDockerLifecycleLogFilter)(this.logger)
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async pull(services) {
|
|
34
|
+
for (const service of services) {
|
|
35
|
+
try {
|
|
36
|
+
await this.adapter.pullOne(service, this.options());
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
throw new Error(`Unable to pull the ${service} image: ${(0, docker_compose_lifecycle_1.getDockerComposeErrorMessage)(error)}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async up(services) {
|
|
44
|
+
try {
|
|
45
|
+
await this.adapter.exec('up', ['--detach', '--no-build', '--remove-orphans', ...services], this.options());
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new Error(`Unable to start the Docker Compose project: ${(0, docker_compose_lifecycle_1.getDockerComposeErrorMessage)(error)}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async down() {
|
|
52
|
+
try {
|
|
53
|
+
await this.adapter.down(this.options());
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
throw new Error(`Unable to stop the Docker Compose project: ${(0, docker_compose_lifecycle_1.getDockerComposeErrorMessage)(error)}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async states() {
|
|
60
|
+
try {
|
|
61
|
+
const result = await this.adapter.exec('ps', ['--all', '--format', 'json'], this.options());
|
|
62
|
+
return (0, exports.parseComposePs)(result.out ?? '');
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
throw new Error(`Unable to inspect the Docker Compose project: ${(0, docker_compose_lifecycle_1.getDockerComposeErrorMessage)(error)}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async logs(service, lines = 80) {
|
|
69
|
+
try {
|
|
70
|
+
const result = await this.adapter.exec('logs', ['--no-color', '--tail', lines.toString(), service], this.options());
|
|
71
|
+
return [result.out, result.err].filter(Boolean).join('\n').trim();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return (0, docker_compose_lifecycle_1.getDockerComposeErrorMessage)(error);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.ComposeProjectLifecycle = ComposeProjectLifecycle;
|
|
79
|
+
const parseComposePs = (output) => {
|
|
80
|
+
const trimmed = output.trim();
|
|
81
|
+
if (!trimmed)
|
|
82
|
+
return [];
|
|
83
|
+
const records = (() => {
|
|
84
|
+
try {
|
|
85
|
+
const parsed = JSON.parse(trimmed);
|
|
86
|
+
return Array.isArray(parsed) ? parsed : [parsed];
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return trimmed
|
|
90
|
+
.split('\n')
|
|
91
|
+
.filter(Boolean)
|
|
92
|
+
.map((line) => JSON.parse(line));
|
|
93
|
+
}
|
|
94
|
+
})();
|
|
95
|
+
return records.map((item) => {
|
|
96
|
+
const value = item;
|
|
97
|
+
return {
|
|
98
|
+
name: String(value.Name ?? value.name ?? ''),
|
|
99
|
+
service: String(value.Service ?? value.service ?? ''),
|
|
100
|
+
state: String(value.State ?? value.state ?? ''),
|
|
101
|
+
health: value.Health == null && value.health == null ? undefined : String(value.Health ?? value.health)
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
exports.parseComposePs = parseComposePs;
|
|
@@ -6,6 +6,7 @@ import { ChildProcess } from 'child_process';
|
|
|
6
6
|
export declare const PROXY_SIDECAR_VOLUME_DIR = "/forge/container";
|
|
7
7
|
export declare const CONTAINER_SERVICE_ASSETS = ".container-service-assets";
|
|
8
8
|
export declare const K8S_AUTH_TOKEN_FILENAME = "local-account";
|
|
9
|
+
export declare const DOCKER_LIFECYCLE_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp];
|
|
9
10
|
export declare const STARTUP_TIMER_MS: number;
|
|
10
11
|
export declare const STARTUP_TIMER_BUFFER_MS: number;
|
|
11
12
|
export declare class InvalidContainerServicePort extends UserError {
|
|
@@ -32,7 +33,9 @@ export declare class DockerAuthenticationError extends UserError {
|
|
|
32
33
|
export declare const generateContainersDockerComposeFile: (services: Services, appId: string, envId: string) => Promise<Record<string, string>>;
|
|
33
34
|
export declare const deleteDockerComposeFile: (composeFile: string) => Promise<void>;
|
|
34
35
|
export declare const startDockerComposeStack: (dockerComposeFilePath: string, serviceKey: string, logger: Logger) => Promise<void>;
|
|
36
|
+
export declare const getDockerComposeErrorMessage: (error: unknown) => string;
|
|
35
37
|
export declare const determineComposeFlags: (dockerComposeFilePath: string, serviceKey: string, logger: Logger) => Promise<string[]>;
|
|
36
38
|
export declare const stopDockerComposeStack: (configFile: ConfigFile, logger: Logger, composeFiles?: Record<string, string>) => Promise<void>;
|
|
39
|
+
export declare const createDockerLifecycleLogFilter: (logger: Logger) => (chunk: Buffer) => void;
|
|
37
40
|
export declare const processDockerAuthentication: (childProcess: ChildProcess) => Promise<void>;
|
|
38
41
|
//# sourceMappingURL=docker-compose-lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-compose-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tunnel/docker-compose-lifecycle.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AACpE,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"docker-compose-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tunnel/docker-compose-lifecycle.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AACpE,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAsBvD,eAAO,MAAM,yBAAyB,2CAK5B,CAAC;AAKX,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAC1C,eAAO,MAAM,uBAAuB,QAAW,CAAC;AAEhD,qBAAa,2BAA4B,SAAQ,SAAS;gBAC5C,UAAU,EAAE,MAAM;CAG/B;AAED,qBAAa,mCAAoC,SAAQ,SAAS;gBACpD,GAAG,CAAC,EAAE,KAAK;CAGxB;AAED,qBAAa,wBAAyB,SAAQ,SAAS;gBACzC,GAAG,CAAC,EAAE,KAAK;CAGxB;AAED,qBAAa,mCAAoC,SAAQ,SAAS;gBACpD,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK;CAG5C;AAED,qBAAa,+BAAgC,SAAQ,SAAS;gBAChD,YAAY,EAAE,MAAM;CAGjC;AAED,qBAAa,sCAAuC,SAAQ,SAAS;gBACvD,YAAY,EAAE,MAAM;CAGjC;AAED,qBAAa,yBAA0B,SAAQ,SAAS;gBAC1C,OAAO,EAAE,MAAM;CAG5B;AAMD,eAAO,MAAM,mCAAmC,GAAU,UAAU,QAAQ,EAAE,OAAO,MAAM,EAAE,OAAO,MAAM,oCAgFzG,CAAC;AAsFF,eAAO,MAAM,uBAAuB,GAAU,aAAa,MAAM,kBAYhE,CAAC;AAOF,eAAO,MAAM,uBAAuB,GAAU,uBAAuB,MAAM,EAAE,YAAY,MAAM,EAAE,QAAQ,MAAM,kBA8B9G,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,MAQ7D,CAAC;AAmBF,eAAO,MAAM,qBAAqB,GAChC,uBAAuB,MAAM,EAC7B,YAAY,MAAM,EAClB,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,EAAE,CAgBlB,CAAC;AA2LF,eAAO,MAAM,sBAAsB,GACjC,YAAY,UAAU,EACtB,QAAQ,MAAM,EACd,eAAe,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,kBAmCtC,CAAC;AAQF,eAAO,MAAM,8BAA8B,GAAI,QAAQ,MAAM,MAGnD,OAAO,MAAM,SAetB,CAAC;AAMF,eAAO,MAAM,2BAA2B,GAAU,cAAc,YAAY,kBAW3E,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.processDockerAuthentication = exports.stopDockerComposeStack = exports.determineComposeFlags = exports.startDockerComposeStack = exports.deleteDockerComposeFile = exports.generateContainersDockerComposeFile = exports.DockerAuthenticationError = exports.CannotUseBothImageAndBuildContextError = exports.MissingImageOrBuildContextError = exports.UnableToParseDockerComposeFileError = exports.DockerUnableToStartError = exports.DockerUnableToPullProxySidecarImage = exports.InvalidContainerServicePort = exports.STARTUP_TIMER_BUFFER_MS = exports.STARTUP_TIMER_MS = exports.K8S_AUTH_TOKEN_FILENAME = exports.CONTAINER_SERVICE_ASSETS = exports.PROXY_SIDECAR_VOLUME_DIR = void 0;
|
|
3
|
+
exports.processDockerAuthentication = exports.createDockerLifecycleLogFilter = exports.stopDockerComposeStack = exports.determineComposeFlags = exports.getDockerComposeErrorMessage = exports.startDockerComposeStack = exports.deleteDockerComposeFile = exports.generateContainersDockerComposeFile = exports.DockerAuthenticationError = exports.CannotUseBothImageAndBuildContextError = exports.MissingImageOrBuildContextError = exports.UnableToParseDockerComposeFileError = exports.DockerUnableToStartError = exports.DockerUnableToPullProxySidecarImage = exports.InvalidContainerServicePort = exports.STARTUP_TIMER_BUFFER_MS = exports.STARTUP_TIMER_MS = exports.DOCKER_LIFECYCLE_PATTERNS = exports.K8S_AUTH_TOKEN_FILENAME = exports.CONTAINER_SERVICE_ASSETS = exports.PROXY_SIDECAR_VOLUME_DIR = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const fs = tslib_1.__importStar(require("fs"));
|
|
6
6
|
const path = tslib_1.__importStar(require("path"));
|
|
@@ -28,7 +28,7 @@ const PROXY_SIDECAR_REGISTRIES = {
|
|
|
28
28
|
};
|
|
29
29
|
const isStagingEnvironment = () => process.env.FORGE_GRAPHQL_GATEWAY?.startsWith('https://api-private.stg.atlassian.com/graphql') ?? false;
|
|
30
30
|
const getProxySidecarRegistry = (registryType) => PROXY_SIDECAR_REGISTRIES[registryType][isStagingEnvironment() ? 'staging' : 'production'];
|
|
31
|
-
|
|
31
|
+
exports.DOCKER_LIFECYCLE_PATTERNS = [
|
|
32
32
|
/Container .* (Starting|Started|Stopping|Stopped|Creating|Created|Recreated)/,
|
|
33
33
|
/Network .* (Creating|Created|Removing|Removed)/,
|
|
34
34
|
/Volume .* (Creating|Created|Removing|Removed)/,
|
|
@@ -217,7 +217,7 @@ const startDockerComposeStack = async (dockerComposeFilePath, serviceKey, logger
|
|
|
217
217
|
await (0, docker_compose_1.pullOne)(PROXY_SIDECAR_SERVICE_NAME, pullOptions);
|
|
218
218
|
}
|
|
219
219
|
catch (ecrRegistryError) {
|
|
220
|
-
throw new DockerUnableToPullProxySidecarImage(new Error(`Initial pull error: ${getDockerComposeErrorMessage(portableRegistryError)}. Retry error: ${getDockerComposeErrorMessage(ecrRegistryError)}`));
|
|
220
|
+
throw new DockerUnableToPullProxySidecarImage(new Error(`Initial pull error: ${(0, exports.getDockerComposeErrorMessage)(portableRegistryError)}. Retry error: ${(0, exports.getDockerComposeErrorMessage)(ecrRegistryError)}`));
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
await waitForContainersToStart(dockerComposeFilePath, serviceKey, logger);
|
|
@@ -230,6 +230,7 @@ const getDockerComposeErrorMessage = (error) => {
|
|
|
230
230
|
}
|
|
231
231
|
return error != null ? String(error) : 'Unknown Error Occurred.';
|
|
232
232
|
};
|
|
233
|
+
exports.getDockerComposeErrorMessage = getDockerComposeErrorMessage;
|
|
233
234
|
const useEcrProxySidecarImage = (dockerComposeFilePath) => {
|
|
234
235
|
const composeConfig = yaml.parse(fs.readFileSync(dockerComposeFilePath, 'utf8'));
|
|
235
236
|
const proxySidecar = composeConfig?.services?.[PROXY_SIDECAR_SERVICE_NAME];
|
|
@@ -342,7 +343,7 @@ const waitForContainersToStart = async (dockerComposeFilePath, serviceKey, logge
|
|
|
342
343
|
lines.forEach((line) => {
|
|
343
344
|
if (!line.trim())
|
|
344
345
|
return;
|
|
345
|
-
if (
|
|
346
|
+
if (exports.DOCKER_LIFECYCLE_PATTERNS.some((pattern) => pattern.test(line))) {
|
|
346
347
|
logger.info(line);
|
|
347
348
|
}
|
|
348
349
|
});
|
|
@@ -355,7 +356,7 @@ const waitForContainersToStart = async (dockerComposeFilePath, serviceKey, logge
|
|
|
355
356
|
callback: logFilter
|
|
356
357
|
}).catch((error) => {
|
|
357
358
|
clearTimeout(startupTimer);
|
|
358
|
-
reject(new DockerUnableToStartError(new Error(getDockerComposeErrorMessage(error))));
|
|
359
|
+
reject(new DockerUnableToStartError(new Error((0, exports.getDockerComposeErrorMessage)(error))));
|
|
359
360
|
});
|
|
360
361
|
setTimeout(async () => {
|
|
361
362
|
if (containersStarted)
|
|
@@ -399,7 +400,7 @@ const stopDockerComposeStack = async (configFile, logger, composeFiles) => {
|
|
|
399
400
|
log: false,
|
|
400
401
|
config: file,
|
|
401
402
|
composeOptions: [`-p${serviceKey}`],
|
|
402
|
-
callback:
|
|
403
|
+
callback: (0, exports.createDockerLifecycleLogFilter)(logger)
|
|
403
404
|
});
|
|
404
405
|
await (0, exports.deleteDockerComposeFile)(file);
|
|
405
406
|
}
|
|
@@ -410,7 +411,7 @@ const stopDockerComposeStack = async (configFile, logger, composeFiles) => {
|
|
|
410
411
|
deleteContainerServiceAssetsDir();
|
|
411
412
|
};
|
|
412
413
|
exports.stopDockerComposeStack = stopDockerComposeStack;
|
|
413
|
-
const
|
|
414
|
+
const createDockerLifecycleLogFilter = (logger) => {
|
|
414
415
|
let buffer = '';
|
|
415
416
|
return (chunk) => {
|
|
416
417
|
buffer += chunk.toString();
|
|
@@ -419,12 +420,13 @@ const createCustomLogFilter = (logger) => {
|
|
|
419
420
|
lines.forEach((line) => {
|
|
420
421
|
if (!line.trim())
|
|
421
422
|
return;
|
|
422
|
-
if (
|
|
423
|
+
if (exports.DOCKER_LIFECYCLE_PATTERNS.some((pattern) => pattern.test(line))) {
|
|
423
424
|
logger.info(line);
|
|
424
425
|
}
|
|
425
426
|
});
|
|
426
427
|
};
|
|
427
428
|
};
|
|
429
|
+
exports.createDockerLifecycleLogFilter = createDockerLifecycleLogFilter;
|
|
428
430
|
const processDockerAuthentication = async (childProcess) => {
|
|
429
431
|
await new Promise((resolve, reject) => {
|
|
430
432
|
childProcess.on('close', (code) => {
|
package/out/tunnel/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tunnel/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tunnel/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
package/out/tunnel/index.js
CHANGED
|
@@ -2,4 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./docker-compose-lifecycle"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./compose-project-lifecycle"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./tunnel-options"), exports);
|
|
@@ -8,11 +8,13 @@ export type TunnelCommandOptions = {
|
|
|
8
8
|
verify?: boolean;
|
|
9
9
|
url?: string;
|
|
10
10
|
localPort?: number;
|
|
11
|
+
localStorage?: boolean;
|
|
11
12
|
};
|
|
12
13
|
export type TunnelOptions = Omit<TunnelCommandOptions, 'debugStartingPort'> & {
|
|
13
14
|
debugStartingPort: number;
|
|
14
15
|
assistantName?: string | null;
|
|
15
16
|
containersDockerComposeFiles?: Record<string, string>;
|
|
17
|
+
localStorageCleanup?: () => Promise<void>;
|
|
16
18
|
};
|
|
17
19
|
export declare const defaultDebugStartingPort = 9229;
|
|
18
20
|
export declare const defaultDebugHost = "127.0.0.1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-options.d.ts","sourceRoot":"","sources":["../../src/tunnel/tunnel-options.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-options.d.ts","sourceRoot":"","sources":["../../src/tunnel/tunnel-options.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,GAAG;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,uBAAuB,QAA8C,CAAC;AACnF,eAAO,MAAM,2BAA2B,EAAE,aAIzC,CAAC;AAEF,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,8BAA8B,OAAO,CAAC;AACnD,eAAO,MAAM,2CAA2C,OAAO,CAAC;AAQhE,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ1G"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/cli-shared",
|
|
3
|
-
"version": "9.4.1-next.
|
|
3
|
+
"version": "9.4.1-next.3-experimental-e9e08bb",
|
|
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.
|
|
15
|
+
"@forge/manifest": "13.4.0-next.3-experimental-e9e08bb",
|
|
16
16
|
"@forge/util": "3.0.0",
|
|
17
17
|
"@forge/i18n": "1.0.0",
|
|
18
18
|
"@sentry/node": "7.106.0",
|