@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
104 lines • 3.87 kB
JavaScript
;
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