npm package diff

Package: @forge/manifest

Versions: 8.9.0-next.11 - 8.9.0-next.12

Modified: package/out/validators/permissions-validator.js

Index: package/out/validators/permissions-validator.js
===================================================================
--- package/out/validators/permissions-validator.js
+++ package/out/validators/permissions-validator.js
@@ -108,41 +108,55 @@
         }
         const mapping = [
             {
                 element: 'external.fetch.backend',
-                perms: manifest.typedContent.permissions.external?.fetch?.backend?.filter((key) => typeof key === 'string')
+                perms: manifest.typedContent.permissions.external?.fetch?.backend
+                    ?.map((key) => {
+                    if (typeof key === 'object' && 'address' in key) {
+                        return key.address;
+                    }
+                    return key;
+                })
+                    .filter((key) => typeof key === 'string')
             },
             {
                 element: 'external.fetch.client',
-                perms: manifest.typedContent.permissions.external?.fetch?.client?.filter((key) => typeof key === 'string')
+                perms: manifest.typedContent.permissions.external?.fetch?.client
+                    ?.map((key) => {
+                    if (typeof key === 'object' && 'address' in key) {
+                        return key.address;
+                    }
+                    return key;
+                })
+                    .filter((key) => typeof key === 'string')
             },
             {
                 element: 'external.navigation',
-                perms: manifest.typedContent.permissions.external?.navigation
+                perms: manifest.typedContent.permissions.external?.navigation?.map((key) => typeof key === 'object' ? key.address : key)
             },
             {
                 element: 'external.styles',
-                perms: manifest.typedContent.permissions.external?.styles
+                perms: manifest.typedContent.permissions.external?.styles?.map((key) => typeof key === 'object' ? key.address : key)
             },
             {
                 element: 'external.frames',
-                perms: manifest.typedContent.permissions.external?.frames
+                perms: manifest.typedContent.permissions.external?.frames?.map((key) => typeof key === 'object' ? key.address : key)
             },
             {
                 element: 'external.fonts',
-                perms: manifest.typedContent.permissions.external?.fonts
+                perms: manifest.typedContent.permissions.external?.fonts?.map((key) => typeof key === 'object' ? key.address : key)
             },
             {
                 element: 'external.images',
-                perms: manifest.typedContent.permissions.external?.images
+                perms: manifest.typedContent.permissions.external?.images?.map((key) => typeof key === 'object' ? key.address : key)
             },
             {
                 element: 'external.media',
-                perms: manifest.typedContent.permissions.external?.media
+                perms: manifest.typedContent.permissions.external?.media?.map((key) => typeof key === 'object' ? key.address : key)
             },
             {
                 element: 'external.scripts',
-                perms: manifest.typedContent.permissions.external?.scripts
+                perms: manifest.typedContent.permissions.external?.scripts?.map((key) => typeof key === 'object' ? key.address : key)
             }
         ];
         mapping.forEach((item) => this.validateExternalPermissionURLs(errors, item.element, item.perms, manifest));
         const remoteMap = manifest.typedContent.remotes?.reduce((prev, item) => {
@@ -150,15 +164,17 @@
             return prev.set(item.key, baseUrl);
         }, new Map());
         const invalidBackendRemotes = manifest.typedContent.permissions.external?.fetch?.backend
             ?.filter((item) => typeof item === 'object' &&
+            'remote' in item &&
             (!remoteMap || !remoteMap.has(item.remote) || !this.isValidURL(remoteMap.get(item.remote))))
             .map((item) => item.remote);
         if (invalidBackendRemotes?.length) {
             this.addValidationErrors(errors, 'external.fetch.backend', invalidBackendRemotes, manifest);
         }
         const invalidClientRemotes = manifest.typedContent.permissions.external?.fetch?.client
             ?.filter((item) => typeof item === 'object' &&
+            'remote' in item &&
             (!remoteMap || !remoteMap.has(item.remote) || !this.isValidURL(remoteMap.get(item.remote))))
             .map((item) => item.remote);
         if (invalidClientRemotes?.length) {
             this.addValidationErrors(errors, 'external.fetch.client', invalidClientRemotes, manifest);

Modified: package/out/validators/providers-validator.js

Index: package/out/validators/providers-validator.js
===================================================================
--- package/out/validators/providers-validator.js
+++ package/out/validators/providers-validator.js
@@ -29,9 +29,17 @@
                 }
                 const missingEgressPermission = provider.remotes?.find((key) => {
                     const remote = remotes?.find((item) => item.key === key);
                     if (remote) {
-                        const egressPermission = permissions?.external?.fetch?.backend?.find((item) => typeof item === 'string' ? item === remote.baseUrl : item.remote === remote.key);
+                        const egressPermission = permissions?.external?.fetch?.backend?.find((item) => {
+                            if (typeof item === 'string') {
+                                return item === remote.baseUrl;
+                            }
+                            if ('remote' in item) {
+                                return item.remote === remote.key;
+                            }
+                            return item.address === remote.baseUrl;
+                        });
                         return !egressPermission;
                     }
                     return false;
                 });

Modified: package/out/schema/manifest-schema.json

Large diffs are not rendered by default.

Modified: package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/manifest",
-  "version": "8.9.0-next.11",
+  "version": "8.9.0-next.12",
   "description": "Definitions and validations of the Forge manifest",
   "main": "out/index.js",
   "scripts": {
     "build": "yarn run compile",

Modified: package/out/validators/permissions-validator.d.ts.map

Index: package/out/validators/permissions-validator.d.ts.map
===================================================================
--- package/out/validators/permissions-validator.d.ts.map
+++ package/out/validators/permissions-validator.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"permissions-validator.d.ts","sourceRoot":"","sources":["../../src/validators/permissions-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGrF,OAAO,EAAE,cAAc,EAAU,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAM3D,qBAAa,oBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEzF,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,8BAA8B;IA6ChC,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;CAoGrD"}
\ No newline at end of file
+{"version":3,"file":"permissions-validator.d.ts","sourceRoot":"","sources":["../../src/validators/permissions-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGrF,OAAO,EAAE,cAAc,EAAU,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAM3D,qBAAa,oBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEzF,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,8BAA8B;IA6ChC,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;CA8HrD"}
\ No newline at end of file

Modified: package/out/validators/providers-validator.d.ts.map

Index: package/out/validators/providers-validator.d.ts.map
===================================================================
--- package/out/validators/providers-validator.d.ts.map
+++ package/out/validators/providers-validator.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"providers-validator.d.ts","sourceRoot":"","sources":["../../src/validators/providers-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGrF,OAAO,KAAK,EAGV,cAAc,EAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,qBAAa,kBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEnF,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IA+EpD,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,+BAA+B;IAkBvC,OAAO,CAAC,iBAAiB;CAoC1B"}
\ No newline at end of file
+{"version":3,"file":"providers-validator.d.ts","sourceRoot":"","sources":["../../src/validators/providers-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGrF,OAAO,KAAK,EAGV,cAAc,EAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,qBAAa,kBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEnF,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAqFpD,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,+BAA+B;IAkBvC,OAAO,CAAC,iBAAiB;CAoC1B"}
\ 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/manifest
 
+## 8.9.0-next.12
+
+### Minor Changes
+
+- 8c34ca3: Changed manifest to allow egress objects to be a list of string, egress objects containing at least the 'address' field, or a remote reference
+
 ## 8.9.0-next.11
 
 ### Patch Changes

Modified: package/out/schema/manifest.d.ts

Large diffs are not rendered by default.