@forge/cli-shared 9.3.0-next.9 → 9.3.1-next.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;
@@ -643,10 +644,6 @@ export declare const Text: {
643
644
  invalidBuildTagFormat: string;
644
645
  };
645
646
  };
646
- taskLint: {
647
- lintError: string;
648
- lintWarning: (numWarnings: number) => string;
649
- };
650
647
  list: {
651
648
  cmd: {
652
649
  desc: string;
@@ -662,18 +659,29 @@ export declare const Text: {
662
659
  error: string;
663
660
  };
664
661
  };
662
+ buildDeploy: {
663
+ inspect: {
664
+ description: string;
665
+ };
666
+ taskLint: {
667
+ lintError: (cmd: "build" | "deploy") => string;
668
+ lintWarning: (numWarnings: number) => string;
669
+ };
670
+ };
665
671
  deploy: {
666
672
  cmd: {
667
673
  desc: string;
668
674
  start1: (envKey: string, envType: AppEnvironmentType, buildTag?: string) => string;
669
675
  start2: (appName: string, envKey: string, envType: AppEnvironmentType, buildTag?: string) => string;
670
676
  success: string;
671
- successDetails: (appName: string, envKey: string, envType: AppEnvironmentType, buildTag?: string) => string;
677
+ successDetails: (appName: string, envKey: string, envType: AppEnvironmentType, buildTag?: string, numApprovals?: number) => string;
672
678
  distributePageLink: (appId: string) => string;
673
679
  };
674
680
  taskLint: {
675
681
  lintError: string;
676
682
  lintWarning: (numWarnings: number) => string;
683
+ lintApproval: (numApprovals: number, ruleNames?: string[]) => string;
684
+ lintErrorsWithApprovals: string;
677
685
  };
678
686
  hasNoAppInstallationsForEnv: {
679
687
  hasNoAppInstallationsForEnvError: string;
@@ -693,6 +701,9 @@ export declare const Text: {
693
701
  skipRollout: {
694
702
  description: string;
695
703
  };
704
+ approveRule: {
705
+ description: string;
706
+ };
696
707
  connectKeyChange: {
697
708
  continueChange: string;
698
709
  continueDelete: string;
@@ -706,6 +717,7 @@ export declare const Text: {
706
717
  taskPackage: {
707
718
  title: string;
708
719
  packageBundledFiles: string;
720
+ inspectOutputPath: (inspectDirectory: string) => string;
709
721
  packageFile: (fileName: string, filePath: string | null) => string;
710
722
  archiveCreated: (archivePath: string) => string;
711
723
  invalidArchivePath: (fileName: string) => string;
@@ -775,6 +787,10 @@ export declare const Text: {
775
787
  installationLimitWarning: string;
776
788
  success: {
777
789
  banner: (envKey: string, envType: AppEnvironmentType, product: string, site: string) => string;
790
+ deeplinks: (links: Array<{
791
+ label?: string;
792
+ url: string;
793
+ }>) => string;
778
794
  };
779
795
  error: {
780
796
  activationIdMissing: (url: string, context: string) => string;
@@ -1028,16 +1044,20 @@ export declare const Text: {
1028
1044
  cmd: string;
1029
1045
  running: string;
1030
1046
  noProblems: string;
1047
+ approvalRequired: string;
1031
1048
  noFixableProblem: string;
1032
1049
  noFixableProblems: string;
1033
1050
  filename: chalk.Chalk;
1051
+ errorMissingManifest: string;
1052
+ errorInvalidManifest: string;
1034
1053
  linterFailed: (linterClass: string, failure: string) => string;
1035
1054
  fixed: (numFixableErrors: number, numFixableWarnings: number) => string;
1036
1055
  fixFollowUp: string;
1037
1056
  error: (line: number, column: number, message: string, reference: string) => string;
1038
- summary: (numErrors: number, numWarnings: number, numFixableErrors: number, numFixableWarnings: number) => string;
1057
+ summary: (numErrors: number, numWarnings: number, numApprovals: number, numFixableErrors: number, numFixableWarnings: number) => string;
1039
1058
  fixSummary: (numErrors: number, numFixableErrors: number, numFixableWarnings: number) => string;
1040
1059
  warning: (line: number, column: number, message: string, reference: string) => string;
1060
+ approval: (line: number, column: number, message: string, reference: string) => string;
1041
1061
  };
1042
1062
  repositories: {
1043
1063
  cmd: {
@@ -1087,6 +1107,7 @@ export declare const Text: {
1087
1107
  start: string;
1088
1108
  success: string;
1089
1109
  createdRepositoryURI: (uri: string) => string;
1110
+ authRequired: (key: string) => string;
1090
1111
  };
1091
1112
  login: {
1092
1113
  cmd: {
@@ -1292,12 +1313,24 @@ export declare const Text: {
1292
1313
  dynamicTable: {
1293
1314
  exiting: string;
1294
1315
  };
1316
+ manifest: {
1317
+ cmd: {
1318
+ description: string;
1319
+ };
1320
+ render: {
1321
+ description: string;
1322
+ optionPlacement: string;
1323
+ errorMissingTransformation: string;
1324
+ };
1325
+ };
1295
1326
  module: {
1296
1327
  cmd: {
1297
1328
  description: string;
1298
1329
  };
1299
1330
  add: {
1300
1331
  description: string;
1332
+ spinnerAdding: string;
1333
+ spinnerAdded: string;
1301
1334
  optionModuleType: string;
1302
1335
  optionUiType: string;
1303
1336
  optionProduct: string;
@@ -1336,6 +1369,7 @@ export declare const Text: {
1336
1369
  warnNoFragment: string;
1337
1370
  warnNoManifestDelta: string;
1338
1371
  warnAddedAppCompatibility: (existingProducts: string[], newProduct: string) => string;
1372
+ warnAddedGlobalAppCompatibility: (requiredProduct: "jira" | "confluence") => string;
1339
1373
  warnUnsupportedFileOperations: (ops: string[]) => string;
1340
1374
  warnViteConfigExists: (configPath: string) => string;
1341
1375
  errorViteConfigNestedInput: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/ui/text.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAO9D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAwBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAKD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAAsD,CAAC;AAoDjG,eAAO,MAAM,IAAI;8BA7EgB,MAAM;eAKrB,MAAM;;;;;6BAuFD,MAAM;2BACR,MAAM;6BAGJ,MAAM;+BAEJ,MAAM;;wCAIK,MAAM,UAAU,MAAM;qDAOT,MAAM,sBAAsB,MAAM;;wCAO/C,MAAM,EAAE;;;;;;;;6CAgBH,MAAM,YAAY,MAAM,YAAY,MAAM;;;kDAQrC,MAAM,EAAE;gDAKV,MAAM,aAAa,MAAM;8CAG3B,MAAM,aAAa,MAAM;uCAGhC,MAAM;iCAEZ,MAAM;;;;;;;;;;;;;;kDAmBS,MAAM;;;0DAKI,MAAM,EAAE;yCAEzB,MAAM;0CAEL,MAAM;;;yCAKP,MAAM;;;mDAUI,MAAM,yBAAyB,MAAM;;6BAM7D,MAAM,EAAE;;;mCAKA,MAAM;;;;;;;;;;;;;kCAeP,OAAO,YAAY,MAAM,aAAa,OAAO;;;;uCAUtC,MAAM,EAAE;;;;;;;;0BASrB,MAAM,KAAG,MAAM;;;;;uBAQpB,MAAM,SAAS,MAAM,aAAa,MAAM;2BAEpC,MAAM,cAAc,MAAM;;;8CAYP,MAAM;;;8BAKtB,MAAM;;4DAEwB,MAAM,aAAa,MAAM;;kDAGnC,MAAM;;;;;yBAO/B,MAAM,EAAE;;;6BAGJ,MAAM,EAAE;;;;;;;kCAUL,MAAM,mBAAmB,MAAM;;;;;;;;;;;;0BAkBvC,MAAM,GAAG,SAAS,KAAG,MAAM;;;;;;;;;;;oBAgB/B,MAAM;;;;wBAOF,MAAM;;;;;;;;;;yCAaS,MAAM;yCACN,MAAM,QAAQ,MAAM,aAAa,MAAM;;;+CAIjC,MAAM,eAAe,MAAM;;;;;;;;;;;;;;;;;;;;;+BAiC3C,MAAM;wCACG,MAAM,2BAA2B,MAAM,EAAE;;gCAQ/C,MAAM;sDACgB,MAAM;;;;;;;;;;;;;;;;;oCAqB1B,MAAM;;;;;;;;;;;;+BAcb,MAAM;;;+BAIN,MAAM;;;qCAIA,MAAM;qCACN,MAAM;;;;;;;;;;;;;;;iCAmBN,MAAM,qBAAqB,MAAM;;;6CAKrB,MAAM;;;gDAIH,MAAM;;;;;oCAMlB,MAAM;iCACT,MAAM;uCACA,MAAM;sCAEP,MAAM;kCAIV,MAAM;;0CAKA,MAAM;mCACb,MAAM;;;;;qDAWY,QAAQ,GAAG,SAAS,GAAG,QAAQ;kEAUlB,MAAM;;;;;;;;;;+BAezC,MAAM;;gCAGL,MAAM;;;;;;;;;;;;;;;+BAgBP,MAAM;sDACiB,MAAM,EAAE;;;;;;;kCAa1B,MAAM;;;;kCAKR,MAAM;;qCAKD,MAAM,WAAW,kBAAkB;;uCAWnC,MAAM;;;;;;;;;6BAed,MAAM,WAAW,kBAAkB;sCAE1B,MAAM,WAAW,kBAAkB;;;;;;;;4CAa/B,MAAM;;gCAIhB,MAAM,mBAAmB,kBAAkB;;;;;;;;;;;;;iCAkB5C,MAAM,WAAW,kBAAkB;2BAEzC,MAAM;;;;;;6BAOF,MAAM,WAAW,kBAAkB;;gCAMhC,MAAM,WAAW,kBAAkB;;;;;;;;;;;;gCAenC,MAAM;;;;;;;;;;;;;;8BAgBV,MAAM,WAAW,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;2CA6BpB,MAAM,WAAW,kBAAkB;;;;;uCAQvC,MAAM;;;;;;;;;;;;;;;;;;;;;;;gDAgCC,MAAM;qCAGjB,MAAM;;4CAIC,MAAM;;;;;6BAOrB,MAAM;0BACT,MAAM;6BACH,MAAM,gBAAgB,MAAM;;;;;;;;;;;;;;;;sCAiBrB,MAAM,WAAW,kBAAkB,WAAW,MAAM,UAAU,MAAM,EAAE;mCAEzE,MAAM,WAAW,kBAAkB,WAAW,MAAM;;;mCAIpD,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;gCAsDT;oBACd,OAAO,EAAE,MAAM,CAAC;oBAChB,OAAO,CAAC,EAAE,MAAM,CAAC;oBACjB,QAAQ,EAAE,kBAAkB,CAAC;oBAC7B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;oBAC9B,QAAQ,EAAE,MAAM,CAAC;oBACjB,QAAQ,EAAE,MAAM,CAAC;iBAClB;;;;;;;;;;;iDAmBgC,MAAM;;;;;;iCAmBtB,MAAM,WAAW,kBAAkB,WAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;oCA6BjD,MAAM;2CACC,OAAO;;;;;;;;;;;;;iCAyBjB,MAAM,WAAW,kBAAkB,YAAY,MAAM;;;;;;;;;;;;;;;;;;iDAuBrC,MAAM,eAAe,MAAM;;+DAGb,MAAM;;;;yDAOd,MAAM,aAAa,MAAM,kBAAkB,MAAM;0DAEhD,MAAM,aAAa,MAAM;iEAElB,MAAM,aAAa,MAAM;uEAEnB,MAAM;;;;;8DAOb,MAAM,GAAG,SAAS;2DAGrB,MAAM,iBAAiB,MAAM,aAAa,MAAM;+DAGtE,MAAM,iBACV,MAAM,aACV,MAAM,gBACH,MAAM;6DAGuB,MAAM,iBAAiB,MAAM,eAAe,MAAM;;kDAK5E,MAAM,mBACN,MAAM,kBACP,MAAM,UACd,MAAM,wBACQ,MAAM,sBACR,MAAM;;8CAeE,MAAM;4DACQ,MAAM,iBAAiB,MAAM;6CAM5C,MAAM;;;;;;;;;;;;qCAyBhB,MAAM,WAAW,kBAAkB,GAAG,SAAS,WAAW,MAAM;;;;;;;;;;;;;0DAmB3C,MAAM;uDAGT,MAAM;;;oEAKS,MAAM;sDAInC,MAAM,mBACV,MAAM,mBACN,MAAM,yBACA,MAAM,uBACR,MAAM;;;;;;;;;;gCAcX,MAAM;;;;;6CAKK,MAAM;;;;;;;uCAYV,MAAM,KAAG,MAAM;;;;;;kCASpB,MAAM;;;;;;;;;;;;;;6BAiBX,MAAM,WAAW,kBAAkB,aAAa,MAAM;8BAIrD,MAAM,UAAU,MAAM,WAAW,kBAAkB,aAAa,MAAM;;sCAK9D,MAAM,UAAU,MAAM,WAAW,kBAAkB,aAAa,MAAM;wCAIpE,MAAM;;;;uCAYP,MAAM,KAAG,MAAM;;;;;;;;;;oCAgBlB,MAAM;;;;;;;;;;;;;;uDAiBa,MAAM,cAAc,MAAM,KAAG,MAAM;mDAIvC,MAAM,gBAAgB,MAAM,cAAc,MAAM,KAAG,MAAM;mDAKzD,MAAM,KAAG,MAAM;iEAID,MAAM,eAAe,MAAM,KAAG,MAAM;;;;;;oCAUjE,MAAM,YAAY,MAAM,GAAG,IAAI;0CAEzB,MAAM;2CACL,MAAM;;;;0CAKP,MAAM;;;;sCAKV,MAAM;;;;;iDAMK,MAAM;2DACI,MAAM;;;;+CAUlB,MAAM;;;;0DAeO,MAAM,UAAU,MAAM,WAAW,kBAAkB;0DAGnD,MAAM,UAAU,MAAM,WAAW,kBAAkB;mCAG1E,MAAM;;;;;;6BAgBd,MAAM;;;;;;;;;;4BAaP,MAAM,WAAW,kBAAkB,WAAW,MAAM;+BAIjD,OAAO,WAAW,MAAM;;mCAGlB,OAAO,KAAG,MAAM;qDACE,MAAM;+CAEZ,MAAM;+CAEN,MAAM;uCACd,MAAM,QAAQ,MAAM;;;;oDAKP,MAAM;;;;;;;;6BAU7B,SAAS,EAAE;+CAOO,UAAU,EAAE;2CAEhB,MAAM;wDAKpB,MAAM,EAAE,qBACR,MAAM,EAAE,QACrB,MAAM,eACC,MAAM;6EAYgD,OAAO,KAAG,MAAM;;;6BASlE,MAAM,WAAW,kBAAkB,WAAW,MAAM,QAAQ,MAAM;;;uCAOxD,MAAM,WAAW,MAAM;wCAEtB,GAAG;oCAIP,GAAG;uBAIhB,MAAM;wBACL,MAAM;;4DAK8B,MAAM,WAAW,kBAAkB;mDAE5C,MAAM;6CACZ,MAAM;uDAMI,MAAM,SAAS,MAAM;qDAKvB,MAAM,GAAG,SAAS,aAAa,MAAM;;;;;;;;0BAW9D,GAAG,eAAe,MAAM;;2BAGzB,MAAM;;;6BAYN,MAAM;;;;;;;yBAaR,MAAM;;;;;;;;;;;;;;;;;4BAsBH,MAAM,WAAW,kBAAkB;+BAEhC,OAAO;;;6BAGP,SAAS,EAAE,iBAAiB,OAAO;+CAOjB,UAAU,EAAE,iBAAiB,OAAO;2CAExC,MAAM;6EAI4B,OAAO,KAAG,MAAM;;6BAMzE,MAAM,WACL,kBAAkB,WAClB,MAAM,QACT,MAAM,gCAEF,MAAM;;;;;kCAWI,MAAM,WAAW,MAAM,QAAQ,MAAM;;;;+DAOV,MAAM,kBAAkB,MAAM;yEAEpB,MAAM;;;mDAI1B,MAAM;8DACK,MAAM,WAAW,MAAM,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAyC9D,MAAM,WAAW,kBAAkB;8BAE9C,MAAM;uCACG,MAAM,QAAQ,MAAM;mCAExB,MAAM;;;qCAGJ,MAAM;;+CAEI,MAAM;;yCAGZ,MAAM;+CAEA,MAAM;iCAEpB,MAAM;8CACO,MAAM;oDACA,MAAM;sDAEJ,MAAM;0DAEF,MAAM,cAAc,MAAM;qDAE/B,MAAM,cAAc,MAAM;mDAE5B,MAAM;0DAEC,MAAM;4BAGpC,MAAM,WAAW,MAAM;qCACd,MAAM;;mCAGV,MAAM,eAAe,MAAM;oCAC1B,MAAM,eAAe,MAAM,cAAc,MAAM;;yCAM5C,MAAM,aAAa,MAAM;;;;0BAKtC,aAAa,QAAQ,MAAM;2BAE1B,MAAM;;+BAGA,MAAM,KAAG,MAAM;;;;;;+BAOf,MAAM;;;;;8BAMT,MAAM;8BACN,MAAM;;oCAGF,MAAM;;;qDAKa,MAAM;0CAGjB,MAAM,aAAa,OAAO;iDAGnB,MAAM;;oCAInB,MAAM,GAAG,IAAI;;+CAQF,MAAM;4DACO,MAAM;iDAEjB,MAAM;yDACE,MAAM;0DAEL,MAAM;oDAEZ,MAAM;;;;;;;;;uCAUnB,MAAM;;;;;;;+BAQd,OAAO;;;;;;;;;;wBAYZ,MAAM,UAAU,MAAM,eAAe,MAAM,WAAW,OAAO;0BAM3D,MAAM,UAAU,MAAM,eAAe,MAAM;;uDASd,MAAM;;;;;oBAUzC,MAAM;;;;;;;;;;;;;;;;;kCAoBM,MAAM;;;;;;;;;;;;mCAYL,MAAM;;;;oDAIW,MAAM;;;;qCAMrB,MAAM;0CACD,MAAM;8BAClB,MAAM,WAAW,MAAM;;;;;;;;;;oCAaf,MAAM;iDACO,MAAM;;;;;;;;;;oCAYnB,MAAM,WAAW,MAAM;kCAMzB,MAAM,sBAAsB,MAAM,KAAG,MAAM;;sBAUvD,MAAM,UAAU,MAAM,WAAW,MAAM,aAAa,MAAM,KAAG,MAAM;6BAE5D,MAAM,eAAe,MAAM,oBAAoB,MAAM,sBAAsB,MAAM,KAAG,MAAM;gCAevF,MAAM,oBAAoB,MAAM,sBAAsB,MAAM,KAAG,MAAM;wBAe7E,MAAM,UAAU,MAAM,WAAW,MAAM,aAAa,MAAM,KAAG,MAAM;;;;;;;;;;;;;;;;;;;;qCAsB1D,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;wCA0BD,MAAM;;;wCAGN,MAAM;;;;;;;0CAOJ,MAAM;;;;;;;;;;;;;qCAaX,MAAM;;gCAEX,MAAM;;;;;;;;;;;;;;;;;;;;;;;0CAwBI,MAAM,eAAe,MAAM;uCAE9B,MAAM;2CAEF,MAAM;;;;;;;;;;;;;6CAaJ,MAAM;gDACH,MAAM,eAAe,MAAM;kDAEzB,MAAM,aAAa,MAAM,eAAe,MAAM;mDAE7C,MAAM,eAAe,MAAM;8CAEhC,MAAM;yDACK,MAAM,WAAW,MAAM,eAAe,MAAM;gDAErD,MAAM;;;;yBAK3B,MAAM,WAAW,MAAM;;;;qCAMb,MAAM;qCACN,MAAM,gBAAgB,OAAO;;;yCAMzB,MAAM;qCACV,MAAM;;;;;;;;;;;;;0BAmBjB,CAAC,SAAS,SAAS,MAAM,EAAE,WAAW,CAAC;6BAEpC,CAAC,SAAS,SAAS,MAAM,EAAE,WAAW,CAAC;;+BAGrC,MAAM,SAAS,MAAM;;;0BAG1B,CAAC,SAAS,SAAS,MAAM,EAAE,WAAW,CAAC;6BAEpC,CAAC,SAAS,SAAS,MAAM,EAAE,WAAW,CAAC;+BAErC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAgCF,MAAM;;;;;;;;6CAUI,MAAM,mBAAmB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DAwCxB,MAAM,GAAG,IAAI,KAAG,MAAM;;;;;;;;;;;;;;;;;kDAiBlC,MAAM,SAAS,MAAM;sDACjB,MAAM;oDACR,MAAM,WAAW,MAAM;mDAExB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAuCR,MAAM;;;;8CAID,MAAM;;;;;;;;;yCASX,MAAM;iDACE,MAAM;;;;;;uCAOhB,MAAM;mDAEM,MAAM,WAAW,MAAM;2CAE/B,MAAM;2CAEN,MAAM;;;0DAIS,MAAM,EAAE,cAAc,MAAM;iDAIrC,MAAM,EAAE;+CAEV,MAAM;;;2CAMV,MAAM;mDACE,MAAM,GAAG,SAAS,aAAa,MAAM;iDAEvC,MAAM;uDACA,MAAM;qDACR,MAAM;2CAEhB,MAAM,EAAE;kDAED,MAAM,WAAW,MAAM;+CAE1B,MAAM;8CACP,MAAM;qDAEC,MAAM,WAAW,MAAM;gDAE5B,MAAM;uCACf,MAAM,YAAY,MAAM,EAAE;+CAElB,MAAM,eAAe,MAAM,GAAG,SAAS;4CAE1C,MAAM,WAAW,MAAM;;;+CAIpB,MAAM;;+DAGU,MAAM;+DAG1C,MAAM,EAAE,YACX;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,EAAE;2DAKjB;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,EAAE;2DAElC,MAAM,EAAE;;iDAIlB,MAAM,EAAE;sDAIH,MAAM,aAAa,MAAM,YAAY,MAAM,YAAY,MAAM;qDAE9D,MAAM,YAAY,MAAM,YAAY,MAAM;kDAE7C,MAAM;;;;;;;oDAQJ,MAAM;;;;;;;;;;;;;;qDAeL,MAAM;;;;;;8CAMb,MAAM,cAAc,MAAM;yDAEf,MAAM,cAAc,MAAM;+CAEpC,MAAM,UAAU,MAAM,cAAc,MAAM;wCAEjD,MAAM;0CAEJ,MAAM;0CAEN,MAAM;kCAEd,MAAM;;;;;;;CAOjC,CAAC"}
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}.`,
@@ -830,13 +832,6 @@ What do you like or don't like about Forge? Share your feedback below or press C
830
832
  invalidBuildTagFormat: 'Invalid build tag; tags are case-insensitive and must start with a letter or number and can only contain alphanumeric characters, underscores, hyphens, and periods.'
831
833
  }
832
834
  },
833
- taskLint: {
834
- 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
- lintWarning: (numWarnings) => {
836
- const { pluralCheckedTotal } = checkLintTotalPlurals(0, numWarnings, 0, 0);
837
- return log_color_1.LogColor.warn(`${pluralCheckedTotal} found. Run ${forge('lint')} to review the warnings.`);
838
- }
839
- },
840
835
  list: {
841
836
  cmd: {
842
837
  desc: 'list builds for your app'
@@ -852,6 +847,18 @@ What do you like or don't like about Forge? Share your feedback below or press C
852
847
  error: log_color_1.LogColor.error(`Error: Manifest environment variables are not supported for builds. Please remove the environment variables from your manifest.yml before rerunning ${forge('build')}.\n`)
853
848
  }
854
849
  },
850
+ buildDeploy: {
851
+ inspect: {
852
+ description: 'save application bundle for inspection'
853
+ },
854
+ taskLint: {
855
+ lintError: (cmd) => log_color_1.LogColor.error(`Error: The ${cmd} failed due to errors in the app code. Fix the errors before rerunning ${forge(cmd)}, or run ${forge(cmd, '--no-verify')} to skip the linter.\n`),
856
+ lintWarning: (numWarnings) => {
857
+ const { pluralCheckedTotal } = checkLintTotalPlurals(0, numWarnings, 0, 0, 0);
858
+ return log_color_1.LogColor.warn(`${pluralCheckedTotal} found. Run ${forge('lint')} to review the warnings.`);
859
+ }
860
+ }
861
+ },
855
862
  deploy: {
856
863
  cmd: {
857
864
  desc: 'deploy your app to an environment',
@@ -864,9 +871,12 @@ What do you like or don't like about Forge? Share your feedback below or press C
864
871
  return `Deploying ${appName}${buildTagText} to ${exports.Text.env.displayEnvironment(envKey, envType)}...`;
865
872
  },
866
873
  success: 'Deployed\n',
867
- successDetails: (appName, envKey, envType, buildTag) => {
874
+ successDetails: (appName, envKey, envType, buildTag, numApprovals) => {
868
875
  const buildTagText = buildTag ? ` using build with tag ${buildTag}` : '';
869
- return `Deployed ${appName}${buildTagText} to the ${exports.Text.env.displayEnvironment(envKey, envType)} environment.`;
876
+ const approvalsText = numApprovals && numApprovals > 0
877
+ ? ` with ${numApprovals} ${numApprovals === 1 ? 'approval' : 'approvals'} acknowledged`
878
+ : '';
879
+ return `Deployed ${appName}${buildTagText} to the ${exports.Text.env.displayEnvironment(envKey, envType)} environment${approvalsText}.`;
870
880
  },
871
881
  distributePageLink: (appId) => `To install on a site that you're an admin of, run ${forge('install')}.\n` +
872
882
  'To install on any other site, generate an installation link in the developer console and share it with the site admin: ' +
@@ -875,9 +885,15 @@ What do you like or don't like about Forge? Share your feedback below or press C
875
885
  taskLint: {
876
886
  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
887
  lintWarning: (numWarnings) => {
878
- const { pluralCheckedTotal } = checkLintTotalPlurals(0, numWarnings, 0, 0);
888
+ const { pluralCheckedTotal } = checkLintTotalPlurals(0, numWarnings, 0, 0, 0);
879
889
  return log_color_1.LogColor.warn(`${pluralCheckedTotal} found. Run ${forge('lint')} to review the warnings.`);
880
- }
890
+ },
891
+ lintApproval: (numApprovals, ruleNames) => {
892
+ const { pluralCheckedApprovals } = checkLintTotalPlurals(0, 0, numApprovals, 0, 0);
893
+ const rulesArg = ruleNames && ruleNames.length > 0 ? ruleNames.join(' ') : '[ruleName]';
894
+ return log_color_1.LogColor.approval(`The deploy failed due to ${pluralCheckedApprovals} requested. Run ${forge('deploy', `--approve ${rulesArg}`)} to acknowledge and proceed.\n`);
895
+ },
896
+ lintErrorsWithApprovals: log_color_1.LogColor.error(`Fix the error above before approving deployment rules.\n`)
881
897
  },
882
898
  hasNoAppInstallationsForEnv: {
883
899
  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 +913,9 @@ What do you like or don't like about Forge? Share your feedback below or press C
897
913
  skipRollout: {
898
914
  description: 'Skip rolling release rollout after deployment'
899
915
  },
916
+ approveRule: {
917
+ description: 'list of validation rules to approve'
918
+ },
900
919
  connectKeyChange: {
901
920
  continueChange: `Do you wish to continue with changing the Connect key?`,
902
921
  continueDelete: `Do you wish to continue with deleting the Connect key?`,
@@ -913,6 +932,7 @@ What do you like or don't like about Forge? Share your feedback below or press C
913
932
  taskPackage: {
914
933
  title: 'Packaging app files',
915
934
  packageBundledFiles: 'Packaging bundled files',
935
+ inspectOutputPath: (inspectDirectory) => `Application bundle has been copied to ${chalk_1.default.bold(inspectDirectory)} for inspection`,
916
936
  packageFile: (fileName, filePath) => `File added to archive: ${fileName || '.'}${filePath ? `, from ${filePath}` : ''}`,
917
937
  archiveCreated: (archivePath) => `Archive created: ${archivePath}`,
918
938
  invalidArchivePath: (fileName) => `Invalid archive path "${fileName}"`
@@ -1001,7 +1021,16 @@ What do you like or don't like about Forge? Share your feedback below or press C
1001
1021
  installationLimitWarning: 'Warning: Site exceeds recommended app limit\n' +
1002
1022
  'This site has more than 100 apps installed. Exceeding this limit may cause future installations to fail.',
1003
1023
  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.`
1024
+ 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.`,
1025
+ deeplinks: (links) => {
1026
+ if (links.length === 1) {
1027
+ return `\nCheck it out here: ${buildTerminalLink(links[0].url)}`;
1028
+ }
1029
+ const linkList = links
1030
+ .map((link) => link.label ? `- ${link.label}: ${buildTerminalLink(link.url)}` : `- ${buildTerminalLink(link.url)}`)
1031
+ .join('\n');
1032
+ return `\nCheck them out here:\n${linkList}`;
1033
+ }
1005
1034
  },
1006
1035
  error: {
1007
1036
  activationIdMissing: (url, context) => `Atlassian app is not activated on ${url}. Enable ${context} in your suite or contact your administrator for assistance.`,
@@ -1288,28 +1317,32 @@ ${buildTerminalLink(link)}\n`,
1288
1317
  cmd: 'check the source files for common errors',
1289
1318
  running: `Running ${forge('lint')}...`,
1290
1319
  noProblems: 'No issues found.',
1320
+ approvalRequired: chalk_1.default.cyan(` Approval required, fixable with ${forge('deploy', '--approve <ruleName..>')}.`),
1291
1321
  noFixableProblem: chalk_1.default.red(` Issue found is not automatically fixable with ${forge('lint')}.`),
1292
1322
  noFixableProblems: chalk_1.default.red(` Issues found are not automatically fixable with ${forge('lint')}.`),
1293
1323
  filename: chalk_1.default.underline,
1324
+ errorMissingManifest: `Missing manifest`,
1325
+ errorInvalidManifest: `Invalid manifest`,
1294
1326
  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
1327
  fixed: (numFixableErrors, numFixableWarnings) => {
1296
- const { pluralCheckedFixableErrors, pluralCheckedFixableWarnings } = checkLintTotalPlurals(0, 0, numFixableErrors, numFixableWarnings);
1328
+ const { pluralCheckedFixableErrors, pluralCheckedFixableWarnings } = checkLintTotalPlurals(0, 0, 0, numFixableErrors, numFixableWarnings);
1297
1329
  return `${greenTick} Fixed ${pluralCheckedFixableErrors} and ${pluralCheckedFixableWarnings}`;
1298
1330
  },
1299
1331
  fixFollowUp: `Run ${forge('lint')} to review outstanding errors and warnings`,
1300
1332
  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;
1333
+ summary: (numErrors, numWarnings, numApprovals, numFixableErrors, numFixableWarnings) => {
1334
+ const { pluralCheckedErrors, pluralCheckedWarnings, pluralCheckedApprovals, pluralCheckedTotal } = checkLintTotalPlurals(numErrors, numWarnings, numApprovals, numFixableErrors, numFixableWarnings);
1335
+ const colourFunction = numErrors ? log_color_1.LogColor.error : numWarnings ? log_color_1.LogColor.warn : log_color_1.LogColor.approval;
1304
1336
  const warningCharacter = numErrors ? 'X' : '⚠';
1305
- return colourFunction(`${warningCharacter} ${pluralCheckedTotal} (${pluralCheckedErrors}, ${pluralCheckedWarnings})`);
1337
+ return colourFunction(`${warningCharacter} ${pluralCheckedTotal} (${pluralCheckedErrors}, ${pluralCheckedWarnings}, ${pluralCheckedApprovals})`);
1306
1338
  },
1307
1339
  fixSummary: (numErrors, numFixableErrors, numFixableWarnings) => {
1308
- const { pluralCheckedFixableErrors, pluralCheckedFixableWarnings } = checkLintTotalPlurals(0, 0, numFixableErrors, numFixableWarnings);
1340
+ const { pluralCheckedFixableErrors, pluralCheckedFixableWarnings } = checkLintTotalPlurals(0, 0, 0, numFixableErrors, numFixableWarnings);
1309
1341
  const colourFunction = numErrors ? log_color_1.LogColor.error : log_color_1.LogColor.warn;
1310
1342
  return colourFunction(` Run ${forge('lint', '--fix')} to automatically fix ${pluralCheckedFixableErrors} and ${pluralCheckedFixableWarnings}.\n`);
1311
1343
  },
1312
- warning: (line, column, message, reference) => getLintMessage(line, column, message, 'warning', log_color_1.LogColor.warn, reference)
1344
+ warning: (line, column, message, reference) => getLintMessage(line, column, message, 'warning', log_color_1.LogColor.warn, reference),
1345
+ approval: (line, column, message, reference) => getLintMessage(line, column, message, 'approval', log_color_1.LogColor.approval, reference)
1313
1346
  },
1314
1347
  repositories: {
1315
1348
  cmd: {
@@ -1358,7 +1391,9 @@ ${buildTerminalLink(link)}\n`,
1358
1391
  creatingNewContainer: (key) => `Creating new container with key '${key}'.`,
1359
1392
  start: 'Creating container...',
1360
1393
  success: 'Container created.',
1361
- createdRepositoryURI: (uri) => `New repository URI: ${uri}`
1394
+ createdRepositoryURI: (uri) => `New repository URI: ${uri}`,
1395
+ authRequired: (key) => `To push images to the '${key}' repository, you need to authenticate first. ` +
1396
+ 'Run `forge containers docker-login` (or `forge containers get-login`) to authenticate, then push your image.'
1362
1397
  },
1363
1398
  login: {
1364
1399
  cmd: {
@@ -1565,12 +1600,24 @@ When errors occur during Forge command execution, error details will be sent to
1565
1600
  dynamicTable: {
1566
1601
  exiting: 'Exiting...'
1567
1602
  },
1603
+ manifest: {
1604
+ cmd: {
1605
+ description: 'manage app manifest'
1606
+ },
1607
+ render: {
1608
+ description: 'render the app manifest after applying environment transformations',
1609
+ optionPlacement: 'placement where the app is deployed, for example a DaRe region or Isolated Cloud ID',
1610
+ errorMissingTransformation: 'Unable to retrieve transformed manifest'
1611
+ }
1612
+ },
1568
1613
  module: {
1569
1614
  cmd: {
1570
1615
  description: '[Preview] Commands for managing modules in your app. ⚠️ These commands may modify your app files (manifest.yml, source files, and package.json).'
1571
1616
  },
1572
1617
  add: {
1573
1618
  description: '[Preview] add a module to your Forge App. ⚠️ This will modify your app files (manifest.yml, source files, and package.json).',
1619
+ spinnerAdding: 'Adding module...',
1620
+ spinnerAdded: 'Module added.',
1574
1621
  optionModuleType: 'module type to add (e.g. jira:issuePanel, jiraServiceManagement:portalFooter, confluence:macro, etc.)',
1575
1622
  optionUiType: 'UI framework (ui-kit, custom-ui)',
1576
1623
  optionProduct: 'target product (Jira, Jira Service Management, Confluence, etc.)',
@@ -1611,6 +1658,7 @@ When errors occur during Forge command execution, error details will be sent to
1611
1658
  warnAddedAppCompatibility: (existingProducts, newProduct) => `Adding a "${newProduct}" module to an app that already targets ${existingProducts
1612
1659
  .map((p) => `"${p}"`)
1613
1660
  .join(', ')}; updated app.compatibility so the app must be installed to "${newProduct}" to see changes.`,
1661
+ warnAddedGlobalAppCompatibility: (requiredProduct) => `Adding a "global" module requires app.compatibility for both "jira" and "confluence"\nUpdated app.compatibility and marked "${requiredProduct}" as required.`,
1614
1662
  warnUnsupportedFileOperations: (ops) => `Skipping ${ops.length} unsupported file operation(s): ${ops.join(', ')}. Only "create" operations are supported.`,
1615
1663
  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
1664
  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.1-next.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",