@forge/api

6.3.06.4.0-next.0
out/api/permissions.js
~out/api/permissions.jsModified
+10−1
Index: package/out/api/permissions.js
===================================================================
--- package/out/api/permissions.js
+++ package/out/api/permissions.js
@@ -3,8 +3,9 @@
 exports.permissions = exports.canLoadResource = exports.canFetchFrom = exports.hasScope = exports.hasPermission = exports.extractUrlString = void 0;
 const runtime_1 = require("./runtime");
 const errors_1 = require("./errors");
 const minimatch_1 = require("minimatch");
+const egress_1 = require("@forge/egress");
 function extractUrlString(url) {
     if (typeof url === 'string') {
         return url;
     }
@@ -13,8 +14,12 @@
     }
     return url.remote;
 }
 exports.extractUrlString = extractUrlString;
+function normalizeUrl(url) {
+    const { protocol, hostname } = (0, egress_1.parseUrl)(url);
+    return `${protocol}//${hostname}`;
+}
 function wrapInSyncMetrics(options, cb) {
     const metrics = (0, runtime_1.__getRuntime)().metrics;
     metrics.counter(options.name, options.tags).incr();
     return cb();
@@ -33,9 +38,13 @@
     return undefined;
 };
 const getMissingUrls = (requiredUrls, currentlyGrantedUrls) => {
     const missingUrls = requiredUrls.filter((requiredUrl) => {
-        const isUrlAlreadyGranted = currentlyGrantedUrls.some((currentGrantedUrl) => (0, minimatch_1.minimatch)(extractUrlString(requiredUrl), extractUrlString(currentGrantedUrl)));
+        const normalizedRequiredUrl = normalizeUrl(extractUrlString(requiredUrl));
+        const isUrlAlreadyGranted = currentlyGrantedUrls.some((currentGrantedUrl) => {
+            const normalizedGrantedUrl = normalizeUrl(extractUrlString(currentGrantedUrl));
+            return (0, minimatch_1.minimatch)(normalizedRequiredUrl, normalizedGrantedUrl);
+        });
         return !isUrlAlreadyGranted;
     });
     return missingUrls;
 };