@forge/cli-shared 8.15.2-next.0-experimental-1dcd593 → 8.15.2-next.1

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.
@@ -1,11 +1,10 @@
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.stopDockerComposeStack = exports.startDockerComposeStack = exports.deleteDockerComposeFile = exports.generateContainersDockerComposeFile = exports.DockerAuthenticationError = exports.CannotUseBothImageAndBuildContextError = exports.MissingImageOrBuildContextError = exports.DockerUnableToStartError = exports.DockerUnableToPullProxySidecarImage = exports.InvalidContainerServicePort = 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"));
7
7
  const yaml = tslib_1.__importStar(require("yaml"));
8
- const http = tslib_1.__importStar(require("http"));
9
8
  const docker_compose_1 = require("docker-compose");
10
9
  const shared_1 = require("../shared");
11
10
  const text_1 = require("../ui/text");
@@ -15,14 +14,6 @@ exports.PROXY_SIDECAR_VOLUME_DIR = '/forge/container';
15
14
  exports.CONTAINER_SERVICE_ASSETS = '.container-service-assets';
16
15
  exports.K8S_AUTH_TOKEN_FILENAME = 'local-account';
17
16
  const PROXY_SIDECAR_SERVICE_NAME = 'proxy-sidecar';
18
- const LIFECYCLE_PATTERNS = [
19
- /Container .* (Starting|Started|Stopping|Stopped|Creating|Created|Recreated)/,
20
- /Network .* (Creating|Created|Removing|Removed)/,
21
- /Volume .* (Creating|Created|Removing|Removed)/,
22
- /\[[\+\-]\] Running/
23
- ];
24
- exports.STARTUP_TIMER_MS = 30 * 1000;
25
- exports.STARTUP_TIMER_BUFFER_MS = 5 * 1000;
26
17
  class InvalidContainerServicePort extends shared_1.UserError {
27
18
  constructor(serviceKey) {
28
19
  super(text_1.Text.error.invalidServicePort(serviceKey));
@@ -41,12 +32,6 @@ class DockerUnableToStartError extends shared_1.UserError {
41
32
  }
42
33
  }
43
34
  exports.DockerUnableToStartError = DockerUnableToStartError;
44
- class UnableToParseDockerComposeFileError extends shared_1.UserError {
45
- constructor(serviceKey, err) {
46
- super(text_1.Text.tunnel.UnableToParseDockerComposeFileError(serviceKey, err?.message ?? 'Unknown Error Occurred.'));
47
- }
48
- }
49
- exports.UnableToParseDockerComposeFileError = UnableToParseDockerComposeFileError;
50
35
  class MissingImageOrBuildContextError extends shared_1.UserError {
51
36
  constructor(containerKey) {
52
37
  super(text_1.Text.tunnel.missingImageOrBuildContext(containerKey));
@@ -67,7 +52,7 @@ class DockerAuthenticationError extends shared_1.UserError {
67
52
  exports.DockerAuthenticationError = DockerAuthenticationError;
68
53
  const generateContainersDockerComposeFile = async (services, appId, envId) => {
69
54
  const filesGenerated = {};
70
- for (const [serviceIndex, service] of services.entries()) {
55
+ for (const service of services) {
71
56
  const { key: serviceKey, containers } = service;
72
57
  const containersWithTunnelConfig = containers.filter((container) => !!container.tunnel);
73
58
  if (containersWithTunnelConfig.length > 0) {
@@ -87,17 +72,12 @@ const generateContainersDockerComposeFile = async (services, appId, envId) => {
87
72
  ...container.tunnel?.docker,
88
73
  depends_on: [PROXY_SIDECAR_SERVICE_NAME]
89
74
  };
90
- if (config.build?.context) {
91
- config.build.context = adjustFilePath(config.build.context);
92
- }
93
- if (config.volumes) {
94
- config.volumes = config.volumes.map((volume) => adjustFilePath(volume));
95
- }
96
- if (config.develop?.watch) {
97
- config.develop.watch = config.develop.watch.map((watchConfig) => ({
98
- ...watchConfig,
99
- path: adjustFilePath(watchConfig.path)
100
- }));
75
+ if (config.build?.context && !path.isAbsolute(config.build.context)) {
76
+ let context = config.build.context;
77
+ if (context.startsWith('./')) {
78
+ context = context.slice(2);
79
+ }
80
+ config.build.context = '../' + context;
101
81
  }
102
82
  const envArray = container?.tunnel?.docker.environment ?? [];
103
83
  const filteredEnvArray = envArray.filter((envVar) => !envVar.startsWith('FORGE_EGRESS_PROXY_URL='));
@@ -105,11 +85,10 @@ const generateContainersDockerComposeFile = async (services, appId, envId) => {
105
85
  config.environment = filteredEnvArray;
106
86
  return [container.key, config];
107
87
  }));
108
- const healthEndpointPath = containersWithTunnelConfig[0].health.route.path;
109
88
  const dockerComposeConfig = {
110
89
  services: {
111
90
  ...containerConfig,
112
- ...(await getProxySidecarConfig(serviceKey, Object.keys(containerConfig), port, appId, envId, serviceIndex, healthEndpointPath))
91
+ ...(await getProxySidecarConfig(serviceKey, Object.keys(containerConfig), port, appId, envId))
113
92
  }
114
93
  };
115
94
  const yamlString = yaml.stringify(dockerComposeConfig);
@@ -121,17 +100,7 @@ const generateContainersDockerComposeFile = async (services, appId, envId) => {
121
100
  return filesGenerated;
122
101
  };
123
102
  exports.generateContainersDockerComposeFile = generateContainersDockerComposeFile;
124
- const adjustFilePath = (filePath) => {
125
- if (path.isAbsolute(filePath)) {
126
- return filePath;
127
- }
128
- let adjusted = filePath;
129
- if (adjusted.startsWith('./')) {
130
- adjusted = adjusted.slice(2);
131
- }
132
- return path.join('..', adjusted);
133
- };
134
- const getProxySidecarConfig = async (serviceKey, containerKeys, port, appId, envId, serviceIndex, healthEndpointPath) => {
103
+ const getProxySidecarConfig = async (serviceKey, containerKeys, port, appId, envId) => {
135
104
  let fopBaseUrl = 'https://forge-outbound-proxy.services.atlassian.com';
136
105
  let jwksUrl = 'https://forge.cdn.prod.atlassian-dev.net/.well-known/jwks.json';
137
106
  let proxySidecarImage = 'forge-ecr.services.atlassian.com/forge-platform/proxy-sidecar:latest';
@@ -155,14 +124,10 @@ const getProxySidecarConfig = async (serviceKey, containerKeys, port, appId, env
155
124
  `ENV_ID=ari:cloud:ecosystem::environment/${appIdShort}/${envId}`,
156
125
  `JWKS_URL=${jwksUrl}`,
157
126
  `IS_LOCAL_DEV=true`,
158
- `K8S_AUTH_TOKEN_PATH=${exports.PROXY_SIDECAR_VOLUME_DIR}/${exports.K8S_AUTH_TOKEN_FILENAME}`,
159
- `${containerKeys[0]}_CONTAINER_HEALTHCHECK=http://${containerKeys[0]}:8080${healthEndpointPath}`
127
+ `K8S_AUTH_TOKEN_PATH=${exports.PROXY_SIDECAR_VOLUME_DIR}/${exports.K8S_AUTH_TOKEN_FILENAME}`
160
128
  ],
161
129
  volumes: [`../${exports.CONTAINER_SERVICE_ASSETS}:${exports.PROXY_SIDECAR_VOLUME_DIR}:ro`],
162
- ports: [
163
- `${port}:${tunnel_options_1.DEFAULT_PROXY_INGRESS_PORT}`,
164
- `${tunnel_options_1.DEFAULT_PROXY_HEALTHCHECK_PORT_HOST_MACHINE + serviceIndex}:${tunnel_options_1.DEFAULT_PROXY_HEALTHCHECK_PORT}`
165
- ]
130
+ ports: [`${port}:${tunnel_options_1.DEFAULT_PROXY_INGRESS_PORT}`]
166
131
  }
167
132
  };
168
133
  };
@@ -189,7 +154,7 @@ const deleteDockerComposeFile = async (composeFile) => {
189
154
  }
190
155
  };
191
156
  exports.deleteDockerComposeFile = deleteDockerComposeFile;
192
- const startDockerComposeStack = async (dockerComposeFilePath, serviceKey, logger) => {
157
+ const startDockerComposeStack = async (dockerComposeFilePath, serviceKey) => {
193
158
  try {
194
159
  await (0, docker_compose_1.pullOne)('proxy-sidecar', {
195
160
  cwd: path.dirname(dockerComposeFilePath),
@@ -200,154 +165,21 @@ const startDockerComposeStack = async (dockerComposeFilePath, serviceKey, logger
200
165
  catch (err) {
201
166
  throw new DockerUnableToPullProxySidecarImage(err);
202
167
  }
203
- await waitForContainersToStart(dockerComposeFilePath, serviceKey, logger);
204
- };
205
- exports.startDockerComposeStack = startDockerComposeStack;
206
- const determineComposeFlags = async (dockerComposeFilePath, serviceKey, logger) => {
207
- const flags = ['--build', '--quiet-pull'];
208
- try {
209
- const composeConfig = getComposeConfig(dockerComposeFilePath);
210
- const hasWatchConfig = Object.values(composeConfig?.services ?? {}).some((service) => service?.develop?.watch);
211
- if (hasWatchConfig) {
212
- logger.info(`Hot reload config detected. Starting up ${serviceKey} containers using the --watch flag.`);
213
- flags.push('--watch');
214
- }
215
- }
216
- catch (_) { }
217
- return flags;
218
- };
219
- exports.determineComposeFlags = determineComposeFlags;
220
- const getComposeConfig = (dockerComposeFilePath) => {
221
- try {
222
- const composeContent = fs.readFileSync(dockerComposeFilePath, 'utf8');
223
- const composeConfig = yaml.parse(composeContent);
224
- return composeConfig;
225
- }
226
- catch (_) { }
227
- return undefined;
228
- };
229
- const extractProxySidecarHealthcheckUrl = (composeConfig) => {
230
- if (!composeConfig?.services) {
231
- return undefined;
232
- }
233
- let healthCheckHostPort = undefined;
234
- try {
235
- const proxySidecarService = composeConfig.services[PROXY_SIDECAR_SERVICE_NAME];
236
- if (proxySidecarService && proxySidecarService.ports && proxySidecarService.ports.length > 0) {
237
- const portMapping = proxySidecarService.ports.find((portMapping) => {
238
- const parts = portMapping.split(':');
239
- return parts[1] === tunnel_options_1.DEFAULT_PROXY_HEALTHCHECK_PORT.toString();
240
- });
241
- if (portMapping) {
242
- healthCheckHostPort = portMapping.split(':')[0];
243
- }
244
- }
245
- }
246
- catch (_) { }
247
- if (healthCheckHostPort) {
248
- return `http://localhost:${healthCheckHostPort}/health`;
249
- }
250
- return undefined;
251
- };
252
- const checkContainerHealth = async (url) => {
253
- return new Promise((resolve) => {
254
- const request = http.get(url, { timeout: 3000 }, (res) => {
255
- resolve((res.statusCode ?? 0) >= 200 && (res.statusCode ?? 0) < 300);
256
- });
257
- request.on('error', () => {
258
- resolve(false);
259
- });
260
- request.on('timeout', () => {
261
- request.destroy();
262
- resolve(false);
263
- });
264
- });
265
- };
266
- const pollContainerHealth = async (proxySidecarHealthEndpointUrl, logger) => {
267
- const maxAttempts = exports.STARTUP_TIMER_MS / 1000 - exports.STARTUP_TIMER_BUFFER_MS / 1000;
268
- const pollInterval = 1000;
269
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
270
- const isHealthy = await checkContainerHealth(proxySidecarHealthEndpointUrl);
271
- if (isHealthy) {
272
- logger.info('All health endpoints responded successfully!');
273
- return true;
274
- }
275
- if (attempt === maxAttempts) {
276
- logger.warn(`Containers did not become healthy within ${exports.STARTUP_TIMER_MS / 1000}s`);
277
- return false;
278
- }
279
- await new Promise((resolve) => setTimeout(resolve, pollInterval));
280
- }
281
- return false;
282
- };
283
- const waitForContainersToStart = async (dockerComposeFilePath, serviceKey, logger) => {
284
- const composeFlags = await (0, exports.determineComposeFlags)(dockerComposeFilePath, serviceKey, logger);
285
- let proxySidecarHealthEndpointUrl;
286
168
  try {
287
- const composeConfig = getComposeConfig(dockerComposeFilePath);
288
- proxySidecarHealthEndpointUrl = extractProxySidecarHealthcheckUrl(composeConfig);
289
- }
290
- catch (err) {
291
- throw new UnableToParseDockerComposeFileError(serviceKey, err);
292
- }
293
- return new Promise((resolve, reject) => {
294
- let containersStarted = false;
295
- const startupTimer = setTimeout(() => {
296
- if (!containersStarted) {
297
- containersStarted = true;
298
- logger.info(`Startup timeout reached (${exports.STARTUP_TIMER_MS / 1000}s). Starting up the forge tunnel...`);
299
- resolve();
300
- }
301
- }, exports.STARTUP_TIMER_MS);
302
- const logFilter = (chunk) => {
303
- const output = chunk.toString();
304
- const lines = output.split('\n');
305
- lines.forEach((line) => {
306
- if (!line.trim())
307
- return;
308
- if (LIFECYCLE_PATTERNS.some((pattern) => pattern.test(line))) {
309
- logger.info(line);
310
- }
311
- });
312
- };
313
- (0, docker_compose_1.execCompose)('up', composeFlags, {
169
+ await (0, docker_compose_1.upAll)({
314
170
  cwd: path.dirname(dockerComposeFilePath),
315
- log: false,
171
+ log: true,
316
172
  config: dockerComposeFilePath,
317
173
  composeOptions: [`-p${serviceKey}`],
318
- callback: logFilter
319
- }).catch((error) => {
320
- clearTimeout(startupTimer);
321
- const errorMessage = error?.err || error?.out || error?.message || 'Unknown Error Occurred.';
322
- reject(new DockerUnableToStartError(new Error(errorMessage)));
174
+ commandOptions: ['--build']
323
175
  });
324
- setTimeout(async () => {
325
- if (containersStarted)
326
- return;
327
- try {
328
- if (proxySidecarHealthEndpointUrl) {
329
- logger.info(`Polling health endpoints for service: ${serviceKey}`);
330
- const allHealthy = await pollContainerHealth(proxySidecarHealthEndpointUrl, logger);
331
- if (allHealthy && !containersStarted) {
332
- containersStarted = true;
333
- clearTimeout(startupTimer);
334
- resolve();
335
- }
336
- }
337
- else {
338
- logger.info('No health check endpoints found. Continuing with tunnel startup...');
339
- containersStarted = true;
340
- clearTimeout(startupTimer);
341
- resolve();
342
- }
343
- }
344
- catch (err) {
345
- logger.warn(`Health check polling failed: ${err.message}. Relying on startup timeout...`);
346
- }
347
- }, exports.STARTUP_TIMER_BUFFER_MS);
348
- });
176
+ }
177
+ catch (err) {
178
+ throw new DockerUnableToStartError(err);
179
+ }
349
180
  };
350
- const stopDockerComposeStack = async (configFile, logger, composeFiles) => {
181
+ exports.startDockerComposeStack = startDockerComposeStack;
182
+ const stopDockerComposeStack = async (configFile, composeFiles) => {
351
183
  if (!composeFiles || Object.keys(composeFiles).length === 0)
352
184
  return;
353
185
  const { services } = await configFile.readConfig();
@@ -358,13 +190,7 @@ const stopDockerComposeStack = async (configFile, logger, composeFiles) => {
358
190
  return;
359
191
  await Promise.all(Object.entries(composeFiles).map(async ([serviceKey, file]) => {
360
192
  try {
361
- await (0, docker_compose_1.downAll)({
362
- cwd: '.',
363
- log: false,
364
- config: file,
365
- composeOptions: [`-p${serviceKey}`],
366
- callback: createCustomLogFilter(logger)
367
- });
193
+ await (0, docker_compose_1.downAll)({ cwd: '.', log: true, config: file, composeOptions: [`-p${serviceKey}`] });
368
194
  await (0, exports.deleteDockerComposeFile)(file);
369
195
  }
370
196
  catch (err) {
@@ -374,21 +200,6 @@ const stopDockerComposeStack = async (configFile, logger, composeFiles) => {
374
200
  deleteContainerServiceAssetsDir();
375
201
  };
376
202
  exports.stopDockerComposeStack = stopDockerComposeStack;
377
- const createCustomLogFilter = (logger) => {
378
- let buffer = '';
379
- return (chunk) => {
380
- buffer += chunk.toString();
381
- const lines = buffer.split('\n');
382
- buffer = lines.pop() || '';
383
- lines.forEach((line) => {
384
- if (!line.trim())
385
- return;
386
- if (LIFECYCLE_PATTERNS.some((pattern) => pattern.test(line))) {
387
- logger.info(line);
388
- }
389
- });
390
- };
391
- };
392
203
  const processDockerAuthentication = async (childProcess) => {
393
204
  await new Promise((resolve, reject) => {
394
205
  childProcess.on('close', (code) => {
@@ -17,7 +17,5 @@ export declare const defaultDebugStartingPort = 9229;
17
17
  export declare const TUNNEL_BUNDLE_DIRECTORY: string;
18
18
  export declare const defaultNoDebugTunnelOptions: TunnelOptions;
19
19
  export declare const DEFAULT_PROXY_INGRESS_PORT = 7071;
20
- export declare const DEFAULT_PROXY_HEALTHCHECK_PORT = 7073;
21
- export declare const DEFAULT_PROXY_HEALTHCHECK_PORT_HOST_MACHINE = 7011;
22
20
  export declare function getServicePort(services?: Services, serviceKey?: string): Promise<number | undefined>;
23
21
  //# sourceMappingURL=tunnel-options.d.ts.map
@@ -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,oBAAY,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,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;CACvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,uBAAuB,QAA8C,CAAC;AACnF,eAAO,MAAM,2BAA2B,EAAE,aAGzC,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"}
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,oBAAY,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,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;CACvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,uBAAuB,QAA8C,CAAC;AACnF,eAAO,MAAM,2BAA2B,EAAE,aAGzC,CAAC;AAEF,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAO/C,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ1G"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getServicePort = exports.DEFAULT_PROXY_HEALTHCHECK_PORT_HOST_MACHINE = exports.DEFAULT_PROXY_HEALTHCHECK_PORT = exports.DEFAULT_PROXY_INGRESS_PORT = exports.defaultNoDebugTunnelOptions = exports.TUNNEL_BUNDLE_DIRECTORY = exports.defaultDebugStartingPort = void 0;
3
+ exports.getServicePort = exports.DEFAULT_PROXY_INGRESS_PORT = exports.defaultNoDebugTunnelOptions = exports.TUNNEL_BUNDLE_DIRECTORY = exports.defaultDebugStartingPort = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const path_1 = tslib_1.__importDefault(require("path"));
6
6
  const shared_1 = require("../shared");
@@ -11,8 +11,6 @@ exports.defaultNoDebugTunnelOptions = {
11
11
  debugStartingPort: exports.defaultDebugStartingPort
12
12
  };
13
13
  exports.DEFAULT_PROXY_INGRESS_PORT = 7071;
14
- exports.DEFAULT_PROXY_HEALTHCHECK_PORT = 7073;
15
- exports.DEFAULT_PROXY_HEALTHCHECK_PORT_HOST_MACHINE = 7011;
16
14
  async function getServicePort(services, serviceKey) {
17
15
  if (!serviceKey || !services || services.length === 0)
18
16
  return undefined;
package/out/ui/text.d.ts CHANGED
@@ -841,7 +841,6 @@ export declare const Text: {
841
841
  unableToAuthenticateDocker: (errCode: string) => string;
842
842
  unableToPullProxySidecarImage: (errMessage: string) => string;
843
843
  unableToStartDockerComposeStack: (errMessage: string) => string;
844
- UnableToParseDockerComposeFileError: (serviceKey: string, errMessage: string) => string;
845
844
  unableToStopDockerComposeStack: (serviceKey: string, errMessage: string) => string;
846
845
  missingImageOrBuildContext: (containerKey: string) => string;
847
846
  cannotUseBothImageAndBuildContext: (containerKey: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/ui/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/ui/text.ts"],"names":[],"mappings":"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"}
package/out/ui/text.js CHANGED
@@ -1055,8 +1055,7 @@ ${buildTerminalLink(link)}\n`,
1055
1055
  invalidDebugStartingPortNumber: (port) => `${chalk_1.default.bold('--debugStartingPort')} ${port} must be a valid port number.`,
1056
1056
  unableToAuthenticateDocker: (errCode) => `Docker authentication process exited with code: ${errCode}.`,
1057
1057
  unableToPullProxySidecarImage: (errMessage) => `Unable to pull the proxy sidecar image. Make sure to run 'forge containers docker-login' first. Full error: ${errMessage}`,
1058
- unableToStartDockerComposeStack: (errMessage) => `Cannot start Docker Compose stack. This usually happens when Docker isn't running or the provided manifest config is incorrect (e.g. configured Docker image doesn't exist). To fix this: Start a Docker engine, ensure the manifest config is correct, then retry the command. Full error: ${errMessage}`,
1059
- UnableToParseDockerComposeFileError: (serviceKey, errMessage) => `Unable to parse the Docker Compose file for service: ${serviceKey}. Please ensure that the manifest tunnel config is correct. Full error: ${errMessage}`,
1058
+ unableToStartDockerComposeStack: (errMessage) => `Cannot start Docker Compose stack. This usually happens when Docker isn't running, or a Docker image doesn't exist. To fix this: Start a Docker engine, make sure all configured images exist, then retry the command. Full error: ${errMessage}`,
1060
1059
  unableToStopDockerComposeStack: (serviceKey, errMessage) => `Failed to stop Docker Compose stack for ${serviceKey}. Full error: ${errMessage}`,
1061
1060
  missingImageOrBuildContext: (containerKey) => `Container "${containerKey}" must either use an "image" config or "build" config in the tunnel configuration. Specify either an existing Docker image, or a build context from which the image will be built when the tunnel starts.`,
1062
1061
  cannotUseBothImageAndBuildContext: (containerKey) => `Container "${containerKey}" cannot use both an "image" config and "build" config in the tunnel configuration. Specify either an existing Docker image, or a build context from which the image will be built when the tunnel starts.`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/cli-shared",
3
- "version": "8.15.2-next.0-experimental-1dcd593",
3
+ "version": "8.15.2-next.1",
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": "12.1.1-next.0-experimental-1dcd593",
15
+ "@forge/manifest": "12.1.1-next.1",
16
16
  "@forge/util": "2.0.1",
17
17
  "@forge/i18n": "0.0.7",
18
18
  "@sentry/node": "7.106.0",