npm package diff

Package: @forge/lint

Versions: 5.9.1-next.8 - 5.9.1-next.9

File: package/out/lint/linters/permission-linter/permission-linter.js

Index: package/out/lint/linters/permission-linter/permission-linter.js
===================================================================
--- package/out/lint/linters/permission-linter/permission-linter.js
+++ package/out/lint/linters/permission-linter/permission-linter.js
@@ -1,7 +1,7 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.PermissionLinter = exports.fixMissingPermissions = exports.findMissingPermissions = exports.NON_FWD_SLASH_REGEX = void 0;
+exports.PermissionLinter = exports.fixMissingPermissions = exports.deprecatedEgressPermissions = exports.findMissingPermissions = exports.NON_FWD_SLASH_REGEX = void 0;
 const tslib_1 = require("tslib");
 const cli_shared_1 = require("@forge/cli-shared");
 const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
 const base_linter_1 = tslib_1.__importDefault(require("../../base-linter"));
@@ -31,14 +31,52 @@
     });
     return missingPermissions;
 };
 exports.findMissingPermissions = findMissingPermissions;
+const deprecatedEgressPermissions = (warnings, state) => {
+    const hasDeprecated = warnings.some((warning) => warning.metadata?.hasDeprecatedEgressPermissions);
+    if (hasDeprecated && state)
+        state.warningsFixed++;
+    return hasDeprecated;
+};
+exports.deprecatedEgressPermissions = deprecatedEgressPermissions;
+const applyEgressPermissionsMigration = (config) => {
+    const { fetch: originalFetch, ...restExternal } = config.external ?? {};
+    Object.entries(originalFetch || {}).forEach(([key, values]) => {
+        const valuesToOverride = [];
+        values.forEach((egressValue) => {
+            if (typeof egressValue === 'string') {
+                valuesToOverride.push({
+                    address: egressValue
+                });
+            }
+            else {
+                valuesToOverride.push(egressValue);
+            }
+            config.external.fetch[key] = valuesToOverride;
+        });
+    });
+    Object.entries(restExternal || {}).forEach(([key, values]) => {
+        const valuesToOverride = [];
+        values.forEach((egressValue) => {
+            if (typeof egressValue === 'string') {
+                valuesToOverride.push({
+                    address: egressValue
+                });
+            }
+            else {
+                valuesToOverride.push(egressValue);
+            }
+            config.external[key] = valuesToOverride;
+        });
+    });
+};
 const fixMissingPermissions = async (errors, warnings, state) => {
     const missingScopes = (0, exports.findMissingPermissions)(errors, warnings, 'missingPermission', state);
     const missingExternalFetchBackend = (0, exports.findMissingPermissions)(errors, warnings, 'missingExternalFetchPermission', state);
     const missingContentStyle = (0, exports.findMissingPermissions)(errors, warnings, 'missingContentStylePermission', state);
     const missingExternalImage = (0, exports.findMissingPermissions)(errors, warnings, 'missingExternalImagesPermission', state);
-    const hasDeprecatedEgressPermissions = errors.some((error) => error.metadata?.hasDeprecatedEgressPermissions) ||
+    const hasDeprecatedEgressPermissions = (0, exports.deprecatedEgressPermissions)(warnings, state) ||
         missingExternalImage.size > 0 ||
         missingExternalFetchBackend.size > 0;
     const currentPermissions = (await state.configFile.readConfig())?.permissions ?? {};
     const currentScopes = (0, utils_1.getAllScopeKeys)(currentPermissions?.scopes ?? []);
@@ -77,37 +115,9 @@
             styles: arrayMissingContentStyles
         };
     }
     if (hasDeprecatedEgressPermissions) {
-        const { fetch: originalFetch, ...restExternal } = config.external ?? {};
-        Object.entries(originalFetch || {}).forEach(([key, values]) => {
-            const valuesToOverride = [];
-            values.forEach((egressValue) => {
-                if (typeof egressValue === 'string') {
-                    valuesToOverride.push({
-                        address: egressValue
-                    });
-                }
-                else {
-                    valuesToOverride.push(egressValue);
-                }
-                config.external.fetch[key] = valuesToOverride;
-            });
-        });
-        Object.entries(restExternal || {}).forEach(([key, values]) => {
-            const valuesToOverride = [];
-            values.forEach((egressValue) => {
-                if (typeof egressValue === 'string') {
-                    valuesToOverride.push({
-                        address: egressValue
-                    });
-                }
-                else {
-                    valuesToOverride.push(egressValue);
-                }
-                config.external[key] = valuesToOverride;
-            });
-        });
+        applyEgressPermissionsMigration(config);
     }
     await state.configFile.writeToConfigFile('permissions', config);
     return state;
 };