npm package diff
Package: @forge/egress
Versions: 1.2.13 - 1.3.0-next.0
Modified: package/out/egress/egress-filtering-service.js
Index: package/out/egress/egress-filtering-service.js
===================================================================
--- package/out/egress/egress-filtering-service.js
+++ package/out/egress/egress-filtering-service.js
@@ -3,8 +3,11 @@
exports.EgressFilteringService = void 0;
const minimatch_1 = require("minimatch");
const url_parser_1 = require("./url-parser");
class EgressFilteringService {
+ URLs;
+ wildcardDomains;
+ allowsEverything;
constructor(allowList) {
this.URLs = allowList.filter((domainOrURL) => !domainOrURL.startsWith('*')).map((url) => this.parseUrl(url));
this.wildcardDomains = allowList
.filter((domainOrURL) => domainOrURL !== '*')
Modified: package/out/egress/url-parser.js
Index: package/out/egress/url-parser.js
===================================================================
--- package/out/egress/url-parser.js
+++ package/out/egress/url-parser.js
@@ -1,10 +1,9 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseUrl = void 0;
function parseUrl(url) {
- var _a, _b;
- const protocol = (_b = (_a = url.match(/^(.*?:)/)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : 'https:';
+ const protocol = url.match(/^(.*?:)/)?.[0] ?? 'https:';
const hostname = url
.replace(protocol, '')
.replace(/^\/*/, '')
.split(/[\?\/]/)[0];
Modified: 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;
Modified: package/package.json
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
{
"name": "@forge/egress",
- "version": "1.2.13",
+ "version": "1.3.0-next.0",
"description": "Helpers and utils for egress implementation in Forge apps",
"main": "out/index.js",
"author": "Atlassian",
"license": "UNLICENSED",
Modified: package/out/egress/utils.d.ts.map
Index: package/out/egress/utils.d.ts.map
===================================================================
--- package/out/egress/utils.d.ts.map
+++ package/out/egress/utils.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/egress/utils.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,qCAAqC,oBAAqB,MAAM,EAAE,KAAG,MAAM,MAAM,CA6BtF,CAAC;AAEF,OAAO,EAAE,qCAAqC,EAAE,CAAC"}
\ No newline at end of file
+{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/egress/utils.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,qCAAqC,oBAAqB,MAAM,EAAE,KAAG,MAAM,MAAM,CA6BtF,CAAC;AAEF,oBAAY,UAAU;IACpB,gBAAgB,uBAAuB;IACvC,eAAe,sBAAsB;IACrC,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,oBAAY,cAAc;IACxB,SAAS,cAAc;CACxB;AAED,oBAAY,iBAAiB,GAAG;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,oBAAY,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;AAEzG,UAAU,eAAe;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,QAAA,MAAM,yBAAyB,UAAW;IACxC,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B,KAAG,2BAA2B,EAqB9B,CAAC;AAEF,OAAO,EAAE,qCAAqC,EAAE,yBAAyB,EAAE,CAAC"}
\ No newline at end of file
Modified: package/CHANGELOG.md
Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,6 +1,12 @@
# @forge/egress
+## 1.3.0-next.0
+
+### Minor Changes
+
+- 2e198f0: Adding new logic to retrieve egress permissions from a list of duplicates and with override filters
+
## 1.2.13
### Patch Changes
Modified: package/out/egress/utils.d.ts
Index: package/out/egress/utils.d.ts
===================================================================
--- package/out/egress/utils.d.ts
+++ package/out/egress/utils.d.ts
@@ -1,3 +1,31 @@
declare const sortAndGroupEgressPermissionsByDomain: (egressAddresses: string[]) => Array<string>;
-export { sortAndGroupEgressPermissionsByDomain };
+export declare enum EgressType {
+ FetchBackendSide = "FETCH_BACKEND_SIDE",
+ FetchClientSide = "FETCH_CLIENT_SIDE",
+ Fonts = "FONTS",
+ Frames = "FRAMES",
+ Images = "IMAGES",
+ Media = "MEDIA",
+ Navigation = "NAVIGATION",
+ Scripts = "SCRIPTS",
+ Styles = "STYLES"
+}
+export declare enum EgressCategory {
+ ANALYTICS = "analytics"
+}
+export declare type EgressPermissions = {
+ type: EgressType;
+ addresses: string[];
+ category?: EgressCategory;
+ inScopeEUD?: boolean;
+};
+export declare type EgressPermissionsSimplified = Omit<EgressPermissions, 'inScopeEUD' | 'enabled' | 'category'>;
+interface ConfigOverrides {
+ ALLOW_EGRESS_ANALYTICS?: boolean;
+}
+declare const getEgressesBasedOnToggles: (input: {
+ overrides: ConfigOverrides;
+ egress: EgressPermissions[];
+}) => EgressPermissionsSimplified[];
+export { sortAndGroupEgressPermissionsByDomain, getEgressesBasedOnToggles };
//# sourceMappingURL=utils.d.ts.map
\ No newline at end of file