@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
JavaScript
;
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