@forge/cli-shared 6.6.1-next.1 → 6.6.1-next.10

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.
@@ -2,28 +2,37 @@
2
2
  import { StatsigService } from './statsig-service';
3
3
  import { URL } from 'url';
4
4
  import { ProductDisplayName } from '../shared';
5
- declare const SUPPORTED_PRODUCTS_ALL: readonly ["Jira", "Confluence", "Compass", "Teamwork Graph", "Atlas", "Bitbucket"];
6
- export declare const TEST_ONLY_EXPORTS: {
7
- SITED_PRODUCTS_ALL: readonly ["Jira", "Confluence", "Compass", "Teamwork Graph", "Atlas"];
8
- SITED_PRODUCTS_ALWAYS_ENABLED: readonly ["Jira", "Confluence", "Compass"];
9
- WORKSPACE_PRODUCTS_ALL: readonly ["Bitbucket"];
10
- SUPPORTED_PRODUCTS_ALWAYS_ENABLED: readonly ["Jira", "Confluence", "Compass", "Bitbucket"];
5
+ export declare type SupportedProduct = 'Jira' | 'Confluence' | 'Compass' | 'Teamwork Graph' | 'Atlas' | 'Bitbucket';
6
+ declare type ProductType = 'sited' | 'workspace';
7
+ export declare type ProductDefinition = {
8
+ name: SupportedProduct;
9
+ productType: ProductType;
10
+ special?: {
11
+ supportedByCrossProductApps?: boolean;
12
+ isEnabledByFeatureGate?: (statsigService: StatsigService) => Promise<boolean>;
13
+ };
11
14
  };
12
- export declare type SupportedProduct = (typeof SUPPORTED_PRODUCTS_ALL)[number] & ProductDisplayName;
15
+ declare class SupportedProductEntry {
16
+ productName: SupportedProduct;
17
+ productType: ProductType;
18
+ supportedByCrossProductApps: boolean;
19
+ constructor(productName: SupportedProduct, productType: ProductType, supportedByCrossProductApps: boolean);
20
+ }
21
+ declare function resolveEnabledProducts(statsigService: StatsigService): Promise<SupportedProductEntry[]>;
13
22
  export declare class SupportedProductsService {
14
- private readonly statsigService;
15
- private featureGatedProductsCache;
16
- constructor(statsigService: StatsigService);
17
- private buildFeatureGatedProduct;
18
- private getFeatureGatedProducts;
19
- private getProductsEnabledByFeatureGate;
20
- private ensureProductDisplayName;
21
- getSupportedProducts(primaryProduct?: string): Promise<SupportedProduct[]>;
22
- private getSupportedWorkspaceProducts;
23
- validateSupportedProduct(productNameInput: string): Promise<SupportedProduct>;
24
- isWorkspaceProduct(product: string): Promise<boolean>;
25
- validateSite(site: string, product: ProductDisplayName | undefined): Promise<URL>;
23
+ private supportedProducts?;
24
+ constructor(supportedProducts?: SupportedProductEntry[] | undefined);
25
+ initializeWithSupportedProducts(statsigService: StatsigService): Promise<void>;
26
+ private getSupportedProductsNames;
27
+ getSupportedProducts(): SupportedProduct[];
28
+ getSupportedSecondaryProductsForXPA(requiredProducts: string[]): SupportedProduct[];
29
+ validateSupportedProduct(productNameInput: string): SupportedProduct;
30
+ isWorkspaceProduct(product: string): boolean;
31
+ validateSite(site: string, product: ProductDisplayName | undefined): URL;
26
32
  }
27
33
  export declare const isBitbucketProduct: (product: string) => boolean;
34
+ export declare const TEST_ONLY_EXPORTS: {
35
+ resolveEnabledProducts: typeof resolveEnabledProducts;
36
+ };
28
37
  export {};
29
38
  //# sourceMappingURL=supported-products-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"supported-products-service.d.ts","sourceRoot":"","sources":["../../src/service/supported-products-service.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAuC,MAAM,WAAW,CAAC;AAgCpF,QAAA,MAAM,sBAAsB,oFAA8D,CAAC;AAO3F,eAAO,MAAM,iBAAiB;;;;;CAK7B,CAAC;AAGF,oBAAY,gBAAgB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC;AAa5F,qBAAa,wBAAwB;IAGvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAF3C,OAAO,CAAC,yBAAyB,CAAsC;gBAE1C,cAAc,EAAE,cAAc;YAE7C,wBAAwB;YAYxB,uBAAuB;YAUvB,+BAA+B;IAS7C,OAAO,CAAC,wBAAwB;IAWnB,oBAAoB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAYzE,6BAA6B;IAO9B,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAW7E,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;CAmB/F;AAID,eAAO,MAAM,kBAAkB,YAAa,MAAM,KAAG,OAEpD,CAAC"}
1
+ {"version":3,"file":"supported-products-service.d.ts","sourceRoot":"","sources":["../../src/service/supported-products-service.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAuC,MAAM,WAAW,CAAC;AAKpF,oBAAY,gBAAgB,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,gBAAgB,GAAG,OAAO,GAAG,WAAW,CAAC;AA8C5G,aAAK,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AAEzC,oBAAY,iBAAiB,GAAG;IAC9B,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,CAAC,EAAE;QACR,2BAA2B,CAAC,EAAE,OAAO,CAAC;QACtC,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/E,CAAC;CACH,CAAC;AAEF,cAAM,qBAAqB;IAEhB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,WAAW;IACxB,2BAA2B,EAAE,OAAO;gBAFpC,WAAW,EAAE,gBAAgB,EAC7B,WAAW,EAAE,WAAW,EACxB,2BAA2B,EAAE,OAAO;CAE9C;AAED,iBAAe,sBAAsB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAgBtG;AAED,qBAAa,wBAAwB;IAKvB,OAAO,CAAC,iBAAiB,CAAC;gBAAlB,iBAAiB,CAAC,qCAAyB;IAElD,+BAA+B,CAAC,cAAc,EAAE,cAAc;IAS3E,OAAO,CAAC,yBAAyB;IAS1B,oBAAoB,IAAI,gBAAgB,EAAE;IAI1C,mCAAmC,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE;IAOnF,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,gBAAgB;IAWpE,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO5C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,GAAG;CAqBhF;AAID,eAAO,MAAM,kBAAkB,YAAa,MAAM,KAAG,OAEpD,CAAC;AAGF,eAAO,MAAM,iBAAiB;;CAE7B,CAAC"}
@@ -1,103 +1,116 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBitbucketProduct = exports.SupportedProductsService = exports.TEST_ONLY_EXPORTS = void 0;
3
+ exports.TEST_ONLY_EXPORTS = exports.isBitbucketProduct = exports.SupportedProductsService = void 0;
4
4
  const url_1 = require("url");
5
5
  const shared_1 = require("../shared");
6
6
  const ui_1 = require("../ui");
7
- const SITED_PRODUCTS_ALWAYS_ENABLED = ['Jira', 'Confluence', 'Compass'];
8
- const SITED_PRODUCTS_UNDER_FEATURE_FLAG = ['Teamwork Graph', 'Atlas'];
9
- const WORKSPACE_PRODUCTS_ALWAYS_ENABLED = ['Bitbucket'];
10
- const WORKSPACE_PRODUCTS_UNDER_FEATURE_FLAG = [];
11
- const SITED_PRODUCTS_ALL = [...SITED_PRODUCTS_ALWAYS_ENABLED, ...SITED_PRODUCTS_UNDER_FEATURE_FLAG];
12
- const WORKSPACE_PRODUCTS_ALL = [
13
- ...WORKSPACE_PRODUCTS_ALWAYS_ENABLED,
14
- ...WORKSPACE_PRODUCTS_UNDER_FEATURE_FLAG
15
- ];
16
- const SUPPORTED_PRODUCTS_ALWAYS_ENABLED = [
17
- ...SITED_PRODUCTS_ALWAYS_ENABLED,
18
- ...WORKSPACE_PRODUCTS_ALWAYS_ENABLED
7
+ const SUPPORTED_PRODUCTS_DEFINITIONS = [
8
+ {
9
+ name: 'Jira',
10
+ productType: 'sited',
11
+ special: {
12
+ supportedByCrossProductApps: true
13
+ }
14
+ },
15
+ {
16
+ name: 'Confluence',
17
+ productType: 'sited',
18
+ special: {
19
+ supportedByCrossProductApps: true
20
+ }
21
+ },
22
+ {
23
+ name: 'Compass',
24
+ productType: 'sited',
25
+ special: {
26
+ supportedByCrossProductApps: true
27
+ }
28
+ },
29
+ {
30
+ name: 'Teamwork Graph',
31
+ productType: 'sited',
32
+ special: {
33
+ isEnabledByFeatureGate: async (statsigService) => statsigService.isTeamworkGraphProductSupported()
34
+ }
35
+ },
36
+ {
37
+ name: 'Atlas',
38
+ productType: 'sited',
39
+ special: {
40
+ isEnabledByFeatureGate: async (statsigService) => statsigService.isAtlasProductSupported()
41
+ }
42
+ },
43
+ {
44
+ name: 'Bitbucket',
45
+ productType: 'workspace'
46
+ }
19
47
  ];
20
- const SUPPORTED_PRODUCTS_ALL = [...SITED_PRODUCTS_ALL, ...WORKSPACE_PRODUCTS_ALL];
21
- exports.TEST_ONLY_EXPORTS = {
22
- SITED_PRODUCTS_ALL,
23
- SITED_PRODUCTS_ALWAYS_ENABLED,
24
- WORKSPACE_PRODUCTS_ALL,
25
- SUPPORTED_PRODUCTS_ALWAYS_ENABLED
26
- };
27
- function arrayContains(arr, e) {
28
- return arr.includes(e);
48
+ class SupportedProductEntry {
49
+ productName;
50
+ productType;
51
+ supportedByCrossProductApps;
52
+ constructor(productName, productType, supportedByCrossProductApps) {
53
+ this.productName = productName;
54
+ this.productType = productType;
55
+ this.supportedByCrossProductApps = supportedByCrossProductApps;
56
+ }
57
+ }
58
+ async function resolveEnabledProducts(statsigService) {
59
+ const productDefinitionWithIsEnabledResolved = await Promise.all(SUPPORTED_PRODUCTS_DEFINITIONS.map(async (pd) => {
60
+ const enabledByFeatureGateResolver = pd.special?.isEnabledByFeatureGate;
61
+ const isEnabled = enabledByFeatureGateResolver ? await enabledByFeatureGateResolver(statsigService) : true;
62
+ return { pd, isEnabled };
63
+ }));
64
+ const definitionsForEnabledProducts = productDefinitionWithIsEnabledResolved
65
+ .filter(({ isEnabled }) => isEnabled)
66
+ .map(({ pd }) => pd);
67
+ return definitionsForEnabledProducts.map((pd) => {
68
+ return new SupportedProductEntry(pd.name, pd.productType, pd.special?.supportedByCrossProductApps ?? false);
69
+ });
29
70
  }
30
71
  class SupportedProductsService {
31
- statsigService;
32
- featureGatedProductsCache = null;
33
- constructor(statsigService) {
34
- this.statsigService = statsigService;
35
- }
36
- async buildFeatureGatedProduct(productName, productType, isEnabledPromise) {
37
- return {
38
- productName,
39
- productType,
40
- isEnabled: await isEnabledPromise
41
- };
72
+ supportedProducts;
73
+ constructor(supportedProducts) {
74
+ this.supportedProducts = supportedProducts;
42
75
  }
43
- async getFeatureGatedProducts() {
44
- if (this.featureGatedProductsCache === null) {
45
- this.featureGatedProductsCache = await Promise.all([
46
- this.buildFeatureGatedProduct('Teamwork Graph', 'sited', this.statsigService.isTeamworkGraphProductSupported()),
47
- this.buildFeatureGatedProduct('Atlas', 'sited', this.statsigService.isAtlasProductSupported())
48
- ]);
76
+ async initializeWithSupportedProducts(statsigService) {
77
+ if (this.supportedProducts) {
78
+ throw new Error('SupportedProductsService is already initialized');
49
79
  }
50
- return this.featureGatedProductsCache;
80
+ this.supportedProducts = await resolveEnabledProducts(statsigService);
51
81
  }
52
- async getProductsEnabledByFeatureGate(filter = () => true) {
53
- const featureGatedProducts = await this.getFeatureGatedProducts();
54
- return featureGatedProducts
55
- .filter((gatedProductInfo) => gatedProductInfo.isEnabled && filter(gatedProductInfo))
56
- .map((product) => product.productName);
57
- }
58
- ensureProductDisplayName(product) {
59
- if (arrayContains(SUPPORTED_PRODUCTS_ALL, product)) {
60
- return product;
61
- }
62
- else {
63
- return (0, shared_1.productDisplayName)(product);
82
+ getSupportedProductsNames(filter = () => true) {
83
+ if (!this.supportedProducts) {
84
+ throw new Error('SupportedProductsService is not initialized, are you calling it from some constructor?');
64
85
  }
86
+ return this.supportedProducts.filter((p) => filter(p)).map((p) => p.productName);
65
87
  }
66
- async getSupportedProducts(primaryProduct) {
67
- if (primaryProduct) {
68
- return [...SITED_PRODUCTS_ALWAYS_ENABLED.filter((product) => product !== primaryProduct)];
69
- }
70
- return [
71
- ...SITED_PRODUCTS_ALWAYS_ENABLED,
72
- ...WORKSPACE_PRODUCTS_ALWAYS_ENABLED,
73
- ...(await this.getProductsEnabledByFeatureGate())
74
- ];
88
+ getSupportedProducts() {
89
+ return this.getSupportedProductsNames();
75
90
  }
76
- async getSupportedWorkspaceProducts() {
77
- return [
78
- ...WORKSPACE_PRODUCTS_ALWAYS_ENABLED,
79
- ...(await this.getProductsEnabledByFeatureGate((product) => product.productType == 'workspace'))
80
- ];
91
+ getSupportedSecondaryProductsForXPA(requiredProducts) {
92
+ const requiredProductsNames = requiredProducts.map((p) => (0, shared_1.productDisplayName)(p));
93
+ return this.getSupportedProductsNames((p) => p.supportedByCrossProductApps && !requiredProductsNames.includes(p.productName));
81
94
  }
82
- async validateSupportedProduct(productNameInput) {
95
+ validateSupportedProduct(productNameInput) {
83
96
  const productName = (0, shared_1.productDisplayName)(productNameInput);
84
- const supportedProducts = await this.getSupportedProducts();
85
- if (arrayContains(supportedProducts, productName)) {
97
+ const supportedProducts = this.getSupportedProducts();
98
+ if (supportedProducts.includes(productName)) {
86
99
  return productName;
87
100
  }
88
101
  else {
89
102
  throw new shared_1.ValidationError(ui_1.Text.error.invalidProduct);
90
103
  }
91
104
  }
92
- async isWorkspaceProduct(product) {
93
- return arrayContains(await this.getSupportedWorkspaceProducts(), this.ensureProductDisplayName(product));
105
+ isWorkspaceProduct(product) {
106
+ return this.getSupportedProductsNames((p) => p.productType === 'workspace').includes((0, shared_1.productDisplayName)(product));
94
107
  }
95
- async validateSite(site, product) {
108
+ validateSite(site, product) {
96
109
  const trySites = [site, `https://${site}`];
97
110
  for (const trySite of trySites) {
98
111
  try {
99
112
  const urlObj = new url_1.URL(trySite);
100
- if (product && (await this.isWorkspaceProduct(product))) {
113
+ if (product && this.isWorkspaceProduct(product)) {
101
114
  return urlObj;
102
115
  }
103
116
  urlObj.pathname = '/';
@@ -114,3 +127,6 @@ const isBitbucketProduct = (product) => {
114
127
  return (0, shared_1.productDisplayName)(product) === 'Bitbucket';
115
128
  };
116
129
  exports.isBitbucketProduct = isBitbucketProduct;
130
+ exports.TEST_ONLY_EXPORTS = {
131
+ resolveEnabledProducts
132
+ };
@@ -32,6 +32,9 @@ export declare class CommandLineUI implements UI {
32
32
  promptForList<T extends string>(message: string, choices: T[], config?: {
33
33
  format?: (choice: T) => string;
34
34
  }): Promise<T>;
35
+ promptForMultiSelectList<T extends string>(message: string, choices: T[], config?: {
36
+ format?: (choice: T) => string;
37
+ }): Promise<T[]>;
35
38
  promptForTable(message: string, infoMessage: string, columns: string[], choices: object[]): Promise<number[]>;
36
39
  promptForSingleChoiceTable(message: string, infoMessage: string, columns: string[], choices: object[]): Promise<number>;
37
40
  table<Key extends string>(head: [Key, string][], data: Record<Key, TableCell>[] | undefined | null, { json, emptyMessage, preMessage, postMessage, format, groupRows }?: TableOptions<Key>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"command-line-ui.d.ts","sourceRoot":"","sources":["../../src/ui/command-line-ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-line-ui.d.ts","sourceRoot":"","sources":["../../src/ui/command-line-ui.ts"],"names":[],"mappings":"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"}
@@ -174,6 +174,26 @@ class CommandLineUI {
174
174
  const formattedChoice = config?.format ? choices[formattedChoices.indexOf(choice)] : choice;
175
175
  return formattedChoice;
176
176
  }
177
+ async promptForMultiSelectList(message, choices, config) {
178
+ const formattedChoices = config?.format ? choices.map((choice) => config?.format?.(choice)) : choices;
179
+ const { selectedChoices } = await this.prompt([
180
+ {
181
+ type: 'checkbox',
182
+ name: 'selectedChoices',
183
+ choices: formattedChoices.map((choice, index) => ({
184
+ name: choice,
185
+ value: choice,
186
+ index
187
+ })),
188
+ validate: (selected) => (selected.length === 0 ? text_1.Text.error.promptInputRequired : true),
189
+ message
190
+ }
191
+ ]);
192
+ const formattedSelectedChoices = config?.format
193
+ ? selectedChoices.map((choice) => choices[formattedChoices.indexOf(choice)])
194
+ : selectedChoices;
195
+ return formattedSelectedChoices;
196
+ }
177
197
  async promptForTable(message, infoMessage, columns, choices) {
178
198
  const { choice } = await this.prompt([
179
199
  {
package/out/ui/text.d.ts CHANGED
@@ -63,6 +63,7 @@ export declare const Text: {
63
63
  installationContext: {
64
64
  overviewProduct: string;
65
65
  promptProduct: string;
66
+ promptOptionalProducts: string;
66
67
  overviewSite: string;
67
68
  overviewWorkspace: string;
68
69
  promptSite: string;
@@ -589,6 +590,9 @@ export declare const Text: {
589
590
  end: (displayTick: boolean) => string;
590
591
  };
591
592
  booleanToScope: (isLatest: boolean) => string;
593
+ alreadyInstalledInRequiredProduct: (product: string) => string;
594
+ installingToRequiredProduct: (product: string) => string;
595
+ installingToOptionalProduct: string;
592
596
  bannerSite: string;
593
597
  bannerWorkspace: string;
594
598
  optionConfirmScopes: 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
@@ -112,6 +112,7 @@ exports.Text = {
112
112
  installationContext: {
113
113
  overviewProduct: 'Select the product your app uses.\n',
114
114
  promptProduct: 'Select a product:',
115
+ promptOptionalProducts: 'Select optional products:',
115
116
  overviewSite: '\nEnter your site. For example, your-domain.atlassian.net\n',
116
117
  overviewWorkspace: '\nEnter your workspace. For example, bitbucket.org/your-workspace\n',
117
118
  promptSite: 'Enter the site URL:',
@@ -695,6 +696,9 @@ What do you like or don't like about Forge? Share your feedback below or press C
695
696
  end: (displayTick) => `${displayTick ? greenTick + ' ' : ''}Install complete!`
696
697
  },
697
698
  booleanToScope: (isLatest) => (isLatest ? `Latest` : `Out-of-date`),
699
+ alreadyInstalledInRequiredProduct: (product) => `\nYou have already installed this app into your required product,${chalk_1.default.reset(' ')}${chalk_1.default.bold(product)}.\n`,
700
+ installingToRequiredProduct: (product) => `\nYour app will be installed into your required product,${chalk_1.default.reset(' ')}${chalk_1.default.bold(product)}. Once this is done, you can install your app into any optional products.\n`,
701
+ installingToOptionalProduct: `This app will be installed as an optional product.`,
698
702
  bannerSite: `\nInstalling your app onto an Atlassian site.\n${ctrlC}\n`,
699
703
  bannerWorkspace: `\nInstalling your app onto the selected workspace.\n${ctrlC}\n`,
700
704
  optionConfirmScopes: 'skip confirmation of scopes for the app before installing or upgrading the app',
package/out/ui/ui.d.ts CHANGED
@@ -4,9 +4,12 @@ export interface Prompt {
4
4
  confirm(message: string): Promise<boolean>;
5
5
  promptForText(message: string, defaultValue?: string): Promise<string>;
6
6
  promptForSecret(message: string): Promise<string>;
7
- promptForList(message: string, choices: string[], config?: {
8
- format?: (choices: string) => string;
9
- }): Promise<string>;
7
+ promptForList<T extends string>(message: string, choices: T[], config?: {
8
+ format?: (choice: T) => string;
9
+ }): Promise<T>;
10
+ promptForMultiSelectList<T extends string>(message: string, choices: T[], config?: {
11
+ format?: (choice: T) => string;
12
+ }): Promise<T[]>;
10
13
  promptForTable(message: string, infoMessage: string, columns: string[], choices: object[]): Promise<number[]>;
11
14
  promptForSingleChoiceTable(message: string, infoMessage: string, columns: string[], choices: object[]): Promise<number>;
12
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/ui/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,MAAM;IACrB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9G,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,oBAAY,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE5D,oBAAY,YAAY,CAAC,GAAG,SAAS,MAAM,IAAI;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE;SAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM;KAAE,CAAC;IACvD,SAAS,CAAC,EAAE;SAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO;KAAE,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,EAAG,SAAQ,MAAM,EAAE,MAAM;IACxC,SAAS,IAAI,IAAI,CAAC;IAElB,eAAe,CAAC,MAAM,EACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,cAAc,CAAC,GAClE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpG,KAAK,CAAC,GAAG,SAAS,MAAM,EACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EACrB,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,GAAG,IAAI,EACjD,OAAO,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,GAC1B,IAAI,CAAC;CACT"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/ui/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,MAAM;IACrB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,EAAE,EACZ,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,wBAAwB,CAAC,CAAC,SAAS,MAAM,EACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,EAAE,EACZ,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9G,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,oBAAY,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE5D,oBAAY,YAAY,CAAC,GAAG,SAAS,MAAM,IAAI;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE;SAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM;KAAE,CAAC;IACvD,SAAS,CAAC,EAAE;SAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO;KAAE,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,EAAG,SAAQ,MAAM,EAAE,MAAM;IACxC,SAAS,IAAI,IAAI,CAAC;IAElB,eAAe,CAAC,MAAM,EACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,cAAc,CAAC,GAClE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpG,KAAK,CAAC,GAAG,SAAS,MAAM,EACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EACrB,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,GAAG,IAAI,EACjD,OAAO,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,GAC1B,IAAI,CAAC;CACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/cli-shared",
3
- "version": "6.6.1-next.1",
3
+ "version": "6.6.1-next.10",
4
4
  "description": "Common functionality for Forge CLI",
5
5
  "author": "Atlassian",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",
@@ -12,8 +12,8 @@
12
12
  "generate-graphql-types": "graphql-codegen --config src/graphql/codegen.yml"
13
13
  },
14
14
  "dependencies": {
15
- "@forge/manifest": "8.6.2-next.0",
16
- "@forge/util": "1.4.7",
15
+ "@forge/manifest": "8.7.0-next.5",
16
+ "@forge/util": "1.4.8-next.0",
17
17
  "@forge/i18n": "0.0.3",
18
18
  "@sentry/node": "7.106.0",
19
19
  "adm-zip": "^0.5.10",