12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.url = void 0;
- const parseuri_1 = __importDefault(require("parseuri"));
- const debug_1 = __importDefault(require("debug")); // debug()
- const debug = debug_1.default("socket.io-client:url"); // debug()
- /**
- * URL parser.
- *
- * @param uri - url
- * @param path - the request path of the connection
- * @param loc - An object meant to mimic window.location.
- * Defaults to window.location.
- * @public
- */
- function url(uri, path = "", loc) {
- let obj = uri;
- // default to window.location
- loc = loc || (typeof location !== "undefined" && location);
- if (null == uri)
- uri = loc.protocol + "//" + loc.host;
- // relative path support
- if (typeof uri === "string") {
- if ("/" === uri.charAt(0)) {
- if ("/" === uri.charAt(1)) {
- uri = loc.protocol + uri;
- }
- else {
- uri = loc.host + uri;
- }
- }
- if (!/^(https?|wss?):\/\//.test(uri)) {
- debug("protocol-less url %s", uri);
- if ("undefined" !== typeof loc) {
- uri = loc.protocol + "//" + uri;
- }
- else {
- uri = "https://" + uri;
- }
- }
- // parse
- debug("parse %s", uri);
- obj = parseuri_1.default(uri);
- }
- // make sure we treat `localhost:80` and `localhost` equally
- if (!obj.port) {
- if (/^(http|ws)$/.test(obj.protocol)) {
- obj.port = "80";
- }
- else if (/^(http|ws)s$/.test(obj.protocol)) {
- obj.port = "443";
- }
- }
- obj.path = obj.path || "/";
- const ipv6 = obj.host.indexOf(":") !== -1;
- const host = ipv6 ? "[" + obj.host + "]" : obj.host;
- // define unique id
- obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
- // define href
- obj.href =
- obj.protocol +
- "://" +
- host +
- (loc && loc.port === obj.port ? "" : ":" + obj.port);
- return obj;
- }
- exports.url = url;
|