url.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. // https://github.com/kevva/url-regex/blob/master/index.js
  7. var urlReg;
  8. var _default = exports.default = function _default() {
  9. if (urlReg) {
  10. return urlReg;
  11. }
  12. var word = '[a-fA-F\\d:]';
  13. var b = function b(options) {
  14. return options && options.includeBoundaries ? "(?:(?<=\\s|^)(?=".concat(word, ")|(?<=").concat(word, ")(?=\\s|$))") : '';
  15. };
  16. var v4 = '(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}';
  17. var v6seg = '[a-fA-F\\d]{1,4}';
  18. var v6List = ["(?:".concat(v6seg, ":){7}(?:").concat(v6seg, "|:)"), // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
  19. "(?:".concat(v6seg, ":){6}(?:").concat(v4, "|:").concat(v6seg, "|:)"), // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::
  20. "(?:".concat(v6seg, ":){5}(?::").concat(v4, "|(?::").concat(v6seg, "){1,2}|:)"), // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::
  21. "(?:".concat(v6seg, ":){4}(?:(?::").concat(v6seg, "){0,1}:").concat(v4, "|(?::").concat(v6seg, "){1,3}|:)"), // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::
  22. "(?:".concat(v6seg, ":){3}(?:(?::").concat(v6seg, "){0,2}:").concat(v4, "|(?::").concat(v6seg, "){1,4}|:)"), // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::
  23. "(?:".concat(v6seg, ":){2}(?:(?::").concat(v6seg, "){0,3}:").concat(v4, "|(?::").concat(v6seg, "){1,5}|:)"), // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::
  24. "(?:".concat(v6seg, ":){1}(?:(?::").concat(v6seg, "){0,4}:").concat(v4, "|(?::").concat(v6seg, "){1,6}|:)"), // 1:: 1::3:4:5:6:7:8 1::8 1::
  25. "(?::(?:(?::".concat(v6seg, "){0,5}:").concat(v4, "|(?::").concat(v6seg, "){1,7}|:))") // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::
  26. ];
  27. var v6Eth0 = "(?:%[0-9a-zA-Z]{1,})?"; // %eth0 %1
  28. var v6 = "(?:".concat(v6List.join('|'), ")").concat(v6Eth0);
  29. // Pre-compile only the exact regexes because adding a global flag make regexes stateful
  30. var v46Exact = new RegExp("(?:^".concat(v4, "$)|(?:^").concat(v6, "$)"));
  31. var v4exact = new RegExp("^".concat(v4, "$"));
  32. var v6exact = new RegExp("^".concat(v6, "$"));
  33. var ip = function ip(options) {
  34. return options && options.exact ? v46Exact : new RegExp("(?:".concat(b(options)).concat(v4).concat(b(options), ")|(?:").concat(b(options)).concat(v6).concat(b(options), ")"), 'g');
  35. };
  36. ip.v4 = function (options) {
  37. return options && options.exact ? v4exact : new RegExp("".concat(b(options)).concat(v4).concat(b(options)), 'g');
  38. };
  39. ip.v6 = function (options) {
  40. return options && options.exact ? v6exact : new RegExp("".concat(b(options)).concat(v6).concat(b(options)), 'g');
  41. };
  42. var protocol = "(?:(?:[a-z]+:)?//)";
  43. var auth = '(?:\\S+(?::\\S*)?@)?';
  44. var ipv4 = ip.v4().source;
  45. var ipv6 = ip.v6().source;
  46. var host = "(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)";
  47. var domain = "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*";
  48. var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))";
  49. var port = '(?::\\d{2,5})?';
  50. var path = '(?:[/?#][^\\s"]*)?';
  51. var regex = "(?:".concat(protocol, "|www\\.)").concat(auth, "(?:localhost|").concat(ipv4, "|").concat(ipv6, "|").concat(host).concat(domain).concat(tld, ")").concat(port).concat(path);
  52. urlReg = new RegExp("(?:^".concat(regex, "$)"), 'i');
  53. return urlReg;
  54. };