kv-test-lib 1.0.3 → 1.0.5

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.
Files changed (43) hide show
  1. package/dist/browser/browser.js +9 -13
  2. package/dist/browser/browser.js.map +1 -0
  3. package/dist/browser/cookies.js +7 -17
  4. package/dist/browser/cookies.js.map +1 -0
  5. package/dist/browser/persist.js +22 -49
  6. package/dist/browser/persist.js.map +1 -0
  7. package/dist/http.js +5 -4
  8. package/dist/http.js.map +1 -0
  9. package/dist/interfaces.js +7 -6
  10. package/dist/interfaces.js.map +1 -0
  11. package/dist/jobqueue.js +12 -21
  12. package/dist/jobqueue.js.map +1 -0
  13. package/dist/kochava.js +193 -216
  14. package/dist/kochava.js.map +1 -0
  15. package/dist/payloads/event.js +11 -16
  16. package/dist/payloads/event.js.map +1 -0
  17. package/dist/payloads/identityLink.js +9 -13
  18. package/dist/payloads/identityLink.js.map +1 -0
  19. package/dist/payloads/install.js +22 -24
  20. package/dist/payloads/install.js.map +1 -0
  21. package/dist/payloads/kvinit.js +17 -22
  22. package/dist/payloads/kvinit.js.map +1 -0
  23. package/dist/payloads/payload.js +5 -5
  24. package/dist/payloads/payload.js.map +1 -0
  25. package/dist/utils/log.js +10 -16
  26. package/dist/utils/log.js.map +1 -0
  27. package/dist/utils/utils.js +4 -6
  28. package/dist/utils/utils.js.map +1 -0
  29. package/package.json +1 -1
  30. package/dist/browser/browser.d.ts +0 -8
  31. package/dist/browser/cookies.d.ts +0 -3
  32. package/dist/browser/persist.d.ts +0 -33
  33. package/dist/http.d.ts +0 -6
  34. package/dist/interfaces.d.ts +0 -117
  35. package/dist/jobqueue.d.ts +0 -35
  36. package/dist/kochava.d.ts +0 -52
  37. package/dist/payloads/event.d.ts +0 -6
  38. package/dist/payloads/identityLink.d.ts +0 -7
  39. package/dist/payloads/install.d.ts +0 -6
  40. package/dist/payloads/kvinit.d.ts +0 -5
  41. package/dist/payloads/payload.d.ts +0 -33
  42. package/dist/utils/log.d.ts +0 -30
  43. package/dist/utils/utils.d.ts +0 -5
@@ -3,19 +3,16 @@
3
3
  Copyright (c) Kochava, Inc. All rights reserved.
4
4
  */
5
5
  export const getPackageName = () => `com.${window.location.hostname}.web`;
6
- export const getLanguage = () => (navigator) ? navigator.language : "";
7
- export const getDeviceWidth = () => (window) ? window.screen.availWidth : 0;
8
- export const getDeviceHeight = () => (window) ? window.screen.availHeight : 0;
9
- export const getDeviceOrientation = () => (window) ? window.innerWidth < window.innerHeight
10
- ? "portrait" : "landscape" : "";
6
+ export const getLanguage = () => navigator ? navigator.language : "";
7
+ export const getDeviceWidth = () => window ? window.screen.availWidth : 0;
8
+ export const getDeviceHeight = () => window ? window.screen.availHeight : 0;
9
+ export const getDeviceOrientation = () => window ? window.innerWidth < window.innerHeight ? "portrait" : "landscape" : "";
11
10
  export const getBaseDomain = () => {
12
11
  try {
13
12
  const regexResult = window.location.host.match(/[^.]*\.[^.]*$/);
14
- if (regexResult)
15
- return regexResult[0];
13
+ if (regexResult) return regexResult[0];
16
14
  return "";
17
- }
18
- catch (err) {
15
+ } catch (err) {
19
16
  return window.location.host;
20
17
  }
21
18
  };
@@ -27,14 +24,13 @@ export const getPageName = () => {
27
24
  }
28
25
  return page === "" ? "/" : page;
29
26
  };
30
- export const getUrlParameter = (name) => {
27
+ export const getUrlParameter = name => {
31
28
  if (!window.location || !window.location.search) {
32
29
  return "";
33
30
  }
34
31
  name = name.replace(/[[]/, "\\[").replace(/[\]]/, "\\]");
35
32
  const regex = new RegExp("[\\?&]" + name + "=([^&#]*)");
36
33
  const results = regex.exec(window.location.search);
37
- return results === null
38
- ? ""
39
- : decodeURIComponent(results[1].replace(/\+/g, " "));
34
+ return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
40
35
  };
36
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../dist/browser/browser.js"],"names":["getPackageName","window","location","hostname","getLanguage","navigator","language","getDeviceWidth","screen","availWidth","getDeviceHeight","availHeight","getDeviceOrientation","innerWidth","innerHeight","getBaseDomain","regexResult","host","match","err","getPageName","page","pathname","substring","replace","getUrlParameter","name","search","regex","RegExp","results","exec","decodeURIComponent"],"mappings":"AAAA;;;;AAIA,OAAO,MAAMA,iBAAiB,MAAO,OAAMC,OAAOC,QAAP,CAAgBC,QAAS,MAA7D;AACP,OAAO,MAAMC,cAAc,MAAOC,SAAD,GAAcA,UAAUC,QAAxB,GAAmC,EAA7D;AACP,OAAO,MAAMC,iBAAiB,MAAON,MAAD,GAAWA,OAAOO,MAAP,CAAcC,UAAzB,GAAsC,CAAnE;AACP,OAAO,MAAMC,kBAAkB,MAAOT,MAAD,GAAWA,OAAOO,MAAP,CAAcG,WAAzB,GAAuC,CAArE;AACP,OAAO,MAAMC,uBAAuB,MAAOX,MAAD,GAAWA,OAAOY,UAAP,GAAoBZ,OAAOa,WAA3B,GAC/C,UAD+C,GAClC,WADuB,GACT,EAD1B;AAEP,OAAO,MAAMC,gBAAgB,MAAM;AAC/B,QAAI;AACA,cAAMC,cAAcf,OAAOC,QAAP,CAAgBe,IAAhB,CAAqBC,KAArB,CAA2B,eAA3B,CAApB;AACA,YAAIF,WAAJ,EACI,OAAOA,YAAY,CAAZ,CAAP;AACJ,eAAO,EAAP;AACH,KALD,CAMA,OAAOG,GAAP,EAAY;AACR,eAAOlB,OAAOC,QAAP,CAAgBe,IAAvB;AACH;AACJ,CAVM;AAWP,OAAO,MAAMG,cAAc,MAAM;AAC7B,QAAIC,OAAO,EAAX;AACA,QAAIpB,OAAOC,QAAX,EAAqB;AACjBmB,eAAOpB,OAAOC,QAAP,CAAgBoB,QAAhB,CAAyBC,SAAzB,CAAmC,CAAnC,CAAP;AACAF,eAAOA,KAAKG,OAAL,CAAa,MAAb,EAAqB,EAArB,CAAP;AACH;AACD,WAAOH,SAAS,EAAT,GAAc,GAAd,GAAoBA,IAA3B;AACH,CAPM;AAQP,OAAO,MAAMI,kBAAmBC,IAAD,IAAU;AACrC,QAAI,CAACzB,OAAOC,QAAR,IAAoB,CAACD,OAAOC,QAAP,CAAgByB,MAAzC,EAAiD;AAC7C,eAAO,EAAP;AACH;AACDD,WAAOA,KAAKF,OAAL,CAAa,KAAb,EAAoB,KAApB,EAA2BA,OAA3B,CAAmC,MAAnC,EAA2C,KAA3C,CAAP;AACA,UAAMI,QAAQ,IAAIC,MAAJ,CAAW,WAAWH,IAAX,GAAkB,WAA7B,CAAd;AACA,UAAMI,UAAUF,MAAMG,IAAN,CAAW9B,OAAOC,QAAP,CAAgByB,MAA3B,CAAhB;AACA,WAAOG,YAAY,IAAZ,GACD,EADC,GAEDE,mBAAmBF,QAAQ,CAAR,EAAWN,OAAX,CAAmB,KAAnB,EAA0B,GAA1B,CAAnB,CAFN;AAGH,CAVM","file":"browser.js","sourcesContent":["/*\n Authored by Brett Barinaga on 11/17/21.\n Copyright (c) Kochava, Inc. All rights reserved.\n*/\nexport const getPackageName = () => `com.${window.location.hostname}.web`;\nexport const getLanguage = () => (navigator) ? navigator.language : \"\";\nexport const getDeviceWidth = () => (window) ? window.screen.availWidth : 0;\nexport const getDeviceHeight = () => (window) ? window.screen.availHeight : 0;\nexport const getDeviceOrientation = () => (window) ? window.innerWidth < window.innerHeight\n ? \"portrait\" : \"landscape\" : \"\";\nexport const getBaseDomain = () => {\n try {\n const regexResult = window.location.host.match(/[^.]*\\.[^.]*$/);\n if (regexResult)\n return regexResult[0];\n return \"\";\n }\n catch (err) {\n return window.location.host;\n }\n};\nexport const getPageName = () => {\n let page = \"\";\n if (window.location) {\n page = window.location.pathname.substring(1);\n page = page.replace(/\\/+$/, \"\");\n }\n return page === \"\" ? \"/\" : page;\n};\nexport const getUrlParameter = (name) => {\n if (!window.location || !window.location.search) {\n return \"\";\n }\n name = name.replace(/[[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n const regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\");\n const results = regex.exec(window.location.search);\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n};\n"]}
@@ -8,33 +8,23 @@ export const setCookie = (name, value) => {
8
8
  const date = new Date();
9
9
  date.setTime(date.getTime() + 3650 * 24 * 60 * 60 * 1000);
10
10
  expires = `; expires=${date.toUTCString()}`;
11
- document.cookie =
12
- name +
13
- "=" +
14
- (value || "") +
15
- expires +
16
- "; path=/;domain=" +
17
- getBaseDomain();
11
+ document.cookie = name + "=" + (value || "") + expires + "; path=/;domain=" + getBaseDomain();
18
12
  };
19
- export const getCookie = (name) => {
13
+ export const getCookie = name => {
20
14
  const nameEQ = name + "=";
21
15
  const charArray = document.cookie.split(';');
22
16
  for (let i = 0; i < charArray.length; i++) {
23
17
  let char = charArray[i];
24
- while (char.charAt(0) === " ")
25
- char = char.substring(1, char.length);
26
- if (char.indexOf(nameEQ) === 0)
27
- return char.substring(nameEQ.length, char.length);
18
+ while (char.charAt(0) === " ") char = char.substring(1, char.length);
19
+ if (char.indexOf(nameEQ) === 0) return char.substring(nameEQ.length, char.length);
28
20
  }
29
21
  return "";
30
22
  };
31
- export const deleteCookie = (name) => {
23
+ export const deleteCookie = name => {
32
24
  if (getCookie(name)) {
33
25
  const path = "/";
34
26
  const domain = getBaseDomain();
35
- document.cookie = name + "=" +
36
- ((path) ? ";path=" + path : "") +
37
- ((domain) ? ";domain=" + domain : "") +
38
- ";expires=Thu, 01 Jan 1970 00:00:01 GMT";
27
+ document.cookie = name + "=" + (path ? ";path=" + path : "") + (domain ? ";domain=" + domain : "") + ";expires=Thu, 01 Jan 1970 00:00:01 GMT";
39
28
  }
40
29
  };
30
+ //# sourceMappingURL=cookies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../dist/browser/cookies.js"],"names":["getBaseDomain","setCookie","name","value","expires","date","Date","setTime","getTime","toUTCString","document","cookie","getCookie","nameEQ","charArray","split","i","length","char","charAt","substring","indexOf","deleteCookie","path","domain"],"mappings":"AAAA;;;;AAIA,SAASA,aAAT,QAA8B,WAA9B;AACA,OAAO,MAAMC,YAAY,CAACC,IAAD,EAAOC,KAAP,KAAiB;AACtC,QAAIC,UAAU,EAAd;AACA,UAAMC,OAAO,IAAIC,IAAJ,EAAb;AACAD,SAAKE,OAAL,CAAaF,KAAKG,OAAL,KAAiB,OAAO,EAAP,GAAY,EAAZ,GAAiB,EAAjB,GAAsB,IAApD;AACAJ,cAAW,aAAYC,KAAKI,WAAL,EAAmB,EAA1C;AACAC,aAASC,MAAT,GACIT,OACI,GADJ,IAEKC,SAAS,EAFd,IAGIC,OAHJ,GAII,kBAJJ,GAKIJ,eANR;AAOH,CAZM;AAaP,OAAO,MAAMY,YAAaV,IAAD,IAAU;AAC/B,UAAMW,SAASX,OAAO,GAAtB;AACA,UAAMY,YAAYJ,SAASC,MAAT,CAAgBI,KAAhB,CAAsB,GAAtB,CAAlB;AACA,SAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIF,UAAUG,MAA9B,EAAsCD,GAAtC,EAA2C;AACvC,YAAIE,OAAOJ,UAAUE,CAAV,CAAX;AACA,eAAOE,KAAKC,MAAL,CAAY,CAAZ,MAAmB,GAA1B,EACID,OAAOA,KAAKE,SAAL,CAAe,CAAf,EAAkBF,KAAKD,MAAvB,CAAP;AACJ,YAAIC,KAAKG,OAAL,CAAaR,MAAb,MAAyB,CAA7B,EACI,OAAOK,KAAKE,SAAL,CAAeP,OAAOI,MAAtB,EAA8BC,KAAKD,MAAnC,CAAP;AACP;AACD,WAAO,EAAP;AACH,CAXM;AAYP,OAAO,MAAMK,eAAgBpB,IAAD,IAAU;AAClC,QAAIU,UAAUV,IAAV,CAAJ,EAAqB;AACjB,cAAMqB,OAAO,GAAb;AACA,cAAMC,SAASxB,eAAf;AACAU,iBAASC,MAAT,GAAkBT,OAAO,GAAP,IACZqB,IAAD,GAAS,WAAWA,IAApB,GAA2B,EADd,KAEZC,MAAD,GAAW,aAAaA,MAAxB,GAAiC,EAFpB,IAGd,wCAHJ;AAIH;AACJ,CATM","file":"cookies.js","sourcesContent":["/*\n Authored by Brett Barinaga on 11/17/21.\n Copyright (c) Kochava, Inc. All rights reserved.\n*/\nimport { getBaseDomain } from \"./browser\";\nexport const setCookie = (name, value) => {\n let expires = \"\";\n const date = new Date();\n date.setTime(date.getTime() + 3650 * 24 * 60 * 60 * 1000);\n expires = `; expires=${date.toUTCString()}`;\n document.cookie =\n name +\n \"=\" +\n (value || \"\") +\n expires +\n \"; path=/;domain=\" +\n getBaseDomain();\n};\nexport const getCookie = (name) => {\n const nameEQ = name + \"=\";\n const charArray = document.cookie.split(';');\n for (let i = 0; i < charArray.length; i++) {\n let char = charArray[i];\n while (char.charAt(0) === \" \")\n char = char.substring(1, char.length);\n if (char.indexOf(nameEQ) === 0)\n return char.substring(nameEQ.length, char.length);\n }\n return \"\";\n};\nexport const deleteCookie = (name) => {\n if (getCookie(name)) {\n const path = \"/\";\n const domain = getBaseDomain();\n document.cookie = name + \"=\" +\n ((path) ? \";path=\" + path : \"\") +\n ((domain) ? \";domain=\" + domain : \"\") +\n \";expires=Thu, 01 Jan 1970 00:00:01 GMT\";\n }\n};\n"]}
@@ -23,45 +23,30 @@ export var PersistKey;
23
23
  PersistKey["OverrideDeviceId"] = "com.kochava.tracker.OverrideDeviceId";
24
24
  PersistKey["OldKvid"] = "kv_id";
25
25
  })(PersistKey || (PersistKey = {}));
26
- const storedKeys = [
27
- PersistKey.LastKvinit,
28
- PersistKey.EventQueue,
29
- PersistKey.IdLinkQueue,
30
- PersistKey.DeviceId,
31
- PersistKey.InstallId,
32
- PersistKey.FirstStartDate,
33
- PersistKey.InstallSentDate,
34
- PersistKey.KvinitSentDate,
35
- PersistKey.SessionCount,
36
- PersistKey.IdentityLinks,
37
- PersistKey.OverrideAppId,
38
- PersistKey.OverrideDeviceId,
39
- ];
26
+ const storedKeys = [PersistKey.LastKvinit, PersistKey.EventQueue, PersistKey.IdLinkQueue, PersistKey.DeviceId, PersistKey.InstallId, PersistKey.FirstStartDate, PersistKey.InstallSentDate, PersistKey.KvinitSentDate, PersistKey.SessionCount, PersistKey.IdentityLinks, PersistKey.OverrideAppId, PersistKey.OverrideDeviceId];
40
27
  export const checkInstallIdChange = (inputId, useCookies) => {
41
28
  const persistedInstallId = readAndUpdatePersistedValue(PersistKey.InstallId, useCookies);
42
29
  // if the input is empty, we don't need to change
43
- if (!inputId)
44
- return false;
30
+ if (!inputId) return false;
45
31
  // if the persistedId is empty, we will need to change
46
32
  if (!persistedInstallId) {
47
33
  updatePersistedValue(PersistKey.InstallId, inputId, useCookies);
48
34
  return true;
49
35
  }
50
36
  // if the inputId and persistedId are the same, we dont need to change
51
- if (inputId === persistedInstallId)
52
- return false;
37
+ if (inputId === persistedInstallId) return false;
53
38
  // at this point both inputId and persistedInstallId exist and are not equal,
54
39
  // so we must need to change
55
40
  updatePersistedValue(PersistKey.InstallId, inputId, useCookies);
56
41
  return true;
57
42
  };
58
- export const addToPersistedEventQueue = (job) => {
43
+ export const addToPersistedEventQueue = job => {
59
44
  const persistedQueueStr = localStorage.getItem(PersistKey.EventQueue);
60
45
  const persistedQueue = JSON.parse(persistedQueueStr) || [];
61
46
  persistedQueue.push(job);
62
47
  localStorage.setItem(PersistKey.EventQueue, JSON.stringify(persistedQueue));
63
48
  };
64
- export const removeFromEventPersistedQueue = (job) => {
49
+ export const removeFromEventPersistedQueue = job => {
65
50
  const persistedQueueStr = localStorage.getItem(PersistKey.EventQueue);
66
51
  const persistedQueue = JSON.parse(persistedQueueStr) || [];
67
52
  const queueWithJobRemoved = persistedQueue.filter(persistedJob => {
@@ -69,7 +54,7 @@ export const removeFromEventPersistedQueue = (job) => {
69
54
  });
70
55
  localStorage.setItem(PersistKey.EventQueue, JSON.stringify(queueWithJobRemoved));
71
56
  };
72
- export const updateOrAddPersistedIdLinkQueue = (job) => {
57
+ export const updateOrAddPersistedIdLinkQueue = job => {
73
58
  const idLinkKey = Object.keys(job.idLink)[0];
74
59
  const persistedQueueStr = localStorage.getItem(PersistKey.IdLinkQueue);
75
60
  const persistedQueue = JSON.parse(persistedQueueStr) || [];
@@ -83,11 +68,10 @@ export const updateOrAddPersistedIdLinkQueue = (job) => {
83
68
  }
84
69
  }
85
70
  // if the key is new, add it
86
- if (!updated)
87
- persistedQueue.push(job);
71
+ if (!updated) persistedQueue.push(job);
88
72
  localStorage.setItem(PersistKey.IdLinkQueue, JSON.stringify(persistedQueue));
89
73
  };
90
- export const removeFromIdLinkPersistedQueue = (job) => {
74
+ export const removeFromIdLinkPersistedQueue = job => {
91
75
  const persistedQueueStr = localStorage.getItem(PersistKey.IdLinkQueue);
92
76
  const persistedQueue = JSON.parse(persistedQueueStr) || [];
93
77
  const queueWithJobRemoved = persistedQueue.filter(persistedJob => {
@@ -130,51 +114,39 @@ export const readAndUpdateUTM = (appGuid, useCookies) => {
130
114
  const urlValue = getUrlParameter("ko_click_id");
131
115
  const storageValue = localStorage.getItem(storageName);
132
116
  let cookieValue = "";
133
- if (useCookies)
134
- cookieValue = getCookie(storageName);
117
+ if (useCookies) cookieValue = getCookie(storageName);
135
118
  if (urlValue) {
136
119
  localStorage.setItem(storageName, urlValue);
137
- if (useCookies)
138
- setCookie(storageName, urlValue);
120
+ if (useCookies) setCookie(storageName, urlValue);
121
+ } else if (storageValue) {
122
+ if (useCookies) setCookie(storageName, urlValue);
139
123
  }
140
- else if (storageValue) {
141
- if (useCookies)
142
- setCookie(storageName, urlValue);
143
- }
144
- return (urlValue) ? urlValue :
145
- (storageValue) ? storageValue :
146
- (cookieValue) ? cookieValue : "";
124
+ return urlValue ? urlValue : storageValue ? storageValue : cookieValue ? cookieValue : "";
147
125
  };
148
126
  export const readAndUpdatePersistedValue = (key, useCookie) => {
149
127
  const urlValue = getUrlParameter(key);
150
128
  const storageValue = localStorage.getItem(key);
151
129
  let cookieValue = "";
152
- if (useCookie)
153
- cookieValue = getCookie(key);
130
+ if (useCookie) cookieValue = getCookie(key);
154
131
  if (urlValue) {
155
132
  updatePersistedValue(key, urlValue, useCookie);
156
- }
157
- else if (storageValue) {
133
+ } else if (storageValue) {
158
134
  updatePersistedValue(key, storageValue, useCookie);
159
- }
160
- else if (cookieValue) {
135
+ } else if (cookieValue) {
161
136
  updatePersistedValue(key, storageValue, useCookie);
162
137
  }
163
- return (urlValue) ? urlValue :
164
- (storageValue) ? storageValue :
165
- (cookieValue) ? cookieValue : "";
138
+ return urlValue ? urlValue : storageValue ? storageValue : cookieValue ? cookieValue : "";
166
139
  };
167
140
  export const updatePersistedValue = (key, value, useCookie) => {
168
141
  localStorage.setItem(key, value);
169
- if (useCookie)
170
- setCookie(key, value);
142
+ if (useCookie) setCookie(key, value);
171
143
  };
172
- export const deletePersistedValue = (item) => {
144
+ export const deletePersistedValue = item => {
173
145
  localStorage.removeItem(item);
174
146
  deleteCookie(item);
175
147
  };
176
148
  export const deleteAllPersisted = () => storedKeys.forEach(item => deletePersistedValue(item));
177
- export const readAndUpdateDeviceId = (useCookie) => {
149
+ export const readAndUpdateDeviceId = useCookie => {
178
150
  let storedDeviceId = readAndUpdatePersistedValue(PersistKey.DeviceId, useCookie);
179
151
  if (!storedDeviceId) {
180
152
  const kvId = `KB${utils.getCurrTimeSec()}T${utils.uuidv4()}`;
@@ -183,7 +155,7 @@ export const readAndUpdateDeviceId = (useCookie) => {
183
155
  updatePersistedValue(PersistKey.DeviceId, storedDeviceId, useCookie);
184
156
  return storedDeviceId;
185
157
  };
186
- export const readAndUpdateSessionCount = (useCookie) => {
158
+ export const readAndUpdateSessionCount = useCookie => {
187
159
  const storedSessionCount = readAndUpdatePersistedValue(PersistKey.SessionCount, useCookie);
188
160
  let sessionCount = 1;
189
161
  if (storedSessionCount) {
@@ -193,3 +165,4 @@ export const readAndUpdateSessionCount = (useCookie) => {
193
165
  updatePersistedValue(PersistKey.SessionCount, sessionCount.toString(), useCookie);
194
166
  return sessionCount;
195
167
  };
168
+ //# sourceMappingURL=persist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../dist/browser/persist.js"],"names":["utils","getUrlParameter","setCookie","getCookie","deleteCookie","Log","MAX_STORED_IDLINKS","PersistKey","storedKeys","LastKvinit","EventQueue","IdLinkQueue","DeviceId","InstallId","FirstStartDate","InstallSentDate","KvinitSentDate","SessionCount","IdentityLinks","OverrideAppId","OverrideDeviceId","checkInstallIdChange","inputId","useCookies","persistedInstallId","readAndUpdatePersistedValue","updatePersistedValue","addToPersistedEventQueue","job","persistedQueueStr","localStorage","getItem","persistedQueue","JSON","parse","push","setItem","stringify","removeFromEventPersistedQueue","queueWithJobRemoved","filter","persistedJob","id","updateOrAddPersistedIdLinkQueue","idLinkKey","Object","keys","idLink","updated","persistedKey","removeFromIdLinkPersistedQueue","addPersistedIdLinks","key","value","persistedIdLinksStr","persistedIdLinks","storedSoFar","length","debug","checkDuplicateIdLink","getPersistedIdentityLinks","undefined","readAndUpdateUTM","appGuid","storageName","urlValue","storageValue","cookieValue","useCookie","deletePersistedValue","item","removeItem","deleteAllPersisted","forEach","readAndUpdateDeviceId","storedDeviceId","kvId","getCurrTimeSec","uuidv4","replace","readAndUpdateSessionCount","storedSessionCount","sessionCount","parseInt","toString"],"mappings":"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","file":"persist.js","sourcesContent":["/*\n Authored by Brett Barinaga on 11/17/21.\n Copyright (c) Kochava, Inc. All rights reserved.\n*/\nimport * as utils from \"../utils/utils\";\nimport { getUrlParameter } from \"./browser\";\nimport { setCookie, getCookie, deleteCookie } from \"./cookies\";\nimport { Log } from \"../utils/log\";\nexport const MAX_STORED_IDLINKS = 10;\nexport var PersistKey;\n(function (PersistKey) {\n PersistKey[\"LastKvinit\"] = \"com.kochava.tracker.LastKvinit\";\n PersistKey[\"EventQueue\"] = \"com.kochava.tracker.EventQueue\";\n PersistKey[\"IdLinkQueue\"] = \"com.kochava.tracker.IdLinkQueue\";\n PersistKey[\"DeviceId\"] = \"com.kochava.tracker.DeviceId\";\n PersistKey[\"InstallId\"] = \"com.kochava.tracker.InstallId\";\n PersistKey[\"FirstStartDate\"] = \"com.kochava.tracker.FirstStartDate\";\n PersistKey[\"InstallSentDate\"] = \"com.kochava.tracker.InstallSentDate\";\n PersistKey[\"KvinitSentDate\"] = \"com.kochava.tracker.KvinitSentDate\";\n PersistKey[\"SessionCount\"] = \"com.kochava.tracker.SessionCount\";\n PersistKey[\"IdentityLinks\"] = \"com.kochava.tracker.IdentityLinks\";\n PersistKey[\"OverrideAppId\"] = \"com.kochava.tracker.OverrideAppId\";\n PersistKey[\"OverrideDeviceId\"] = \"com.kochava.tracker.OverrideDeviceId\";\n PersistKey[\"OldKvid\"] = \"kv_id\";\n})(PersistKey || (PersistKey = {}));\nconst storedKeys = [\n PersistKey.LastKvinit,\n PersistKey.EventQueue,\n PersistKey.IdLinkQueue,\n PersistKey.DeviceId,\n PersistKey.InstallId,\n PersistKey.FirstStartDate,\n PersistKey.InstallSentDate,\n PersistKey.KvinitSentDate,\n PersistKey.SessionCount,\n PersistKey.IdentityLinks,\n PersistKey.OverrideAppId,\n PersistKey.OverrideDeviceId,\n];\nexport const checkInstallIdChange = (inputId, useCookies) => {\n const persistedInstallId = readAndUpdatePersistedValue(PersistKey.InstallId, useCookies);\n // if the input is empty, we don't need to change\n if (!inputId)\n return false;\n // if the persistedId is empty, we will need to change\n if (!persistedInstallId) {\n updatePersistedValue(PersistKey.InstallId, inputId, useCookies);\n return true;\n }\n // if the inputId and persistedId are the same, we dont need to change\n if (inputId === persistedInstallId)\n return false;\n // at this point both inputId and persistedInstallId exist and are not equal,\n // so we must need to change\n updatePersistedValue(PersistKey.InstallId, inputId, useCookies);\n return true;\n};\nexport const addToPersistedEventQueue = (job) => {\n const persistedQueueStr = localStorage.getItem(PersistKey.EventQueue);\n const persistedQueue = JSON.parse(persistedQueueStr) || [];\n persistedQueue.push(job);\n localStorage.setItem(PersistKey.EventQueue, JSON.stringify(persistedQueue));\n};\nexport const removeFromEventPersistedQueue = (job) => {\n const persistedQueueStr = localStorage.getItem(PersistKey.EventQueue);\n const persistedQueue = JSON.parse(persistedQueueStr) || [];\n const queueWithJobRemoved = persistedQueue.filter(persistedJob => {\n return persistedJob.id !== job.id;\n });\n localStorage.setItem(PersistKey.EventQueue, JSON.stringify(queueWithJobRemoved));\n};\nexport const updateOrAddPersistedIdLinkQueue = (job) => {\n const idLinkKey = Object.keys(job.idLink)[0];\n const persistedQueueStr = localStorage.getItem(PersistKey.IdLinkQueue);\n const persistedQueue = JSON.parse(persistedQueueStr) || [];\n let updated = false;\n for (const persistedJob of persistedQueue) {\n const persistedKey = Object.keys(persistedJob.idLink)[0];\n // if the key is already there, update it\n if (idLinkKey === persistedKey) {\n persistedJob.idLink[idLinkKey] = job.idLink[idLinkKey];\n updated = true;\n }\n }\n // if the key is new, add it\n if (!updated)\n persistedQueue.push(job);\n localStorage.setItem(PersistKey.IdLinkQueue, JSON.stringify(persistedQueue));\n};\nexport const removeFromIdLinkPersistedQueue = (job) => {\n const persistedQueueStr = localStorage.getItem(PersistKey.IdLinkQueue);\n const persistedQueue = JSON.parse(persistedQueueStr) || [];\n const queueWithJobRemoved = persistedQueue.filter(persistedJob => {\n return persistedJob.id !== job.id;\n });\n localStorage.setItem(PersistKey.IdLinkQueue, JSON.stringify(queueWithJobRemoved));\n};\nexport const addPersistedIdLinks = (key, value, useCookies) => {\n const persistedIdLinksStr = localStorage.getItem(PersistKey.IdentityLinks);\n const persistedIdLinks = JSON.parse(persistedIdLinksStr) || {};\n const storedSoFar = Object.keys(persistedIdLinks);\n if (storedSoFar.length > MAX_STORED_IDLINKS) {\n Log.debug(\"Maximum stored idLinks reached, most recent idLink will not be stored.\");\n return;\n }\n persistedIdLinks[key] = value;\n updatePersistedValue(PersistKey.IdentityLinks, JSON.stringify(persistedIdLinks), useCookies);\n};\nexport const checkDuplicateIdLink = (key, value) => {\n const persistedIdLinksStr = localStorage.getItem(PersistKey.IdentityLinks);\n if (persistedIdLinksStr) {\n const persistedIdLinks = JSON.parse(persistedIdLinksStr) || {};\n for (const persistedKey in persistedIdLinks) {\n if (key === persistedKey && persistedIdLinks[persistedKey] === value) {\n return true;\n }\n }\n }\n return false;\n};\nexport const getPersistedIdentityLinks = () => {\n const persistedIdLinksStr = localStorage.getItem(PersistKey.IdentityLinks);\n if (persistedIdLinksStr) {\n return JSON.parse(persistedIdLinksStr);\n }\n return undefined;\n};\nexport const readAndUpdateUTM = (appGuid, useCookies) => {\n const storageName = appGuid + \"_click\";\n const urlValue = getUrlParameter(\"ko_click_id\");\n const storageValue = localStorage.getItem(storageName);\n let cookieValue = \"\";\n if (useCookies)\n cookieValue = getCookie(storageName);\n if (urlValue) {\n localStorage.setItem(storageName, urlValue);\n if (useCookies)\n setCookie(storageName, urlValue);\n }\n else if (storageValue) {\n if (useCookies)\n setCookie(storageName, urlValue);\n }\n return (urlValue) ? urlValue :\n (storageValue) ? storageValue :\n (cookieValue) ? cookieValue : \"\";\n};\nexport const readAndUpdatePersistedValue = (key, useCookie) => {\n const urlValue = getUrlParameter(key);\n const storageValue = localStorage.getItem(key);\n let cookieValue = \"\";\n if (useCookie)\n cookieValue = getCookie(key);\n if (urlValue) {\n updatePersistedValue(key, urlValue, useCookie);\n }\n else if (storageValue) {\n updatePersistedValue(key, storageValue, useCookie);\n }\n else if (cookieValue) {\n updatePersistedValue(key, storageValue, useCookie);\n }\n return (urlValue) ? urlValue :\n (storageValue) ? storageValue :\n (cookieValue) ? cookieValue : \"\";\n};\nexport const updatePersistedValue = (key, value, useCookie) => {\n localStorage.setItem(key, value);\n if (useCookie)\n setCookie(key, value);\n};\nexport const deletePersistedValue = (item) => {\n localStorage.removeItem(item);\n deleteCookie(item);\n};\nexport const deleteAllPersisted = () => storedKeys.forEach(item => deletePersistedValue(item));\nexport const readAndUpdateDeviceId = (useCookie) => {\n let storedDeviceId = readAndUpdatePersistedValue(PersistKey.DeviceId, useCookie);\n if (!storedDeviceId) {\n const kvId = `KB${utils.getCurrTimeSec()}T${utils.uuidv4()}`;\n storedDeviceId = kvId.replace(/-/g, \"\");\n }\n updatePersistedValue(PersistKey.DeviceId, storedDeviceId, useCookie);\n return storedDeviceId;\n};\nexport const readAndUpdateSessionCount = (useCookie) => {\n const storedSessionCount = readAndUpdatePersistedValue(PersistKey.SessionCount, useCookie);\n let sessionCount = 1;\n if (storedSessionCount) {\n sessionCount = parseInt(storedSessionCount);\n sessionCount++;\n }\n updatePersistedValue(PersistKey.SessionCount, sessionCount.toString(), useCookie);\n return sessionCount;\n};\n"]}
package/dist/http.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Authored by Brett Barinaga on 11/17/21.
3
3
  Copyright (c) Kochava, Inc. All rights reserved.
4
4
  */
5
+ import 'whatwg-fetch';
5
6
  import { Log } from "./utils/log";
6
7
  export const sendRequest = async (payload, endpoint) => {
7
8
  try {
@@ -11,13 +12,13 @@ export const sendRequest = async (payload, endpoint) => {
11
12
  const resp = await fetch(endpoint, {
12
13
  method: "POST",
13
14
  headers: headers,
14
- body: JSON.stringify(payload),
15
+ body: JSON.stringify(payload)
15
16
  });
16
17
  return await resp.text();
17
- }
18
- catch (e) {
18
+ } catch (e) {
19
19
  Log.error("Error in post request", e);
20
20
  return "";
21
21
  }
22
22
  };
23
- export const wasRespSuccess = (success) => success === "1" || success === 1 || success === true;
23
+ export const wasRespSuccess = success => success === "1" || success === 1 || success === true;
24
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../dist/http.js"],"names":["Log","sendRequest","payload","endpoint","headers","Headers","append","trace","nt_id","resp","fetch","method","body","JSON","stringify","text","e","error","wasRespSuccess","success"],"mappings":"AAAA;;;;AAIA,OAAO,cAAP;AACA,SAASA,GAAT,QAAoB,aAApB;AACA,OAAO,MAAMC,cAAc,OAAOC,OAAP,EAAgBC,QAAhB,KAA6B;AACpD,QAAI;AACA,cAAMC,UAAU,IAAIC,OAAJ,EAAhB;AACAD,gBAAQE,MAAR,CAAe,cAAf,EAA+B,kBAA/B;AACAN,YAAIO,KAAJ,CAAW,WAAUL,QAAQM,KAAM,kBAAnC,EAAsDL,QAAtD;AACA,cAAMM,OAAO,MAAMC,MAAMP,QAAN,EAAgB;AAC/BQ,oBAAQ,MADuB;AAE/BP,qBAASA,OAFsB;AAG/BQ,kBAAMC,KAAKC,SAAL,CAAeZ,OAAf;AAHyB,SAAhB,CAAnB;AAKA,eAAO,MAAMO,KAAKM,IAAL,EAAb;AACH,KAVD,CAWA,OAAOC,CAAP,EAAU;AACNhB,YAAIiB,KAAJ,CAAU,uBAAV,EAAmCD,CAAnC;AACA,eAAO,EAAP;AACH;AACJ,CAhBM;AAiBP,OAAO,MAAME,iBAAkBC,OAAD,IAAaA,YAAY,GAAZ,IAAmBA,YAAY,CAA/B,IAAoCA,YAAY,IAApF","file":"http.js","sourcesContent":["/*\n Authored by Brett Barinaga on 11/17/21.\n Copyright (c) Kochava, Inc. All rights reserved.\n*/\nimport 'whatwg-fetch';\nimport { Log } from \"./utils/log\";\nexport const sendRequest = async (payload, endpoint) => {\n try {\n const headers = new Headers();\n headers.append(\"Content-Type\", \"application/json\");\n Log.trace(`Request ${payload.nt_id} being sent to: `, endpoint);\n const resp = await fetch(endpoint, {\n method: \"POST\",\n headers: headers,\n body: JSON.stringify(payload),\n });\n return await resp.text();\n }\n catch (e) {\n Log.error(\"Error in post request\", e);\n return \"\";\n }\n};\nexport const wasRespSuccess = (success) => success === \"1\" || success === 1 || success === true;\n"]}
@@ -7,16 +7,16 @@ export const DEFAULTS = {
7
7
  // DO NOT DEFAULT
8
8
  app_id_override: "",
9
9
  // DO NOT DEFAULT
10
- device_id_override: "",
10
+ device_id_override: ""
11
11
  },
12
12
  config: {
13
13
  init_token: "",
14
- refresh_minimum: 60,
14
+ refresh_minimum: 60
15
15
  },
16
16
  install: {
17
17
  // DO NOT DEFAULT
18
18
  resend_id: "",
19
- updates_enabled: true,
19
+ updates_enabled: true
20
20
  },
21
21
  networking: {
22
22
  urls: {
@@ -25,12 +25,13 @@ export const DEFAULTS = {
25
25
  event: "https://web-sdk.control.kochava.com/track/json/",
26
26
  identityLink: "https://web-sdk.control.kochava.com/track/json/"
27
27
  },
28
- retry_waterfall: [7, 30, 300, 1800],
28
+ retry_waterfall: [7, 30, 300, 1800]
29
29
  },
30
30
  privacy: {
31
31
  allow_custom_ids: [],
32
32
  deny_datapoints: [],
33
33
  deny_event_names: [],
34
- deny_identity_links: [],
35
- },
34
+ deny_identity_links: []
35
+ }
36
36
  };
37
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../dist/interfaces.js"],"names":["DEFAULTS","general","app_id_override","device_id_override","config","init_token","refresh_minimum","install","resend_id","updates_enabled","networking","urls","init","event","identityLink","retry_waterfall","privacy","allow_custom_ids","deny_datapoints","deny_event_names","deny_identity_links"],"mappings":"AAAA;;;;AAIA,OAAO,MAAMA,WAAW;AACpBC,aAAS;AACL;AACAC,yBAAiB,EAFZ;AAGL;AACAC,4BAAoB;AAJf,KADW;AAOpBC,YAAQ;AACJC,oBAAY,EADR;AAEJC,yBAAiB;AAFb,KAPY;AAWpBC,aAAS;AACL;AACAC,mBAAW,EAFN;AAGLC,yBAAiB;AAHZ,KAXW;AAgBpBC,gBAAY;AACRC,cAAM;AACFC,kBAAM,kDADJ;AAEFL,qBAAS,iDAFP;AAGFM,mBAAO,iDAHL;AAIFC,0BAAc;AAJZ,SADE;AAORC,yBAAiB,CAAC,CAAD,EAAI,EAAJ,EAAQ,GAAR,EAAa,IAAb;AAPT,KAhBQ;AAyBpBC,aAAS;AACLC,0BAAkB,EADb;AAELC,yBAAiB,EAFZ;AAGLC,0BAAkB,EAHb;AAILC,6BAAqB;AAJhB;AAzBW,CAAjB","file":"interfaces.js","sourcesContent":["/*\n Authored by Brett Barinaga on 11/17/21.\n Copyright (c) Kochava, Inc. All rights reserved.\n*/\nexport const DEFAULTS = {\n general: {\n // DO NOT DEFAULT\n app_id_override: \"\",\n // DO NOT DEFAULT\n device_id_override: \"\",\n },\n config: {\n init_token: \"\",\n refresh_minimum: 60,\n },\n install: {\n // DO NOT DEFAULT\n resend_id: \"\",\n updates_enabled: true,\n },\n networking: {\n urls: {\n init: \"https://kvinit-prod.api.kochava.com/track/kvinit\",\n install: \"https://web-sdk.control.kochava.com/track/json/\",\n event: \"https://web-sdk.control.kochava.com/track/json/\",\n identityLink: \"https://web-sdk.control.kochava.com/track/json/\"\n },\n retry_waterfall: [7, 30, 300, 1800],\n },\n privacy: {\n allow_custom_ids: [],\n deny_datapoints: [],\n deny_event_names: [],\n deny_identity_links: [],\n },\n};\n"]}
package/dist/jobqueue.js CHANGED
@@ -34,8 +34,7 @@ export default class JobQueue {
34
34
  }
35
35
  stop() {
36
36
  this.stopped = true;
37
- if (this.timeOut)
38
- clearTimeout(this.timeOut);
37
+ if (this.timeOut) clearTimeout(this.timeOut);
39
38
  this.processing = false;
40
39
  }
41
40
  pause() {
@@ -53,7 +52,7 @@ export default class JobQueue {
53
52
  preStartBody: eventPreStartBody,
54
53
  postStartBody,
55
54
  retries: 0,
56
- eventName,
55
+ eventName
57
56
  };
58
57
  this.eventQueue.push(newJob);
59
58
  addToPersistedEventQueue(newJob);
@@ -66,7 +65,7 @@ export default class JobQueue {
66
65
  preStartBody: eventPreStartBody,
67
66
  postStartBody: undefined,
68
67
  retries: 0,
69
- eventName,
68
+ eventName
70
69
  };
71
70
  this.eventQueue.push(newEventJob);
72
71
  addToPersistedEventQueue(newEventJob);
@@ -81,7 +80,7 @@ export default class JobQueue {
81
80
  preStartBody: idLinkPreStartBody,
82
81
  postStartBody,
83
82
  retries: 0,
84
- idLink,
83
+ idLink
85
84
  };
86
85
  updateOrAddPersistedIdLinkQueue(newJob);
87
86
  this.idLinkQueue.push(newJob);
@@ -94,18 +93,16 @@ export default class JobQueue {
94
93
  preStartBody: idLinkPreStartBody,
95
94
  postStartBody: undefined,
96
95
  retries: 0,
97
- idLink,
96
+ idLink
98
97
  };
99
98
  updateOrAddPersistedIdLinkQueue(newJob);
100
99
  this.idLinkQueue.push(newJob);
101
100
  }
102
101
  async dequeueJob(instance) {
103
102
  // If queue is busy, prev job not finished
104
- if (this.processing)
105
- return false;
103
+ if (this.processing) return false;
106
104
  // If the queue is paused, do not dequeue a new job
107
- if (this.paused)
108
- return false;
105
+ if (this.paused) return false;
109
106
  // If the queue is stopped do not dequeue a new job
110
107
  if (this.stopped) {
111
108
  return false;
@@ -146,8 +143,7 @@ export default class JobQueue {
146
143
  }
147
144
  }
148
145
  // If neither queue had a job, break out of recursion
149
- if (!idLinkJob && !eventJob)
150
- return false;
146
+ if (!idLinkJob && !eventJob) return false;
151
147
  return true;
152
148
  }
153
149
  async processJob(instance, job) {
@@ -158,8 +154,7 @@ export default class JobQueue {
158
154
  return true;
159
155
  }
160
156
  }
161
- }
162
- else if (jobIsIdLinkJob(job)) {
157
+ } else if (jobIsIdLinkJob(job)) {
163
158
  for (const denyIdLinkKey of instance.kochavaConfig.privacy.deny_identity_links) {
164
159
  if (denyIdLinkKey === Object.keys(job.idLink)[0]) {
165
160
  Log.debug(`Denied identity_link ${denyIdLinkKey}, dropping request.`);
@@ -180,8 +175,7 @@ export default class JobQueue {
180
175
  if (!this.stopped) {
181
176
  //retry the job
182
177
  const retryWaterfall = instance.kochavaConfig.networking.retry_waterfall;
183
- const retryIndex = (job.retries > retryWaterfall.length - 1) ?
184
- retryWaterfall.length - 1 : job.retries;
178
+ const retryIndex = job.retries > retryWaterfall.length - 1 ? retryWaterfall.length - 1 : job.retries;
185
179
  const retrySec = retryWaterfall[retryIndex];
186
180
  Log.error(`Job failed, attempting again in ${retrySec} seconds`);
187
181
  await new Promise(resolve => this.timeOut = setTimeout(resolve, retrySec * 1000));
@@ -192,11 +186,7 @@ export default class JobQueue {
192
186
  return true;
193
187
  }
194
188
  async attemptJob(instance, job) {
195
- if (job.preStartBody.action === "event")
196
- return await Event.send(instance, job.preStartBody, job.postStartBody);
197
- else if (job.preStartBody.action === "identityLink")
198
- return await IdLink.send(instance, job);
199
- else {
189
+ if (job.preStartBody.action === "event") return await Event.send(instance, job.preStartBody, job.postStartBody);else if (job.preStartBody.action === "identityLink") return await IdLink.send(instance, job);else {
200
190
  Log.warn("Invalid action in job from jobqueue, cancelling.");
201
191
  return true;
202
192
  }
@@ -218,3 +208,4 @@ export default class JobQueue {
218
208
  updatePersistedValue(PersistKey.IdLinkQueue, JSON.stringify(this.idLinkQueue), false);
219
209
  }
220
210
  }
211
+ //# sourceMappingURL=jobqueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../dist/jobqueue.js"],"names":["Event","IdLink","Log","uuidv4","addToPersistedEventQueue","PersistKey","removeFromEventPersistedQueue","removeFromIdLinkPersistedQueue","updateOrAddPersistedIdLinkQueue","updatePersistedValue","jobIsEventJob","obj","jobIsIdLinkJob","JobQueue","constructor","eventQueue","idLinkQueue","processing","stopped","paused","start","instance","JSON","parse","localStorage","getItem","EventQueue","IdLinkQueue","updateEventJobs","updateIdLinkJobs","trace","stringify","dequeueJob","stop","timeOut","clearTimeout","pause","enqueueEvent","args","eventName","eventData","eventPreStartBody","constructPreStart","installDone","kvinitDone","postStartBody","constructPostStart","newJob","id","queuedBeforeStart","preStartBody","retries","push","newEventJob","undefined","enqueueIdLink","idLink","idLinkPreStartBody","idLinkJob","shift","result","processJob","eventJob","job","denyName","kochavaConfig","privacy","deny_event_names","debug","denyIdLinkKey","deny_identity_links","Object","keys","success","attemptJob","retryWaterfall","networking","retry_waterfall","retryIndex","length","retrySec","error","Promise","resolve","setTimeout","action","send","warn"],"mappings":"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","file":"jobqueue.js","sourcesContent":["/*\n Authored by Brett Barinaga on 11/17/21.\n Copyright (c) Kochava, Inc. All rights reserved.\n*/\nimport * as Event from \"./payloads/event\";\nimport * as IdLink from \"./payloads/identityLink\";\nimport { Log } from \"./utils/log\";\nimport { uuidv4 } from \"./utils/utils\";\nimport { addToPersistedEventQueue, PersistKey, removeFromEventPersistedQueue, removeFromIdLinkPersistedQueue, updateOrAddPersistedIdLinkQueue, updatePersistedValue } from \"./browser/persist\";\nfunction jobIsEventJob(obj) {\n return 'eventName' in obj;\n}\nfunction jobIsIdLinkJob(obj) {\n return 'idLink' in obj;\n}\nexport default class JobQueue {\n constructor() {\n this.eventQueue = [];\n this.idLinkQueue = [];\n this.processing = false;\n this.stopped = false;\n this.paused = false;\n }\n async start(instance) {\n this.eventQueue = JSON.parse(localStorage.getItem(PersistKey.EventQueue)) || [];\n this.idLinkQueue = JSON.parse(localStorage.getItem(PersistKey.IdLinkQueue)) || [];\n this.updateEventJobs(instance);\n this.updateIdLinkJobs(instance);\n Log.trace(\"Starting Event Queue\", JSON.parse(JSON.stringify(this.eventQueue)));\n Log.trace(\"Starting IdLink Queue\", JSON.parse(JSON.stringify(this.idLinkQueue)));\n this.stopped = false;\n this.paused = false;\n await this.dequeueJob(instance);\n }\n stop() {\n this.stopped = true;\n if (this.timeOut)\n clearTimeout(this.timeOut);\n this.processing = false;\n }\n pause() {\n this.paused = true;\n }\n async enqueueEvent(instance, args) {\n const eventName = args[0];\n const eventData = args[1];\n const eventPreStartBody = Event.constructPreStart(instance, eventName, eventData);\n if (instance.installDone && instance.kvinitDone) {\n const postStartBody = Event.constructPostStart(instance, eventPreStartBody);\n const newJob = {\n id: uuidv4(),\n queuedBeforeStart: false,\n preStartBody: eventPreStartBody,\n postStartBody,\n retries: 0,\n eventName,\n };\n this.eventQueue.push(newJob);\n addToPersistedEventQueue(newJob);\n await this.dequeueJob(instance);\n return;\n }\n const newEventJob = {\n id: uuidv4(),\n queuedBeforeStart: true,\n preStartBody: eventPreStartBody,\n postStartBody: undefined,\n retries: 0,\n eventName,\n };\n this.eventQueue.push(newEventJob);\n addToPersistedEventQueue(newEventJob);\n }\n async enqueueIdLink(instance, idLink) {\n const idLinkPreStartBody = IdLink.constructPreStart(instance, idLink);\n if (instance.installDone && instance.kvinitDone) {\n const postStartBody = IdLink.constructPostStart(instance, idLinkPreStartBody);\n const newJob = {\n id: uuidv4(),\n queuedBeforeStart: false,\n preStartBody: idLinkPreStartBody,\n postStartBody,\n retries: 0,\n idLink,\n };\n updateOrAddPersistedIdLinkQueue(newJob);\n this.idLinkQueue.push(newJob);\n await this.dequeueJob(instance);\n return;\n }\n const newJob = {\n id: uuidv4(),\n queuedBeforeStart: true,\n preStartBody: idLinkPreStartBody,\n postStartBody: undefined,\n retries: 0,\n idLink,\n };\n updateOrAddPersistedIdLinkQueue(newJob);\n this.idLinkQueue.push(newJob);\n }\n async dequeueJob(instance) {\n // If queue is busy, prev job not finished\n if (this.processing)\n return false;\n // If the queue is paused, do not dequeue a new job\n if (this.paused)\n return false;\n // If the queue is stopped do not dequeue a new job\n if (this.stopped) {\n return false;\n }\n // Prioritize sending identityLinks first\n // Remove first job from queue\n const idLinkJob = this.idLinkQueue.shift();\n if (idLinkJob) {\n // handle idlinkjob\n Log.trace(\"Dequeued Job: \", idLinkJob);\n this.processing = true;\n const result = await this.processJob(instance, idLinkJob);\n if (this.stopped) {\n return true;\n }\n this.processing = false;\n // If the job succeeded, dequeue the next job\n if (result) {\n removeFromIdLinkPersistedQueue(idLinkJob);\n return await this.dequeueJob(instance);\n }\n }\n const eventJob = this.eventQueue.shift();\n if (eventJob) {\n //handle eventJob\n Log.trace(\"Dequeued Job: \", eventJob);\n // Process the job\n this.processing = true;\n const result = await this.processJob(instance, eventJob);\n if (this.stopped) {\n return true;\n }\n this.processing = false;\n // If the job succeeded, dequeue the next job\n if (result) {\n removeFromEventPersistedQueue(eventJob);\n return await this.dequeueJob(instance);\n }\n }\n // If neither queue had a job, break out of recursion\n if (!idLinkJob && !eventJob)\n return false;\n return true;\n }\n async processJob(instance, job) {\n if (jobIsEventJob(job)) {\n for (const denyName of instance.kochavaConfig.privacy.deny_event_names) {\n if (denyName === job.eventName) {\n Log.debug(`Denied event_name ${denyName}, dropping request.`);\n return true;\n }\n }\n }\n else if (jobIsIdLinkJob(job)) {\n for (const denyIdLinkKey of instance.kochavaConfig.privacy.deny_identity_links) {\n if (denyIdLinkKey === Object.keys(job.idLink)[0]) {\n Log.debug(`Denied identity_link ${denyIdLinkKey}, dropping request.`);\n return true;\n }\n }\n }\n let success = false;\n do {\n success = await this.attemptJob(instance, job);\n // If our job succeeded\n if (success) {\n // Job Done\n Log.trace(\"Job processed successfully:\", job);\n return true;\n }\n // If it didnt succeed, but we our queue isnt stopped\n if (!this.stopped) {\n //retry the job\n const retryWaterfall = instance.kochavaConfig.networking.retry_waterfall;\n const retryIndex = (job.retries > retryWaterfall.length - 1) ?\n retryWaterfall.length - 1 : job.retries;\n const retrySec = retryWaterfall[retryIndex];\n Log.error(`Job failed, attempting again in ${retrySec} seconds`);\n await new Promise(resolve => this.timeOut = setTimeout(resolve, retrySec * 1000));\n job.retries++;\n }\n } while (!success && !this.stopped);\n // Job Canceled\n return true;\n }\n async attemptJob(instance, job) {\n if (job.preStartBody.action === \"event\")\n return await Event.send(instance, job.preStartBody, job.postStartBody);\n else if (job.preStartBody.action === \"identityLink\")\n return await IdLink.send(instance, job);\n else {\n Log.warn(\"Invalid action in job from jobqueue, cancelling.\");\n return true;\n }\n }\n updateEventJobs(instance) {\n for (const job of this.eventQueue) {\n if (job.queuedBeforeStart) {\n job.postStartBody = Event.constructPostStart(instance, job.preStartBody);\n }\n }\n updatePersistedValue(PersistKey.EventQueue, JSON.stringify(this.eventQueue), false);\n }\n updateIdLinkJobs(instance) {\n for (const job of this.idLinkQueue) {\n if (job.queuedBeforeStart) {\n job.postStartBody = IdLink.constructPostStart(instance, job.preStartBody);\n }\n }\n updatePersistedValue(PersistKey.IdLinkQueue, JSON.stringify(this.idLinkQueue), false);\n }\n}\n"]}