npm package diff

Package: @forge/cli

Versions: 11.4.0-next.1-experimental-5364136 - 11.4.0-next.14

File: package/out/version/graphql-client.js

Index: package/out/version/graphql-client.js
===================================================================
--- package/out/version/graphql-client.js
+++ package/out/version/graphql-client.js
@@ -237,9 +237,9 @@
             };
         });
         return output.filter((version) => version.upgradeableTo);
     }
-    async createAppVersionUpgradeRollout(environmentKey, sourceVersionId, targetVersionId) {
+    async createAppVersionUpgradeRollout(environmentKey, sourceVersionId, targetVersionId, sourceVersionNumber, targetVersionNumber) {
         const query = `
       mutation forge_cli_createAppVersionUpgradeRollout($input: CreateAppVersionRolloutInput!) {
         ecosystem {
           createAppVersionRollout(input: $input) {
@@ -282,21 +282,21 @@
                 errors.forEach((error) => {
                     if (error?.extensions?.errorType && error.message) {
                         switch (error.extensions.errorType) {
                             case 'APP_ROLLOUT_RUNNING':
-                                errorList.push(cli_shared_1.Text.version.upgrade.error.appVersionRolloutRunning);
+                                errorList.push(cli_shared_1.Text.version.upgrade.start.error.appVersionRolloutRunning);
                                 break;
                             case 'PermissionDeniedError':
-                                errorList.push(cli_shared_1.Text.version.upgrade.error.permissionDeniedError(sourceVersionId, targetVersionId, environmentKey));
+                                errorList.push(cli_shared_1.Text.version.upgrade.start.error.permissionDeniedError(sourceVersionNumber, targetVersionNumber, environmentKey));
                                 break;
                             case 'APP_NOT_FOUND':
-                                errorList.push(cli_shared_1.Text.version.upgrade.error.inValidVersionNumberSpecified(sourceVersionId, targetVersionId));
+                                errorList.push(cli_shared_1.Text.version.upgrade.start.error.inValidVersionNumberSpecified(sourceVersionNumber, targetVersionNumber));
                                 break;
                             case 'TOO_MANY_APP_ROLLOUTS_RUNNING_FOR_ACCOUNT':
-                                errorList.push(cli_shared_1.Text.version.upgrade.error.tooManyRequestsFromAccount);
+                                errorList.push(cli_shared_1.Text.version.upgrade.start.error.tooManyRequestsFromAccount);
                                 break;
                             case 'APP_ROLLOUTS_UNAVAILABLE':
-                                errorList.push(cli_shared_1.Text.version.upgrade.error.tooManyRequestsGlobally);
+                                errorList.push(cli_shared_1.Text.version.upgrade.start.error.tooManyRequestsGlobally);
                                 break;
                             default:
                                 errorList.push(error.message);
                                 break;
@@ -338,14 +338,171 @@
         if (!result.app.environmentByKey) {
             throw new EnvironmentNotFoundError(environmentKey);
         }
         if (!result.app.environmentByKey.versions?.nodes?.length || !result.app.environmentByKey.versions?.nodes?.[0]) {
-            throw new Error(cli_shared_1.Text.version.upgrade.error.inValidMajorVersionNumberSpecified(majorVersion));
+            throw new Error(cli_shared_1.Text.version.upgrade.start.error.inValidMajorVersionNumberSpecified(majorVersion));
         }
         return {
             id: result.app.environmentByKey.versions?.nodes?.[0]?.id,
             appVersion: result.app.environmentByKey.versions?.nodes?.[0]?.version
         };
     }
+    async getAppVersionRolloutsList(appId, environmentKey) {
+        const query = `
+      query forge_cli_getAppVersionRolloutsList(
+        $appId: ID!,
+        $environmentKey: String!
+      ) {
+        app(id: $appId) {
+          environmentByKey(key: $environmentKey) {
+            id
+            type
+            versions {
+              nodes {
+                version
+                id
+              }
+            }
+            appVersionRollouts {
+              nodes {
+                id
+                appId
+                appEnvironmentId
+                createdAt
+                completedAt
+                status
+                sourceVersionId
+                targetVersionId
+                progress {
+                  completedUpgradeCount
+                  failedUpgradeCount
+                  pendingUpgradeCount
+                }
+              }
+            }
+          }
+        }
+      }
+    `;
+        const output = [];
+        const result = await this.graphqlClient.query(query, {
+            appId,
+            environmentKey
+        });
+        if (!result.app) {
+            throw new MissingAppError();
+        }
+        const environment = result.app.environmentByKey;
+        const versionRollouts = environment?.appVersionRollouts?.nodes;
+        if (!versionRollouts || versionRollouts.length === 0) {
+            return output;
+        }
+        output.push(...versionRollouts.map((node) => {
+            return {
+                id: node?.id,
+                appId: node?.appId,
+                environmentType: environment.type,
+                status: node?.status,
+                createdAt: node?.createdAt.toString(),
+                completedAt: node?.completedAt ? node?.completedAt.toString() : 'In progress',
+                sourceVersionId: environment.versions?.nodes?.find((version) => version?.id === node?.sourceVersionId)
+                    ?.version,
+                targetVersionId: environment.versions?.nodes?.find((version) => version?.id === node?.targetVersionId)
+                    ?.version,
+                completedUpgradeCount: node?.progress.completedUpgradeCount,
+                pendingUpgradeCount: node?.progress.pendingUpgradeCount,
+                failedUpgradeCount: node?.progress.failedUpgradeCount
+            };
+        }));
+        return output;
+    }
+    async getAppVersionRollout(appRolloutId) {
+        const query = `
+    query forge_cli_getAppVersionRollout($appRolloutId: ID!) {
+      ecosystem {
+        appVersionRollout(id: $appRolloutId) {
+          progress {
+            completedUpgradeCount
+            failedUpgradeCount
+            pendingUpgradeCount
+          }
+          sourceVersionId
+          targetVersionId
+          status
+          id
+          appId
+          completedAt
+        }
+      }
+    }`;
+        const result = await this.graphqlClient.query(query, {
+            appRolloutId
+        });
+        if (!result?.ecosystem?.appVersionRollout?.id) {
+            throw new Error(cli_shared_1.Text.version.upgrade.cancel.error.inValidRolloutIdSpecified);
+        }
+        const appVersionRollout = result.ecosystem.appVersionRollout;
+        return {
+            completedUpgradeCount: appVersionRollout.progress.completedUpgradeCount,
+            failedUpgradeCount: appVersionRollout.progress.failedUpgradeCount,
+            pendingUpgradeCount: appVersionRollout.progress.pendingUpgradeCount,
+            appId: appVersionRollout.appId,
+            id: appVersionRollout.id,
+            sourceVersionId: appVersionRollout.sourceVersionId,
+            targetVersionId: appVersionRollout.targetVersionId,
+            status: appVersionRollout.status
+        };
+    }
+    async cancelAppVersionUpgradeRollout(appRolloutId, environmentKey) {
+        const query = `
+      mutation forge_cli_cancelAppVersionUpgradeRollout($input: CancelAppVersionRolloutInput!) {
+        ecosystem {
+          cancelAppVersionRollout(input: $input) {
+            success
+            errors {
+              extensions {
+                errorType
+                statusCode
+              }
+              message
+            }
+          }
+        }
+      }
+    `;
+        const variables = {
+            input: {
+                id: appRolloutId
+            }
+        };
+        const { response: { ecosystem: { cancelAppVersionRollout } }, requestId } = await this.graphqlClient.mutate(query, variables);
+        if (!cancelAppVersionRollout) {
+            throw new cli_shared_1.GraphQlMutationError(`Unable to get a response (requestId: ${requestId || 'unknown'})`, { requestId });
+        }
+        const { success, errors } = cancelAppVersionRollout;
+        if (!success && errors && errors.length > 0) {
+            const errorList = [];
+            errors.forEach((error) => {
+                if (error?.extensions?.errorType && error.message) {
+                    switch (error.extensions.errorType) {
+                        case 'PermissionDeniedError':
+                            errorList.push(cli_shared_1.Text.version.upgrade.cancel.error.permissionDeniedError(environmentKey));
+                            break;
+                        case 'APP_ROLLOUT_NOT_RUNNING':
+                            errorList.push(cli_shared_1.Text.version.upgrade.cancel.error.noUpdateInProgress(environmentKey));
+                            break;
+                        default:
+                            errorList.push(error.message);
+                            break;
+                    }
+                }
+                else {
+                    errorList.push(error?.message ? error.message : '');
+                }
+            });
+            throw new Error(errorList.join(`\n`));
+        }
+        return true;
+    }
 }
 exports.AppVersionDetailsClient = AppVersionDetailsClient;
 //# sourceMappingURL=graphql-client.js.map
\ No newline at end of file