|
62 | 62 | const SHORT_DOMAIN = DOMAINS_CONFIG.refer; |
63 | 63 | const ATTRIBUTION_MODEL = |
64 | 64 | script.getAttribute('data-attribution-model') || 'last-click'; |
65 | | - const QUERY_PARAM = script.getAttribute('data-query-param') || 'via'; |
66 | | - const QUERY_PARAM_VALUE = new URLSearchParams(location.search).get( |
67 | | - QUERY_PARAM, |
68 | | - ); |
| 65 | + |
| 66 | + // Resolve query params from data-query-param and data-query-params |
| 67 | + const QUERY_PARAMS = (() => { |
| 68 | + const queryParam = script.getAttribute('data-query-param'); |
| 69 | + const queryParams = script.getAttribute('data-query-params'); |
| 70 | + |
| 71 | + let resolvedQueryParams = ['via']; |
| 72 | + |
| 73 | + if (queryParam) { |
| 74 | + resolvedQueryParams = [queryParam, ...resolvedQueryParams]; |
| 75 | + } else if (queryParams) { |
| 76 | + try { |
| 77 | + resolvedQueryParams = [ |
| 78 | + ...JSON.parse(queryParams), |
| 79 | + ...resolvedQueryParams, |
| 80 | + ]; |
| 81 | + } catch (error) { |
| 82 | + console.warn( |
| 83 | + '[dubAnalytics] Failed to parse data-query-params.', |
| 84 | + error, |
| 85 | + ); |
| 86 | + } |
| 87 | + } |
| 88 | + |
| 89 | + return [...new Set(resolvedQueryParams)]; |
| 90 | + })(); |
| 91 | + |
| 92 | + const QUERY_PARAM_VALUE = (() => { |
| 93 | + const params = new URLSearchParams(location.search); |
| 94 | + |
| 95 | + for (const param of QUERY_PARAMS) { |
| 96 | + if (params.get(param)) { |
| 97 | + return params.get(param); |
| 98 | + } |
| 99 | + } |
| 100 | + |
| 101 | + return null; |
| 102 | + })(); |
69 | 103 |
|
70 | 104 | // Initialize global DubAnalytics object |
71 | 105 | window.DubAnalytics = window.DubAnalytics || { |
|
262 | 296 |
|
263 | 297 | // Export minimal API with minified names |
264 | 298 | window._dubAnalytics = { |
265 | | - c: cookieManager, // was cookieManager |
266 | | - i: DUB_ID_VAR, // was DUB_ID_VAR |
267 | | - h: HOSTNAME, // was HOSTNAME |
268 | | - a: API_HOST, // was API_HOST |
269 | | - o: COOKIE_OPTIONS, // was COOKIE_OPTIONS |
270 | | - d: SHORT_DOMAIN, // was SHORT_DOMAIN |
271 | | - m: ATTRIBUTION_MODEL, // was ATTRIBUTION_MODEL |
272 | | - p: QUERY_PARAM, // was QUERY_PARAM |
273 | | - v: QUERY_PARAM_VALUE, // was QUERY_PARAM_VALUE |
274 | | - n: DOMAINS_CONFIG, // was DOMAINS_CONFIG |
275 | | - k: PUBLISHABLE_KEY, |
| 299 | + c: cookieManager, |
276 | 300 | qm: queueManager, |
| 301 | + i: DUB_ID_VAR, |
| 302 | + h: HOSTNAME, |
| 303 | + a: API_HOST, |
| 304 | + d: SHORT_DOMAIN, |
| 305 | + v: QUERY_PARAM_VALUE, |
| 306 | + n: DOMAINS_CONFIG, |
| 307 | + k: PUBLISHABLE_KEY, |
277 | 308 | }; |
278 | 309 |
|
279 | 310 | // Initialize |
|
0 commit comments