npm package diff

Package: @forge/manifest

Versions: 8.9.0-next.12-experimental-99739ec - 9.0.0-next.13

File: package/out/validators/remote-auth-scopes-validator.js

Index: package/out/validators/remote-auth-scopes-validator.js
===================================================================
--- package/out/validators/remote-auth-scopes-validator.js
+++ package/out/validators/remote-auth-scopes-validator.js
@@ -0,0 +1,47 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.RemoteAuthScopesValidator = void 0;
+const types_1 = require("../types");
+const text_1 = require("../text");
+const utils_1 = require("../utils");
+class RemoteAuthScopesValidator {
+    async validate(manifest) {
+        if (!manifest?.typedContent?.remotes && !manifest?.typedContent?.modules?.endpoint) {
+            return {
+                success: true,
+                manifestObject: manifest
+            };
+        }
+        const remotes = manifest.typedContent.remotes;
+        const endpoints = manifest.typedContent.modules?.endpoint ?? [];
+        const hasAppUserToken = endpoints.some((endpoint) => this.appUserTokenEnabled(endpoint.auth)) ||
+            remotes?.some((remote) => this.appUserTokenEnabled(remote.auth));
+        const hasAppSystemToken = endpoints.some((endpoint) => this.appSystemTokenEnabled(endpoint.auth)) ||
+            remotes?.some((remote) => this.appSystemTokenEnabled(remote.auth));
+        if (hasAppUserToken || hasAppSystemToken) {
+            const scopes = manifest.typedContent.permissions?.scopes ?? [];
+            const filteredScopes = scopes.filter((scope) => !types_1.REMOTE_AUTH_SCOPES.includes(scope));
+            if (filteredScopes.length === 0) {
+                return {
+                    success: false,
+                    manifestObject: manifest,
+                    errors: [
+                        {
+                            message: text_1.errors.app.remotes.missingAppScopesForRemoteAuth(),
+                            reference: text_1.References.App,
+                            level: 'error',
+                            ...(0, utils_1.findPosition)('scopes', manifest.yamlContentByLine)
+                        }
+                    ]
+                };
+            }
+        }
+        return {
+            success: true,
+            manifestObject: manifest
+        };
+    }
+    appUserTokenEnabled = (auth) => auth?.appUserToken?.enabled === true;
+    appSystemTokenEnabled = (auth) => auth?.appSystemToken?.enabled === true;
+}
+exports.RemoteAuthScopesValidator = RemoteAuthScopesValidator;