@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.
- package/CHANGELOG.md +211 -0
- package/npm-shrinkwrap.json +2098 -2477
- package/out/command-line/command.d.ts +1 -5
- package/out/command-line/command.d.ts.map +1 -1
- package/out/command-line/command.js +14 -40
- package/out/command-line/controller/install-controller.d.ts +3 -2
- package/out/command-line/controller/install-controller.d.ts.map +1 -1
- package/out/command-line/controller/install-controller.js +9 -2
- package/out/command-line/dependency-injection.d.ts.map +1 -1
- package/out/command-line/dependency-injection.js +2 -2
- package/out/command-line/register-installation-commands.d.ts +7 -0
- package/out/command-line/register-installation-commands.d.ts.map +1 -1
- package/out/command-line/register-installation-commands.js +17 -2
- package/out/command-line/register-lint-command.d.ts +0 -1
- package/out/command-line/register-lint-command.d.ts.map +1 -1
- package/out/command-line/register-log-commands.d.ts.map +1 -1
- package/out/command-line/register-log-commands.js +1 -4
- package/out/command-line/view/install-view.d.ts +4 -3
- package/out/command-line/view/install-view.d.ts.map +1 -1
- package/out/command-line/view/install-view.js +10 -4
- package/out/service/cached-config-service.d.ts.map +1 -1
- package/out/service/cached-config-service.js +3 -0
- package/package.json +15 -16
|
@@ -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":"AAAA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAU,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,
|
|
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(
|
|
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
|
|
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
|
|
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,
|
|
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',
|
|
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',
|
|
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,
|
|
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]',
|
|
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 ||
|
|
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',
|
|
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(
|
|
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 =
|
|
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(
|
|
353
|
-
return await (0,
|
|
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
|
-
|
|
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,
|
|
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 (!
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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":"
|
|
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
|
-
.
|
|
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 +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,
|
|
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,
|
|
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,
|
|
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
|
|
9
|
+
export declare class NoScopesError extends UserError {
|
|
10
10
|
}
|
|
11
11
|
export declare class InstallView {
|
|
12
12
|
private readonly ui;
|
|
13
|
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
|
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;
|
|
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.
|
|
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.
|
|
22
|
-
"@forge/cli-shared": "3.6.
|
|
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.
|
|
25
|
-
"@forge/manifest": "4.
|
|
26
|
-
"@forge/runtime": "4.
|
|
27
|
-
"@forge/tunnel": "3.1.
|
|
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.
|
|
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.
|
|
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.
|
|
61
|
+
"@types/cheerio": "^0.22.31",
|
|
62
62
|
"@types/command-exists": "^1.2.0",
|
|
63
|
-
"@types/cross-spawn": "^6.0.
|
|
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.
|
|
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.
|
|
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.
|
|
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"
|