npm package diff

Package: @forge/egress

Versions: 1.2.13 - 1.3.0-next.0

File: package/out/egress/utils.js

Index: package/out/egress/utils.js
===================================================================
--- package/out/egress/utils.js
+++ package/out/egress/utils.js
@@ -1,11 +1,11 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.sortAndGroupEgressPermissionsByDomain = void 0;
+exports.getEgressesBasedOnToggles = exports.sortAndGroupEgressPermissionsByDomain = exports.EgressCategory = exports.EgressType = void 0;
 const minimatch_1 = require("minimatch");
 const url_parser_1 = require("./url-parser");
 const sortAndGroupEgressPermissionsByDomain = (egressAddresses) => {
-    if ((egressAddresses === null || egressAddresses === void 0 ? void 0 : egressAddresses.length) === 0) {
+    if (egressAddresses?.length === 0) {
         return [];
     }
     const protocolRegex = /^(.*?:\/\/)/;
     const domains = new Set();
@@ -28,4 +28,40 @@
         return grouped;
     }, []);
 };
 exports.sortAndGroupEgressPermissionsByDomain = sortAndGroupEgressPermissionsByDomain;
+var EgressType;
+(function (EgressType) {
+    EgressType["FetchBackendSide"] = "FETCH_BACKEND_SIDE";
+    EgressType["FetchClientSide"] = "FETCH_CLIENT_SIDE";
+    EgressType["Fonts"] = "FONTS";
+    EgressType["Frames"] = "FRAMES";
+    EgressType["Images"] = "IMAGES";
+    EgressType["Media"] = "MEDIA";
+    EgressType["Navigation"] = "NAVIGATION";
+    EgressType["Scripts"] = "SCRIPTS";
+    EgressType["Styles"] = "STYLES";
+})(EgressType = exports.EgressType || (exports.EgressType = {}));
+var EgressCategory;
+(function (EgressCategory) {
+    EgressCategory["ANALYTICS"] = "analytics";
+})(EgressCategory = exports.EgressCategory || (exports.EgressCategory = {}));
+const getEgressesBasedOnToggles = (input) => {
+    const filteredEgresses = input.egress.filter((egress) => {
+        if (egress.category === EgressCategory.ANALYTICS) {
+            return input.overrides.ALLOW_EGRESS_ANALYTICS !== false;
+        }
+        return true;
+    });
+    const egressByType = new Map();
+    for (const egress of filteredEgresses) {
+        if (!egressByType.has(egress.type)) {
+            egressByType.set(egress.type, egress.addresses);
+        }
+        egressByType.set(egress.type, [...egressByType.get(egress.type), ...egress.addresses]);
+    }
+    return [...egressByType.entries()].map(([type, egresses]) => ({
+        type,
+        addresses: [...new Set(egresses)]
+    }));
+};
+exports.getEgressesBasedOnToggles = getEgressesBasedOnToggles;