@forge/cli 6.4.2 → 6.4.3-next.13

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,8 +1,6 @@
1
1
  import commander, { CommanderError, OutputConfiguration } from 'commander';
2
2
  import { AnalyticsClientReporter } from '../analytics-client/analytics-client';
3
- import { PersonalApiCredentialsValidated } from '@forge/cli-shared';
4
- import { UI } from '@forge/cli-shared';
5
- import { CLIDetails } from '@forge/cli-shared';
3
+ import { UI, CLIDetails, PersonalApiCredentialsValidated } from '@forge/cli-shared';
6
4
  import { PreCommandController } from './controller/pre-command-controller';
7
5
  import { StubController } from './controller/stubController';
8
6
  declare type PreconditionCallback = (...args: any[]) => any;
@@ -59,7 +57,6 @@ export declare class Command {
59
57
  getCmdName(): string;
60
58
  getCommands(): Command[];
61
59
  environmentOption(): this;
62
- siteAndProductOption(): this;
63
60
  jsonOption(): this;
64
61
  requireNoAuthentication(): this;
65
62
  requireNoAnalyticsConsent(): this;
@@ -70,7 +67,6 @@ export declare class Command {
70
67
  private checkAuthentication;
71
68
  private checkVersion;
72
69
  private isLatestVersion;
73
- private validateContext;
74
70
  private findLastValidCommand;
75
71
  private outputRelevantHelp;
76
72
  private unknownCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/command-line/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/command-line/command.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,7 @@ const tslib_1 = require("tslib");
6
6
  const commander_1 = tslib_1.__importStar(require("commander"));
7
7
  const semver_1 = tslib_1.__importDefault(require("semver"));
8
8
  const cli_shared_1 = require("@forge/cli-shared");
9
- const cli_shared_2 = require("@forge/cli-shared");
10
- const cli_shared_3 = require("@forge/cli-shared");
11
9
  const environment_1 = require("./environment");
12
- const cli_shared_4 = require("@forge/cli-shared");
13
10
  const version_info_1 = require("./version-info");
14
11
  const anon_user_id_1 = require("./anon-user-id");
15
12
  const errors_1 = require("./errors");
@@ -46,7 +43,7 @@ class Command {
46
43
  this.actionProcessor = async (cb, ...args) => {
47
44
  var _b, _c, _d, _e, _f;
48
45
  if (this.newCommand) {
49
- this.ui.error(new Error(cli_shared_3.Text.deprecate(this.newCommand)));
46
+ this.ui.error(new Error(cli_shared_1.Text.deprecate(this.newCommand)));
50
47
  }
51
48
  const cmdName = this.cmd.name();
52
49
  let cred = (0, anon_user_id_1.getAnonId)(true);
@@ -61,12 +58,12 @@ class Command {
61
58
  }
62
59
  this.analyticsClient.reportCommandInvoke((_b = this.analyticsName) !== null && _b !== void 0 ? _b : cmdName, cred, attributes);
63
60
  if (!this.expectsArguments && args.length > 2) {
64
- throw new cli_shared_3.ValidationError(cli_shared_3.Text.extraArguments(cmdName));
61
+ throw new cli_shared_1.ValidationError(cli_shared_1.Text.extraArguments(cmdName));
65
62
  }
66
63
  const [options] = args;
67
64
  if (options === null || options === void 0 ? void 0 : options.nonInteractive) {
68
65
  if (!this.satisfiesNonInteractiveOptions(options)) {
69
- throw new cli_shared_3.ValidationError(cli_shared_3.Text.nonInteractive.error.missingRequiredOption(cmdName, this.requiredOptionFlags));
66
+ throw new cli_shared_1.ValidationError(cli_shared_1.Text.nonInteractive.error.missingRequiredOption(cmdName, this.requiredOptionFlags));
70
67
  }
71
68
  }
72
69
  if (this.requiresAnalyticsConsent) {
@@ -104,7 +101,7 @@ class Command {
104
101
  }
105
102
  else {
106
103
  this.analyticsClient.reportFailure((_f = this.analyticsName) !== null && _f !== void 0 ? _f : cmdName, cred, attributes, e);
107
- await (0, cli_shared_4.exitOnError)(this.ui, e);
104
+ await (0, cli_shared_1.exitOnError)(this.ui, e);
108
105
  }
109
106
  }
110
107
  };
@@ -131,7 +128,7 @@ class Command {
131
128
  const trimmedName = name.trim();
132
129
  const expectsArguments = trimmedName.endsWith(']') || trimmedName.endsWith('>');
133
130
  const subCommand = new Command(this.ui, this.analyticsClient, this.preCommandController, this.cliDetails, cmd, expectsArguments, Command.concatenateNames(this.analyticsName, cmd.name()));
134
- subCommand.option('--verbose', cli_shared_3.Text.optionVerbose);
131
+ subCommand.option('--verbose', cli_shared_1.Text.optionVerbose);
135
132
  subCommand.exitOverride((err) => {
136
133
  throw new WrapperError(err, subCommand.cmd.name());
137
134
  });
@@ -181,7 +178,7 @@ class Command {
181
178
  }
182
179
  nonInteractiveOption(...args) {
183
180
  this.requiredOptionFlags = args;
184
- this.cmd.option('--non-interactive', cli_shared_3.Text.nonInteractive.description);
181
+ this.cmd.option('--non-interactive', cli_shared_1.Text.nonInteractive.description);
185
182
  return this;
186
183
  }
187
184
  action(fn) {
@@ -206,7 +203,7 @@ class Command {
206
203
  if (Command.isUnknownCommand(err) || Command.isExcessCommands(err)) {
207
204
  return this.unknownCommand(argv);
208
205
  }
209
- return await (0, cli_shared_4.exitOnError)(this.ui, err);
206
+ return await (0, cli_shared_1.exitOnError)(this.ui, err);
210
207
  }
211
208
  }
212
209
  getDefinedCommands() {
@@ -222,23 +219,15 @@ class Command {
222
219
  return this.commands;
223
220
  }
224
221
  environmentOption() {
225
- this.option('-e, --environment [environment]', cli_shared_3.Text.env.option(cli_shared_2.DEFAULT_ENVIRONMENT_OPTION, cli_shared_2.VALID_ENVIRONMENT_OPTIONS));
222
+ this.option('-e, --environment [environment]', cli_shared_1.Text.env.option(cli_shared_1.DEFAULT_ENVIRONMENT_OPTION, cli_shared_1.VALID_ENVIRONMENT_OPTIONS));
226
223
  this.precondition(() => {
227
- this.cmd.opts().environment = (0, environment_1.checkEnvironmentOption)(this.cmd.opts().environment || cli_shared_2.DEFAULT_ENVIRONMENT_OPTION);
224
+ this.cmd.opts().environment = (0, environment_1.checkEnvironmentOption)(this.cmd.opts().environment || cli_shared_1.DEFAULT_ENVIRONMENT_OPTION);
228
225
  return { appEnv: this.cmd.opts().environment };
229
226
  });
230
227
  return this;
231
228
  }
232
- siteAndProductOption() {
233
- this.option('-s, --site [site]', cli_shared_3.Text.optionSite);
234
- this.option('-p, --product [product]', cli_shared_3.Text.optionProduct(cli_shared_2.SUPPORTED_PRODUCTS));
235
- this.precondition(() => {
236
- return this.validateContext();
237
- });
238
- return this;
239
- }
240
229
  jsonOption() {
241
- this.option('--json', cli_shared_3.Text.optionJson);
230
+ this.option('--json', cli_shared_1.Text.optionJson);
242
231
  return this;
243
232
  }
244
233
  requireNoAuthentication() {
@@ -281,7 +270,7 @@ class Command {
281
270
  return;
282
271
  }
283
272
  if (semver_1.default.gt(this.cliDetails.latest, this.cliDetails.version)) {
284
- this.ui.warn(cli_shared_3.Text.error.outdatedCLIVersion(this.cliDetails.version, this.cliDetails.latest));
273
+ this.ui.warn(cli_shared_1.Text.error.outdatedCLIVersion(this.cliDetails.version, this.cliDetails.latest));
285
274
  }
286
275
  else if (semver_1.default.gt(this.cliDetails.version, this.cliDetails.latest)) {
287
276
  (0, version_info_1.clearVersionCache)(this.cliDetails.name);
@@ -301,21 +290,6 @@ class Command {
301
290
  return false;
302
291
  }
303
292
  }
304
- async validateContext() {
305
- if (this.cmd.opts().product) {
306
- const capitalizedProduct = (0, cli_shared_2.capitalizeProduct)(this.cmd.opts().product);
307
- if (!(0, cli_shared_2.isSupportedProduct)(capitalizedProduct)) {
308
- throw new cli_shared_3.ValidationError(cli_shared_3.Text.error.invalidProduct);
309
- }
310
- this.cmd.opts().product = capitalizedProduct;
311
- }
312
- let trySite;
313
- if (this.cmd.opts().site) {
314
- trySite = this.cmd.opts().site;
315
- }
316
- this.cmd.opts().site = trySite ? (0, cli_shared_2.validateSite)(trySite, this.cmd.opts().product) : undefined;
317
- return { product: this.cmd.opts().product };
318
- }
319
293
  findLastValidCommand(argv) {
320
294
  let command = this.cmd;
321
295
  for (const [index, arg] of argv.slice(2).entries()) {
@@ -343,14 +317,14 @@ class Command {
343
317
  return cmd._hidden !== true;
344
318
  })
345
319
  .map((cmd) => cmd.name()));
346
- const errorText = cli_shared_3.Text.invalidCmd(argv.slice(2, lastCommandIndex + 2).join(' '));
320
+ const errorText = cli_shared_1.Text.invalidCmd(argv.slice(2, lastCommandIndex + 2).join(' '));
347
321
  if (suggestions.length) {
348
322
  errorMessage.push(`Did you mean:`);
349
323
  const suggestionsPrefixed = suggestions.map((suggestion) => [...argv.slice(2, lastCommandIndex + 1), suggestion].join(' '));
350
324
  errorMessage.push(suggestionsPrefixed.join('\n'));
351
325
  }
352
- errorMessage.push(cli_shared_3.Text.invalidCmdHelp);
353
- return await (0, cli_shared_4.exitOnError)(this.ui, new Error(errorText), errorMessage.join('\n\n'));
326
+ errorMessage.push(cli_shared_1.Text.invalidCmdHelp);
327
+ return await (0, cli_shared_1.exitOnError)(this.ui, new Error(errorText), errorMessage.join('\n\n'));
354
328
  }
355
329
  assertValidArgs(argv) {
356
330
  const args = argv.slice(2);
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { AppConfigProvider, ConfigFile, UI } from '@forge/cli-shared';
2
+ import { AppConfigProvider, ConfigFile, UI, FeatureFlagReader } from '@forge/cli-shared';
3
3
  import { URL } from 'url';
4
4
  import { InstallAppSiteCommand } from '../../installations/install-app-site';
5
5
  import { InstallationService } from '../../service/installation-service';
@@ -22,7 +22,8 @@ export declare class InstallController {
22
22
  private readonly installAppSiteCommand;
23
23
  private readonly installationService;
24
24
  private readonly installView;
25
- constructor(appConfigProvider: AppConfigProvider, configFile: ConfigFile, ui: UI, installAppSiteCommand: InstallAppSiteCommand, installationService: InstallationService, installView: InstallView);
25
+ private readonly featureFlags;
26
+ constructor(appConfigProvider: AppConfigProvider, configFile: ConfigFile, ui: UI, installAppSiteCommand: InstallAppSiteCommand, installationService: InstallationService, installView: InstallView, featureFlags: FeatureFlagReader);
26
27
  private securityPrompt;
27
28
  private installOrUpgrade;
28
29
  private promptForProduct;
@@ -1 +1 @@
1
- {"version":3,"file":"install-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/install-controller.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,EACjB,UAAU,EAEV,EAAE,EAUH,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CACxB;AAiBD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,WAAW,EAAE,MAAM;CAGhC;AAQD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW;gBALX,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,EAAE,EACN,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW;YAG7B,cAAc;YAmBd,gBAAgB;YAsChB,gBAAgB;YAKhB,aAAa;YAeb,gBAAgB;IAoB9B,OAAO,CAAC,uCAAuC;IAalC,GAAG,CAAC,EACf,WAAW,EACX,IAAI,EACJ,OAAO,EACP,OAAO,EACP,aAAa,EACb,cAAc,EACf,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAuFpC"}
1
+ {"version":3,"file":"install-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/install-controller.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,EACjB,UAAU,EAEV,EAAE,EAUF,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CACxB;AAiBD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,WAAW,EAAE,MAAM;CAGhC;AAQD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBANZ,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,EAAE,EACN,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,iBAAiB;YAGpC,cAAc;YAmBd,gBAAgB;YAsChB,gBAAgB;YAKhB,aAAa;YAeb,gBAAgB;IAoB9B,OAAO,CAAC,uCAAuC;IAalC,GAAG,CAAC,EACf,WAAW,EACX,IAAI,EACJ,OAAO,EACP,OAAO,EACP,aAAa,EACb,cAAc,EACf,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAsGpC"}
@@ -9,13 +9,14 @@ class NoDeploymentError extends Error {
9
9
  }
10
10
  exports.NoDeploymentError = NoDeploymentError;
11
11
  class InstallController {
12
- constructor(appConfigProvider, configFile, ui, installAppSiteCommand, installationService, installView) {
12
+ constructor(appConfigProvider, configFile, ui, installAppSiteCommand, installationService, installView, featureFlags) {
13
13
  this.appConfigProvider = appConfigProvider;
14
14
  this.configFile = configFile;
15
15
  this.ui = ui;
16
16
  this.installAppSiteCommand = installAppSiteCommand;
17
17
  this.installationService = installationService;
18
18
  this.installView = installView;
19
+ this.featureFlags = featureFlags;
19
20
  }
20
21
  async securityPrompt(site) {
21
22
  this.ui.info(cli_shared_1.Text.install.security.banner(site.host));
@@ -114,11 +115,17 @@ class InstallController {
114
115
  if ((0, cli_shared_1.isSecureSite)(site)) {
115
116
  await this.securityPrompt(site);
116
117
  }
118
+ const hasDefaultReadMeScope = await this.featureFlags.readMeScopeAddedByXLS();
119
+ this.ui.debug(`appId ${id} has read:me scope added by default?: ${hasDefaultReadMeScope}`);
117
120
  const environmentPermissions = await this.installationService.getAppEnvironmentPermissions(id, environment);
118
- if (!(environmentPermissions === null || environmentPermissions === void 0 ? void 0 : environmentPermissions.scopes) || environmentPermissions.scopes.length === 0) {
121
+ if (!environmentPermissions ||
122
+ (hasDefaultReadMeScope && (!(environmentPermissions === null || environmentPermissions === void 0 ? void 0 : environmentPermissions.scopes) || environmentPermissions.scopes.length === 0))) {
119
123
  this.ui.error(new NoDeploymentError(environment), { pad: false });
120
124
  return;
121
125
  }
126
+ if (environmentPermissions.scopes === undefined) {
127
+ environmentPermissions.scopes = [];
128
+ }
122
129
  const { scopes: environmentScopes } = environmentPermissions;
123
130
  const [{ permissions }, manifestEgressEntries] = await Promise.all([
124
131
  this.configFile.readConfig(),
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAMA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAUlB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAMhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAWlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAKhF,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiSvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAMA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAUlB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAMhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAWlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAKhF,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkSvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}
@@ -144,8 +144,8 @@ const getDependencies = async (cliDetails) => {
144
144
  const getWebTriggerURLCommand = new get_webtrigger_url_1.GetWebTriggerURLCommand(assertiveAppConfigReader, installationsClient, appEnvironmentClient, webTriggerGraphqlClient);
145
145
  const autocompleteController = new autocomplete_controller_1.AutocompleteController(ui);
146
146
  const installationsService = new installation_service_1.InstallationService(assertiveAppConfigReader, installationsClient, installationsClient);
147
- const installView = new install_view_1.InstallView(ui);
148
- const installController = new install_controller_1.InstallController(assertiveAppConfigReader, configFile, ui, installAppSiteCommand, installationsService, installView);
147
+ const installView = new install_view_1.InstallView(ui, featureFlagService);
148
+ const installController = new install_controller_1.InstallController(assertiveAppConfigReader, configFile, ui, installAppSiteCommand, installationsService, installView, featureFlagService);
149
149
  const feedbackController = new feedback_controller_1.FeedbackController(ui, feedbackPostClient);
150
150
  const lintService = new lint_service_1.LintService(configFile, fileReader);
151
151
  const lintView = new lint_view_1.LintView(ui);
@@ -1,5 +1,12 @@
1
+ import commander from 'commander';
1
2
  import { Dependencies } from './dependency-injection';
2
3
  import { Installation } from '../service/installation-service';
4
+ export declare function validateContext({ site, product }: {
5
+ site?: string;
6
+ product?: string;
7
+ }, cmd: commander.Command): Promise<{
8
+ product?: string;
9
+ }>;
3
10
  export declare const performSingleUninstall: (installId: string, { ui, commands: { uninstallAppCommand } }: Dependencies) => Promise<void>;
4
11
  export declare const performMultipleUninstalls: (appsToUninstall: Installation[], { ui, commands: { uninstallAppCommand } }: Dependencies) => Promise<void>;
5
12
  export declare const registerCommands: ({ cmd, ...deps }: Dependencies) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"register-installation-commands.d.ts","sourceRoot":"","sources":["../../src/command-line/register-installation-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAqD/D,eAAO,MAAM,sBAAsB,cACtB,MAAM,6CAC0B,YAAY,kBAwBxD,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBACnB,YAAY,EAAE,6CACY,YAAY,kBA+CxD,CAAC;AAgEF,eAAO,MAAM,gBAAgB,qBAAsB,YAAY,KAAG,IAejE,CAAC"}
1
+ {"version":3,"file":"register-installation-commands.d.ts","sourceRoot":"","sources":["../../src/command-line/register-installation-commands.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAYlC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAK/D,wBAAsB,eAAe,CACnC,EACE,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,EACD,GAAG,EAAE,SAAS,CAAC,OAAO,GACrB,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc/B;AAoDD,eAAO,MAAM,sBAAsB,cACtB,MAAM,6CAC0B,YAAY,kBAwBxD,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBACnB,YAAY,EAAE,6CACY,YAAY,kBA+CxD,CAAC;AAgEF,eAAO,MAAM,gBAAgB,qBAAsB,YAAY,KAAG,IAejE,CAAC"}
@@ -1,16 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerCommands = exports.performMultipleUninstalls = exports.performSingleUninstall = void 0;
3
+ exports.registerCommands = exports.performMultipleUninstalls = exports.performSingleUninstall = exports.validateContext = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const cli_shared_1 = require("@forge/cli-shared");
6
6
  const shared_1 = require("../installations/shared");
7
7
  const errors_1 = require("./errors");
8
8
  const COMMAND_NAME = 'install';
9
+ async function validateContext({ site, product }, cmd) {
10
+ if (product) {
11
+ product = (0, cli_shared_1.capitalizeProduct)(product);
12
+ if (!(0, cli_shared_1.isSupportedProduct)(product)) {
13
+ throw new cli_shared_1.ValidationError(cli_shared_1.Text.error.invalidProduct);
14
+ }
15
+ }
16
+ const siteURL = site ? (0, cli_shared_1.validateSite)(site, product) : undefined;
17
+ cmd.opts().product = product;
18
+ cmd.opts().site = siteURL;
19
+ return { product };
20
+ }
21
+ exports.validateContext = validateContext;
9
22
  const registerInstallAppCommand = ({ cmd, controllers: { installController } }) => {
10
23
  cmd
11
24
  .requireAppId()
12
25
  .environmentOption()
13
- .siteAndProductOption()
26
+ .option('-s, --site [site]', cli_shared_1.Text.optionSite)
27
+ .option('-p, --product [product]', cli_shared_1.Text.optionProduct(cli_shared_1.SUPPORTED_PRODUCTS))
28
+ .precondition(validateContext)
14
29
  .option('--upgrade', cli_shared_1.Text.install.optionUpgrade)
15
30
  .option('--confirm-scopes', cli_shared_1.Text.install.optionConfirmScopes)
16
31
  .nonInteractiveOption('--site', '--product', '--environment')
@@ -1,7 +1,6 @@
1
1
  import { Dependencies } from './dependency-injection';
2
2
  export interface LintActionParams {
3
3
  environment: string;
4
- directory: string;
5
4
  fix: boolean;
6
5
  }
7
6
  export declare const registerCommands: ({ cmd, controllers: { lintController } }: Dependencies) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"register-lint-command.d.ts","sourceRoot":"","sources":["../../src/command-line/register-lint-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,eAAO,MAAM,gBAAgB,6CAA8C,YAAY,KAAG,IAUzF,CAAC"}
1
+ {"version":3,"file":"register-lint-command.d.ts","sourceRoot":"","sources":["../../src/command-line/register-lint-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,eAAO,MAAM,gBAAgB,6CAA8C,YAAY,KAAG,IAUzF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-log-commands.d.ts","sourceRoot":"","sources":["../../src/command-line/register-log-commands.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAStD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAczE;AAwFD,eAAO,MAAM,gBAAgB,kDAAmD,YAAY,SAsC3F,CAAC"}
1
+ {"version":3,"file":"register-log-commands.d.ts","sourceRoot":"","sources":["../../src/command-line/register-log-commands.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAStD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAczE;AAwFD,eAAO,MAAM,gBAAgB,kDAAmD,YAAY,SAgC3F,CAAC"}
@@ -111,12 +111,10 @@ const registerCommands = ({ cmd, ui, commands: { viewAppLogsCommand } }) => {
111
111
  .option('-n, --limit <limit>', cli_shared_3.Text.logs.optionLimit, parseLimit, DEFAULT_LIMIT)
112
112
  .option('-s, --since <since>', cli_shared_3.Text.logs.optionSince)
113
113
  .option('-g, --grouped', cli_shared_3.Text.logs.optionGroup)
114
- .action(async ({ environment, site, product, invocation, limit, grouped, since }) => {
115
- const context = site && product ? { site, product } : undefined;
114
+ .action(async ({ environment, invocation, limit, grouped, since }) => {
116
115
  if (invocation) {
117
116
  const log = await viewAppLogsCommand.getOne({
118
117
  environmentKey: environment,
119
- context,
120
118
  invocationId: invocation
121
119
  });
122
120
  logInvocation(ui, log, grouped);
@@ -128,7 +126,6 @@ const registerCommands = ({ cmd, ui, commands: { viewAppLogsCommand } }) => {
128
126
  }
129
127
  const logs = await viewAppLogsCommand.getAll({
130
128
  environmentKey: environment,
131
- context,
132
129
  limit,
133
130
  startTime
134
131
  });
@@ -1,4 +1,4 @@
1
- import { UI } from '@forge/cli-shared';
1
+ import { UI, FeatureFlagReader, UserError } from '@forge/cli-shared';
2
2
  import { AppEnvironmentPermissions, Installation } from '../../service/installation-service';
3
3
  interface InstallOrUpgradeCommandText {
4
4
  listScopes: (scopes: string[]) => string;
@@ -6,11 +6,12 @@ interface InstallOrUpgradeCommandText {
6
6
  permissionsMismatch: (environment: string) => string;
7
7
  promptForPermissionsConfirmation: (permissionsMismatchInDevelopment: boolean) => string;
8
8
  }
9
- export declare class NoScopesError extends Error {
9
+ export declare class NoScopesError extends UserError {
10
10
  }
11
11
  export declare class InstallView {
12
12
  private readonly ui;
13
- constructor(ui: UI);
13
+ private readonly featureFlags;
14
+ constructor(ui: UI, featureFlags: FeatureFlagReader);
14
15
  promptForPermissionsConfirmation({ scopes, egressAddresses, addedScopes }: AppEnvironmentPermissions, manifestScopes: string[], manifestEgressAddresses: string[], environment: string, confirmScopes: boolean, nonInteractive: boolean, text: InstallOrUpgradeCommandText): Promise<boolean>;
15
16
  promptForUpgrade(installations: Installation[]): Promise<Installation>;
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install-view.d.ts","sourceRoot":"","sources":["../../../src/command-line/view/install-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,EAAE,EAA8B,MAAM,mBAAmB,CAAC;AAIjH,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAE7F,UAAU,2BAA2B;IACnC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IACzC,mBAAmB,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAC3D,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,gCAAgC,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,MAAM,CAAC;CACzF;AAED,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEtB,gCAAgC,CAC3C,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,yBAAyB,EACnE,cAAc,EAAE,MAAM,EAAE,EACxB,uBAAuB,EAAE,MAAM,EAAE,EACjC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,OAAO,CAAC;IAoCN,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;CAqBpF"}
1
+ {"version":3,"file":"install-view.d.ts","sourceRoot":"","sources":["../../../src/command-line/view/install-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,EAAE,EAEF,iBAAiB,EACjB,SAAS,EACV,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAE7F,UAAU,2BAA2B;IACnC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IACzC,mBAAmB,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAC3D,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,gCAAgC,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,MAAM,CAAC;CACzF;AAED,qBAAa,aAAc,SAAQ,SAAS;CAAG;AAE/C,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAM,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAArC,EAAE,EAAE,EAAE,EAAmB,YAAY,EAAE,iBAAiB;IAExE,gCAAgC,CAC3C,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,yBAAyB,EACnE,cAAc,EAAE,MAAM,EAAE,EACxB,uBAAuB,EAAE,MAAM,EAAE,EACjC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,OAAO,CAAC;IA2CN,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;CAqBpF"}
@@ -4,22 +4,28 @@ exports.InstallView = exports.NoScopesError = void 0;
4
4
  const cli_shared_1 = require("@forge/cli-shared");
5
5
  const egress_1 = require("@forge/egress");
6
6
  const lodash_1 = require("lodash");
7
- class NoScopesError extends Error {
7
+ class NoScopesError extends cli_shared_1.UserError {
8
8
  }
9
9
  exports.NoScopesError = NoScopesError;
10
10
  class InstallView {
11
- constructor(ui) {
11
+ constructor(ui, featureFlags) {
12
12
  this.ui = ui;
13
+ this.featureFlags = featureFlags;
13
14
  }
14
15
  async promptForPermissionsConfirmation({ scopes, egressAddresses, addedScopes }, manifestScopes, manifestEgressAddresses, environment, confirmScopes, nonInteractive, text) {
15
- if (scopes.length === 0) {
16
+ const hasDefaultReadMeScope = await this.featureFlags.readMeScopeAddedByXLS();
17
+ if (hasDefaultReadMeScope && scopes.length === 0) {
16
18
  throw new NoScopesError();
17
19
  }
18
20
  if (addedScopes.length)
19
21
  this.ui.info(text.listScopes(addedScopes));
20
22
  if (egressAddresses.length)
21
23
  this.ui.info(text.listEgressAddresses(egressAddresses));
22
- const cleanedManifestScopes = [...new Set(['read:me', ...manifestScopes])];
24
+ const manifestScopesSet = new Set(manifestScopes);
25
+ if (hasDefaultReadMeScope) {
26
+ manifestScopesSet.add('read:me');
27
+ }
28
+ const cleanedManifestScopes = [...manifestScopesSet];
23
29
  const groupedManifestEgressAddresses = (0, egress_1.sortAndGroupEgressPermissionsByDomain)(manifestEgressAddresses);
24
30
  let permissionsMismatchWithManifest = false;
25
31
  if ((0, cli_shared_1.environmentToOption)(environment) === cli_shared_1.DEFAULT_ENVIRONMENT_OPTION) {
@@ -1 +1 @@
1
- {"version":3,"file":"cached-config-service.d.ts","sourceRoot":"","sources":["../../src/service/cached-config-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE5C,uBAAuB,IAAI,OAAO,GAAG,SAAS;IAI9C,uBAAuB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;CAG1D"}
1
+ {"version":3,"file":"cached-config-service.d.ts","sourceRoot":"","sources":["../../src/service/cached-config-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE5C,uBAAuB,IAAI,OAAO,GAAG,SAAS;IAO9C,uBAAuB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;CAG1D"}
@@ -7,6 +7,9 @@ class CachedConfigService {
7
7
  this.cachedConf = cachedConf;
8
8
  }
9
9
  getAnalyticsPreferences() {
10
+ if (process.env.FORGE_DISABLE_ANALYTICS) {
11
+ return false;
12
+ }
10
13
  return this.cachedConf.get(ANALYTICS_PREFERENCES_KEY);
11
14
  }
12
15
  setAnalyticsPreferences(preference) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/cli",
3
- "version": "6.4.2",
3
+ "version": "6.4.3-next.13",
4
4
  "description": "A command line interface for managing Atlassian-hosted apps",
5
5
  "author": "Atlassian",
6
6
  "license": "UNLICENSED",
@@ -18,22 +18,22 @@
18
18
  "postinstall": "node -e \"process.exitCode = fs.existsSync('./out/bin/postinstall.js')\" || node ./out/bin/postinstall.js"
19
19
  },
20
20
  "dependencies": {
21
- "@forge/bundler": "4.4.0",
22
- "@forge/cli-shared": "3.6.0",
21
+ "@forge/bundler": "4.5.0-next.12",
22
+ "@forge/cli-shared": "3.6.1-next.6",
23
23
  "@forge/egress": "^1.1.2",
24
- "@forge/lint": "3.2.14",
25
- "@forge/manifest": "4.6.0",
26
- "@forge/runtime": "4.1.0",
27
- "@forge/tunnel": "3.1.0",
28
- "@forge/util": "1.2.0",
24
+ "@forge/lint": "3.2.15-next.6",
25
+ "@forge/manifest": "4.7.0-next.4",
26
+ "@forge/runtime": "4.2.0-next.2",
27
+ "@forge/tunnel": "3.1.1-next.13",
28
+ "@forge/util": "1.2.1-next.0",
29
29
  "@sentry/node": "^7.29.0",
30
- "ajv": "^6.12.5",
30
+ "ajv": "^6.12.6",
31
31
  "archiver": "^5.2.0",
32
32
  "case": "^1.6.2",
33
33
  "chalk": "^2.4.2",
34
34
  "cheerio": "^0.22.0",
35
35
  "cli-table3": "^0.6.1",
36
- "command-exists": "^1.2.8",
36
+ "command-exists": "^1.2.9",
37
37
  "commander": "^7.0.0",
38
38
  "cross-spawn": "^7.0.1",
39
39
  "dayjs": "^1.9.7",
@@ -58,16 +58,16 @@
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/archiver": "^5.1.0",
61
- "@types/cheerio": "^0.22.21",
61
+ "@types/cheerio": "^0.22.31",
62
62
  "@types/command-exists": "^1.2.0",
63
- "@types/cross-spawn": "^6.0.1",
63
+ "@types/cross-spawn": "^6.0.2",
64
64
  "@types/didyoumean": "^1.2.0",
65
65
  "@types/fs-extra": "^8.0.1",
66
66
  "@types/hidefile": "^3.0.0",
67
- "@types/inquirer": "^8.2.5",
67
+ "@types/inquirer": "^8.2.6",
68
68
  "@types/jest": "^29.1.2",
69
69
  "@types/js-yaml": "^3.12.2",
70
- "@types/minimatch": "^3.0.3",
70
+ "@types/minimatch": "^3.0.5",
71
71
  "@types/mkdirp": "^1.0.0",
72
72
  "@types/node": "^12.12.63",
73
73
  "@types/node-fetch": "^2.5.7",
@@ -75,8 +75,7 @@
75
75
  "@types/semver": "^6.0.1",
76
76
  "@types/tmp": "^0.1.0",
77
77
  "@types/unzipper": "^0.10.1",
78
- "@types/uuid": "^3.4.7",
79
- "@types/webpack": "^5.28.0",
78
+ "@types/uuid": "^3.4.10",
80
79
  "jest": "^29.1.2",
81
80
  "jest-fixtures": "^0.6.0",
82
81
  "memfs": "^3.4.1"