@forge/lint

5.15.0-next.85.15.0-next.9
out/lint/linters/permission-linter/verifiers/notification-api-verifier.js
+out/lint/linters/permission-linter/verifiers/notification-api-verifier.jsNew file
+44
Index: package/out/lint/linters/permission-linter/verifiers/notification-api-verifier.js
===================================================================
--- package/out/lint/linters/permission-linter/verifiers/notification-api-verifier.js
+++ package/out/lint/linters/permission-linter/verifiers/notification-api-verifier.js
@@ -0,0 +1,44 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NotificationVerifier = void 0;
+const linter_interface_1 = require("../../../linter-interface");
+const verifier_interface_1 = require("../../verifier-interface");
+const text_1 = require("../../../text");
+const utils_1 = require("../../utils");
+const JIRA_SCOPE = 'send:app-notification:jira';
+const CONFLUENCE_SCOPE = 'send:app-notification:confluence';
+class NotificationVerifier extends verifier_interface_1.BaseLintIssueVerifier {
+    getLintClass() {
+        return linter_interface_1.LintClass.Error;
+    }
+    async process(apiCalls) {
+        const rules = [];
+        const declaredScopes = (0, utils_1.getAllScopeKeys)(this.manifest.permissions?.scopes ?? []);
+        apiCalls.forEach((apiCall) => {
+            const { line, column } = apiCall;
+            if (!declaredScopes.includes(JIRA_SCOPE) && !declaredScopes.includes(CONFLUENCE_SCOPE)) {
+                rules.push({
+                    class: this.getLintClass(),
+                    message: text_1.messages.verifiers.notification.message(JIRA_SCOPE, 'Jira'),
+                    reference: text_1.messages.verifiers.notification.reference,
+                    line,
+                    column,
+                    metadata: {
+                        missingPermission: JIRA_SCOPE
+                    }
+                }, {
+                    class: this.getLintClass(),
+                    message: text_1.messages.verifiers.notification.message(CONFLUENCE_SCOPE, 'Confluence'),
+                    reference: text_1.messages.verifiers.notification.reference,
+                    line,
+                    column,
+                    metadata: {
+                        missingPermission: CONFLUENCE_SCOPE
+                    }
+                });
+            }
+        });
+        return rules;
+    }
+}
+exports.NotificationVerifier = NotificationVerifier;