@forge/cli-shared 9.3.0-next.9 → 9.3.0

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,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":"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"}
1
+ {"version":3,"file":"statsig-service.d.ts","sourceRoot":"","sources":["../../src/service/statsig-service.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ class StatsigReader {
49
49
  else if (process.env.FORGE_CLI_ENABLE_COMBINED_ARTIFACT_UPLOAD === 'false') {
50
50
  return false;
51
51
  }
52
- return (await this.checkGate('forge-cli-enable-combined-artifact-upload', { environmentType })) ?? false;
52
+ return (await this.checkGate('fg-forge-cli-enable-combined-artifact-upload', { environmentType })) ?? false;
53
53
  }
54
54
  async getCustomSpinnerConfig() {
55
55
  return (await this.getDynamicConfig('forge-cli-enable-custom-spinner')) ?? null;
@@ -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;AAYvD,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;AAuFF,eAAO,MAAM,uBAAuB,GAAU,aAAa,MAAM,kBAYhE,CAAC;AAOF,eAAO,MAAM,uBAAuB,GAAU,uBAAuB,MAAM,EAAE,YAAY,MAAM,EAAE,QAAQ,MAAM,kBAc9G,CAAC;AAOF,eAAO,MAAM,qBAAqB,GAChC,uBAAuB,MAAM,EAC7B,YAAY,MAAM,EAClB,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,EAAE,CAgBlB,CAAC;AA8LF,eAAO,MAAM,sBAAsB,GACjC,YAAY,UAAU,EACtB,QAAQ,MAAM,EACd,eAAe,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,kBAmCtC,CAAC;AAgCF,eAAO,MAAM,2BAA2B,GAAU,cAAc,YAAY,kBAW3E,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;AAgCvD,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;AA6BF,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;AAgCF,eAAO,MAAM,2BAA2B,GAAU,cAAc,YAAY,kBAW3E,CAAC"}
@@ -15,6 +15,19 @@ exports.PROXY_SIDECAR_VOLUME_DIR = '/forge/container';
15
15
  exports.CONTAINER_SERVICE_ASSETS = '.container-service-assets';
16
16
  exports.K8S_AUTH_TOKEN_FILENAME = 'local-account';
17
17
  const PROXY_SIDECAR_SERVICE_NAME = 'proxy-sidecar';
18
+ const PROXY_SIDECAR_IMAGE_PATH = 'forge-platform/proxy-sidecar:latest';
19
+ const PROXY_SIDECAR_REGISTRIES = {
20
+ portable: {
21
+ production: 'forge-registry.services.atlassian.com',
22
+ staging: 'forge-registry.stg.services.atlassian.com'
23
+ },
24
+ ecr: {
25
+ production: 'forge-ecr.services.atlassian.com',
26
+ staging: 'forge-ecr.stg.services.atlassian.com'
27
+ }
28
+ };
29
+ const isStagingEnvironment = () => process.env.FORGE_GRAPHQL_GATEWAY?.startsWith('https://api-private.stg.atlassian.com/graphql') ?? false;
30
+ const getProxySidecarRegistry = (registryType) => PROXY_SIDECAR_REGISTRIES[registryType][isStagingEnvironment() ? 'staging' : 'production'];
18
31
  const LIFECYCLE_PATTERNS = [
19
32
  /Container .* (Starting|Started|Stopping|Stopped|Creating|Created|Recreated)/,
20
33
  /Network .* (Creating|Created|Removing|Removed)/,
@@ -134,11 +147,10 @@ const adjustFilePath = (filePath) => {
134
147
  const getProxySidecarConfig = async (serviceKey, containerKeys, port, appId, envId, serviceIndex, healthEndpointPath) => {
135
148
  let fopBaseUrl = 'https://forge-outbound-proxy.services.atlassian.com';
136
149
  let jwksUrl = 'https://forge.cdn.prod.atlassian-dev.net/.well-known/jwks.json';
137
- let proxySidecarImage = 'forge-ecr.services.atlassian.com/forge-platform/proxy-sidecar:latest';
138
- if (process.env.FORGE_GRAPHQL_GATEWAY?.startsWith('https://api-private.stg.atlassian.com/graphql')) {
150
+ const proxySidecarRegistry = getProxySidecarRegistry('portable');
151
+ if (isStagingEnvironment()) {
139
152
  fopBaseUrl = 'https://forge-outbound-proxy.stg.services.atlassian.com';
140
153
  jwksUrl = 'https://forge.cdn.stg.atlassian-dev.net/.well-known/jwks.json';
141
- proxySidecarImage = 'forge-ecr.stg.services.atlassian.com/forge-platform/proxy-sidecar:latest';
142
154
  }
143
155
  let appIdShort = appId;
144
156
  if (appId.startsWith('ari:cloud:ecosystem::app/')) {
@@ -146,7 +158,7 @@ const getProxySidecarConfig = async (serviceKey, containerKeys, port, appId, env
146
158
  }
147
159
  return {
148
160
  [PROXY_SIDECAR_SERVICE_NAME]: {
149
- image: proxySidecarImage,
161
+ image: `${proxySidecarRegistry}/${PROXY_SIDECAR_IMAGE_PATH}`,
150
162
  container_name: getProxySidecarContainerName(serviceKey),
151
163
  environment: [
152
164
  `SERVICE_URL=http://${containerKeys[0]}:8080`,
@@ -190,19 +202,44 @@ const deleteDockerComposeFile = async (composeFile) => {
190
202
  };
191
203
  exports.deleteDockerComposeFile = deleteDockerComposeFile;
192
204
  const startDockerComposeStack = async (dockerComposeFilePath, serviceKey, logger) => {
205
+ const pullOptions = {
206
+ cwd: path.dirname(dockerComposeFilePath),
207
+ log: true,
208
+ config: dockerComposeFilePath
209
+ };
193
210
  try {
194
- await (0, docker_compose_1.pullOne)('proxy-sidecar', {
195
- cwd: path.dirname(dockerComposeFilePath),
196
- log: true,
197
- config: dockerComposeFilePath
198
- });
211
+ await (0, docker_compose_1.pullOne)(PROXY_SIDECAR_SERVICE_NAME, pullOptions);
199
212
  }
200
- catch (err) {
201
- throw new DockerUnableToPullProxySidecarImage(err);
213
+ catch (portableRegistryError) {
214
+ logger.warn('Unable to pull the proxy sidecar image. Retrying from an alternate source...');
215
+ useEcrProxySidecarImage(dockerComposeFilePath);
216
+ try {
217
+ await (0, docker_compose_1.pullOne)(PROXY_SIDECAR_SERVICE_NAME, pullOptions);
218
+ }
219
+ catch (ecrRegistryError) {
220
+ throw new DockerUnableToPullProxySidecarImage(new Error(`Initial pull error: ${getDockerComposeErrorMessage(portableRegistryError)}. Retry error: ${getDockerComposeErrorMessage(ecrRegistryError)}`));
221
+ }
202
222
  }
203
223
  await waitForContainersToStart(dockerComposeFilePath, serviceKey, logger);
204
224
  };
205
225
  exports.startDockerComposeStack = startDockerComposeStack;
226
+ const getDockerComposeErrorMessage = (error) => {
227
+ if (error && typeof error === 'object') {
228
+ const dockerComposeError = error;
229
+ return dockerComposeError.err || dockerComposeError.out || dockerComposeError.message || 'Unknown Error Occurred.';
230
+ }
231
+ return error != null ? String(error) : 'Unknown Error Occurred.';
232
+ };
233
+ const useEcrProxySidecarImage = (dockerComposeFilePath) => {
234
+ const composeConfig = yaml.parse(fs.readFileSync(dockerComposeFilePath, 'utf8'));
235
+ const proxySidecar = composeConfig?.services?.[PROXY_SIDECAR_SERVICE_NAME];
236
+ if (!proxySidecar) {
237
+ throw new Error(`The Docker Compose file does not contain the ${PROXY_SIDECAR_SERVICE_NAME} service.`);
238
+ }
239
+ const ecrRegistry = getProxySidecarRegistry('ecr');
240
+ proxySidecar.image = `${ecrRegistry}/${PROXY_SIDECAR_IMAGE_PATH}`;
241
+ fs.writeFileSync(dockerComposeFilePath, yaml.stringify(composeConfig));
242
+ };
206
243
  const determineComposeFlags = async (dockerComposeFilePath, serviceKey, logger) => {
207
244
  const flags = ['--build', '--quiet-pull'];
208
245
  try {
@@ -318,8 +355,7 @@ const waitForContainersToStart = async (dockerComposeFilePath, serviceKey, logge
318
355
  callback: logFilter
319
356
  }).catch((error) => {
320
357
  clearTimeout(startupTimer);
321
- const errorMessage = error?.err || error?.out || error?.message || 'Unknown Error Occurred.';
322
- reject(new DockerUnableToStartError(new Error(errorMessage)));
358
+ reject(new DockerUnableToStartError(new Error(getDockerComposeErrorMessage(error))));
323
359
  });
324
360
  setTimeout(async () => {
325
361
  if (containersStarted)
@@ -3,6 +3,7 @@ export declare const LogColor: {
3
3
  debug: (message: string) => string;
4
4
  warn: (message: string) => string;
5
5
  error: (message: string) => string;
6
+ approval: (message: string) => string;
6
7
  errorPrefix: string;
7
8
  };
8
9
  export declare const RuntimeLogLevel: {
@@ -1 +1 @@
1
- {"version":3,"file":"log-color.d.ts","sourceRoot":"","sources":["../../src/ui/log-color.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;qBACF,MAAM,KAAG,MAAM;qBACf,MAAM,KAAG,MAAM;oBAChB,MAAM,KAAG,MAAM;qBACd,MAAM,KAAG,MAAM;;CAGjC,CAAC;AAKF,eAAO,MAAM,eAAe;;;;;;;CAO3B,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;CAkBtB,CAAC"}
1
+ {"version":3,"file":"log-color.d.ts","sourceRoot":"","sources":["../../src/ui/log-color.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;qBACF,MAAM,KAAG,MAAM;qBACf,MAAM,KAAG,MAAM;oBAChB,MAAM,KAAG,MAAM;qBACd,MAAM,KAAG,MAAM;wBACZ,MAAM,KAAG,MAAM;;CAGpC,CAAC;AAKF,eAAO,MAAM,eAAe;;;;;;;CAO3B,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;CAkBtB,CAAC"}
@@ -8,6 +8,7 @@ exports.LogColor = {
8
8
  debug: (message) => chalk_1.default.gray(message),
9
9
  warn: (message) => chalk_1.default.yellow(message),
10
10
  error: (message) => chalk_1.default.red(message),
11
+ approval: (message) => chalk_1.default.cyan(message),
11
12
  errorPrefix: chalk_1.default.red.bold('Error: ')
12
13
  };
13
14
  const withPadding = (input) => input.padEnd(7);
package/out/ui/text.d.ts CHANGED
@@ -432,6 +432,7 @@ export declare const Text: {
432
432
  error: {
433
433
  noDeployUrl: string;
434
434
  noPresignedUrls: string;
435
+ noManifestUrl: string;
435
436
  noUploadId: string;
436
437
  noManifestInZip: (manifestFilename: string) => string;
437
438
  noManifestAtPath: (path: string) => string;
@@ -668,12 +669,14 @@ export declare const Text: {
668
669
  start1: (envKey: string, envType: AppEnvironmentType, buildTag?: string) => string;
669
670
  start2: (appName: string, envKey: string, envType: AppEnvironmentType, buildTag?: string) => string;
670
671
  success: string;
671
- successDetails: (appName: string, envKey: string, envType: AppEnvironmentType, buildTag?: string) => string;
672
+ successDetails: (appName: string, envKey: string, envType: AppEnvironmentType, buildTag?: string, numApprovals?: number) => string;
672
673
  distributePageLink: (appId: string) => string;
673
674
  };
674
675
  taskLint: {
675
676
  lintError: string;
676
677
  lintWarning: (numWarnings: number) => string;
678
+ lintApproval: (numApprovals: number, ruleNames?: string[]) => string;
679
+ lintErrorsWithApprovals: string;
677
680
  };
678
681
  hasNoAppInstallationsForEnv: {
679
682
  hasNoAppInstallationsForEnvError: string;
@@ -693,6 +696,9 @@ export declare const Text: {
693
696
  skipRollout: {
694
697
  description: string;
695
698
  };
699
+ approveRule: {
700
+ description: string;
701
+ };
696
702
  connectKeyChange: {
697
703
  continueChange: string;
698
704
  continueDelete: string;
@@ -775,6 +781,10 @@ export declare const Text: {
775
781
  installationLimitWarning: string;
776
782
  success: {
777
783
  banner: (envKey: string, envType: AppEnvironmentType, product: string, site: string) => string;
784
+ deeplinks: (links: Array<{
785
+ label?: string;
786
+ url: string;
787
+ }>) => string;
778
788
  };
779
789
  error: {
780
790
  activationIdMissing: (url: string, context: string) => string;
@@ -1028,16 +1038,20 @@ export declare const Text: {
1028
1038
  cmd: string;
1029
1039
  running: string;
1030
1040
  noProblems: string;
1041
+ approvalRequired: string;
1031
1042
  noFixableProblem: string;
1032
1043
  noFixableProblems: string;
1033
1044
  filename: chalk.Chalk;
1045
+ errorMissingManifest: string;
1046
+ errorInvalidManifest: string;
1034
1047
  linterFailed: (linterClass: string, failure: string) => string;
1035
1048
  fixed: (numFixableErrors: number, numFixableWarnings: number) => string;
1036
1049
  fixFollowUp: string;
1037
1050
  error: (line: number, column: number, message: string, reference: string) => string;
1038
- summary: (numErrors: number, numWarnings: number, numFixableErrors: number, numFixableWarnings: number) => string;
1051
+ summary: (numErrors: number, numWarnings: number, numApprovals: number, numFixableErrors: number, numFixableWarnings: number) => string;
1039
1052
  fixSummary: (numErrors: number, numFixableErrors: number, numFixableWarnings: number) => string;
1040
1053
  warning: (line: number, column: number, message: string, reference: string) => string;
1054
+ approval: (line: number, column: number, message: string, reference: string) => string;
1041
1055
  };
1042
1056
  repositories: {
1043
1057
  cmd: {
@@ -1087,6 +1101,7 @@ export declare const Text: {
1087
1101
  start: string;
1088
1102
  success: string;
1089
1103
  createdRepositoryURI: (uri: string) => string;
1104
+ authRequired: (key: string) => string;
1090
1105
  };
1091
1106
  login: {
1092
1107
  cmd: {
@@ -1292,12 +1307,24 @@ export declare const Text: {
1292
1307
  dynamicTable: {
1293
1308
  exiting: string;
1294
1309
  };
1310
+ manifest: {
1311
+ cmd: {
1312
+ description: string;
1313
+ };
1314
+ render: {
1315
+ description: string;
1316
+ optionPlacement: string;
1317
+ errorMissingTransformation: string;
1318
+ };
1319
+ };
1295
1320
  module: {
1296
1321
  cmd: {
1297
1322
  description: string;
1298
1323
  };
1299
1324
  add: {
1300
1325
  description: string;
1326
+ spinnerAdding: string;
1327
+ spinnerAdded: string;
1301
1328
  optionModuleType: string;
1302
1329
  optionUiType: string;
1303
1330
  optionProduct: string;
@@ -1336,6 +1363,7 @@ export declare const Text: {
1336
1363
  warnNoFragment: string;
1337
1364
  warnNoManifestDelta: string;
1338
1365
  warnAddedAppCompatibility: (existingProducts: string[], newProduct: string) => string;
1366
+ warnAddedGlobalAppCompatibility: (requiredProduct: "jira" | "confluence") => string;
1339
1367
  warnUnsupportedFileOperations: (ops: string[]) => string;
1340
1368
  warnViteConfigExists: (configPath: string) => string;
1341
1369
  errorViteConfigNestedInput: () => 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
@@ -33,10 +33,11 @@ const keytarAccessErrorBase = (message) => `Keytar error detected: ${message}`;
33
33
  const capitalise = (word) => word.charAt(0).toUpperCase() + word.slice(1);
34
34
  exports.capitalise = capitalise;
35
35
  const getLintMessage = (line, column, message, level, colourFunction, reference) => `${chalk_1.default.dim(`${line}:${column}`.padEnd(7))} ${colourFunction(level.padEnd(8))} ${message} ${chalk_1.default.dim(reference)}\n`;
36
- const checkLintTotalPlurals = (numErrors, numWarnings, numFixableErrors, numFixableWarnings) => ({
36
+ const checkLintTotalPlurals = (numErrors, numWarnings, numApprovals, numFixableErrors, numFixableWarnings) => ({
37
37
  pluralCheckedErrors: `${numErrors} ${numErrors === 1 ? 'error' : 'errors'}`,
38
38
  pluralCheckedWarnings: `${numWarnings} ${numWarnings === 1 ? 'warning' : 'warnings'}`,
39
- pluralCheckedTotal: `${numErrors + numWarnings} ${numErrors + numWarnings === 1 ? 'issue' : 'issues'}`,
39
+ pluralCheckedApprovals: `${numApprovals} ${numApprovals === 1 ? 'approval' : 'approvals'}`,
40
+ pluralCheckedTotal: `${numErrors + numWarnings + numApprovals} ${numErrors + numWarnings + numApprovals === 1 ? 'issue' : 'issues'}`,
40
41
  pluralCheckedFixableErrors: `${numFixableErrors} ${numFixableErrors === 1 ? 'error' : 'errors'}`,
41
42
  pluralCheckedFixableWarnings: `${numFixableWarnings} ${numFixableWarnings === 1 ? 'warning' : 'warnings'}`
42
43
  });
@@ -257,7 +258,7 @@ What do you like or don't like about Forge? Share your feedback below or press C
257
258
  success: (appName) => `Created ${appName}`,
258
259
  successDetails: (directory, validEnvironmentOptions) => `\nYour app is ready to work on, deploy, and install. We created ${validEnvironmentOptions.length} environments you can deploy to: ${validEnvironmentOptions
259
260
  .map(environment_1.environmentToOption)
260
- .join(', ')}.\n\nChange to directory ${chalk_1.default.bold(directory)} to see your app files.`
261
+ .join(', ')}.\n\nChange to directory ${chalk_1.default.bold(directory)} to see your app files.\n\n${chalk_1.default.green('Tip: You can add more modules to your app later with')} ${forge('module', 'add')}${chalk_1.default.green('.')} ${chalk_1.default.dim('(module commands are in Preview)')}`
261
262
  },
262
263
  intro: (givenDirectory) => `Creating an app in directory ${chalk_1.default.bold(givenDirectory)}.\n`,
263
264
  introWithCurrentDirectory: (currentDirectory) => `Creating an app in your current directory:\n\n ${chalk_1.default.bold(currentDirectory)}\n`,
@@ -519,6 +520,7 @@ What do you like or don't like about Forge? Share your feedback below or press C
519
520
  error: {
520
521
  noDeployUrl: "Couldn't find deployment URL",
521
522
  noPresignedUrls: "Couldn't find presigned URLs",
523
+ noManifestUrl: "Couldn't find manifest URL",
522
524
  noUploadId: "Couldn't find uploadId",
523
525
  noManifestInZip: (manifestFilename) => `Couldn't find ${manifestFilename} file in the zip archive. Add one.`,
524
526
  noManifestAtPath: (path) => `We couldn't find the artifact file ${path}.`,
@@ -833,7 +835,7 @@ What do you like or don't like about Forge? Share your feedback below or press C
833
835
  taskLint: {
834
836
  lintError: log_color_1.LogColor.error(`Error: The build failed due to errors in the app code. Fix the errors before rerunning ${forge('build')}, or run ${forge('build', '--no-verify')} to skip the linter.\n`),
835
837
  lintWarning: (numWarnings) => {
836
- const { pluralCheckedTotal } = checkLintTotalPlurals(0, numWarnings, 0, 0);
838
+ const { pluralCheckedTotal } = checkLintTotalPlurals(0, numWarnings, 0, 0, 0);
837
839
  return log_color_1.LogColor.warn(`${pluralCheckedTotal} found. Run ${forge('lint')} to review the warnings.`);
838
840
  }
839
841
  },
@@ -864,9 +866,12 @@ What do you like or don't like about Forge? Share your feedback below or press C
864
866
  return `Deploying ${appName}${buildTagText} to ${exports.Text.env.displayEnvironment(envKey, envType)}...`;
865
867
  },
866
868
  success: 'Deployed\n',
867
- successDetails: (appName, envKey, envType, buildTag) => {
869
+ successDetails: (appName, envKey, envType, buildTag, numApprovals) => {
868
870
  const buildTagText = buildTag ? ` using build with tag ${buildTag}` : '';
869
- return `Deployed ${appName}${buildTagText} to the ${exports.Text.env.displayEnvironment(envKey, envType)} environment.`;
871
+ const approvalsText = numApprovals && numApprovals > 0
872
+ ? ` with ${numApprovals} ${numApprovals === 1 ? 'approval' : 'approvals'} acknowledged`
873
+ : '';
874
+ return `Deployed ${appName}${buildTagText} to the ${exports.Text.env.displayEnvironment(envKey, envType)} environment${approvalsText}.`;
870
875
  },
871
876
  distributePageLink: (appId) => `To install on a site that you're an admin of, run ${forge('install')}.\n` +
872
877
  'To install on any other site, generate an installation link in the developer console and share it with the site admin: ' +
@@ -875,9 +880,15 @@ What do you like or don't like about Forge? Share your feedback below or press C
875
880
  taskLint: {
876
881
  lintError: log_color_1.LogColor.error(`Error: The deploy failed due to errors in the app code. Fix the errors before rerunning ${forge('deploy')}, or run ${forge('deploy', '--no-verify')} to skip the linter.\n`),
877
882
  lintWarning: (numWarnings) => {
878
- const { pluralCheckedTotal } = checkLintTotalPlurals(0, numWarnings, 0, 0);
883
+ const { pluralCheckedTotal } = checkLintTotalPlurals(0, numWarnings, 0, 0, 0);
879
884
  return log_color_1.LogColor.warn(`${pluralCheckedTotal} found. Run ${forge('lint')} to review the warnings.`);
880
- }
885
+ },
886
+ lintApproval: (numApprovals, ruleNames) => {
887
+ const { pluralCheckedApprovals } = checkLintTotalPlurals(0, 0, numApprovals, 0, 0);
888
+ const rulesArg = ruleNames && ruleNames.length > 0 ? ruleNames.join(' ') : '[ruleName]';
889
+ return log_color_1.LogColor.approval(`The deploy failed due to ${pluralCheckedApprovals} requested. Run ${forge('deploy', `--approve ${rulesArg}`)} to acknowledge and proceed.\n`);
890
+ },
891
+ lintErrorsWithApprovals: log_color_1.LogColor.error(`Fix the error above before approving deployment rules.\n`)
881
892
  },
882
893
  hasNoAppInstallationsForEnv: {
883
894
  hasNoAppInstallationsForEnvError: log_color_1.LogColor.error(`Error: The deployment failed due to errors while trying to determine if the app has any installations for the deployed environment.`)
@@ -897,6 +908,9 @@ What do you like or don't like about Forge? Share your feedback below or press C
897
908
  skipRollout: {
898
909
  description: 'Skip rolling release rollout after deployment'
899
910
  },
911
+ approveRule: {
912
+ description: 'list of validation rules to approve'
913
+ },
900
914
  connectKeyChange: {
901
915
  continueChange: `Do you wish to continue with changing the Connect key?`,
902
916
  continueDelete: `Do you wish to continue with deleting the Connect key?`,
@@ -1001,7 +1015,16 @@ What do you like or don't like about Forge? Share your feedback below or press C
1001
1015
  installationLimitWarning: 'Warning: Site exceeds recommended app limit\n' +
1002
1016
  'This site has more than 100 apps installed. Exceeding this limit may cause future installations to fail.',
1003
1017
  success: {
1004
- banner: (envKey, envType, product, site) => `Your app in the ${exports.Text.env.displayEnvironment(envKey, envType)} environment is now installed in ${product} on ${buildTerminalLink(site)}. You can install the app into other Atlassian apps by running the ${chalk_1.default.bold('forge install')} command again.`
1018
+ banner: (envKey, envType, product, site) => `Your app in the ${exports.Text.env.displayEnvironment(envKey, envType)} environment is now installed in ${product} on ${buildTerminalLink(site)}. You can install the app into other Atlassian apps by running the ${chalk_1.default.bold('forge install')} command again.`,
1019
+ deeplinks: (links) => {
1020
+ if (links.length === 1) {
1021
+ return `\nCheck it out here: ${buildTerminalLink(links[0].url)}`;
1022
+ }
1023
+ const linkList = links
1024
+ .map((link) => link.label ? `- ${link.label}: ${buildTerminalLink(link.url)}` : `- ${buildTerminalLink(link.url)}`)
1025
+ .join('\n');
1026
+ return `\nCheck them out here:\n${linkList}`;
1027
+ }
1005
1028
  },
1006
1029
  error: {
1007
1030
  activationIdMissing: (url, context) => `Atlassian app is not activated on ${url}. Enable ${context} in your suite or contact your administrator for assistance.`,
@@ -1288,28 +1311,32 @@ ${buildTerminalLink(link)}\n`,
1288
1311
  cmd: 'check the source files for common errors',
1289
1312
  running: `Running ${forge('lint')}...`,
1290
1313
  noProblems: 'No issues found.',
1314
+ approvalRequired: chalk_1.default.cyan(` Approval required, fixable with ${forge('deploy', '--approve <ruleName..>')}.`),
1291
1315
  noFixableProblem: chalk_1.default.red(` Issue found is not automatically fixable with ${forge('lint')}.`),
1292
1316
  noFixableProblems: chalk_1.default.red(` Issues found are not automatically fixable with ${forge('lint')}.`),
1293
1317
  filename: chalk_1.default.underline,
1318
+ errorMissingManifest: `Missing manifest`,
1319
+ errorInvalidManifest: `Invalid manifest`,
1294
1320
  linterFailed: (linterClass, failure) => chalk_1.default.yellow(`${chalk_1.default.bold('Warning:')} Could not perform some linting actions for ${chalk_1.default.bold(linterClass)} due to unhandled error "${failure}".\n`),
1295
1321
  fixed: (numFixableErrors, numFixableWarnings) => {
1296
- const { pluralCheckedFixableErrors, pluralCheckedFixableWarnings } = checkLintTotalPlurals(0, 0, numFixableErrors, numFixableWarnings);
1322
+ const { pluralCheckedFixableErrors, pluralCheckedFixableWarnings } = checkLintTotalPlurals(0, 0, 0, numFixableErrors, numFixableWarnings);
1297
1323
  return `${greenTick} Fixed ${pluralCheckedFixableErrors} and ${pluralCheckedFixableWarnings}`;
1298
1324
  },
1299
1325
  fixFollowUp: `Run ${forge('lint')} to review outstanding errors and warnings`,
1300
1326
  error: (line, column, message, reference) => getLintMessage(line, column, message, 'error', log_color_1.LogColor.error, reference),
1301
- summary: (numErrors, numWarnings, numFixableErrors, numFixableWarnings) => {
1302
- const { pluralCheckedErrors, pluralCheckedWarnings, pluralCheckedTotal } = checkLintTotalPlurals(numErrors, numWarnings, numFixableErrors, numFixableWarnings);
1303
- const colourFunction = numErrors ? log_color_1.LogColor.error : log_color_1.LogColor.warn;
1327
+ summary: (numErrors, numWarnings, numApprovals, numFixableErrors, numFixableWarnings) => {
1328
+ const { pluralCheckedErrors, pluralCheckedWarnings, pluralCheckedApprovals, pluralCheckedTotal } = checkLintTotalPlurals(numErrors, numWarnings, numApprovals, numFixableErrors, numFixableWarnings);
1329
+ const colourFunction = numErrors ? log_color_1.LogColor.error : numWarnings ? log_color_1.LogColor.warn : log_color_1.LogColor.approval;
1304
1330
  const warningCharacter = numErrors ? 'X' : '⚠';
1305
- return colourFunction(`${warningCharacter} ${pluralCheckedTotal} (${pluralCheckedErrors}, ${pluralCheckedWarnings})`);
1331
+ return colourFunction(`${warningCharacter} ${pluralCheckedTotal} (${pluralCheckedErrors}, ${pluralCheckedWarnings}, ${pluralCheckedApprovals})`);
1306
1332
  },
1307
1333
  fixSummary: (numErrors, numFixableErrors, numFixableWarnings) => {
1308
- const { pluralCheckedFixableErrors, pluralCheckedFixableWarnings } = checkLintTotalPlurals(0, 0, numFixableErrors, numFixableWarnings);
1334
+ const { pluralCheckedFixableErrors, pluralCheckedFixableWarnings } = checkLintTotalPlurals(0, 0, 0, numFixableErrors, numFixableWarnings);
1309
1335
  const colourFunction = numErrors ? log_color_1.LogColor.error : log_color_1.LogColor.warn;
1310
1336
  return colourFunction(` Run ${forge('lint', '--fix')} to automatically fix ${pluralCheckedFixableErrors} and ${pluralCheckedFixableWarnings}.\n`);
1311
1337
  },
1312
- warning: (line, column, message, reference) => getLintMessage(line, column, message, 'warning', log_color_1.LogColor.warn, reference)
1338
+ warning: (line, column, message, reference) => getLintMessage(line, column, message, 'warning', log_color_1.LogColor.warn, reference),
1339
+ approval: (line, column, message, reference) => getLintMessage(line, column, message, 'approval', log_color_1.LogColor.approval, reference)
1313
1340
  },
1314
1341
  repositories: {
1315
1342
  cmd: {
@@ -1358,7 +1385,9 @@ ${buildTerminalLink(link)}\n`,
1358
1385
  creatingNewContainer: (key) => `Creating new container with key '${key}'.`,
1359
1386
  start: 'Creating container...',
1360
1387
  success: 'Container created.',
1361
- createdRepositoryURI: (uri) => `New repository URI: ${uri}`
1388
+ createdRepositoryURI: (uri) => `New repository URI: ${uri}`,
1389
+ authRequired: (key) => `To push images to the '${key}' repository, you need to authenticate first. ` +
1390
+ 'Run `forge containers docker-login` (or `forge containers get-login`) to authenticate, then push your image.'
1362
1391
  },
1363
1392
  login: {
1364
1393
  cmd: {
@@ -1565,12 +1594,24 @@ When errors occur during Forge command execution, error details will be sent to
1565
1594
  dynamicTable: {
1566
1595
  exiting: 'Exiting...'
1567
1596
  },
1597
+ manifest: {
1598
+ cmd: {
1599
+ description: 'manage app manifest'
1600
+ },
1601
+ render: {
1602
+ description: 'render the app manifest after applying environment transformations',
1603
+ optionPlacement: 'placement where the app is deployed, for example a DaRe region or Isolated Cloud ID',
1604
+ errorMissingTransformation: 'Unable to retrieve transformed manifest'
1605
+ }
1606
+ },
1568
1607
  module: {
1569
1608
  cmd: {
1570
1609
  description: '[Preview] Commands for managing modules in your app. ⚠️ These commands may modify your app files (manifest.yml, source files, and package.json).'
1571
1610
  },
1572
1611
  add: {
1573
1612
  description: '[Preview] add a module to your Forge App. ⚠️ This will modify your app files (manifest.yml, source files, and package.json).',
1613
+ spinnerAdding: 'Adding module...',
1614
+ spinnerAdded: 'Module added.',
1574
1615
  optionModuleType: 'module type to add (e.g. jira:issuePanel, jiraServiceManagement:portalFooter, confluence:macro, etc.)',
1575
1616
  optionUiType: 'UI framework (ui-kit, custom-ui)',
1576
1617
  optionProduct: 'target product (Jira, Jira Service Management, Confluence, etc.)',
@@ -1611,6 +1652,7 @@ When errors occur during Forge command execution, error details will be sent to
1611
1652
  warnAddedAppCompatibility: (existingProducts, newProduct) => `Adding a "${newProduct}" module to an app that already targets ${existingProducts
1612
1653
  .map((p) => `"${p}"`)
1613
1654
  .join(', ')}; updated app.compatibility so the app must be installed to "${newProduct}" to see changes.`,
1655
+ warnAddedGlobalAppCompatibility: (requiredProduct) => `Adding a "global" module requires app.compatibility for both "jira" and "confluence"\nUpdated app.compatibility and marked "${requiredProduct}" as required.`,
1614
1656
  warnUnsupportedFileOperations: (ops) => `Skipping ${ops.length} unsupported file operation(s): ${ops.join(', ')}. Only "create" operations are supported.`,
1615
1657
  warnViteConfigExists: (configPath) => `An existing vite.config.js at ${configPath} could not be merged automatically. Skipping vite config changes; re-run with --force to overwrite.`,
1616
1658
  errorViteConfigNestedInput: () => `Cannot safely merge vite.config.js: the existing "input" block contains a nested object. Merging would corrupt the file. Re-run with --force to regenerate the config from scratch, or edit the input map manually.`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/cli-shared",
3
- "version": "9.3.0-next.9",
3
+ "version": "9.3.0",
4
4
  "description": "Common functionality for Forge CLI",
5
5
  "author": "Atlassian",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",
@@ -12,12 +12,12 @@
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",
16
16
  "@forge/util": "3.0.0",
17
17
  "@forge/i18n": "1.0.0",
18
18
  "@sentry/node": "7.106.0",
19
19
  "@vercel/detect-agent": "^1.2.3",
20
- "adm-zip": "^0.5.10",
20
+ "adm-zip": "^0.6.0",
21
21
  "archiver": "^8.0.0",
22
22
  "array.prototype.flatmap": "^1.3.3",
23
23
  "case": "^1.6.3",