UNPKG

@data-driven-forms/react-form-renderer

Version:

React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.

78 lines 3.31 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var validators_1 = __importDefault(require("../validators")); var helpers_1 = require("../common/helpers"); // user:pass BasicAuth (optional) var BASIC_AUTH = '(?:\\S+(?::\\S*)?@)?'; // IP address dotted notation octets var IPV4 = '(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)'; // the IPv6 matching part is from here: https://gist.github.com/syzdek/6086792 var IPV6 = '((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7}|::1|1::'; // eslint-disable-line max-len // host & domain names, may end with dot var HOST = // can be replaced by // '(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+' + '(?![-_])(?:[-\\w\\u00a1-\\uffff]{0,63}[^-_]\\.)+' + // TLD identifier name, may end with dot '(?:[a-z\\u00a1-\\uffff]{2,}\\.?)'; // port number (optional) var PORT = '(?::\\d{2,5})?'; // resource path (optional) var PATH = '(?:[/][^\\s?#]*)?'; var SEARCH = '(?:[?][^\\s#]*)?'; var HASH = '(?:[#]\\S*)?'; var DEFAULT_OPTIONS = { emptyProtocol: true, protocolIdentifier: true, basicAuth: true, local: true, ipv4: true, ipv6: true, host: true, port: true, path: true, search: true, hash: true, }; var url = function (options) { return buildReg(defaultOptions(options), false); }; exports.default = url; function defaultOptions(options) { var mergedOptions = (0, helpers_1.assign)({}, DEFAULT_OPTIONS, options); return __assign(__assign({}, mergedOptions), { protocols: [].concat(mergedOptions.protocol || mergedOptions.protocols || validators_1.default.urlProtocols).join('|') }); } function group(option, regPart, capture) { return option ? (capture ? "(".concat(regPart, ")") : regPart) : ''; } function buildReg(options, capture) { return new RegExp('^' + group(true, "(?:(?:(?:".concat(options.protocols, "):)").concat(options.emptyProtocol ? '?' : '', "\\/\\/)").concat(options.protocolIdentifier ? '' : '?'), capture) + group(options.basicAuth, BASIC_AUTH, capture) + "(?:".concat([ group(options.ipv4, IPV4, capture), group(options.ipv6, IPV6, capture), group(options.host, HOST, capture), group(options.local, 'localhost', capture), ] .filter(function (g) { return g; }) .join('|'), ")") + group(options.port, PORT, capture) + group(options.path, PATH, capture) + group(options.search, SEARCH, capture) + group(options.hash, HASH, capture) + '$', 'i'); } //# sourceMappingURL=url-validator.js.map