npm package diff

Package: @forge/cli

Versions: 11.0.0 - 11.0.1-next.14

File: package/out/command-line/uninstall-command-helpers.js

Index: package/out/command-line/uninstall-command-helpers.js
===================================================================
--- package/out/command-line/uninstall-command-helpers.js
+++ package/out/command-line/uninstall-command-helpers.js
@@ -0,0 +1,106 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.performMultipleUninstalls = exports.performSingleUninstall = exports.getInstallationsFromSelection = exports.getMultiChoiceOptionsForUninstall = void 0;
+const cli_shared_1 = require("@forge/cli-shared");
+const shared_1 = require("../installations/shared");
+const errors_1 = require("./errors");
+function addPrimarySuffix(productDisplayName, secondaryCount) {
+    return secondaryCount ? `${productDisplayName} (Primary)` : productDisplayName;
+}
+const getMultiChoiceOptionsForUninstall = (filteredInstallations) => {
+    return filteredInstallations.reduce((acc, { id, environmentKey, site, product, secondaryProducts, secondaryContexts }, idx) => {
+        acc.push({
+            names: [
+                (0, cli_shared_1.environmentToOption)(environmentKey),
+                site,
+                addPrimarySuffix((0, cli_shared_1.productDisplayName)(product), secondaryProducts?.length)
+            ],
+            value: id,
+            extra: {
+                installationIdx: idx,
+                product: product,
+                primary: !!secondaryProducts?.length
+            }
+        });
+        if (secondaryProducts) {
+            secondaryProducts.forEach((secondaryProduct, secondaryIdx) => {
+                const contextAri = secondaryContexts?.[secondaryIdx];
+                acc.push({
+                    names: [(0, cli_shared_1.environmentToOption)(environmentKey), site, (0, cli_shared_1.productDisplayName)(secondaryProduct)],
+                    value: id,
+                    extra: { secondary: true, contextAri, installationIdx: idx, product: secondaryProduct }
+                });
+            });
+        }
+        return acc;
+    }, []);
+};
+exports.getMultiChoiceOptionsForUninstall = getMultiChoiceOptionsForUninstall;
+const getInstallationsFromSelection = (options, selectedSitesIndexes, filteredInstallations) => {
+    const firstUninstall = options
+        .filter((_, idx) => selectedSitesIndexes.includes(idx))
+        .filter(({ extra }) => !extra?.primary)
+        .map(({ extra }) => ({
+        ...filteredInstallations[extra.installationIdx],
+        ...(extra.secondary && { context: extra.contextAri, product: extra.product })
+    }));
+    const secondUninstall = options
+        .filter((_, idx) => selectedSitesIndexes.includes(idx))
+        .filter(({ extra }) => extra?.primary)
+        .map(({ extra }) => filteredInstallations[extra.installationIdx]);
+    return [firstUninstall, secondUninstall];
+};
+exports.getInstallationsFromSelection = getInstallationsFromSelection;
+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 (appsToUninstallFirst, appsToUninstallSecond, { ui, commands: { uninstallAppCommand } }) => {
+    const filteredInstallations = appsToUninstallFirst.filter(({ product }) => product !== 'identity');
+    const hasMultipleNonIdentityApps = filteredInstallations.length > 1;
+    const uninstalledApps = await ui.displayProgress(async () => {
+        const result1 = await uninstallAppCommand.batchExecute([], appsToUninstallFirst);
+        if (result1.some(({ successful }) => successful === false)) {
+            return result1;
+        }
+        const result2 = await uninstallAppCommand.batchExecute([], appsToUninstallSecond);
+        return result1.concat(result2);
+    }, 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;