npm package diff

Package: @forge/manifest

Versions: 10.2.0 - 10.2.1-next.0

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
@@ -1,15 +1,29 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.PermissionsValidator = void 0;
+exports.PermissionsValidator = exports.PROTOCOL_BLOCKLIST = void 0;
 const tslib_1 = require("tslib");
 const utils_1 = require("../utils");
 const text_1 = require("../text");
 const egress_types_1 = require("../types/egress-types");
 const url_1 = require("url");
 const shipyard_scopes_json_1 = tslib_1.__importDefault(require("../scopes/shipyard-scopes.json"));
 const deprecated_shipyard_scopes_json_1 = tslib_1.__importDefault(require("../scopes/deprecated-shipyard-scopes.json"));
 const scopes_1 = require("../utils/scopes");
+exports.PROTOCOL_BLOCKLIST = [
+    'javascript:',
+    'data:',
+    'vbscript:',
+    'view-source:',
+    'resource:',
+    'about:',
+    'chrome:',
+    'livescript:',
+    'mocha:',
+    'file:',
+    'mhtml:',
+    'smb:'
+];
 class PermissionsValidator {
     isValidURL(inputURL) {
         const protocolRegex = /^(.*?:\/\/)/;
         const validURI = /^(\*\.)?[.a-zA-Z0-9_\-\/:~#%?=&]+$/;
@@ -20,8 +34,14 @@
         }
         if (inputURL === '*') {
             return true;
         }
+        const customURLSchemeRegex = /^[a-zA-Z]+:(\\\\)?/;
+        if (customURLSchemeRegex.test(inputURL) &&
+            ![...exports.PROTOCOL_BLOCKLIST, 'http'].some((protocol) => inputURL.startsWith(protocol)) &&
+            !allowedProtocols.some((protocol) => inputURL.startsWith(protocol))) {
+            return true;
+        }
         if (!inputURL.includes('.') || inputURL.includes(' ')) {
             return false;
         }
         try {

Modified: package/out/validators/modules-validators/confluence/validateMacroAutoConvert.js

Index: package/out/validators/modules-validators/confluence/validateMacroAutoConvert.js
===================================================================
--- package/out/validators/modules-validators/confluence/validateMacroAutoConvert.js
+++ package/out/validators/modules-validators/confluence/validateMacroAutoConvert.js
@@ -2,9 +2,9 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.validateMacroAutoConvert = void 0;
 const text_1 = require("../../../text");
 const utils_1 = require("../../../utils");
-const VALID_MATCHER_PATTERN = new RegExp(/^(?=.{1,1024}$)https?:\/\/(?:[a-zA-Z0-9-\*]+\.)*[a-zA-Z0-9-\*]+(?:\.[a-zA-Z\*]{1,})?(?:\/.*)?$/);
+const VALID_MATCHER_PATTERN = new RegExp(/^(?=.{1,1024}$)[a-zA-Z]+:(\/\/)?(\\\\)?(?:[a-zA-Z0-9-\*]+[\.:])*[a-zA-Z0-9-\*]+(?:\.:[a-zA-Z\*]{1,})?(?:\/.*)?$/);
 const errorMessages = text_1.errors.modules.confluence.autoConvert;
 const mapToAutoConvertError = (validationErrors, moduleKey) => validationErrors.map((message) => ({ moduleKey, message }));
 const validateEmpty = (matchers, moduleKey) => {
     const validationErrors = [];

Modified: package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/manifest",
-  "version": "10.2.0",
+  "version": "10.2.1-next.0",
   "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;AAO3D,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;CA+JrD"}
\ 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;AAO3D,eAAO,MAAM,kBAAkB,UAa9B,CAAC;AAEF,qBAAa,oBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEzF,OAAO,CAAC,UAAU;IAwClB,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;CA+JrD"}
\ 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
 
+## 10.2.1-next.0
+
+### Patch Changes
+
+- 10c0bc6: Add egress support for custom URL schemes. Allow custom custom URL schemes as autoconvert patterns.
+
 ## 10.2.0
 
 ### Minor Changes

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

Index: package/out/validators/permissions-validator.d.ts
===================================================================
--- package/out/validators/permissions-validator.d.ts
+++ package/out/validators/permissions-validator.d.ts
@@ -1,7 +1,8 @@
 import { ManifestObject, ManifestValidationResult } from '../types';
 import { ManifestSchema } from '../schema/manifest';
 import { ValidatorInterface } from './validator-interface';
+export declare const PROTOCOL_BLOCKLIST: string[];
 export declare class PermissionsValidator implements ValidatorInterface<ManifestObject<ManifestSchema> | undefined, ManifestSchema> {
     private isValidURL;
     private isValidHash;
     private addValidationErrors;