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;