npm package diff
Package: @forge/cli
Versions: 11.0.0 - 11.0.1-next.14
Added: package/out/command-line/uninstall-command-helpers.js
Added: package/out/command-line/uninstall-command-helpers.d.ts.map
Added: package/out/command-line/uninstall-command-helpers.d.ts
Modified: package/out/environment/graphql-client.js
Index: package/out/environment/graphql-client.js
===================================================================
--- package/out/environment/graphql-client.js
+++ package/out/environment/graphql-client.js
@@ -58,9 +58,9 @@
createdAt
versions(first: 1) {
nodes {
updatedAt
- primaryProduct
+ requiredProducts
}
}
}
}
@@ -76,9 +76,9 @@
return {
type: environment.type,
key: environment.key,
lastDeployedAt: environment.versions?.nodes?.[0]?.updatedAt || environment.createdAt,
- primaryProduct: environment.versions?.nodes?.[0]?.primaryProduct || undefined
+ requiredProducts: environment.versions?.nodes?.[0]?.requiredProducts || []
};
});
}
async deleteEnvironments(details) {
Modified: package/out/installations/graphql-client.js
Index: package/out/installations/graphql-client.js
===================================================================
--- package/out/installations/graphql-client.js
+++ package/out/installations/graphql-client.js
@@ -449,9 +449,9 @@
environmentByKey(key: $environmentKey) {
type
versions(first: $firstN) {
nodes {
- primaryProduct
+ requiredProducts
permissions {
egress {
addresses
}
Modified: package/out/command-line/controller/install-controller.js
Index: package/out/command-line/controller/install-controller.js
===================================================================
--- package/out/command-line/controller/install-controller.js
+++ package/out/command-line/controller/install-controller.js
@@ -69,14 +69,19 @@
return text.cmd.end(false);
}
});
}
- async promptForProduct() {
+ async promptForProducts(requiredProducts) {
this.ui.info(cli_shared_1.Text.installationContext.overviewProduct);
- return await this.ui.promptForList(cli_shared_1.Text.installationContext.promptProduct, await this.supportedProductsService.getSupportedProducts());
+ if (requiredProducts?.length) {
+ return await this.ui.promptForMultiSelectList(cli_shared_1.Text.installationContext.promptOptionalProducts, await this.supportedProductsService.getSupportedProducts(requiredProducts));
+ }
+ return [
+ await this.ui.promptForList(cli_shared_1.Text.installationContext.promptProduct, await this.supportedProductsService.getSupportedProducts())
+ ];
}
- async promptForSite(product) {
- const isWorkspaceBased = product && (await this.supportedProductsService.isWorkspaceProduct(product));
+ async promptForSite(products) {
+ const isWorkspaceBased = products.length > 0 && (await this.supportedProductsService.isWorkspaceProduct(products[0]));
const overviewText = isWorkspaceBased
? cli_shared_1.Text.installationContext.overviewWorkspace
: cli_shared_1.Text.installationContext.overviewSite;
this.ui.info(overviewText);
@@ -87,9 +92,9 @@
const invalidText = isWorkspaceBased ? cli_shared_1.Text.error.invalidWorkspace : cli_shared_1.Text.error.invalidSite;
if (!trySite) {
throw new cli_shared_1.ValidationError(invalidText);
}
- return this.supportedProductsService.validateSite(trySite, product);
+ return this.supportedProductsService.validateSite(trySite, products[0]);
}
async promptForUpgrade(siteOption, productOption, environmentOption) {
const { installations } = await this.installationService.listNonTechnicalAppInstallations({
site: siteOption,
@@ -142,29 +147,55 @@
if (uiKit1Modules.length > 0) {
this.installView.displayUIKit1DeprecationMessage(uiKit1Modules);
}
};
- async run({ environment, site, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }) {
+ async run({ environment, site, products, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }) {
const { id } = await this.appConfigProvider();
const text = upgrade ? cli_shared_1.Text.upgrade : cli_shared_1.Text.install;
const validLicense = this.validateLicenseOption(license, environment);
const overrides = await this.validateEcosystemAppInstallationOverridesInput(licenseModes, usersWithAccess, environment);
- if (upgrade && (!site || !product)) {
- const upgradeResult = await this.promptForUpgrade(site, product, environment);
+ const { installations } = (await this.installationService.listAppInstallations()) ?? [];
+ const environmentPermissions = await this.installationService.getAppEnvironmentPermissions(id, environment);
+ const requiredProducts = environmentPermissions?.requiredProducts;
+ if (upgrade && (!site || !products?.length)) {
+ const upgradeResult = await this.promptForUpgrade(site, products?.[0], environment);
environment = upgradeResult.environment;
site = upgradeResult.site;
- product = upgradeResult.product;
+ products = [upgradeResult.product];
}
- product = product ? product : await this.promptForProduct();
- site = site ? site : await this.promptForSite(product);
- const bannerText = product && (await this.supportedProductsService.isWorkspaceProduct(product))
+ if (!requiredProducts?.length) {
+ products = products?.length ? products : await this.promptForProducts();
+ site = site ? site : await this.promptForSite(products);
+ }
+ else {
+ site = site ? site : await this.promptForSite([]);
+ if (!products?.length) {
+ const hasRequiredInstallations = this.checkRequiredInstallationExists(installations, site.host, requiredProducts);
+ if (hasRequiredInstallations) {
+ this.ui.info(cli_shared_1.Text.install.alreadyInstalledInRequiredProduct(requiredProducts[0]));
+ products = products?.length ? products : await this.promptForProducts(requiredProducts);
+ }
+ else {
+ this.ui.info(cli_shared_1.Text.install.installingToRequiredProduct(requiredProducts[0]));
+ products = requiredProducts;
+ }
+ }
+ else {
+ if (requiredProducts.includes(products[0])) {
+ this.ui.info(cli_shared_1.Text.install.installingToRequiredProduct(products[0]));
+ }
+ else {
+ this.ui.info(cli_shared_1.Text.install.installingToOptionalProduct);
+ }
+ }
+ }
+ const bannerText = (await this.supportedProductsService.isWorkspaceProduct(products[0]))
? text.bannerWorkspace
: text.bannerSite;
this.ui.info(bannerText);
if ((0, cli_shared_1.isSecureSite)(site)) {
await this.securityPrompt(site);
}
- const environmentPermissions = await this.installationService.getAppEnvironmentPermissions(id, environment);
if (!environmentPermissions?.hasDeployments) {
this.ui.error(new NoDeploymentError(environment), { pad: false });
return;
}
@@ -184,31 +215,33 @@
const addedScopes = await this.extractAddedScopes(environmentPermissions);
const scopesConfirmationResult = await this.installView.promptForPermissionsConfirmation(environmentPermissions, addedScopes, [...manifestScopes], manifestEgressAddresses, environment, confirmScopes, !!nonInteractive, text);
if (!scopesConfirmationResult)
return;
- const isAlreadyUpdated = await this.installOrUpgrade(upgrade, environment, environmentType, site, product, id, text, validLicense, overrides);
- if (isAlreadyUpdated) {
- this.ui.info(cli_shared_1.Text.upgrade.alreadyUpdated.banner(environment, product, site.host));
+ for (const product of products) {
+ const isAlreadyUpdated = await this.installOrUpgrade(upgrade, environment, environmentType, site, product, id, text, validLicense, overrides);
+ if (isAlreadyUpdated) {
+ this.ui.info(cli_shared_1.Text.upgrade.alreadyUpdated.banner(environment, product, site.host));
+ }
+ else {
+ this.ui.emptyLine();
+ this.ui.info(text.success.banner(environment, environmentType, product, site.host));
+ const uniqueProductsFromScopes = this.getUniqueInstallationProductsFromScopes(environmentScopes);
+ if (!uniqueProductsFromScopes || uniqueProductsFromScopes.length <= 1)
+ return;
+ const { installations } = await this.installationService.listNonTechnicalAppInstallations({
+ site,
+ environment
+ });
+ const productsToUpgrade = installations
+ .filter((installation) => !installation.version.isLatest)
+ .map((installation) => installation.product);
+ const installedProducts = installations.map((installation) => installation.product);
+ const productsToInstall = uniqueProductsFromScopes.filter((product) => !installedProducts.includes(product));
+ if (!productsToInstall.length && productsToUpgrade.length === 0)
+ return;
+ this.ui.warn(cli_shared_1.Text.install.multiProductScopesDetected(productsToInstall, productsToUpgrade, site.host, environment));
+ }
}
- else {
- this.ui.emptyLine();
- this.ui.info(text.success.banner(environment, environmentType, product, site.host));
- const uniqueProductsFromScopes = this.getUniqueInstallationProductsFromScopes(environmentScopes);
- if (!uniqueProductsFromScopes || uniqueProductsFromScopes.length <= 1)
- return;
- const { installations } = await this.installationService.listNonTechnicalAppInstallations({
- site,
- environment
- });
- const productsToUpgrade = installations
- .filter((installation) => !installation.version.isLatest)
- .map((installation) => installation.product);
- const installedProducts = installations.map((installation) => installation.product);
- const productsToInstall = uniqueProductsFromScopes.filter((product) => !installedProducts.includes(product));
- if (productsToInstall.length === 0 && productsToUpgrade.length === 0)
- return;
- this.ui.warn(cli_shared_1.Text.install.multiProductScopesDetected(productsToInstall, productsToUpgrade, site.host, environment));
- }
}
async extractAddedScopes({ addedScopes }) {
const scopesWithInteractiveConsent = (0, manifest_1.getScopesWithInteractiveConsent)();
return addedScopes.map((scope) => ({
@@ -264,6 +297,9 @@
return ecosystemLicenseModes && usersWithAccess
? { licenseModes: ecosystemLicenseModes, usersWithAccess }
: undefined;
}
+ checkRequiredInstallationExists = (installations, site, requiredProducts) => {
+ return requiredProducts.every((requiredProduct) => installations.some((installation) => installation.site.includes(site) && installation.product.toLowerCase() === requiredProduct.toLowerCase()));
+ };
}
exports.InstallController = InstallController;
Modified: package/out/service/installation-service.js
Index: package/out/service/installation-service.js
===================================================================
--- package/out/service/installation-service.js
+++ package/out/service/installation-service.js
@@ -95,27 +95,27 @@
}
}
getPermissionsFromAppEnvironmentVersion(appEnvironmentVersion) {
const permissions = appEnvironmentVersion?.permissions[0];
- const primaryProduct = appEnvironmentVersion?.primaryProduct ?? undefined;
+ const requiredProducts = appEnvironmentVersion?.requiredProducts ?? [];
if (!permissions) {
- return { scopes: [], egressAddresses: [], primaryProduct };
+ return { scopes: [], egressAddresses: [], requiredProducts };
}
const scopes = permissions.scopes.map((s) => s.key);
const egressAddresses = permissions?.egress ? (0, cli_shared_1.flatMap)(permissions.egress, ({ addresses }) => addresses ?? []) : [];
- return { scopes, egressAddresses, primaryProduct };
+ return { scopes, egressAddresses, requiredProducts };
}
async getAppEnvironmentPermissions(appId, environmentKey) {
const versionDetails = await this.listInstallationsClient.getVersions(appId, environmentKey, 2);
const versions = versionDetails?.nodes;
if (!versions || versions.length === 0)
return;
- const [{ scopes, egressAddresses, primaryProduct }, oldVersion] = versions.map((appEnvironmentVersion) => this.getPermissionsFromAppEnvironmentVersion(appEnvironmentVersion));
+ const [{ scopes, egressAddresses, requiredProducts }, oldVersion] = versions.map((appEnvironmentVersion) => this.getPermissionsFromAppEnvironmentVersion(appEnvironmentVersion));
const groupedEgressAddresses = (0, egress_1.sortAndGroupEgressPermissionsByDomain)(egressAddresses);
if (!oldVersion) {
return {
scopes,
- primaryProduct,
+ requiredProducts,
hasDeployments: false,
egressAddresses: groupedEgressAddresses,
addedScopes: scopes,
environmentType: versionDetails.environmentType
@@ -124,9 +124,9 @@
const { scopes: oldScopes } = oldVersion;
const addedScopes = (0, lodash_1.difference)(scopes, oldScopes);
return {
scopes,
- primaryProduct,
+ requiredProducts,
hasDeployments: true,
egressAddresses: groupedEgressAddresses,
addedScopes,
environmentType: versionDetails.environmentType
Modified: package/out/command-line/register-installation-commands.js
Index: package/out/command-line/register-installation-commands.js
===================================================================
--- package/out/command-line/register-installation-commands.js
+++ package/out/command-line/register-installation-commands.js
@@ -1,10 +1,10 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.registerCommands = exports.performMultipleUninstalls = exports.performSingleUninstall = exports.registerListInstallationsCommand = void 0;
+exports.registerCommands = exports.registerListInstallationsCommand = void 0;
const cli_shared_1 = require("@forge/cli-shared");
const shared_1 = require("../installations/shared");
-const errors_1 = require("./errors");
+const uninstall_command_helpers_1 = require("./uninstall-command-helpers");
const semver_1 = require("semver");
const COMMAND_NAME = 'install';
const registerInstallAppCommand = async ({ cmd, controllers: { installController }, services: { supportedProductsService } }) => {
const supportedProducts = await supportedProductsService.getSupportedProducts();
@@ -22,9 +22,9 @@
.action(async ({ environment, site, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }) => {
await installController.run({
environment,
site,
- product,
+ products: product ? [product] : [],
upgrade,
confirmScopes,
license,
licenseModes,
@@ -64,54 +64,8 @@
});
});
};
exports.registerListInstallationsCommand = registerListInstallationsCommand;
-const performSingleUninstall = async (installId, { ui, commands: { uninstallAppCommand } }) => {
- const installation = await ui.displayProgress(() => uninstallAppCommand.execute(installId), cli_shared_1.Text.uninstall.cmd.start, (result) => ({
- successful: !!result.successful,
- message: cli_shared_1.Text.uninstall.cmd.success(false)
- }));
- const uninstallMessageFormat = installation.successful ? cli_shared_1.Text.uninstall.done : cli_shared_1.Text.uninstall.failed;
- const uninstallMessage = uninstallMessageFormat((0, cli_shared_1.productDisplayName)(installation.product), installation.site, installation.environmentKey, false);
- if (installation.successful) {
- ui.info(uninstallMessage);
- }
- else {
- ui.error(new shared_1.UninstallAppError(uninstallMessage));
- }
-};
-exports.performSingleUninstall = performSingleUninstall;
-const performMultipleUninstalls = async (appsToUninstall, { ui, commands: { uninstallAppCommand } }) => {
- const filteredInstallations = appsToUninstall.filter(({ product }) => product !== 'identity');
- const hasMultipleNonIdentityApps = filteredInstallations.length > 1;
- const uninstalledApps = await ui.displayProgress(() => uninstallAppCommand.batchExecute([], appsToUninstall), cli_shared_1.Text.uninstall.cmd.start, (result) => {
- const isSuccessful = !result.some(({ successful }) => successful === false);
- return {
- successful: isSuccessful,
- message: cli_shared_1.Text.uninstall.cmd.success(hasMultipleNonIdentityApps)
- };
- });
- const deferredErrors = [];
- uninstalledApps.forEach((uninstall) => {
- const uninstallMessageFormat = uninstall.successful ? cli_shared_1.Text.uninstall.done : cli_shared_1.Text.uninstall.failed;
- const formattedMessage = uninstallMessageFormat((0, cli_shared_1.productDisplayName)(uninstall.product), uninstall.site, uninstall.environmentKey, hasMultipleNonIdentityApps);
- if (uninstall.successful && uninstall.product !== 'identity') {
- ui.info(formattedMessage);
- }
- else if (!uninstall.successful) {
- const uninstallError = new shared_1.UninstallAppError(formattedMessage);
- ui.error(uninstallError);
- deferredErrors.push(uninstallError);
- }
- });
- if (uninstalledApps.some(({ successful }) => successful === false)) {
- throw new errors_1.DeferredErrors(deferredErrors);
- }
- if (hasMultipleNonIdentityApps) {
- ui.info(cli_shared_1.Text.uninstall.interactive.done);
- }
-};
-exports.performMultipleUninstalls = performMultipleUninstalls;
const registerUninstallCommand = async (deps) => {
const { cmd, ui, services: { installationsService, supportedProductsService } } = deps;
const supportedProducts = await supportedProductsService.getSupportedProducts();
cmd
@@ -134,25 +88,25 @@
});
ui.info(cli_shared_1.Text.uninstall.info);
ui.info(cli_shared_1.Text.ctrlC);
ui.emptyLine();
- await (0, exports.performSingleUninstall)(installation.id, deps);
+ await (0, uninstall_command_helpers_1.performSingleUninstall)(installation.id, deps);
}
else {
const filteredInstallations = installations.filter((install) => install.product !== 'identity' && install.product !== 'jira-servicedesk');
- const selectedSitesIndexes = await ui.promptForTable(cli_shared_1.Text.uninstall.interactive.desc, cli_shared_1.Text.uninstall.interactive.progressInfo, ['Environment', 'Site', 'Product'], filteredInstallations.map(({ id, environmentKey, product, site }) => ({
- names: [(0, cli_shared_1.environmentToOption)(environmentKey), site, (0, cli_shared_1.productDisplayName)(product)],
- value: id
- })));
- const appsToUninstall = filteredInstallations.filter((_, index) => selectedSitesIndexes.includes(index));
- const selectedSites = new Set(appsToUninstall.map(({ site }) => site));
- const remainingApps = filteredInstallations.filter((_, index) => !selectedSitesIndexes.includes(index));
- appsToUninstall.push(...(0, shared_1.getHangingIdentityInstallationsFromSite)(installations, remainingApps, selectedSites));
- if (appsToUninstall.length > 1) {
- await (0, exports.performMultipleUninstalls)(appsToUninstall, deps);
+ const options = (0, uninstall_command_helpers_1.getMultiChoiceOptionsForUninstall)(filteredInstallations);
+ const selectedSitesIndexes = await ui.promptForTable(cli_shared_1.Text.uninstall.interactive.desc, cli_shared_1.Text.uninstall.interactive.progressInfo, ['Environment', 'Site', 'Product'], options);
+ const [firstUninstall, secondUninstall] = (0, uninstall_command_helpers_1.getInstallationsFromSelection)(options, selectedSitesIndexes, filteredInstallations);
+ const selectedSites = new Set(firstUninstall.map(({ site }) => site).concat(secondUninstall.map(({ site }) => site)));
+ const remainingApps = options
+ .filter((_, index) => !selectedSitesIndexes.includes(index))
+ .map(({ extra }) => filteredInstallations[extra.installationIdx]);
+ firstUninstall.push(...(0, shared_1.getHangingIdentityInstallationsFromSite)(installations, remainingApps, selectedSites));
+ if (firstUninstall.length > 1 || secondUninstall.length > 0) {
+ await (0, uninstall_command_helpers_1.performMultipleUninstalls)(firstUninstall, secondUninstall, deps);
}
- else {
- await (0, exports.performSingleUninstall)(appsToUninstall[0].id, deps);
+ else if (firstUninstall.length === 1) {
+ await (0, uninstall_command_helpers_1.performSingleUninstall)(firstUninstall[0].id, deps);
}
}
});
};
Modified: package/out/installations/uninstall-app.js
Index: package/out/installations/uninstall-app.js
===================================================================
--- package/out/installations/uninstall-app.js
+++ package/out/installations/uninstall-app.js
@@ -31,8 +31,9 @@
const uninstallOutput = await this.client.uninstallMultipleApps(appsInstallInfo.map((installInfo) => ({
appId,
environmentKey: installInfo.environmentKey,
installationId: installInfo.id,
+ installationContext: installInfo.context,
async: true
})));
return appsInstallInfo.map(({ product, site, environmentKey }, index) => ({
product,
Modified: package/out/command-line/version-info.js
Index: package/out/command-line/version-info.js
===================================================================
--- package/out/command-line/version-info.js
+++ package/out/command-line/version-info.js
@@ -20,9 +20,9 @@
return undefined;
}
};
exports.getCLIDetails = getCLIDetails;
-const supportedNodeMajorVersions = [18, 20];
+const supportedNodeMajorVersions = [18, 20, 22];
exports.semverSupportedNodeVersion = supportedNodeMajorVersions.map((v) => `${v}.x`).join(' || ');
exports.humanReadableSupportedNodeVersion = supportedNodeMajorVersions
.map((v) => `${v}.x`)
.join(', ')
Modified: package/npm-shrinkwrap.json
Large diffs are not rendered by default.
Modified: package/package.json
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
{
"name": "@forge/cli",
- "version": "11.0.0",
+ "version": "11.0.1-next.14",
"description": "A command line interface for managing Atlassian-hosted apps",
"author": "Atlassian",
"license": "SEE LICENSE IN LICENSE.txt",
"bin": {
@@ -17,16 +17,16 @@
"postbuild": "chmod +x out/bin/*.js && ts-node scripts/configureAutocomplete.ts",
"postinstall": "node -e \"fs.existsSync('./out/bin/postinstall.js') && require('./out/bin/postinstall.js')\""
},
"dependencies": {
- "@forge/bundler": "4.20.8",
- "@forge/cli-shared": "6.6.0",
- "@forge/egress": "1.3.1",
- "@forge/lint": "5.7.0",
- "@forge/manifest": "8.6.1",
- "@forge/runtime": "5.10.5",
- "@forge/tunnel": "5.9.2",
- "@forge/util": "1.4.7",
+ "@forge/bundler": "4.20.9-next.11",
+ "@forge/cli-shared": "6.6.1-next.8",
+ "@forge/egress": "1.4.0-next.0",
+ "@forge/lint": "5.7.1-next.9",
+ "@forge/manifest": "8.7.0-next.4",
+ "@forge/runtime": "5.10.6-next.0",
+ "@forge/tunnel": "5.9.3-next.11",
+ "@forge/util": "1.4.8-next.0",
"@sentry/node": "7.106.0",
"@forge/i18n": "0.0.3",
"ajv": "^8.12.0",
"archiver": "^6.0.2",
Modified: package/out/command-line/controller/install-controller.d.ts.map
Index: package/out/command-line/controller/install-controller.d.ts.map
===================================================================
--- package/out/command-line/controller/install-controller.d.ts.map
+++ package/out/command-line/controller/install-controller.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"install-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/install-controller.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,iBAAiB,EAEjB,UAAU,EAEV,EAAE,EAYF,wBAAwB,EAEzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAA6B,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACpG,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;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAYD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,WAAW,EAAE,MAAM;CAGhC;AASD,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,wBAAwB;gBANxB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,EAAE,EACN,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EACxB,wBAAwB,EAAE,wBAAwB;YAGvD,cAAc;YAmBd,gBAAgB;YA8ChB,gBAAgB;YAQhB,aAAa;YAsBb,gBAAgB;IAwB9B,OAAO,CAAC,uCAAuC;IAY/C,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,qBAAqB,CAK3B;IAEW,GAAG,CAAC,EACf,WAAW,EACX,IAAI,EACJ,OAAO,EACP,OAAO,EACP,aAAa,EACb,OAAO,EACP,YAAY,EACZ,eAAe,EACf,cAAc,EACf,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAkHrB,kBAAkB;IAUhC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,uBAAuB;YAoBjB,8CAA8C;CAW7D"}
\ No newline at end of file
+{"version":3,"file":"install-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/install-controller.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,iBAAiB,EAEjB,UAAU,EAEV,EAAE,EAYF,wBAAwB,EAEzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAA2C,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAClH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAYD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,WAAW,EAAE,MAAM;CAGhC;AASD,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,wBAAwB;gBANxB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,EAAE,EACN,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EACxB,wBAAwB,EAAE,wBAAwB;YAGvD,cAAc;YAmBd,gBAAgB;YA8ChB,iBAAiB;YAmBjB,aAAa;YA2Bb,gBAAgB;IAwB9B,OAAO,CAAC,uCAAuC;IAa/C,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,qBAAqB,CAK3B;IAEW,GAAG,CAAC,EACf,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,aAAa,EACb,OAAO,EACP,YAAY,EACZ,eAAe,EACf,cAAc,EACf,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YA0JrB,kBAAkB;IAUhC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,uBAAuB;YAoBjB,8CAA8C;IAY5D,OAAO,CAAC,+BAA+B,CAWrC;CACH"}
\ No newline at end of file
Modified: package/out/service/installation-service.d.ts.map
Index: package/out/service/installation-service.d.ts.map
===================================================================
--- package/out/service/installation-service.d.ts.map
+++ package/out/service/installation-service.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"installation-service.d.ts","sourceRoot":"","sources":["../../src/service/installation-service.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"installation-service.d.ts","sourceRoot":"","sources":["../../src/service/installation-service.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
Modified: package/out/environment/list-environment.d.ts.map
Index: package/out/environment/list-environment.d.ts.map
===================================================================
--- package/out/environment/list-environment.d.ts.map
+++ package/out/environment/list-environment.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"list-environment.d.ts","sourceRoot":"","sources":["../../src/environment/list-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,MAAM,CAAC;IACjF,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;CACpF;AAED,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,iBAAiB;IAGrC,OAAO;CAMrB"}
\ No newline at end of file
+{"version":3,"file":"list-environment.d.ts","sourceRoot":"","sources":["../../src/environment/list-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,MAAM,CAAC;IACjF,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;CACpF;AAED,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,iBAAiB;IAGrC,OAAO;CAMrB"}
\ No newline at end of file
Modified: package/out/command-line/register-installation-commands.d.ts.map
Index: package/out/command-line/register-installation-commands.d.ts.map
===================================================================
--- package/out/command-line/register-installation-commands.d.ts.map
+++ package/out/command-line/register-installation-commands.d.ts.map
@@ -1,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,gCAAgC,oDAAqD,YAAY,SAmC7G,CAAC;AAEF,eAAO,MAAM,sBAAsB,cACtB,MAAM,6CAC0B,YAAY,kBAuBxD,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBACnB,YAAY,EAAE,6CACY,YAAY,kBA8CxD,CAAC;AAsEF,eAAO,MAAM,gBAAgB,qBAA4B,YAAY,KAAG,QAAQ,IAAI,CAenF,CAAC"}
\ No newline at end of file
+{"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;AA2DtD,eAAO,MAAM,gCAAgC,oDAAqD,YAAY,SAmC7G,CAAC;AA6EF,eAAO,MAAM,gBAAgB,qBAA4B,YAAY,KAAG,QAAQ,IAAI,CAenF,CAAC"}
\ No newline at end of file
Modified: package/out/installations/uninstall-app.d.ts.map
Index: package/out/installations/uninstall-app.d.ts.map
===================================================================
--- package/out/installations/uninstall-app.d.ts.map
+++ package/out/installations/uninstall-app.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"uninstall-app.d.ts","sourceRoot":"","sources":["../../src/installations/uninstall-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE,KAAK,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9E,YAAY,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,qBAAqB,CAAC,KAAK,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;CACrG;AAED,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,YAAY,EAAE,iBAAiB,EAC/B,MAAM,EAAE,kBAAkB;IAGhC,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY5D,YAAY,CACvB,eAAe,GAAE,MAAM,EAAO,EAC9B,iBAAiB,CAAC,EAAE,YAAY,EAAE,GACjC,OAAO,CAAC,kBAAkB,EAAE,CAAC;CA4BjC"}
\ No newline at end of file
+{"version":3,"file":"uninstall-app.d.ts","sourceRoot":"","sources":["../../src/installations/uninstall-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE,KAAK,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9E,YAAY,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,qBAAqB,CAAC,KAAK,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;CACrG;AAED,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,YAAY,EAAE,iBAAiB,EAC/B,MAAM,EAAE,kBAAkB;IAGhC,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY5D,YAAY,CACvB,eAAe,GAAE,MAAM,EAAO,EAC9B,iBAAiB,CAAC,EAAE,YAAY,EAAE,GACjC,OAAO,CAAC,kBAAkB,EAAE,CAAC;CA6BjC"}
\ No newline at end of file
Modified: package/CHANGELOG.md
Large diffs are not rendered by default.
Modified: package/out/environment/graphql-client.d.ts
Index: package/out/environment/graphql-client.d.ts
===================================================================
--- package/out/environment/graphql-client.d.ts
+++ package/out/environment/graphql-client.d.ts
@@ -12,9 +12,9 @@
listEnvironment(details: ListEnvironmentDetails): Promise<{
type: AppEnvironmentType;
key: string;
lastDeployedAt: string;
- primaryProduct: import("@forge/cli-shared").EcosystemRequiredProduct | undefined;
+ requiredProducts: import("@forge/cli-shared").EcosystemRequiredProduct[];
}[]>;
deleteEnvironments(details: BatchDeleteEnvironmentDetails): Promise<DeleteEnvironmentOutput[]>;
deleteEnvironment(details: DeleteEnvironmentDetails): Promise<true>;
}
Modified: package/out/command-line/controller/install-controller.d.ts
Index: package/out/command-line/controller/install-controller.d.ts
===================================================================
--- package/out/command-line/controller/install-controller.d.ts
+++ package/out/command-line/controller/install-controller.d.ts
@@ -6,9 +6,9 @@
import { InstallView } from '../view/install-view';
interface InstallViewProps {
environment: string;
site?: URL;
- product?: string;
+ products?: string[];
upgrade: boolean;
nonInteractive?: boolean;
confirmScopes: boolean;
license?: string;
@@ -28,20 +28,21 @@
private readonly supportedProductsService;
constructor(appConfigProvider: AppConfigProvider, configFile: ConfigFile, ui: UI, installAppSiteCommand: InstallAppSiteCommand, installationService: InstallationService, installView: InstallView, supportedProductsService: SupportedProductsService);
private securityPrompt;
private installOrUpgrade;
- private promptForProduct;
+ private promptForProducts;
private promptForSite;
private promptForUpgrade;
private getUniqueInstallationProductsFromScopes;
private isValidLicense;
private validateLicenseOption;
private checkForUIKit1Modules;
- run({ environment, site, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }: InstallViewProps): Promise<void>;
+ run({ environment, site, products, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }: InstallViewProps): Promise<void>;
private extractAddedScopes;
private isValidLicenseMode;
private validateLicenseModes;
private validateUsersWithAccess;
private validateEcosystemAppInstallationOverridesInput;
+ private checkRequiredInstallationExists;
}
export {};
//# sourceMappingURL=install-controller.d.ts.map
\ No newline at end of file
Modified: package/out/service/installation-service.d.ts
Index: package/out/service/installation-service.d.ts
===================================================================
--- package/out/service/installation-service.d.ts
+++ package/out/service/installation-service.d.ts
@@ -21,9 +21,9 @@
}
export interface AppEnvironmentVersionPermissions {
scopes: string[];
egressAddresses: string[];
- primaryProduct?: string;
+ requiredProducts?: string[];
}
export interface AppEnvironmentPermissions extends AppEnvironmentVersionPermissions {
addedScopes: string[];
environmentType: AppEnvironmentType;
Modified: package/out/environment/list-environment.d.ts
Index: package/out/environment/list-environment.d.ts
===================================================================
--- package/out/environment/list-environment.d.ts
+++ package/out/environment/list-environment.d.ts
@@ -3,9 +3,9 @@
appId: string;
}
export interface ListEnvironmentOutput extends Pick<AppEnvironment, 'key' | 'type'> {
lastDeployedAt: string;
- primaryProduct?: string;
+ requiredProducts?: string[];
}
export interface ListEnvironmentClient {
listEnvironment(details: ListEnvironmentDetails): Promise<ListEnvironmentOutput[]>;
}
Modified: package/out/command-line/register-installation-commands.d.ts
Index: package/out/command-line/register-installation-commands.d.ts
===================================================================
--- package/out/command-line/register-installation-commands.d.ts
+++ package/out/command-line/register-installation-commands.d.ts
@@ -1,7 +1,4 @@
import { Dependencies } from './dependency-injection';
-import { Installation } from '../service/installation-service';
export declare const registerListInstallationsCommand: ({ cmd, ui, services: { installationsService } }: Dependencies) => void;
-export declare const performSingleUninstall: (installId: string, { ui, commands: { uninstallAppCommand } }: Dependencies) => Promise<void>;
-export declare const performMultipleUninstalls: (appsToUninstall: Installation[], { ui, commands: { uninstallAppCommand } }: Dependencies) => Promise<void>;
export declare const registerCommands: ({ cmd, ...deps }: Dependencies) => Promise<void>;
//# sourceMappingURL=register-installation-commands.d.ts.map
\ No newline at end of file
Modified: package/out/installations/uninstall-app.d.ts
Index: package/out/installations/uninstall-app.d.ts
===================================================================
--- package/out/installations/uninstall-app.d.ts
+++ package/out/installations/uninstall-app.d.ts
@@ -5,8 +5,9 @@
product: string;
site: string;
environmentKey: string;
successful?: boolean;
+ errorType?: string;
}
export interface AsyncAppUninstallationInput extends AppUninstallationInput {
async: true;
}