@formo/analytics-react-native 1.0.2 → 1.1.0
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/commonjs/lib/event/EventQueue.js +367 -57
- package/lib/commonjs/lib/event/EventQueue.js.map +1 -1
- package/lib/commonjs/utils/sanitize.js +260 -0
- package/lib/commonjs/utils/sanitize.js.map +1 -0
- package/lib/commonjs/utils/trafficSource.js +10 -1
- package/lib/commonjs/utils/trafficSource.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/lib/event/EventQueue.js +368 -57
- package/lib/module/lib/event/EventQueue.js.map +1 -1
- package/lib/module/utils/sanitize.js +253 -0
- package/lib/module/utils/sanitize.js.map +1 -0
- package/lib/module/utils/trafficSource.js +10 -1
- package/lib/module/utils/trafficSource.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/commonjs/lib/event/EventQueue.d.ts +55 -0
- package/lib/typescript/commonjs/lib/event/EventQueue.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/sanitize.d.ts +31 -0
- package/lib/typescript/commonjs/utils/sanitize.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/trafficSource.d.ts +3 -0
- package/lib/typescript/commonjs/utils/trafficSource.d.ts.map +1 -1
- package/lib/typescript/commonjs/version.d.ts +1 -1
- package/lib/typescript/module/FormoAnalytics.d.ts +2 -2
- package/lib/typescript/module/FormoAnalytics.d.ts.map +1 -1
- package/lib/typescript/module/FormoAnalyticsProvider.d.ts +1 -1
- package/lib/typescript/module/FormoAnalyticsProvider.d.ts.map +1 -1
- package/lib/typescript/module/constants/index.d.ts +3 -3
- package/lib/typescript/module/constants/index.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +5 -5
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/lib/event/EventFactory.d.ts +2 -2
- package/lib/typescript/module/lib/event/EventFactory.d.ts.map +1 -1
- package/lib/typescript/module/lib/event/EventManager.d.ts +2 -2
- package/lib/typescript/module/lib/event/EventManager.d.ts.map +1 -1
- package/lib/typescript/module/lib/event/EventQueue.d.ts +57 -2
- package/lib/typescript/module/lib/event/EventQueue.d.ts.map +1 -1
- package/lib/typescript/module/lib/event/index.d.ts +4 -4
- package/lib/typescript/module/lib/event/index.d.ts.map +1 -1
- package/lib/typescript/module/lib/event/types.d.ts +1 -1
- package/lib/typescript/module/lib/event/types.d.ts.map +1 -1
- package/lib/typescript/module/lib/session/index.d.ts +1 -1
- package/lib/typescript/module/lib/session/index.d.ts.map +1 -1
- package/lib/typescript/module/lib/storage/AsyncStorageAdapter.d.ts +2 -2
- package/lib/typescript/module/lib/storage/AsyncStorageAdapter.d.ts.map +1 -1
- package/lib/typescript/module/lib/storage/MemoryStorage.d.ts +1 -1
- package/lib/typescript/module/lib/storage/MemoryStorage.d.ts.map +1 -1
- package/lib/typescript/module/lib/storage/StorageBlueprint.d.ts +1 -1
- package/lib/typescript/module/lib/storage/StorageBlueprint.d.ts.map +1 -1
- package/lib/typescript/module/lib/storage/StorageManager.d.ts +1 -1
- package/lib/typescript/module/lib/storage/StorageManager.d.ts.map +1 -1
- package/lib/typescript/module/lib/storage/index.d.ts +4 -4
- package/lib/typescript/module/lib/storage/index.d.ts.map +1 -1
- package/lib/typescript/module/lib/wagmi/WagmiEventHandler.d.ts +2 -2
- package/lib/typescript/module/lib/wagmi/WagmiEventHandler.d.ts.map +1 -1
- package/lib/typescript/module/lib/wagmi/index.d.ts +2 -2
- package/lib/typescript/module/lib/wagmi/index.d.ts.map +1 -1
- package/lib/typescript/module/solana/address.d.ts +1 -1
- package/lib/typescript/module/solana/address.d.ts.map +1 -1
- package/lib/typescript/module/solana/index.d.ts +2 -2
- package/lib/typescript/module/solana/index.d.ts.map +1 -1
- package/lib/typescript/module/types/base.d.ts +3 -3
- package/lib/typescript/module/types/base.d.ts.map +1 -1
- package/lib/typescript/module/types/events.d.ts +2 -2
- package/lib/typescript/module/types/events.d.ts.map +1 -1
- package/lib/typescript/module/types/index.d.ts +2 -2
- package/lib/typescript/module/types/index.d.ts.map +1 -1
- package/lib/typescript/module/utils/index.d.ts +5 -5
- package/lib/typescript/module/utils/index.d.ts.map +1 -1
- package/lib/typescript/module/utils/sanitize.d.ts +31 -0
- package/lib/typescript/module/utils/sanitize.d.ts.map +1 -0
- package/lib/typescript/module/utils/trafficSource.d.ts +4 -1
- package/lib/typescript/module/utils/trafficSource.d.ts.map +1 -1
- package/lib/typescript/module/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/lib/event/EventQueue.ts +402 -61
- package/src/utils/sanitize.ts +274 -0
- package/src/utils/trafficSource.ts +19 -1
- package/src/version.ts +1 -1
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sanitizeUtm = exports.sanitizeTrafficSources = exports.sanitizeReferrer = exports.sanitizeRef = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Traffic-source value sanitization.
|
|
9
|
+
*
|
|
10
|
+
* Ported from the Formo web SDK, where vulnerability scanners (e.g. Acunetix)
|
|
11
|
+
* crawling customer sites injected XSS probes such as
|
|
12
|
+
* `javascript:domxssExecutionSink(1,"'\"><xsstag>()locxss")` or
|
|
13
|
+
* `<script>alert(1)</script>` into every query parameter. Without validation
|
|
14
|
+
* those payloads are captured verbatim as utm_* / ref values, persisted as
|
|
15
|
+
* sticky session traffic sources, and pollute attribution reporting.
|
|
16
|
+
*
|
|
17
|
+
* React Native has the same exposure through two attacker-reachable inputs:
|
|
18
|
+
*
|
|
19
|
+
* - Deep links handed to `setTrafficSourceFromUrl`. Anyone who can get a user
|
|
20
|
+
* to open `myapp://x?utm_source=<script>alert(1)</script>` controls the
|
|
21
|
+
* value verbatim, and it is persisted for the whole session.
|
|
22
|
+
* - The Android Play Install Referrer string, which is derived from the
|
|
23
|
+
* `referrer` parameter of a Play Store URL and is likewise attacker-supplied.
|
|
24
|
+
*
|
|
25
|
+
* Each field class gets the tightest rule its legitimate values allow:
|
|
26
|
+
*
|
|
27
|
+
* - Referral codes are short tokens; >99.5% of production values match the
|
|
28
|
+
* strict pattern and none of the remainder are legitimate (scanner
|
|
29
|
+
* payloads, mangled encodings, URLs glued to codes).
|
|
30
|
+
* - UTM values are free-form (spaces, unicode, `+` are legitimate), so they
|
|
31
|
+
* only reject markup/quote characters, dangerous URL schemes, control and
|
|
32
|
+
* zero-width characters, and absurd lengths.
|
|
33
|
+
* - `referrer` diverges from the web SDK, which leaves it untouched because
|
|
34
|
+
* there it is a browser-set `document.referrer` already handled by redactUrl.
|
|
35
|
+
* In React Native `referrer` holds the raw deep-link URL the attacker
|
|
36
|
+
* supplied, so sanitizing only the utm_ and ref fields would still let the
|
|
37
|
+
* payload through. It gets a URL-sized length budget and is checked both raw
|
|
38
|
+
* and percent-decoded — a URL encodes its payload, so a raw-only check would
|
|
39
|
+
* pass `?utm_source=%3Cscript%3E` straight through.
|
|
40
|
+
*
|
|
41
|
+
* Invalid values are dropped to "" — the same representation as "parameter
|
|
42
|
+
* absent" — rather than repaired, so a poisoned value can never be persisted
|
|
43
|
+
* or reported.
|
|
44
|
+
*
|
|
45
|
+
* The web SDK additionally sanitizes ad-platform click IDs (gclid, fbclid,
|
|
46
|
+
* ...). This SDK does not capture them, so that rule is intentionally absent;
|
|
47
|
+
* add it here alongside the capture if click IDs are ever supported.
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
const REF_PATTERN = /^[A-Za-z0-9._-]{1,64}$/;
|
|
51
|
+
const UTM_MAX_LENGTH = 255;
|
|
52
|
+
|
|
53
|
+
// URLs are legitimately much longer than a UTM value, but not unbounded —
|
|
54
|
+
// this is well above any real deep link and still bounds what gets persisted.
|
|
55
|
+
const REFERRER_MAX_LENGTH = 2_048;
|
|
56
|
+
|
|
57
|
+
// Markup/quote/backslash characters plus C0/C1 control characters and
|
|
58
|
+
// zero-width / bidi / BOM / replacement characters (mangled-encoding
|
|
59
|
+
// markers). Explicit ranges instead of \p{C} to avoid the `u`-flag
|
|
60
|
+
// property-escape requirement.
|
|
61
|
+
const FORBIDDEN_CHARS = /[<>"'`\\\u0000-\u001f\u007f-\u009f\u200b-\u200f\u2028-\u202e\u2060\ufeff\ufffd]/;
|
|
62
|
+
|
|
63
|
+
// Applied to the percent-DECODED form of a referrer. Narrower than the raw
|
|
64
|
+
// set on purpose: a decoded query value legitimately contains quotes and
|
|
65
|
+
// backslashes (`?q=%22running%20shoes%22`), and those are harmless in an
|
|
66
|
+
// analytics field. Markup and invisible characters are what indicate an
|
|
67
|
+
// injected payload rather than a real deep link.
|
|
68
|
+
const DECODED_FORBIDDEN_CHARS = /[<>\u0000-\u001f\u007f-\u009f\u200b-\u200f\u2028-\u202e\u2060\ufeff\ufffd]/;
|
|
69
|
+
|
|
70
|
+
// Values smuggling an executable/URL scheme, e.g. `javascript:alert(1)`.
|
|
71
|
+
const FORBIDDEN_SCHEME_PREFIX = /^\s*(javascript|data|vbscript):/i;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Whether a value smuggles a dangerous scheme, anywhere a URL parser would
|
|
75
|
+
* consider the start of a value.
|
|
76
|
+
*
|
|
77
|
+
* The pattern is anchored, so testing the string as a whole is not enough once
|
|
78
|
+
* decoding can reveal separators that were themselves encoded: with the `=` in
|
|
79
|
+
* `?utm_source%3Djavascript%253Aalert(1)` encoded, URLSearchParams reports one
|
|
80
|
+
* key that decodes to `utm_source=javascript:alert(1)`, which the anchored test
|
|
81
|
+
* never matches. Splitting on the separators after decoding puts the payload
|
|
82
|
+
* back at the start of a segment.
|
|
83
|
+
*/
|
|
84
|
+
const hasForbiddenScheme = value => FORBIDDEN_SCHEME_PREFIX.test(value) || value.split(/[?&=#]/).some(segment => FORBIDDEN_SCHEME_PREFIX.test(segment));
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Percent-decode one layer without ever throwing. `decodeURIComponent` rejects
|
|
88
|
+
* the entire string on a single malformed escape (a stray `%`), which would let
|
|
89
|
+
* `...%3Cscript%3E%` skip the decoded checks completely.
|
|
90
|
+
*
|
|
91
|
+
* Each *run* of consecutive escapes is decoded as a unit rather than byte by
|
|
92
|
+
* byte, because a multi-byte character spans several escapes: `%E3%80%80` is
|
|
93
|
+
* one ideographic space, and decoding `%E3` alone throws. Byte-wise decoding
|
|
94
|
+
* would therefore never produce the whitespace that lets `^\s*javascript:`
|
|
95
|
+
* match `%E3%80%80javascript%3Aalert(1)`. A run that is not valid UTF-8, and
|
|
96
|
+
* any stray `%`, is left as-is.
|
|
97
|
+
*/
|
|
98
|
+
const decodeRun = run => {
|
|
99
|
+
try {
|
|
100
|
+
return decodeURIComponent(run);
|
|
101
|
+
} catch {
|
|
102
|
+
// One invalid byte anywhere in the run would otherwise blind the whole
|
|
103
|
+
// run — appending `%C0` next to `%3C` is enough to hide a `<`. Decode the
|
|
104
|
+
// largest valid group at each position instead, longest first so multi-byte
|
|
105
|
+
// sequences (up to four escapes) still group correctly, and pass through
|
|
106
|
+
// any escape that cannot be decoded at all.
|
|
107
|
+
const escapes = run.match(/%[0-9A-Fa-f]{2}/g) ?? [];
|
|
108
|
+
let out = "";
|
|
109
|
+
let i = 0;
|
|
110
|
+
while (i < escapes.length) {
|
|
111
|
+
let taken = 0;
|
|
112
|
+
for (let len = Math.min(4, escapes.length - i); len >= 1; len--) {
|
|
113
|
+
try {
|
|
114
|
+
out += decodeURIComponent(escapes.slice(i, i + len).join(""));
|
|
115
|
+
taken = len;
|
|
116
|
+
break;
|
|
117
|
+
} catch {
|
|
118
|
+
// Try a shorter group.
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (taken === 0) {
|
|
122
|
+
out += escapes[i];
|
|
123
|
+
taken = 1;
|
|
124
|
+
}
|
|
125
|
+
i += taken;
|
|
126
|
+
}
|
|
127
|
+
return out;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const decodeOnce = value => value.replace(/(?:%[0-9A-Fa-f]{2})+/g, decodeRun);
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Decode to a fixed point, so a payload encoded any number of times
|
|
134
|
+
* (`%253Cscript%253E`, `%25252525253Cscript...`) is compared in a form the
|
|
135
|
+
* markup check can see.
|
|
136
|
+
*
|
|
137
|
+
* The bound is the input length rather than a fixed number of layers, because
|
|
138
|
+
* a fixed number is reachable: re-encoding `javascript:alert(1)` only grows the
|
|
139
|
+
* single `%` by two characters per layer, so 66 layers fit in 151 characters
|
|
140
|
+
* and any small constant can be encoded past. Every productive pass turns a
|
|
141
|
+
* three-character escape into one character, so a string of length n admits
|
|
142
|
+
* fewer than n productive passes — this bound is always sufficient and still
|
|
143
|
+
* guarantees termination.
|
|
144
|
+
*/
|
|
145
|
+
const decodeDeep = value => {
|
|
146
|
+
let current = value;
|
|
147
|
+
for (let i = 0; i < value.length; i++) {
|
|
148
|
+
const next = decodeOnce(current);
|
|
149
|
+
if (next === current) break;
|
|
150
|
+
current = next;
|
|
151
|
+
}
|
|
152
|
+
return current;
|
|
153
|
+
};
|
|
154
|
+
const sanitizeRef = value => REF_PATTERN.test(value) ? value : "";
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* URLSearchParams has already decoded one layer by the time a UTM value gets
|
|
158
|
+
* here, so a payload encoded twice arrives still encoded:
|
|
159
|
+
* `utm_source=%253Cscript%253E` reads as the literal `%3Cscript%3E`, which
|
|
160
|
+
* contains no raw markup and would pass a raw-only check. Test the decoded
|
|
161
|
+
* form as well.
|
|
162
|
+
*/
|
|
163
|
+
exports.sanitizeRef = sanitizeRef;
|
|
164
|
+
const sanitizeUtm = value => {
|
|
165
|
+
if (value.length > UTM_MAX_LENGTH) return "";
|
|
166
|
+
if (FORBIDDEN_CHARS.test(value) || hasForbiddenScheme(value)) {
|
|
167
|
+
return "";
|
|
168
|
+
}
|
|
169
|
+
const decoded = decodeDeep(value);
|
|
170
|
+
if (DECODED_FORBIDDEN_CHARS.test(decoded) || hasForbiddenScheme(decoded)) {
|
|
171
|
+
return "";
|
|
172
|
+
}
|
|
173
|
+
return value;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* The decoded parts of a referrer's query string — keys as well as values.
|
|
178
|
+
* Handles both a full URL ("myapp://x?utm_source=...") and the bare query
|
|
179
|
+
* string the Android install referrer supplies ("utm_source=...&utm_medium=").
|
|
180
|
+
* Returns nothing when there is no query to read; the caller still checks the
|
|
181
|
+
* whole string.
|
|
182
|
+
*
|
|
183
|
+
* Keys matter because a parameter with no "=" parses entirely as a key with an
|
|
184
|
+
* empty value: "?%6Aavascript:alert(1)" would otherwise contribute nothing to
|
|
185
|
+
* inspect.
|
|
186
|
+
*/
|
|
187
|
+
exports.sanitizeUtm = sanitizeUtm;
|
|
188
|
+
const referrerParamParts = value => {
|
|
189
|
+
const queryStart = value.indexOf("?");
|
|
190
|
+
const query = queryStart === -1 ? value : value.slice(queryStart + 1);
|
|
191
|
+
if (!query || queryStart === -1 && !query.includes("=")) return [];
|
|
192
|
+
try {
|
|
193
|
+
// URLSearchParams decodes leniently and does not throw on a stray "%".
|
|
194
|
+
const parts = [];
|
|
195
|
+
for (const [key, paramValue] of new URLSearchParams(query)) {
|
|
196
|
+
parts.push(key, paramValue);
|
|
197
|
+
}
|
|
198
|
+
return parts;
|
|
199
|
+
} catch {
|
|
200
|
+
return [];
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* A URL carries its payload percent-encoded — `Linking` and the browser both
|
|
206
|
+
* encode `<` and `>` — so a raw-only check would pass
|
|
207
|
+
* `?utm_source=%3Cscript%3E` straight through.
|
|
208
|
+
*
|
|
209
|
+
* Checked three ways, because pattern-matching the URL as one opaque string
|
|
210
|
+
* misses what a structural read catches: the whole value raw, the whole value
|
|
211
|
+
* decoded, and each decoded query part — keys included — on its own. The last
|
|
212
|
+
* is what catches a smuggled scheme, since FORBIDDEN_SCHEME_PREFIX is anchored
|
|
213
|
+
* and `?utm_source=javascript:alert(1)` only matches once that parameter is
|
|
214
|
+
* read apart from the `myapp://` URL containing it.
|
|
215
|
+
*/
|
|
216
|
+
const sanitizeReferrer = value => {
|
|
217
|
+
if (value.length > REFERRER_MAX_LENGTH) return "";
|
|
218
|
+
if (FORBIDDEN_CHARS.test(value) || hasForbiddenScheme(value)) {
|
|
219
|
+
return "";
|
|
220
|
+
}
|
|
221
|
+
const decodedWhole = decodeDeep(value);
|
|
222
|
+
if (DECODED_FORBIDDEN_CHARS.test(decodedWhole) || hasForbiddenScheme(decodedWhole)) {
|
|
223
|
+
return "";
|
|
224
|
+
}
|
|
225
|
+
for (const part of referrerParamParts(value)) {
|
|
226
|
+
const decoded = decodeDeep(part);
|
|
227
|
+
if (DECODED_FORBIDDEN_CHARS.test(decoded) || hasForbiddenScheme(decoded)) {
|
|
228
|
+
return "";
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return value;
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Sanitize every traffic-source field of a (possibly sparse) traffic-source
|
|
236
|
+
* object. Unknown keys fall through to the UTM rule, the most permissive of
|
|
237
|
+
* the value rules.
|
|
238
|
+
*/
|
|
239
|
+
exports.sanitizeReferrer = sanitizeReferrer;
|
|
240
|
+
const sanitizeTrafficSources = trafficSources => {
|
|
241
|
+
const result = {
|
|
242
|
+
...trafficSources
|
|
243
|
+
};
|
|
244
|
+
for (const key of Object.keys(result)) {
|
|
245
|
+
const value = result[key];
|
|
246
|
+
if (typeof value !== "string" || value === "") {
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
if (key === "ref") {
|
|
250
|
+
result[key] = sanitizeRef(value);
|
|
251
|
+
} else if (key === "referrer") {
|
|
252
|
+
result[key] = sanitizeReferrer(value);
|
|
253
|
+
} else {
|
|
254
|
+
result[key] = sanitizeUtm(value);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return result;
|
|
258
|
+
};
|
|
259
|
+
exports.sanitizeTrafficSources = sanitizeTrafficSources;
|
|
260
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["REF_PATTERN","UTM_MAX_LENGTH","REFERRER_MAX_LENGTH","FORBIDDEN_CHARS","DECODED_FORBIDDEN_CHARS","FORBIDDEN_SCHEME_PREFIX","hasForbiddenScheme","value","test","split","some","segment","decodeRun","run","decodeURIComponent","escapes","match","out","i","length","taken","len","Math","min","slice","join","decodeOnce","replace","decodeDeep","current","next","sanitizeRef","exports","sanitizeUtm","decoded","referrerParamParts","queryStart","indexOf","query","includes","parts","key","paramValue","URLSearchParams","push","sanitizeReferrer","decodedWhole","part","sanitizeTrafficSources","trafficSources","result","Object","keys"],"sourceRoot":"../../../src","sources":["utils/sanitize.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,6 +13,7 @@ exports.updateStoredTrafficSource = updateStoredTrafficSource;
|
|
|
13
13
|
var _index = require("../lib/logger/index.js");
|
|
14
14
|
var _index2 = require("../lib/storage/index.js");
|
|
15
15
|
var _index3 = require("../constants/index.js");
|
|
16
|
+
var _sanitize = require("./sanitize.js");
|
|
16
17
|
/**
|
|
17
18
|
* Traffic Source Utilities
|
|
18
19
|
* Parse UTM parameters and referral information from URLs
|
|
@@ -21,8 +22,14 @@ var _index3 = require("../constants/index.js");
|
|
|
21
22
|
/**
|
|
22
23
|
* Parse UTM parameters and referral info from URL
|
|
23
24
|
* Supports both web URLs (https://) and deep link URLs (myapp://)
|
|
25
|
+
*
|
|
26
|
+
* Every return path is sanitized (see ./sanitize) so scanner-injected or
|
|
27
|
+
* hand-crafted payloads in a deep link can never be persisted or reported.
|
|
24
28
|
*/
|
|
25
29
|
function parseTrafficSource(url, customRefParams, pathPattern) {
|
|
30
|
+
return (0, _sanitize.sanitizeTrafficSources)(extractTrafficSource(url, customRefParams, pathPattern));
|
|
31
|
+
}
|
|
32
|
+
function extractTrafficSource(url, customRefParams, pathPattern) {
|
|
26
33
|
try {
|
|
27
34
|
// Handle deep link URLs that may not have standard URL format
|
|
28
35
|
let urlObj;
|
|
@@ -110,7 +117,9 @@ function getStoredTrafficSource() {
|
|
|
110
117
|
try {
|
|
111
118
|
const stored = (0, _index2.storage)().get(_index3.SESSION_TRAFFIC_SOURCE_KEY);
|
|
112
119
|
if (stored && typeof stored === "string") {
|
|
113
|
-
|
|
120
|
+
// Sanitize on the way out too, so values persisted by a pre-sanitization
|
|
121
|
+
// SDK version are flushed rather than replayed onto every event.
|
|
122
|
+
return (0, _sanitize.sanitizeTrafficSources)(JSON.parse(stored));
|
|
114
123
|
}
|
|
115
124
|
} catch (error) {
|
|
116
125
|
_index.logger.debug("Failed to get stored traffic source:", error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_index","require","_index2","_index3","parseTrafficSource","url","customRefParams","pathPattern","urlObj","URL","queryStart","indexOf","referrer","substring","params","searchParams","trafficSource","has","utm_source","get","utm_medium","utm_campaign","utm_term","utm_content","defaultRefParams","refParams","Set","param","ref","pathRegex","RegExp","pathname","match","e","logger","error","storeTrafficSource","hasData","storage","set","SESSION_TRAFFIC_SOURCE_KEY","JSON","stringify","debug","getStoredTrafficSource","stored","parse","undefined","clearTrafficSource","remove","mergeWithStoredTrafficSource","context","TRAFFIC_SOURCE_KEYS","updateStoredTrafficSource","incoming","existing","merged","key","incomingVal","existingVal","mergeTrafficSourceFill","changed","value","Object","entries","String"],"sourceRoot":"../../../src","sources":["utils/trafficSource.ts"],"mappings":";;;;;;;;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;
|
|
1
|
+
{"version":3,"names":["_index","require","_index2","_index3","_sanitize","parseTrafficSource","url","customRefParams","pathPattern","sanitizeTrafficSources","extractTrafficSource","urlObj","URL","queryStart","indexOf","referrer","substring","params","searchParams","trafficSource","has","utm_source","get","utm_medium","utm_campaign","utm_term","utm_content","defaultRefParams","refParams","Set","param","ref","pathRegex","RegExp","pathname","match","e","logger","error","storeTrafficSource","hasData","storage","set","SESSION_TRAFFIC_SOURCE_KEY","JSON","stringify","debug","getStoredTrafficSource","stored","parse","undefined","clearTrafficSource","remove","mergeWithStoredTrafficSource","context","TRAFFIC_SOURCE_KEYS","updateStoredTrafficSource","incoming","existing","merged","key","incomingVal","existingVal","mergeTrafficSourceFill","changed","value","Object","entries","String"],"sourceRoot":"../../../src","sources":["utils/trafficSource.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/version.js
CHANGED
|
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.version = void 0;
|
|
7
7
|
// This file is auto-generated by scripts/update-version.js during npm version
|
|
8
8
|
// Do not edit manually - it will be overwritten
|
|
9
|
-
const version = exports.version = '1.0
|
|
9
|
+
const version = exports.version = '1.1.0';
|
|
10
10
|
//# sourceMappingURL=version.js.map
|