@constructor-io/constructorio-client-javascript 2.72.0 → 2.72.1
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/lib/utils/helpers.js +59 -8
- package/lib/version.js +1 -1
- package/package.json +1 -1
package/lib/utils/helpers.js
CHANGED
|
@@ -19,6 +19,7 @@ var PII_REGEX = [{
|
|
|
19
19
|
}
|
|
20
20
|
// Add more PII REGEX
|
|
21
21
|
];
|
|
22
|
+
var URL_MAX_LEN = 2000;
|
|
22
23
|
var utils = {
|
|
23
24
|
trimNonBreakingSpaces: function trimNonBreakingSpaces(string) {
|
|
24
25
|
return string.replace(/\s/g, ' ').trim();
|
|
@@ -43,6 +44,53 @@ var utils = {
|
|
|
43
44
|
});
|
|
44
45
|
return cleanedParams;
|
|
45
46
|
},
|
|
47
|
+
trimUrl: function trimUrl(urlObj) {
|
|
48
|
+
var maxLen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : URL_MAX_LEN;
|
|
49
|
+
var urlString = urlObj.toString();
|
|
50
|
+
if (urlString.length <= maxLen) {
|
|
51
|
+
return urlString;
|
|
52
|
+
}
|
|
53
|
+
var urlCopy = new URL(urlObj.toString());
|
|
54
|
+
var searchParams = urlCopy.searchParams;
|
|
55
|
+
var paramEntries = Array.from(searchParams.entries());
|
|
56
|
+
if (paramEntries.length === 0) {
|
|
57
|
+
return utils.truncateString(urlString, maxLen);
|
|
58
|
+
}
|
|
59
|
+
paramEntries.sort(function (a, b) {
|
|
60
|
+
var aLength = a[0].length + a[1].length;
|
|
61
|
+
var bLength = b[0].length + b[1].length;
|
|
62
|
+
return bLength - aLength;
|
|
63
|
+
});
|
|
64
|
+
for (var i = 0; i < paramEntries.length; i += 1) {
|
|
65
|
+
if (urlString.length <= maxLen) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
searchParams["delete"](paramEntries[i][0]);
|
|
69
|
+
urlString = urlCopy.toString();
|
|
70
|
+
}
|
|
71
|
+
if (urlString.length > maxLen) {
|
|
72
|
+
return utils.truncateString(urlString, maxLen);
|
|
73
|
+
}
|
|
74
|
+
return urlString;
|
|
75
|
+
},
|
|
76
|
+
cleanAndValidateUrl: function cleanAndValidateUrl(url) {
|
|
77
|
+
var baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
78
|
+
var validatedUrl = null;
|
|
79
|
+
try {
|
|
80
|
+
var _url;
|
|
81
|
+
// Handle android app referrers
|
|
82
|
+
if ((_url = url) !== null && _url !== void 0 && _url.startsWith('android-app')) {
|
|
83
|
+
var _url2;
|
|
84
|
+
url = (_url2 = url) === null || _url2 === void 0 ? void 0 : _url2.replace('android-app', 'https');
|
|
85
|
+
}
|
|
86
|
+
var urlObj = new URL(url, baseUrl);
|
|
87
|
+
var trimmedUrl = new URL(utils.trimUrl(urlObj));
|
|
88
|
+
validatedUrl = trimmedUrl.toString();
|
|
89
|
+
} catch (e) {
|
|
90
|
+
// do nothing
|
|
91
|
+
}
|
|
92
|
+
return validatedUrl;
|
|
93
|
+
},
|
|
46
94
|
throwHttpErrorFromResponse: function throwHttpErrorFromResponse(error, response) {
|
|
47
95
|
return response.json().then(function (json) {
|
|
48
96
|
error.message = json.message;
|
|
@@ -85,22 +133,25 @@ var utils = {
|
|
|
85
133
|
return {};
|
|
86
134
|
},
|
|
87
135
|
getDocumentReferrer: function getDocumentReferrer() {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
136
|
+
var documentReferrer = null;
|
|
137
|
+
try {
|
|
138
|
+
if (utils.canUseDOM()) {
|
|
139
|
+
documentReferrer = utils.cleanAndValidateUrl(document.referrer);
|
|
140
|
+
}
|
|
141
|
+
} catch (e) {
|
|
142
|
+
// do nothing
|
|
91
143
|
}
|
|
92
|
-
return
|
|
144
|
+
return documentReferrer;
|
|
93
145
|
},
|
|
94
146
|
getCanonicalUrl: function getCanonicalUrl() {
|
|
95
147
|
var canonicalURL = null;
|
|
96
148
|
try {
|
|
97
149
|
if (utils.canUseDOM()) {
|
|
98
|
-
var
|
|
99
|
-
var linkEle = (
|
|
150
|
+
var _document;
|
|
151
|
+
var linkEle = (_document = document) === null || _document === void 0 ? void 0 : _document.querySelector('link[rel="canonical"]');
|
|
100
152
|
var href = linkEle === null || linkEle === void 0 ? void 0 : linkEle.getAttribute('href');
|
|
101
153
|
if (href) {
|
|
102
|
-
|
|
103
|
-
canonicalURL = url.toString();
|
|
154
|
+
canonicalURL = utils.cleanAndValidateUrl(href, document.location.href);
|
|
104
155
|
}
|
|
105
156
|
}
|
|
106
157
|
} catch (e) {
|
package/lib/version.js
CHANGED