UNPKG

@tableau/taco-toolkit

Version:
63 lines 4.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.isLocalhost = exports.ProtocolRule = exports.HostnameRule = void 0; var ipaddr_js_1 = __importDefault(require("ipaddr.js")); var HostnameRule = /** @class */ (function () { function HostnameRule(config) { this.allowLocalhost = config.allowLocalhost; } HostnameRule.prototype.test = function (url) { var hostname = url.hostname; if (!this.allowLocalhost && isLocalhost(hostname)) { return { success: false, reason: 'localhost access is disallowed', }; } return { success: true, }; }; return HostnameRule; }()); exports.HostnameRule = HostnameRule; var ProtocolRule = /** @class */ (function () { function ProtocolRule(protocols) { this.protocols = new Set(protocols.map(function (protocol) { return "".concat(protocol, ":"); })); } ProtocolRule.prototype.test = function (url) { var protocol = url.protocol; if (!this.protocols.has(protocol)) { return { success: false, reason: "Invalid or disallowed protocol: ".concat(protocol), }; } return { success: true, }; }; return ProtocolRule; }()); exports.ProtocolRule = ProtocolRule; var privateRangeTypes = new Set(['linkLocal', 'loopback', 'private', 'reserved']); function isLocalhost(hostname) { if (hostname === 'localhost') { return true; } if (hostname.at(0) === '[' && hostname.at(-1) === ']') { hostname = hostname.substring(1, hostname.length - 1); } try { var type = ipaddr_js_1.default.parse(hostname).range(); return privateRangeTypes.has(type); } catch (e) { return false; } } exports.isLocalhost = isLocalhost; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1ydWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lcHMvbW9kdWxlcy9uZXR3b3JrLWFkYXB0ZXItdXRpbHMvbmV0d29yay1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3REFBOEI7QUFvQjlCO0lBR0Usc0JBQVksTUFBMEI7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFBO0lBQzdDLENBQUM7SUFFRCwyQkFBSSxHQUFKLFVBQUssR0FBUTtRQUNILElBQUEsUUFBUSxHQUFLLEdBQUcsU0FBUixDQUFRO1FBRXhCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNqRCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxnQ0FBZ0M7YUFDekMsQ0FBQTtTQUNGO1FBRUQsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQTtJQUNILENBQUM7SUFDSCxtQkFBQztBQUFELENBQUMsQUFyQkQsSUFxQkM7QUFyQlksb0NBQVk7QUF1QnpCO0lBR0Usc0JBQVksU0FBNEI7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQUMsUUFBUSxJQUFLLE9BQUEsVUFBRyxRQUFRLE1BQUcsRUFBZCxDQUFjLENBQUMsQ0FBQyxDQUFBO0lBQ3ZFLENBQUM7SUFFRCwyQkFBSSxHQUFKLFVBQUssR0FBUTtRQUNILElBQUEsUUFBUSxHQUFLLEdBQUcsU0FBUixDQUFRO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNqQyxPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSwwQ0FBbUMsUUFBUSxDQUFFO2FBQ3RELENBQUE7U0FDRjtRQUVELE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUE7SUFDSCxDQUFDO0lBQ0gsbUJBQUM7QUFBRCxDQUFDLEFBcEJELElBb0JDO0FBcEJZLG9DQUFZO0FBc0J6QixJQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUVuRixTQUFnQixXQUFXLENBQUMsUUFBZ0I7SUFDMUMsSUFBSSxRQUFRLEtBQUssV0FBVyxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFBO0tBQ1o7SUFFRCxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDckQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7S0FDdEQ7SUFFRCxJQUFJO1FBQ0YsSUFBTSxJQUFJLEdBQUcsbUJBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDM0MsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDbkM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFBO0tBQ2I7QUFDSCxDQUFDO0FBZkQsa0NBZUMifQ==