UNPKG

@kwiz/common

Version:

KWIZ common utilities and helpers for M365 platform

104 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.URLHelper = void 0; class URLHelper { constructor(url) { let parts = url.split("#"); let pathAndQueryString = parts[0]; let hash = parts[1]; let parts2 = pathAndQueryString.split("?"); let path = parts2[0]; let queryString = parts2[1]; this.path = path; this.queryStringParams = this._parseParams(queryString); this.hashParams = this._parseParams(hash); } getQueryStringParam(keyName, bNoDecode, bCaseInsensitive) { return this._getParam(this.queryStringParams, keyName, bNoDecode, bCaseInsensitive); } setQueryStringParam(keyName, keyValue, bEncode) { this.queryStringParams[keyName] = bEncode ? encodeURIComponent(keyValue) : keyValue; return this.getUrl(); } removeQueryStringParam(keyName, bCaseInsensitive) { this._removeParam(this.queryStringParams, keyName, bCaseInsensitive); return this.getUrl(); } getHashParam(keyName, bNoDecode, bCaseInsensitive) { return this._getParam(this.hashParams, keyName, bNoDecode, bCaseInsensitive); } setHashParam(keyName, keyValue, bEncode) { this.hashParams[keyName] = bEncode ? encodeURIComponent(keyValue) : keyValue; return this.getUrl(); } removeHashParam(keyName) { this._removeParam(this.hashParams, keyName); return this.getUrl(); } _parseParams(paramsAsString) { var paramsDict = {}; try { (typeof (paramsAsString) === "string" && paramsAsString.length ? paramsAsString.split("&") : []).forEach((s) => { let q = s.split("="); let paramKey = decodeURIComponent(q[0]); let paramValue = q[1]; if (typeof (paramKey) === "string" && paramKey.length) { paramsDict[paramKey] = typeof (paramValue) === "string" && paramValue.length ? paramValue : null; } }); } catch (ex) { } return paramsDict; } _removeParam(obj, keyName, bCaseInsensitive) { if (!obj) { return; } Object.keys(obj).filter((key) => { if (bCaseInsensitive === true) { return key.toLowerCase() === keyName.toLowerCase(); } return key === keyName; }).forEach((key) => { try { delete obj[key]; } catch { } }); } _getParam(obj, keyName, bNoDecode, bCaseInsensitive) { let value = null; if (bCaseInsensitive) { let matchedKey = Object.keys(obj).filter((key) => { return key.toLowerCase() === keyName.toLowerCase(); })[0]; if (matchedKey) { value = obj[matchedKey]; } } else { value = obj[keyName]; } return typeof (value) === "string" ? (bNoDecode ? value : decodeURIComponent(value)) : null; } getUrl() { let queryString = Object.keys(this.queryStringParams).map((key) => { let value = this.queryStringParams[key]; return `${key}` + (value !== null ? `=${value}` : ""); }); let hash = Object.keys(this.hashParams).map((key) => { var value = this.hashParams[key]; return `${key}` + (value !== null ? `=${value}` : ""); }); let newUrl = [ typeof (this.path) === "string" && this.path.length ? this.path : "", queryString && queryString.length ? `?${queryString.join("&")}` : "", hash && hash.length ? `#${hash.join("&")}` : "" ]; return newUrl.join(""); } } exports.URLHelper = URLHelper; //# sourceMappingURL=urlhelper.js.map