npm package diff

Package: @forge/cli

Versions: 10.13.4 - 10.13.5-next.0-experimental-4d5d98e

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
@@ -0,0 +1,144 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.AppVersionDetailsClient = exports.MissingAppVersionError = exports.EnvironmentNotFoundError = exports.MissingAppError = void 0;
+const cli_shared_1 = require("@forge/cli-shared");
+class MissingAppError extends cli_shared_1.UserError {
+}
+exports.MissingAppError = MissingAppError;
+class EnvironmentNotFoundError extends cli_shared_1.UserError {
+    constructor(environmentKey) {
+        super(cli_shared_1.Text.env.error.envNotExist(environmentKey));
+    }
+}
+exports.EnvironmentNotFoundError = EnvironmentNotFoundError;
+class MissingAppVersionError extends Error {
+}
+exports.MissingAppVersionError = MissingAppVersionError;
+class AppVersionDetailsClient {
+    graphqlClient;
+    constructor(graphqlClient) {
+        this.graphqlClient = graphqlClient;
+    }
+    async getVersionDetails(appId, environmentKey, majorVersion) {
+        const query = `
+      query forge_cli_getApplicationVersionDetails($appId: ID!, $environmentKey: String!, $firstN: Int!, $majorVersion: Int) {
+        app(id: $appId) {
+          environmentByKey(key: $environmentKey) {
+            type
+            versions(first: $firstN, majorVersion: $majorVersion) {
+              nodes {
+                version
+                createdAt
+                isLatest
+                requiresLicense
+                permissions {
+                  scopes {
+                    key
+                  }
+                  egress {
+                    type
+                    addresses
+                  }
+                  securityPolicies {
+                    type
+                    policies
+                  }
+                }
+                extensions {
+                  nodes {
+                    id
+                    key
+                    extensionData
+                  }
+                }
+                storage {
+                  hosted {
+                    classifications
+                    locations
+                  }
+                  remotes {
+                    key
+                    baseUrl
+                    classifications
+                    locations
+                  }
+                }
+                migrationKeys {
+                  jira
+                  confluence
+                }
+              }
+            }
+          }
+        }
+      }
+    `;
+        const result = await this.graphqlClient.query(query, {
+            appId,
+            environmentKey,
+            firstN: 1,
+            majorVersion
+        });
+        if (!result.app) {
+            throw new MissingAppError();
+        }
+        if (!result.app.environmentByKey) {
+            throw new EnvironmentNotFoundError(environmentKey);
+        }
+        if (!result.app.environmentByKey.versions?.nodes?.length || !result.app.environmentByKey.versions?.nodes?.[0]) {
+            throw new MissingAppVersionError();
+        }
+        return {
+            migrationKeys: result.app.environmentByKey.versions?.nodes?.[0]?.migrationKeys,
+            environmentType: result.app.environmentByKey.type,
+            appVersion: result.app.environmentByKey.versions?.nodes?.[0]?.version,
+            deploymentDateTime: new Date(Number.parseInt(result.app.environmentByKey.versions?.nodes?.[0]?.createdAt)),
+            storage: result.app.environmentByKey.versions?.nodes?.[0]?.storage,
+            requiresLicense: result.app.environmentByKey.versions?.nodes?.[0]?.requiresLicense,
+            permissions: result.app.environmentByKey.versions?.nodes?.[0]?.permissions,
+            modules: result.app.environmentByKey.versions?.nodes?.[0]?.extensions?.nodes
+        };
+    }
+    async getVersionList(appId, environmentKey) {
+        const query = `
+      query forge_cli_getApplicationVersionList($appId: ID!, $first: Int, $after: String) {
+        app(id: $appId) {
+          environments {
+            key
+            versions(first: $first, after: $after) {
+              nodes {
+                version
+              }
+              pageInfo {
+                hasNextPage
+                endCursor
+              }
+            }
+          }
+        }
+      }
+    `;
+        const output = [];
+        let cursor = undefined;
+        let hasNext = undefined;
+        do {
+            const result = await this.graphqlClient.query(query, {
+                appId,
+                first: 20,
+                after: cursor
+            });
+            if (!result.app) {
+                throw new MissingAppError();
+            }
+            if (!result.app.environments) {
+                throw new MissingAppVersionError();
+            }
+            const environment = result.app.environments.filter((env) => env.key === environmentKey)[0];
+            cursor = environment?.versions?.pageInfo.endCursor;
+            hasNext = environment?.versions?.pageInfo.hasNextPage;
+            output.push(...(environment?.versions?.nodes?.map((node) => node?.version) || []).filter((item) => Boolean(item)));
+        } while (hasNext && cursor);
+        return output;
+    }
+}
+exports.AppVersionDetailsClient = AppVersionDetailsClient;