@forge/cli

12.9.0-next.18-experimental-f76634b12.9.0-next.23
out/service/extensions-service.js
+out/service/extensions-service.jsNew file
+67
Index: package/out/service/extensions-service.js
===================================================================
--- package/out/service/extensions-service.js
+++ package/out/service/extensions-service.js
@@ -0,0 +1,67 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ExtensionsService = exports.DeployedExtensionWebTriggerListError = void 0;
+const cli_shared_1 = require("@forge/cli-shared");
+const ari_1 = require("@forge/util/packages/ari");
+class DeployedExtensionWebTriggerListError extends cli_shared_1.GraphQlMutationError {
+    constructor(requestId) {
+        super(cli_shared_1.Text.webtrigger.error.deployedListError, { requestId });
+    }
+}
+exports.DeployedExtensionWebTriggerListError = DeployedExtensionWebTriggerListError;
+var ExtensionType;
+(function (ExtensionType) {
+    ExtensionType["WEB_TRIGGER"] = "core:webtrigger";
+})(ExtensionType || (ExtensionType = {}));
+class ExtensionsService {
+    getAppConfig;
+    appEnvironmentClient;
+    graphQLClient;
+    installationsClient;
+    constructor(getAppConfig, appEnvironmentClient, graphQLClient, installationsClient) {
+        this.getAppConfig = getAppConfig;
+        this.appEnvironmentClient = appEnvironmentClient;
+        this.graphQLClient = graphQLClient;
+        this.installationsClient = installationsClient;
+    }
+    async getExtensions({ appId, envId, contextId, filterExtensionTypes }) {
+        const query = `
+        query forge_cli_listDeployedWebtriggerExtensionKeys($contextId: ID!, $filter: [ExtensionContextsFilter!]!) {
+          extensionContext(contextId: $contextId) {
+              extensions(filter: $filter) {
+                  key
+              }
+          }
+        }
+        `;
+        const appIdEnvId = `${appId}:${envId}`;
+        const filter = [{ type: 'APP_ID_ENVIRONMENT_ID', value: [appIdEnvId] }];
+        if (filterExtensionTypes) {
+            for (const extType of filterExtensionTypes) {
+                filter.push({ type: 'EXTENSION_TYPE', value: [extType] });
+            }
+        }
+        const variables = {
+            contextId,
+            filter
+        };
+        const { extensionContext, requestId } = await this.graphQLClient.query(query, variables);
+        if (extensionContext === undefined || extensionContext === null) {
+            throw new DeployedExtensionWebTriggerListError(requestId);
+        }
+        return extensionContext.extensions.map((extension) => extension.key);
+    }
+    async getWebtriggerExtensions(installationId) {
+        const { id: appId } = await this.getAppConfig();
+        const { environmentKey, context: contextId } = await this.installationsClient.getInstallation(appId, installationId);
+        const envId = await this.appEnvironmentClient.getAppEnvironmentId(appId, environmentKey);
+        return await this.getExtensions({
+            appId: ari_1.EcosystemAppAri.parse(appId).appId,
+            contextId,
+            envId,
+            filterExtensionTypes: [ExtensionType.WEB_TRIGGER]
+        });
+    }
+}
+exports.ExtensionsService = ExtensionsService;
+//# sourceMappingURL=extensions-service.js.map
\ No newline at end of file