@forge/lint

6.0.0-next.116.0.0-next.12
out/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.js
+out/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.jsNew file
+32
Index: package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.js
===================================================================
--- package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.js
+++ package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.js
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.doesAstIndicatePermissionSensitiveUsage = void 0;
+const visitors_1 = require("../permission-linter/visitors");
+const PERMISSION_SENSITIVE_VISITORS = [
+    new visitors_1.ProductNodeVisitor(),
+    new visitors_1.ExternalApiCallVisitor(),
+    new visitors_1.StorageAPINodeVisitor(),
+    new visitors_1.UIHookNodeVisitor(),
+    new visitors_1.NotificationAPINodeVisitor(),
+    new visitors_1.ImageUrlVisitor()
+];
+const doesAstIndicatePermissionSensitiveUsage = (ast) => {
+    if (!ast?.parsed) {
+        return false;
+    }
+    let found = false;
+    ast.traverse({
+        enter: (node, parent) => {
+            if (found) {
+                return;
+            }
+            for (const visitor of PERMISSION_SENSITIVE_VISITORS) {
+                visitor.visit(node, parent, (_match) => {
+                    found = true;
+                });
+            }
+        }
+    });
+    return found;
+};
+exports.doesAstIndicatePermissionSensitiveUsage = doesAstIndicatePermissionSensitiveUsage;