@forge/lint

6.0.0-next.116.0.0-next.12
out/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.js
+out/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.jsNew file
+43
Index: package/out/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.js
===================================================================
--- package/out/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.js
+++ package/out/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.js
@@ -0,0 +1,43 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.AppManagedPermissionsSdkLinter = void 0;
+const manifest_1 = require("@forge/manifest");
+const abstract_linter_1 = require("../../abstract-linter");
+const linter_interface_1 = require("../../linter-interface");
+const text_1 = require("../../text");
+const detect_permission_sensitive_usage_1 = require("./detect-permission-sensitive-usage");
+const detect_permissions_sdk_usage_1 = require("./detect-permissions-sdk-usage");
+const manifest_declarative_permission_handling_1 = require("./manifest-declarative-permission-handling");
+class AppManagedPermissionsSdkLinter extends abstract_linter_1.AbstractLinter {
+    manifest;
+    constructor(manifest, logger) {
+        super(logger);
+        this.manifest = manifest;
+    }
+    async bootstrap() {
+    }
+    async batchExecuteImpl(inputs = []) {
+        if (this.manifest.permissions?.enforcement !== 'app-managed') {
+            return [];
+        }
+        const declaresHandling = (0, manifest_declarative_permission_handling_1.manifestDeclaresDeclarativePermissionHandling)(this.manifest) ||
+            inputs.some(({ ast }) => ast !== null && (0, detect_permissions_sdk_usage_1.doesAstUsePermissionsSdk)(ast));
+        if (declaresHandling) {
+            return [];
+        }
+        const hasPermissionSensitiveUsage = inputs.some(({ ast }) => (0, detect_permission_sensitive_usage_1.doesAstIndicatePermissionSensitiveUsage)(ast));
+        if (!hasPermissionSensitiveUsage) {
+            return [];
+        }
+        const lintResult = new linter_interface_1.LintResult(manifest_1.MANIFEST_FILE);
+        lintResult.add({
+            class: linter_interface_1.LintClass.Warning,
+            message: text_1.messages.verifiers.appManagedPermissionsSdk.message(),
+            reference: text_1.messages.verifiers.appManagedPermissionsSdk.reference,
+            line: 0,
+            column: 0
+        });
+        return [lintResult];
+    }
+}
+exports.AppManagedPermissionsSdkLinter = AppManagedPermissionsSdkLinter;