@kwiz/common 1.0.52 → 1.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/helpers/url.d.ts +1 -1
- package/dist/helpers/url.js +17 -17
- package/dist/helpers/url.js.map +1 -1
- package/dist/helpers/urlhelper.d.ts +1 -1
- package/dist/helpers/urlhelper.js +30 -22
- package/dist/helpers/urlhelper.js.map +1 -1
- package/package.json +1 -1
- package/src/helpers/url.test.js +16 -1
- package/src/helpers/url.ts +17 -17
- package/src/helpers/urlhelper.ts +30 -22
package/dist/helpers/url.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export declare function normalizeUrl(url: string, endWithSlash?: boolean): strin
|
|
|
30
30
|
export declare function getURLExtension(url: string): string;
|
|
31
31
|
export declare function isDataUrl(url: string): boolean;
|
|
32
32
|
export declare function setUrlKeyValue(keyName: string, keyValue: string, bEncode: boolean, url?: string): string;
|
|
33
|
-
export declare function removeUrlKeyValue(keyName: string, url?: string): string;
|
|
33
|
+
export declare function removeUrlKeyValue(keyName: string, url?: string, bCaseInsensitive?: boolean): string;
|
|
34
34
|
/**
|
|
35
35
|
* Returns encoded string from encodeURIComponent with single quote replaced with %27 or %27%27
|
|
36
36
|
*/
|
package/dist/helpers/url.js
CHANGED
|
@@ -9,7 +9,7 @@ const urlhelper_1 = require("./urlhelper");
|
|
|
9
9
|
* @param name name of parameter
|
|
10
10
|
* @param url optional, url. if not sent - current window.location.href will be used
|
|
11
11
|
*/
|
|
12
|
-
function getQueryStringParameter(param, url, caseInSensitive) {
|
|
12
|
+
function getQueryStringParameter(param, url, caseInSensitive = true) {
|
|
13
13
|
let search = window.location.search;
|
|
14
14
|
if (!(0, typecheckers_1.isNullOrEmptyString)(url)) {
|
|
15
15
|
let tmp = url.split('#')[0].split('?');
|
|
@@ -23,7 +23,7 @@ exports.getQueryStringParameter = getQueryStringParameter;
|
|
|
23
23
|
* @param name name of parameter
|
|
24
24
|
* @param url optional, url. if not sent - current window.location.href will be used
|
|
25
25
|
*/
|
|
26
|
-
function getHashParameter(param, url, caseInSensitive) {
|
|
26
|
+
function getHashParameter(param, url, caseInSensitive = true) {
|
|
27
27
|
let hash = window.location.hash;
|
|
28
28
|
if (!(0, typecheckers_1.isNullOrEmptyString)(url)) {
|
|
29
29
|
let tmp = url.split('#');
|
|
@@ -33,18 +33,18 @@ function getHashParameter(param, url, caseInSensitive) {
|
|
|
33
33
|
}
|
|
34
34
|
exports.getHashParameter = getHashParameter;
|
|
35
35
|
/** return a value of a parameter from a key/value string like: key=value&key2=value2 */
|
|
36
|
-
function getParameterValue(param, keyValueString, caseInSensitive) {
|
|
37
|
-
let _keyValueString = keyValueString.startsWith("#") || keyValueString.startsWith("?") ? keyValueString.
|
|
38
|
-
|
|
36
|
+
function getParameterValue(param, keyValueString, caseInSensitive = true) {
|
|
37
|
+
let _keyValueString = keyValueString.startsWith("#") || keyValueString.startsWith("?") ? keyValueString.substring(1) : keyValueString;
|
|
38
|
+
let parsed = _keyValueString.split('&');
|
|
39
39
|
for (var i = 0; i < parsed.length; i++) {
|
|
40
|
-
|
|
41
|
-
if (caseInSensitive ? values[0] === param : values[0]
|
|
40
|
+
let values = parsed[i].split('=');
|
|
41
|
+
if (caseInSensitive ? values[0].toLowerCase() === param.toLowerCase() : values[0] === param) {
|
|
42
42
|
let v = (values.length > 1 ? values[1] : param);
|
|
43
43
|
return decodeURIComponent(v.replace(/\+/g, " "));
|
|
44
44
|
}
|
|
45
45
|
//ISSUE: 1301 - the query string parameter name was encoded in window.location.href/window.location.search even though in the
|
|
46
46
|
//url bar the paramter name was not encoded
|
|
47
|
-
if (caseInSensitive ? decodeURIComponent(values[0]) === param : decodeURIComponent(values[0])
|
|
47
|
+
if (caseInSensitive ? decodeURIComponent(values[0]).toLowerCase() === param.toLowerCase() : decodeURIComponent(values[0]) === param) {
|
|
48
48
|
let v = (values.length > 1 ? values[1] : param);
|
|
49
49
|
return decodeURIComponent(v.replace(/\+/g, " "));
|
|
50
50
|
}
|
|
@@ -65,7 +65,7 @@ function makeFullUrl(url, baseUrl) {
|
|
|
65
65
|
if (url.startsWith('/') || url.startsWith('#')) {
|
|
66
66
|
//server relative
|
|
67
67
|
if ((0, typecheckers_1.isNullOrEmptyString)(baseUrl)) { //no override base
|
|
68
|
-
|
|
68
|
+
let xxx = document.createElement("a");
|
|
69
69
|
xxx.href = url;
|
|
70
70
|
return xxx.href;
|
|
71
71
|
}
|
|
@@ -95,7 +95,7 @@ exports.navigateOrReload = navigateOrReload;
|
|
|
95
95
|
function makeServerRelativeUrl(url, baseUrl) {
|
|
96
96
|
if ((0, typecheckers_1.isNullOrEmptyString)(url))
|
|
97
97
|
url = baseUrl || window.location.href.split('?')[0];
|
|
98
|
-
|
|
98
|
+
let index = url.indexOf("//");
|
|
99
99
|
if (index > 0) //this is a full URL, just trim it from // until the first / and return.
|
|
100
100
|
{
|
|
101
101
|
index = url.indexOf("/", index + 2); //find next / after the ://domain.name
|
|
@@ -119,7 +119,7 @@ function makeServerRelativeUrl(url, baseUrl) {
|
|
|
119
119
|
exports.makeServerRelativeUrl = makeServerRelativeUrl;
|
|
120
120
|
/** Normalizes URL ending, end with or without slash */
|
|
121
121
|
function normalizeUrl(url, endWithSlash = false) {
|
|
122
|
-
|
|
122
|
+
let tmp = url;
|
|
123
123
|
if (endWithSlash) {
|
|
124
124
|
if ((0, typecheckers_1.isNullOrEmptyString)(tmp))
|
|
125
125
|
tmp = "/";
|
|
@@ -143,13 +143,13 @@ function getURLExtension(url) {
|
|
|
143
143
|
//if (!isString(baseUri)) {
|
|
144
144
|
// baseUri = document.baseURI || window.location.protocol + "://" + window.location.hostname + window.location.pathname;
|
|
145
145
|
//}
|
|
146
|
-
|
|
146
|
+
let urlObj = new URL(url, "https://example.com");
|
|
147
147
|
url = urlObj.href.replace(urlObj.host, "").replace(urlObj.hash, "").replace(urlObj.search, "");
|
|
148
148
|
return url.substring(url.lastIndexOf("/") + 1).split(/#|\?/)[0].split(".").pop().trim();
|
|
149
149
|
}
|
|
150
150
|
exports.getURLExtension = getURLExtension;
|
|
151
151
|
function isDataUrl(url) {
|
|
152
|
-
|
|
152
|
+
let REGEXP_DATA_URL = /^data:(?:.+?\/.+?)?(?:;.+?=.+?)*(?:;base64)?,.*$/;
|
|
153
153
|
return REGEXP_DATA_URL.test(url);
|
|
154
154
|
}
|
|
155
155
|
exports.isDataUrl = isDataUrl;
|
|
@@ -157,16 +157,16 @@ function setUrlKeyValue(keyName, keyValue, bEncode, url) {
|
|
|
157
157
|
if (!(0, typecheckers_1.isString)(url)) {
|
|
158
158
|
url = window.location.href + "";
|
|
159
159
|
}
|
|
160
|
-
|
|
160
|
+
let urlParams = new urlhelper_1.URLHelper(url);
|
|
161
161
|
return urlParams.setQueryStringParam(keyName, keyValue, bEncode);
|
|
162
162
|
}
|
|
163
163
|
exports.setUrlKeyValue = setUrlKeyValue;
|
|
164
|
-
function removeUrlKeyValue(keyName, url) {
|
|
164
|
+
function removeUrlKeyValue(keyName, url, bCaseInsensitive) {
|
|
165
165
|
if (!(0, typecheckers_1.isString)(url)) {
|
|
166
166
|
url = window.location.href + "";
|
|
167
167
|
}
|
|
168
|
-
|
|
169
|
-
return urlParams.removeQueryStringParam(keyName);
|
|
168
|
+
let urlParams = new urlhelper_1.URLHelper(url);
|
|
169
|
+
return urlParams.removeQueryStringParam(keyName, bCaseInsensitive);
|
|
170
170
|
}
|
|
171
171
|
exports.removeUrlKeyValue = removeUrlKeyValue;
|
|
172
172
|
/**
|
package/dist/helpers/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/helpers/url.ts"],"names":[],"mappings":";;;AACA,yDAA2D;AAC3D,iDAA+D;AAC/D,2CAAwC;AAExC;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAa,EAAE,GAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/helpers/url.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export declare class URLHelper {
|
|
|
5
5
|
constructor(url: string);
|
|
6
6
|
getQueryStringParam(keyName: string, bNoDecode?: boolean, bCaseInsensitive?: boolean): string;
|
|
7
7
|
setQueryStringParam(keyName: string, keyValue: string, bEncode: boolean): string;
|
|
8
|
-
removeQueryStringParam(keyName: string): string;
|
|
8
|
+
removeQueryStringParam(keyName: string, bCaseInsensitive?: boolean): string;
|
|
9
9
|
getHashParam(keyName: string, bNoDecode?: boolean, bCaseInsensitive?: boolean): string;
|
|
10
10
|
setHashParam(keyName: string, keyValue: string, bEncode: boolean): string;
|
|
11
11
|
removeHashParam(keyName: string): string;
|
|
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.URLHelper = void 0;
|
|
4
4
|
class URLHelper {
|
|
5
5
|
constructor(url) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
let parts = url.split("#");
|
|
7
|
+
let pathAndQueryString = parts[0];
|
|
8
|
+
let hash = parts[1];
|
|
9
|
+
let parts2 = pathAndQueryString.split("?");
|
|
10
|
+
let path = parts2[0];
|
|
11
|
+
let queryString = parts2[1];
|
|
12
12
|
this.path = path;
|
|
13
13
|
this.queryStringParams = this._parseParams(queryString);
|
|
14
14
|
this.hashParams = this._parseParams(hash);
|
|
@@ -20,8 +20,8 @@ class URLHelper {
|
|
|
20
20
|
this.queryStringParams[keyName] = bEncode ? encodeURIComponent(keyValue) : keyValue;
|
|
21
21
|
return this.getUrl();
|
|
22
22
|
}
|
|
23
|
-
removeQueryStringParam(keyName) {
|
|
24
|
-
this._removeParam(this.queryStringParams, keyName);
|
|
23
|
+
removeQueryStringParam(keyName, bCaseInsensitive) {
|
|
24
|
+
this._removeParam(this.queryStringParams, keyName, bCaseInsensitive);
|
|
25
25
|
return this.getUrl();
|
|
26
26
|
}
|
|
27
27
|
getHashParam(keyName, bNoDecode, bCaseInsensitive) {
|
|
@@ -39,9 +39,9 @@ class URLHelper {
|
|
|
39
39
|
var paramsDict = {};
|
|
40
40
|
try {
|
|
41
41
|
(typeof (paramsAsString) === "string" && paramsAsString.length ? paramsAsString.split("&") : []).forEach((s) => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
let q = s.split("=");
|
|
43
|
+
let paramKey = decodeURIComponent(q[0]);
|
|
44
|
+
let paramValue = q[1];
|
|
45
45
|
if (typeof (paramKey) === "string" && paramKey.length) {
|
|
46
46
|
paramsDict[paramKey] = typeof (paramValue) === "string" && paramValue.length ? paramValue : null;
|
|
47
47
|
}
|
|
@@ -51,19 +51,27 @@ class URLHelper {
|
|
|
51
51
|
}
|
|
52
52
|
return paramsDict;
|
|
53
53
|
}
|
|
54
|
-
_removeParam(obj, keyName) {
|
|
55
|
-
if (obj
|
|
54
|
+
_removeParam(obj, keyName, bCaseInsensitive) {
|
|
55
|
+
if (!obj) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
Object.keys(obj).filter((key) => {
|
|
59
|
+
if (bCaseInsensitive === true) {
|
|
60
|
+
return key.toLowerCase() === keyName.toLowerCase();
|
|
61
|
+
}
|
|
62
|
+
return key === keyName;
|
|
63
|
+
}).forEach((key) => {
|
|
56
64
|
try {
|
|
57
|
-
delete obj[
|
|
65
|
+
delete obj[key];
|
|
58
66
|
}
|
|
59
|
-
catch
|
|
67
|
+
catch {
|
|
60
68
|
}
|
|
61
|
-
}
|
|
69
|
+
});
|
|
62
70
|
}
|
|
63
71
|
_getParam(obj, keyName, bNoDecode, bCaseInsensitive) {
|
|
64
|
-
|
|
72
|
+
let value = null;
|
|
65
73
|
if (bCaseInsensitive) {
|
|
66
|
-
|
|
74
|
+
let matchedKey = Object.keys(obj).filter((key) => {
|
|
67
75
|
return key.toLowerCase() === keyName.toLowerCase();
|
|
68
76
|
})[0];
|
|
69
77
|
if (matchedKey) {
|
|
@@ -76,15 +84,15 @@ class URLHelper {
|
|
|
76
84
|
return typeof (value) === "string" ? (bNoDecode ? value : decodeURIComponent(value)) : null;
|
|
77
85
|
}
|
|
78
86
|
getUrl() {
|
|
79
|
-
|
|
80
|
-
|
|
87
|
+
let queryString = Object.keys(this.queryStringParams).map((key) => {
|
|
88
|
+
let value = this.queryStringParams[key];
|
|
81
89
|
return `${key}` + (value !== null ? `=${value}` : "");
|
|
82
90
|
});
|
|
83
|
-
|
|
91
|
+
let hash = Object.keys(this.hashParams).map((key) => {
|
|
84
92
|
var value = this.hashParams[key];
|
|
85
93
|
return `${key}` + (value !== null ? `=${value}` : "");
|
|
86
94
|
});
|
|
87
|
-
|
|
95
|
+
let newUrl = [
|
|
88
96
|
typeof (this.path) === "string" && this.path.length ? this.path : "",
|
|
89
97
|
queryString && queryString.length ? `?${queryString.join("&")}` : "",
|
|
90
98
|
hash && hash.length ? `#${hash.join("&")}` : ""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlhelper.js","sourceRoot":"","sources":["../../src/helpers/urlhelper.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAKlB,YAAmB,GAAW;QAC1B,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEM,mBAAmB,CAAC,OAAe,EAAE,SAAmB,EAAE,gBAA0B;QACvF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACxF,CAAC;IAEM,mBAAmB,CAAC,OAAe,EAAE,QAAgB,EAAE,OAAgB;QAC1E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpF,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAEM,sBAAsB,CAAC,OAAe;
|
|
1
|
+
{"version":3,"file":"urlhelper.js","sourceRoot":"","sources":["../../src/helpers/urlhelper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/helpers/url.test.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import assert from 'assert/strict';
|
|
2
2
|
import test from 'node:test';
|
|
3
|
-
import { makeFullUrl, parseHash, parseQueryString, } from './url';
|
|
3
|
+
import { makeFullUrl, parseHash, parseQueryString, removeUrlKeyValue, setUrlKeyValue, } from './url';
|
|
4
4
|
|
|
5
5
|
test('parseQueryString', t => {
|
|
6
6
|
assert.deepEqual(parseQueryString(), {});
|
|
@@ -26,4 +26,19 @@ test('makeFullUrl', t => {
|
|
|
26
26
|
assert.deepEqual(makeFullUrl("#hashnav", "http://foo"), "http://foo#hashnav");
|
|
27
27
|
assert.deepEqual(makeFullUrl("#hashnav2", "http://foo#hashnav"), "http://foo#hashnav2");
|
|
28
28
|
assert.deepEqual(makeFullUrl("#hashnav", "http://foo/page.aspx"), "http://foo/page.aspx#hashnav");
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test('removeUrlKeyValue', t => {
|
|
32
|
+
let trueUrl = "https://www.domain.com/page.aspx?showindatasheet=true";
|
|
33
|
+
let falseUrl = "https://www.domain.com/page.aspx?showindatasheet=false";
|
|
34
|
+
let noParamUrl = "https://www.domain.com/page.aspx";
|
|
35
|
+
|
|
36
|
+
let output = removeUrlKeyValue("showindatasheet", trueUrl, true);
|
|
37
|
+
assert.deepEqual(output, noParamUrl);
|
|
38
|
+
|
|
39
|
+
output = removeUrlKeyValue("ShowInDataSheet", trueUrl, true);
|
|
40
|
+
assert.deepEqual(output, noParamUrl);
|
|
41
|
+
|
|
42
|
+
output = setUrlKeyValue("showindatasheet", "false", false, trueUrl);
|
|
43
|
+
assert.deepEqual(output, falseUrl)
|
|
29
44
|
});
|
package/src/helpers/url.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { URLHelper } from "./urlhelper";
|
|
|
8
8
|
* @param name name of parameter
|
|
9
9
|
* @param url optional, url. if not sent - current window.location.href will be used
|
|
10
10
|
*/
|
|
11
|
-
export function getQueryStringParameter(param: string, url?: string, caseInSensitive
|
|
11
|
+
export function getQueryStringParameter(param: string, url?: string, caseInSensitive = true) {
|
|
12
12
|
let search = window.location.search;
|
|
13
13
|
if (!isNullOrEmptyString(url)) {
|
|
14
14
|
let tmp = url.split('#')[0].split('?');
|
|
@@ -22,7 +22,7 @@ export function getQueryStringParameter(param: string, url?: string, caseInSensi
|
|
|
22
22
|
* @param name name of parameter
|
|
23
23
|
* @param url optional, url. if not sent - current window.location.href will be used
|
|
24
24
|
*/
|
|
25
|
-
export function getHashParameter(param: string, url?: string, caseInSensitive
|
|
25
|
+
export function getHashParameter(param: string, url?: string, caseInSensitive = true) {
|
|
26
26
|
let hash = window.location.hash;
|
|
27
27
|
if (!isNullOrEmptyString(url)) {
|
|
28
28
|
let tmp = url.split('#');
|
|
@@ -32,20 +32,20 @@ export function getHashParameter(param: string, url?: string, caseInSensitive?:
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/** return a value of a parameter from a key/value string like: key=value&key2=value2 */
|
|
35
|
-
export function getParameterValue(param: string, keyValueString: string, caseInSensitive
|
|
36
|
-
let _keyValueString = keyValueString.startsWith("#") || keyValueString.startsWith("?") ? keyValueString.
|
|
37
|
-
|
|
35
|
+
export function getParameterValue(param: string, keyValueString: string, caseInSensitive = true) {
|
|
36
|
+
let _keyValueString = keyValueString.startsWith("#") || keyValueString.startsWith("?") ? keyValueString.substring(1) : keyValueString;
|
|
37
|
+
let parsed = _keyValueString.split('&');
|
|
38
38
|
for (var i = 0; i < parsed.length; i++) {
|
|
39
|
-
|
|
39
|
+
let values = parsed[i].split('=');
|
|
40
40
|
|
|
41
|
-
if (caseInSensitive ? values[0] === param : values[0]
|
|
41
|
+
if (caseInSensitive ? values[0].toLowerCase() === param.toLowerCase() : values[0] === param) {
|
|
42
42
|
let v = (values.length > 1 ? values[1] : param);
|
|
43
43
|
return decodeURIComponent(v.replace(/\+/g, " "));
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
//ISSUE: 1301 - the query string parameter name was encoded in window.location.href/window.location.search even though in the
|
|
47
47
|
//url bar the paramter name was not encoded
|
|
48
|
-
if (caseInSensitive ? decodeURIComponent(values[0]) === param : decodeURIComponent(values[0])
|
|
48
|
+
if (caseInSensitive ? decodeURIComponent(values[0]).toLowerCase() === param.toLowerCase() : decodeURIComponent(values[0]) === param) {
|
|
49
49
|
let v = (values.length > 1 ? values[1] : param);
|
|
50
50
|
return decodeURIComponent(v.replace(/\+/g, " "));
|
|
51
51
|
}
|
|
@@ -65,7 +65,7 @@ export function makeFullUrl(url: string, baseUrl?: string): string {
|
|
|
65
65
|
if (url.startsWith('/') || url.startsWith('#')) {
|
|
66
66
|
//server relative
|
|
67
67
|
if (isNullOrEmptyString(baseUrl)) {//no override base
|
|
68
|
-
|
|
68
|
+
let xxx = document.createElement("a");
|
|
69
69
|
xxx.href = url;
|
|
70
70
|
return xxx.href;
|
|
71
71
|
}
|
|
@@ -94,7 +94,7 @@ export function navigateOrReload(urlWithHash: string) {
|
|
|
94
94
|
export function makeServerRelativeUrl(url: string, baseUrl?: string): string {
|
|
95
95
|
if (isNullOrEmptyString(url)) url = baseUrl || window.location.href.split('?')[0];
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
let index = url.indexOf("//");
|
|
98
98
|
if (index > 0)//this is a full URL, just trim it from // until the first / and return.
|
|
99
99
|
{
|
|
100
100
|
index = url.indexOf("/", index + 2);//find next / after the ://domain.name
|
|
@@ -116,7 +116,7 @@ export function makeServerRelativeUrl(url: string, baseUrl?: string): string {
|
|
|
116
116
|
|
|
117
117
|
/** Normalizes URL ending, end with or without slash */
|
|
118
118
|
export function normalizeUrl(url: string, endWithSlash = false): string {
|
|
119
|
-
|
|
119
|
+
let tmp = url;
|
|
120
120
|
if (endWithSlash) {
|
|
121
121
|
if (isNullOrEmptyString(tmp))
|
|
122
122
|
tmp = "/";
|
|
@@ -140,13 +140,13 @@ export function getURLExtension(url: string) {//, baseUri?: string) {
|
|
|
140
140
|
//if (!isString(baseUri)) {
|
|
141
141
|
// baseUri = document.baseURI || window.location.protocol + "://" + window.location.hostname + window.location.pathname;
|
|
142
142
|
//}
|
|
143
|
-
|
|
143
|
+
let urlObj = new URL(url, "https://example.com");
|
|
144
144
|
url = urlObj.href.replace(urlObj.host, "").replace(urlObj.hash, "").replace(urlObj.search, "");
|
|
145
145
|
return url.substring(url.lastIndexOf("/") + 1).split(/#|\?/)[0].split(".").pop().trim();
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
export function isDataUrl(url: string) {
|
|
149
|
-
|
|
149
|
+
let REGEXP_DATA_URL = /^data:(?:.+?\/.+?)?(?:;.+?=.+?)*(?:;base64)?,.*$/;
|
|
150
150
|
return REGEXP_DATA_URL.test(url);
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -155,17 +155,17 @@ export function setUrlKeyValue(keyName: string, keyValue: string, bEncode: boole
|
|
|
155
155
|
url = window.location.href + "";
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
let urlParams = new URLHelper(url);
|
|
159
159
|
return urlParams.setQueryStringParam(keyName, keyValue, bEncode);
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
export function removeUrlKeyValue(keyName: string, url?: string) {
|
|
162
|
+
export function removeUrlKeyValue(keyName: string, url?: string, bCaseInsensitive?: boolean) {
|
|
163
163
|
if (!isString(url)) {
|
|
164
164
|
url = window.location.href + "";
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
return urlParams.removeQueryStringParam(keyName);
|
|
167
|
+
let urlParams = new URLHelper(url);
|
|
168
|
+
return urlParams.removeQueryStringParam(keyName, bCaseInsensitive);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
/**
|
package/src/helpers/urlhelper.ts
CHANGED
|
@@ -4,12 +4,12 @@ export class URLHelper {
|
|
|
4
4
|
private path: string;
|
|
5
5
|
|
|
6
6
|
public constructor(url: string) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
let parts = url.split("#");
|
|
8
|
+
let pathAndQueryString = parts[0];
|
|
9
|
+
let hash = parts[1];
|
|
10
|
+
let parts2 = pathAndQueryString.split("?");
|
|
11
|
+
let path = parts2[0];
|
|
12
|
+
let queryString = parts2[1];
|
|
13
13
|
|
|
14
14
|
this.path = path;
|
|
15
15
|
this.queryStringParams = this._parseParams(queryString);
|
|
@@ -25,8 +25,8 @@ export class URLHelper {
|
|
|
25
25
|
return this.getUrl();
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
public removeQueryStringParam(keyName: string) {
|
|
29
|
-
this._removeParam(this.queryStringParams, keyName);
|
|
28
|
+
public removeQueryStringParam(keyName: string, bCaseInsensitive?: boolean) {
|
|
29
|
+
this._removeParam(this.queryStringParams, keyName, bCaseInsensitive);
|
|
30
30
|
return this.getUrl();
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -48,9 +48,9 @@ export class URLHelper {
|
|
|
48
48
|
var paramsDict: { [key: string]: string; } = {};
|
|
49
49
|
try {
|
|
50
50
|
(typeof (paramsAsString) === "string" && paramsAsString.length ? paramsAsString.split("&") : []).forEach((s) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
let q = s.split("=");
|
|
52
|
+
let paramKey = decodeURIComponent(q[0]);
|
|
53
|
+
let paramValue = q[1];
|
|
54
54
|
if (typeof (paramKey) === "string" && paramKey.length) {
|
|
55
55
|
paramsDict[paramKey] = typeof (paramValue) === "string" && paramValue.length ? paramValue : null;
|
|
56
56
|
}
|
|
@@ -60,19 +60,27 @@ export class URLHelper {
|
|
|
60
60
|
return paramsDict;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
private _removeParam(obj: { [key: string]: string; }, keyName: string) {
|
|
64
|
-
if (obj
|
|
63
|
+
private _removeParam(obj: { [key: string]: string; }, keyName: string, bCaseInsensitive?: boolean) {
|
|
64
|
+
if (!obj) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
Object.keys(obj).filter((key) => {
|
|
68
|
+
if (bCaseInsensitive === true) {
|
|
69
|
+
return key.toLowerCase() === keyName.toLowerCase();
|
|
70
|
+
}
|
|
71
|
+
return key === keyName;
|
|
72
|
+
}).forEach((key) => {
|
|
65
73
|
try {
|
|
66
|
-
delete obj[
|
|
67
|
-
} catch
|
|
74
|
+
delete obj[key];
|
|
75
|
+
} catch {
|
|
68
76
|
}
|
|
69
|
-
}
|
|
77
|
+
});
|
|
70
78
|
}
|
|
71
79
|
|
|
72
80
|
private _getParam(obj: { [key: string]: string; }, keyName: string, bNoDecode?: boolean, bCaseInsensitive?: boolean) {
|
|
73
|
-
|
|
81
|
+
let value: string = null;
|
|
74
82
|
if (bCaseInsensitive) {
|
|
75
|
-
|
|
83
|
+
let matchedKey = Object.keys(obj).filter((key) => {
|
|
76
84
|
return key.toLowerCase() === keyName.toLowerCase();
|
|
77
85
|
})[0];
|
|
78
86
|
|
|
@@ -86,15 +94,15 @@ export class URLHelper {
|
|
|
86
94
|
}
|
|
87
95
|
|
|
88
96
|
public getUrl() {
|
|
89
|
-
|
|
90
|
-
|
|
97
|
+
let queryString = Object.keys(this.queryStringParams).map((key) => {
|
|
98
|
+
let value = this.queryStringParams[key];
|
|
91
99
|
return `${key}` + (value !== null ? `=${value}` : "");
|
|
92
100
|
});
|
|
93
|
-
|
|
101
|
+
let hash = Object.keys(this.hashParams).map((key) => {
|
|
94
102
|
var value = this.hashParams[key];
|
|
95
103
|
return `${key}` + (value !== null ? `=${value}` : "");
|
|
96
104
|
});
|
|
97
|
-
|
|
105
|
+
let newUrl = [
|
|
98
106
|
typeof (this.path) === "string" && this.path.length ? this.path : "",
|
|
99
107
|
queryString && queryString.length ? `?${queryString.join("&")}` : "",
|
|
100
108
|
hash && hash.length ? `#${hash.join("&")}` : ""
|