@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;