npm package diff

Package: @forge/api

Versions: 6.4.0-next.1 - 6.4.0-next.2

Modified: package/out/api/permissions.js

Index: package/out/api/permissions.js
===================================================================
--- package/out/api/permissions.js
+++ package/out/api/permissions.js
@@ -47,8 +47,37 @@
         return !isUrlAlreadyGranted;
     });
     return missingUrls;
 };
+const VALID_REQUIREMENT_KEYS = ['scopes', 'external'];
+const VALID_EXTERNAL_TYPES = [
+    'fetch',
+    'fonts',
+    'frames',
+    'images',
+    'media',
+    'scripts',
+    'styles'
+];
+const VALID_FETCH_TYPES = ['backend', 'client'];
+const validateKeys = (obj, validKeys) => {
+    const validKeysSet = new Set(validKeys);
+    const providedKeys = Object.keys(obj);
+    const invalidKeys = providedKeys.filter((key) => !validKeysSet.has(key));
+    if (invalidKeys.length > 0) {
+        throw new Error(`Invalid permission key(s): ${invalidKeys.join(', ')}. ` +
+            `Visit https://go.atlassian.com/forge-permissions for more information.`);
+    }
+};
+const validatePermissionRequirements = (requirements) => {
+    validateKeys(requirements, VALID_REQUIREMENT_KEYS);
+    if (requirements.external) {
+        validateKeys(requirements.external, VALID_EXTERNAL_TYPES);
+        if (requirements.external.fetch) {
+            validateKeys(requirements.external.fetch, VALID_FETCH_TYPES);
+        }
+    }
+};
 const getMissingFetchPermissions = (requiredFetch, currentlyGrantedFetch) => {
     if (!requiredFetch) {
         return undefined;
     }
@@ -101,8 +130,9 @@
     const arePermissionsAvailable = !!(currentlyGrantedPermissions && typeof currentlyGrantedPermissions === 'object');
     if (!arePermissionsAvailable) {
         throw new errors_1.ApiNotReadyError('This feature is not available yet');
     }
+    validatePermissionRequirements(requirements);
     const missingPermissions = {};
     let hasMissingPermissions = false;
     const missingScopes = getMissingScopes(requirements.scopes, currentlyGrantedPermissions.scopes);
     if (missingScopes) {

Modified: package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/api",
-  "version": "6.4.0-next.1",
+  "version": "6.4.0-next.2",
   "description": "Forge API methods",
   "author": "Atlassian",
   "license": "SEE LICENSE IN LICENSE.txt",
   "main": "out/index.js",
@@ -27,9 +27,9 @@
   "dependencies": {
     "@forge/auth": "0.0.9",
     "@forge/egress": "2.3.0-next.0",
     "@forge/i18n": "0.0.7",
-    "@forge/manifest": "^11.1.0",
+    "@forge/manifest": "^11.1.1-next.0",
     "@forge/storage": "2.0.3",
     "headers-utils": "^3.0.2",
     "minimatch": "^9.0.5"
   },

Modified: package/out/api/permissions.d.ts.map

Index: package/out/api/permissions.d.ts.map
===================================================================
--- package/out/api/permissions.d.ts.map
+++ package/out/api/permissions.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/api/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,sBAAsB,EAAE,kBAAkB,EAAgB,MAAM,WAAW,CAAC;AAGpG,OAAO,EAAU,QAAQ,EAAS,MAAM,iBAAiB,CAAC;AAM1D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQ/F;AA8BD,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAKvC,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAOnC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAqID,eAAO,MAAM,aAAa,iBAAkB,QAAQ,sBAAsB,CAAC,KAAG,gBAE7E,CAAC;AA8DF,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,OAKxC,CAAC;AAyBF,eAAO,MAAM,YAAY,SAAU,SAAS,GAAG,QAAQ,OAAO,MAAM,KAAG,OAKtE,CAAC;AAyBF,eAAO,MAAM,eAAe,SAAU,QAAQ,MAAM,QAAQ,EAAE,OAAO,CAAC,OAAO,MAAM,KAAG,OAKrF,CAAC;AAKF,eAAO,MAAM,WAAW;kCAtIoB,QAAQ,sBAAsB,CAAC,KAAG,gBAAgB;sBAgE9D,MAAM,KAAG,OAAO;yBA8Bb,SAAS,GAAG,QAAQ,OAAO,MAAM,KAAG,OAAO;4BA8BxC,QAAQ,MAAM,QAAQ,EAAE,OAAO,CAAC,OAAO,MAAM,KAAG,OAAO;CAe5F,CAAC"}
\ No newline at end of file
+{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/api/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,sBAAsB,EAAE,kBAAkB,EAAgB,MAAM,WAAW,CAAC;AAGpG,OAAO,EAAU,QAAQ,EAAS,MAAM,iBAAiB,CAAC;AAM1D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQ/F;AA8BD,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAKvC,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAOnC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAsMD,eAAO,MAAM,aAAa,iBAAkB,QAAQ,sBAAsB,CAAC,KAAG,gBAE7E,CAAC;AAiEF,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,OAKxC,CAAC;AAyBF,eAAO,MAAM,YAAY,SAAU,SAAS,GAAG,QAAQ,OAAO,MAAM,KAAG,OAKtE,CAAC;AAyBF,eAAO,MAAM,eAAe,SAAU,QAAQ,MAAM,QAAQ,EAAE,OAAO,CAAC,OAAO,MAAM,KAAG,OAKrF,CAAC;AAKF,eAAO,MAAM,WAAW;kCAzIoB,QAAQ,sBAAsB,CAAC,KAAG,gBAAgB;sBAmE9D,MAAM,KAAG,OAAO;yBA8Bb,SAAS,GAAG,QAAQ,OAAO,MAAM,KAAG,OAAO;4BA8BxC,QAAQ,MAAM,QAAQ,EAAE,OAAO,CAAC,OAAO,MAAM,KAAG,OAAO;CAe5F,CAAC"}
\ No newline at end of file

Modified: package/CHANGELOG.md

Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,6 +1,14 @@
 # @forge/api
 
+## 6.4.0-next.2
+
+### Patch Changes
+
+- Updated dependencies [29741cf]
+- Updated dependencies [354f5d1]
+  - @forge/[email protected]
+
 ## 6.4.0-next.1
 
 ### Minor Changes