kv-test-lib 1.0.25 → 3.3.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.

Potentially problematic release.


This version of kv-test-lib might be problematic. Click here for more details.

Files changed (70) hide show
  1. package/README.md +12 -0
  2. package/es5_dist/adapters/adapter.browser.js +3 -0
  3. package/es5_dist/adapters/adapter.browser.js.map +1 -0
  4. package/es5_dist/adapters/browser.js +117 -0
  5. package/es5_dist/adapters/browser.js.map +1 -0
  6. package/es5_dist/adapters/crypto.browser.js +11 -0
  7. package/es5_dist/adapters/crypto.browser.js.map +1 -0
  8. package/es5_dist/browser/browser.js +49 -0
  9. package/es5_dist/browser/browser.js.map +1 -0
  10. package/es5_dist/browser/cookies.js +36 -0
  11. package/es5_dist/browser/cookies.js.map +1 -0
  12. package/es5_dist/browser/persist.js +549 -0
  13. package/es5_dist/browser/persist.js.map +1 -0
  14. package/es5_dist/core/crypto.js +2 -0
  15. package/es5_dist/core/crypto.js.map +1 -0
  16. package/es5_dist/core/storage.js +2 -0
  17. package/es5_dist/core/storage.js.map +1 -0
  18. package/es5_dist/http.js +133 -0
  19. package/es5_dist/http.js.map +1 -0
  20. package/{dist → es5_dist}/interfaces.js +9 -7
  21. package/es5_dist/interfaces.js.map +1 -0
  22. package/es5_dist/jobqueue.js +484 -0
  23. package/es5_dist/jobqueue.js.map +1 -0
  24. package/es5_dist/kochava.js +790 -0
  25. package/es5_dist/kochava.js.map +1 -0
  26. package/es5_dist/measurementEvent.js +253 -0
  27. package/es5_dist/measurementEvent.js.map +1 -0
  28. package/es5_dist/payloads/event.js +192 -0
  29. package/es5_dist/payloads/event.js.map +1 -0
  30. package/es5_dist/payloads/identityLink.js +170 -0
  31. package/es5_dist/payloads/identityLink.js.map +1 -0
  32. package/es5_dist/payloads/install.js +324 -0
  33. package/es5_dist/payloads/install.js.map +1 -0
  34. package/es5_dist/payloads/kvinit.js +296 -0
  35. package/es5_dist/payloads/kvinit.js.map +1 -0
  36. package/{dist → es5_dist}/payloads/payload.js +9 -9
  37. package/es5_dist/payloads/payload.js.map +1 -0
  38. package/es5_dist/polyfills/browser.js +3 -0
  39. package/es5_dist/polyfills/browser.js.map +1 -0
  40. package/es5_dist/utils/log.js +140 -0
  41. package/es5_dist/utils/log.js.map +1 -0
  42. package/es5_dist/utils/utils.js +26 -0
  43. package/es5_dist/utils/utils.js.map +1 -0
  44. package/package.json +4 -4
  45. package/dist/browser/browser.d.ts +0 -8
  46. package/dist/browser/browser.js +0 -40
  47. package/dist/browser/cookies.d.ts +0 -3
  48. package/dist/browser/cookies.js +0 -40
  49. package/dist/browser/persist.d.ts +0 -33
  50. package/dist/browser/persist.js +0 -195
  51. package/dist/http.d.ts +0 -6
  52. package/dist/http.js +0 -23
  53. package/dist/interfaces.d.ts +0 -117
  54. package/dist/jobqueue.d.ts +0 -35
  55. package/dist/jobqueue.js +0 -220
  56. package/dist/kochava.d.ts +0 -52
  57. package/dist/kochava.js +0 -475
  58. package/dist/payloads/event.d.ts +0 -6
  59. package/dist/payloads/event.js +0 -92
  60. package/dist/payloads/identityLink.d.ts +0 -7
  61. package/dist/payloads/identityLink.js +0 -73
  62. package/dist/payloads/install.d.ts +0 -6
  63. package/dist/payloads/install.js +0 -148
  64. package/dist/payloads/kvinit.d.ts +0 -5
  65. package/dist/payloads/kvinit.js +0 -134
  66. package/dist/payloads/payload.d.ts +0 -33
  67. package/dist/utils/log.d.ts +0 -30
  68. package/dist/utils/log.js +0 -104
  69. package/dist/utils/utils.d.ts +0 -5
  70. package/dist/utils/utils.js +0 -21
@@ -0,0 +1,324 @@
1
+ /*
2
+ Authored by Brett Barinaga on 11/17/21.
3
+ Copyright (c) Kochava, Inc. All rights reserved.
4
+ */
5
+ var __assign = this && this.__assign || function () {
6
+ __assign = Object.assign || function (t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
10
+ }
11
+ return t;
12
+ };
13
+ return __assign.apply(this, arguments);
14
+ };
15
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
16
+ function adopt(value) {
17
+ return value instanceof P ? value : new P(function (resolve) {
18
+ resolve(value);
19
+ });
20
+ }
21
+ return new (P || (P = Promise))(function (resolve, reject) {
22
+ function fulfilled(value) {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ }
29
+ function rejected(value) {
30
+ try {
31
+ step(generator["throw"](value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ }
36
+ function step(result) {
37
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
38
+ }
39
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
40
+ });
41
+ };
42
+ var __generator = this && this.__generator || function (thisArg, body) {
43
+ var _ = { label: 0, sent: function () {
44
+ if (t[0] & 1) throw t[1];return t[1];
45
+ }, trys: [], ops: [] },
46
+ f,
47
+ y,
48
+ t,
49
+ g;
50
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
51
+ return this;
52
+ }), g;
53
+ function verb(n) {
54
+ return function (v) {
55
+ return step([n, v]);
56
+ };
57
+ }
58
+ function step(op) {
59
+ if (f) throw new TypeError("Generator is already executing.");
60
+ while (_) try {
61
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
62
+ if (y = 0, t) op = [op[0] & 2, t.value];
63
+ switch (op[0]) {
64
+ case 0:case 1:
65
+ t = op;break;
66
+ case 4:
67
+ _.label++;return { value: op[1], done: false };
68
+ case 5:
69
+ _.label++;y = op[1];op = [0];continue;
70
+ case 7:
71
+ op = _.ops.pop();_.trys.pop();continue;
72
+ default:
73
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
74
+ _ = 0;continue;
75
+ }
76
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
77
+ _.label = op[1];break;
78
+ }
79
+ if (op[0] === 6 && _.label < t[1]) {
80
+ _.label = t[1];t = op;break;
81
+ }
82
+ if (t && _.label < t[2]) {
83
+ _.label = t[2];_.ops.push(op);break;
84
+ }
85
+ if (t[2]) _.ops.pop();
86
+ _.trys.pop();continue;
87
+ }
88
+ op = body.call(thisArg, _);
89
+ } catch (e) {
90
+ op = [6, e];y = 0;
91
+ } finally {
92
+ f = t = 0;
93
+ }
94
+ if (op[0] & 5) throw op[1];return { value: op[0] ? op[1] : void 0, done: true };
95
+ }
96
+ };
97
+ import * as http from "../http";
98
+ import * as utils from "../utils/utils";
99
+ import * as browser from "../browser/browser";
100
+ import { Log } from "../utils/log";
101
+ import { constructPayload } from "./payload";
102
+ import { getPersistedIdentityLinks, PersistKey, readAndUpdatePersistedValue, updateInstallCount, updateLastInstall, updatePersistedValue } from "../browser/persist";
103
+ var timeOut;
104
+ var canceled = false;
105
+ export var build = function (instance) {
106
+ return __awaiter(void 0, void 0, void 0, function () {
107
+ var payload, _a;
108
+ return __generator(this, function (_b) {
109
+ switch (_b.label) {
110
+ case 0:
111
+ payload = constructPayload("install", instance);
112
+ instance.installStarted = true;
113
+ _a = payload;
114
+ return [4 /*yield*/, constructInstallData(instance)];
115
+ case 1:
116
+ _a.data = _b.sent();
117
+ Log.debug("Install Payload", JSON.stringify(payload));
118
+ if (instance.kochavaConfig.privacy) {
119
+ instance.kochavaConfig.privacy.deny_datapoints.forEach(function (denyPoint) {
120
+ for (var point in payload.data) {
121
+ var key = point;
122
+ if (key === denyPoint) delete payload.data[key];
123
+ }
124
+ for (var point in payload) {
125
+ var key = point;
126
+ if (key === denyPoint) delete payload[key];
127
+ }
128
+ });
129
+ }
130
+ return [2 /*return*/, payload];
131
+ }
132
+ });
133
+ });
134
+ };
135
+ export var cancelRetries = function () {
136
+ canceled = true;
137
+ clearTimeout(timeOut);
138
+ };
139
+ export var send = function (instance, payload, retries) {
140
+ if (retries === void 0) {
141
+ retries = 0;
142
+ }
143
+ return __awaiter(void 0, void 0, void 0, function () {
144
+ var success, resp, _loop_1, state_1;
145
+ return __generator(this, function (_a) {
146
+ switch (_a.label) {
147
+ case 0:
148
+ canceled = false;
149
+ success = false;
150
+ _loop_1 = function () {
151
+ var sendTime, respStr, respTime, lastUpdateObject, retryWaterfall, retryIndex, retrySec_1;
152
+ return __generator(this, function (_b) {
153
+ switch (_b.label) {
154
+ case 0:
155
+ sendTime = utils.getCurrTimeMS() - instance.startTimeMS;
156
+ Log.diagDebug("Sending install at ".concat(utils.formatTime(sendTime / 1000), " seconds"));
157
+ respStr = void 0;
158
+ if (!!instance.sdkDisabled) return [3 /*break*/, 2];
159
+ return [4 /*yield*/, http.sendRequest(payload, instance.overrideUrls.install ? instance.overrideUrls.install : instance.kochavaConfig.networking.urls.install)];
160
+ case 1:
161
+ respStr = _b.sent();
162
+ return [3 /*break*/, 3];
163
+ case 2:
164
+ respStr = http.mockSuccess();
165
+ _b.label = 3;
166
+ case 3:
167
+ respTime = utils.getCurrTimeMS() - instance.startTimeMS;
168
+ Log.diagDebug("Completed install at ".concat(new Date().toLocaleTimeString(), " \n seconds with a network duration of ").concat(utils.formatTime((respTime - sendTime) / 1000), " seconds"));
169
+ if (canceled) {
170
+ Log.trace("Can no longer retry install, cancelling.");
171
+ return [2 /*return*/, { value: false }];
172
+ }
173
+ try {
174
+ Log.trace("Install Response string:", respStr);
175
+ resp = JSON.parse(respStr);
176
+ Log.debug("Install Response:", respStr);
177
+ success = http.wasRespSuccess(resp.success);
178
+ } catch (e) {
179
+ Log.error("Error parsing Install Response", e);
180
+ success = false;
181
+ }
182
+ if (!success) return [3 /*break*/, 6];
183
+ Log.info("Install success!");
184
+ instance.installCount++;
185
+ return [4 /*yield*/, updateInstallCount(instance.installCount, instance.useCookies)];
186
+ case 4:
187
+ _b.sent();
188
+ lastUpdateObject = constructLastInstall(payload, sendTime, instance);
189
+ return [4 /*yield*/, updateLastInstall(lastUpdateObject, instance.useCookies)];
190
+ case 5:
191
+ _b.sent();
192
+ return [2 /*return*/, { value: success }];
193
+ case 6:
194
+ if (!!canceled) return [3 /*break*/, 8];
195
+ retryWaterfall = instance.kochavaConfig.networking.retry_waterfall;
196
+ retryIndex = retries > retryWaterfall.length - 1 ? retryWaterfall.length - 1 : retries;
197
+ retrySec_1 = retryWaterfall[retryIndex];
198
+ Log.error("Install failed, attempting again in ".concat(retrySec_1, " seconds"));
199
+ return [4 /*yield*/, new Promise(function (resolve) {
200
+ timeOut = setTimeout(resolve, retrySec_1 * 1000);
201
+ })];
202
+ case 7:
203
+ _b.sent();
204
+ retries++;
205
+ _b.label = 8;
206
+ case 8:
207
+ return [2 /*return*/];
208
+ }
209
+ });
210
+ };
211
+ _a.label = 1;
212
+ case 1:
213
+ return [5 /*yield**/, _loop_1()];
214
+ case 2:
215
+ state_1 = _a.sent();
216
+ if (typeof state_1 === "object") return [2 /*return*/, state_1.value];
217
+ _a.label = 3;
218
+ case 3:
219
+ if (!success && !canceled) return [3 /*break*/, 1];
220
+ _a.label = 4;
221
+ case 4:
222
+ return [2 /*return*/];
223
+ }
224
+ });
225
+ });
226
+ };
227
+ export var onSuccess = function (instance) {
228
+ instance.kochavaInstallDate = utils.getCurrTimeMS();
229
+ updatePersistedValue(PersistKey.InstallSentDate, String(instance.kochavaInstallDate), instance.useCookies);
230
+ };
231
+ var constructLastInstall = function (payload, sendTime, instance) {
232
+ var lastInstall = {
233
+ kochava_device_id: payload.kochava_device_id,
234
+ kochava_app_id: payload.kochava_app_id,
235
+ sdk_version: payload.sdk_version,
236
+ time: sendTime,
237
+ count: instance.installCount
238
+ };
239
+ if (instance.sdkDisabled) {
240
+ lastInstall['sdk_disabled'] = true;
241
+ }
242
+ return lastInstall;
243
+ };
244
+ var constructInstallData = function (instance) {
245
+ return __awaiter(void 0, void 0, void 0, function () {
246
+ var currTime, uptime, returnObj, persistedIdLinks, key, includeKey, _i, _a, denyIdLinkKey;
247
+ var _b;
248
+ return __generator(this, function (_c) {
249
+ switch (_c.label) {
250
+ case 0:
251
+ currTime = Math.floor(Date.now() / 1000);
252
+ uptime = (currTime - instance.startTimeMS) / 1000;
253
+ if (uptime < 0.0) uptime = 0.0;
254
+ _b = {
255
+ starttime: instance.startTimeMS / 1000,
256
+ uptime: uptime
257
+ };
258
+ return [4 /*yield*/, determineInstallUserTime(instance, currTime)];
259
+ case 1:
260
+ returnObj = (_b.usertime = _c.sent(), _b.device_orientation = browser.getDeviceOrientation(), _b.package = browser.getPackageName(), _b.disp_w = browser.getDeviceWidth(), _b.disp_h = browser.getDeviceHeight(), _b.language = browser.getLanguage(), _b);
261
+ if (instance.utm) {
262
+ returnObj = __assign(__assign({}, returnObj), { conversion_data: { utm_source: instance.utm } });
263
+ }
264
+ if (instance.customValues.length > 0) returnObj.device_ids = {};
265
+ instance.customValues.forEach(function (custom) {
266
+ var customKey = Object.keys(custom.data)[0];
267
+ if (instance.kochavaConfig.privacy) {
268
+ var keyAllowed = false;
269
+ for (var _i = 0, _a = instance.kochavaConfig.privacy.allow_custom_ids; _i < _a.length; _i++) {
270
+ var allowed = _a[_i];
271
+ if (customKey === allowed) {
272
+ keyAllowed = true;
273
+ }
274
+ }
275
+ if (keyAllowed) {
276
+ if (custom.isDeviceId) returnObj.device_ids = __assign(__assign({}, returnObj.device_ids), custom.data);else returnObj = __assign(__assign({}, custom.data), returnObj);
277
+ }
278
+ }
279
+ });
280
+ return [4 /*yield*/, getPersistedIdentityLinks()];
281
+ case 2:
282
+ persistedIdLinks = _c.sent();
283
+ if (persistedIdLinks) {
284
+ returnObj.identity_link = {};
285
+ for (key in persistedIdLinks) {
286
+ includeKey = true;
287
+ for (_i = 0, _a = instance.kochavaConfig.privacy.deny_identity_links; _i < _a.length; _i++) {
288
+ denyIdLinkKey = _a[_i];
289
+ if (denyIdLinkKey === key) {
290
+ Log.debug("Denied identity_link ".concat(denyIdLinkKey, ", dropping from install."));
291
+ includeKey = false;
292
+ }
293
+ }
294
+ if (includeKey) returnObj.identity_link[key] = persistedIdLinks[key];
295
+ }
296
+ }
297
+ return [2 /*return*/, returnObj];
298
+ }
299
+ });
300
+ });
301
+ };
302
+ var determineInstallUserTime = function (instance, currTime) {
303
+ return __awaiter(void 0, void 0, void 0, function () {
304
+ var firstStartStr, firstStart;
305
+ return __generator(this, function (_a) {
306
+ switch (_a.label) {
307
+ case 0:
308
+ return [4 /*yield*/, readAndUpdatePersistedValue(PersistKey.FirstStartDate, instance.useCookies)];
309
+ case 1:
310
+ firstStartStr = _a.sent();
311
+ if (firstStartStr) {
312
+ firstStart = JSON.parse(firstStartStr);
313
+ // If its been 30 days since the sdk started
314
+ if (currTime - firstStart > 2592000) {
315
+ return [2 /*return*/, currTime];
316
+ }
317
+ return [2 /*return*/, firstStart];
318
+ }
319
+ return [2 /*return*/, currTime];
320
+ }
321
+ });
322
+ });
323
+ };
324
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../dist/payloads/install.js"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","_","label","sent","trys","ops","f","y","g","verb","Symbol","iterator","v","op","TypeError","pop","push","http","utils","browser","Log","constructPayload","getPersistedIdentityLinks","PersistKey","readAndUpdatePersistedValue","updateInstallCount","updateLastInstall","updatePersistedValue","timeOut","canceled","build","instance","payload","_a","_b","installStarted","constructInstallData","data","debug","JSON","stringify","kochavaConfig","privacy","deny_datapoints","forEach","denyPoint","point","key","cancelRetries","clearTimeout","send","retries","success","resp","_loop_1","state_1","sendTime","respStr","respTime","lastUpdateObject","retryWaterfall","retryIndex","retrySec_1","getCurrTimeMS","startTimeMS","diagDebug","concat","formatTime","sdkDisabled","sendRequest","overrideUrls","install","networking","urls","mockSuccess","Date","toLocaleTimeString","trace","parse","wasRespSuccess","error","info","installCount","useCookies","constructLastInstall","retry_waterfall","setTimeout","onSuccess","kochavaInstallDate","InstallSentDate","String","lastInstall","kochava_device_id","kochava_app_id","sdk_version","time","count","currTime","uptime","returnObj","persistedIdLinks","includeKey","_i","denyIdLinkKey","_c","Math","floor","now","starttime","determineInstallUserTime","usertime","device_orientation","getDeviceOrientation","package","getPackageName","disp_w","getDeviceWidth","disp_h","getDeviceHeight","language","getLanguage","utm","conversion_data","utm_source","customValues","device_ids","custom","customKey","keys","keyAllowed","allow_custom_ids","allowed","isDeviceId","identity_link","deny_identity_links","firstStartStr","firstStart","FirstStartDate"],"mappings":"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","file":"install.js","sourcesContent":["/*\n Authored by Brett Barinaga on 11/17/21.\n Copyright (c) Kochava, Inc. All rights reserved.\n*/\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport * as http from \"../http\";\nimport * as utils from \"../utils/utils\";\nimport * as browser from \"../browser/browser\";\nimport { Log } from \"../utils/log\";\nimport { constructPayload } from \"./payload\";\nimport { getPersistedIdentityLinks, PersistKey, readAndUpdatePersistedValue, updateInstallCount, updateLastInstall, updatePersistedValue } from \"../browser/persist\";\nvar timeOut;\nvar canceled = false;\nexport var build = function (instance) { return __awaiter(void 0, void 0, void 0, function () {\n var payload, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n payload = constructPayload(\"install\", instance);\n instance.installStarted = true;\n _a = payload;\n return [4 /*yield*/, constructInstallData(instance)];\n case 1:\n _a.data = _b.sent();\n Log.debug(\"Install Payload\", JSON.stringify(payload));\n if (instance.kochavaConfig.privacy) {\n instance.kochavaConfig.privacy.deny_datapoints.forEach(function (denyPoint) {\n for (var point in payload.data) {\n var key = point;\n if (key === denyPoint)\n delete payload.data[key];\n }\n for (var point in payload) {\n var key = point;\n if (key === denyPoint)\n delete payload[key];\n }\n });\n }\n return [2 /*return*/, payload];\n }\n });\n}); };\nexport var cancelRetries = function () {\n canceled = true;\n clearTimeout(timeOut);\n};\nexport var send = function (instance, payload, retries) {\n if (retries === void 0) { retries = 0; }\n return __awaiter(void 0, void 0, void 0, function () {\n var success, resp, _loop_1, state_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n canceled = false;\n success = false;\n _loop_1 = function () {\n var sendTime, respStr, respTime, lastUpdateObject, retryWaterfall, retryIndex, retrySec_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n sendTime = utils.getCurrTimeMS() - instance.startTimeMS;\n Log.diagDebug(\"Sending install at \".concat(utils.formatTime(sendTime / 1000), \" seconds\"));\n respStr = void 0;\n if (!!instance.sdkDisabled) return [3 /*break*/, 2];\n return [4 /*yield*/, http.sendRequest(payload, (instance.overrideUrls.install) ?\n instance.overrideUrls.install : instance.kochavaConfig.networking.urls.install)];\n case 1:\n respStr =\n _b.sent();\n return [3 /*break*/, 3];\n case 2:\n respStr = http.mockSuccess();\n _b.label = 3;\n case 3:\n respTime = utils.getCurrTimeMS() - instance.startTimeMS;\n Log.diagDebug(\"Completed install at \".concat(new Date().toLocaleTimeString(), \" \\n seconds with a network duration of \").concat(utils.formatTime((respTime - sendTime) / 1000), \" seconds\"));\n if (canceled) {\n Log.trace(\"Can no longer retry install, cancelling.\");\n return [2 /*return*/, { value: false }];\n }\n try {\n Log.trace(\"Install Response string:\", respStr);\n resp = JSON.parse(respStr);\n Log.debug(\"Install Response:\", respStr);\n success = http.wasRespSuccess(resp.success);\n }\n catch (e) {\n Log.error(\"Error parsing Install Response\", e);\n success = false;\n }\n if (!success) return [3 /*break*/, 6];\n Log.info(\"Install success!\");\n instance.installCount++;\n return [4 /*yield*/, updateInstallCount(instance.installCount, instance.useCookies)];\n case 4:\n _b.sent();\n lastUpdateObject = constructLastInstall(payload, sendTime, instance);\n return [4 /*yield*/, updateLastInstall(lastUpdateObject, instance.useCookies)];\n case 5:\n _b.sent();\n return [2 /*return*/, { value: success }];\n case 6:\n if (!!canceled) return [3 /*break*/, 8];\n retryWaterfall = instance.kochavaConfig.networking.retry_waterfall;\n retryIndex = (retries > retryWaterfall.length - 1) ? retryWaterfall.length - 1 : retries;\n retrySec_1 = retryWaterfall[retryIndex];\n Log.error(\"Install failed, attempting again in \".concat(retrySec_1, \" seconds\"));\n return [4 /*yield*/, new Promise(function (resolve) { timeOut = setTimeout(resolve, retrySec_1 * 1000); })];\n case 7:\n _b.sent();\n retries++;\n _b.label = 8;\n case 8: return [2 /*return*/];\n }\n });\n };\n _a.label = 1;\n case 1: return [5 /*yield**/, _loop_1()];\n case 2:\n state_1 = _a.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n _a.label = 3;\n case 3:\n if (!success && !canceled) return [3 /*break*/, 1];\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n};\nexport var onSuccess = function (instance) {\n instance.kochavaInstallDate = utils.getCurrTimeMS();\n updatePersistedValue(PersistKey.InstallSentDate, String(instance.kochavaInstallDate), instance.useCookies);\n};\nvar constructLastInstall = function (payload, sendTime, instance) {\n var lastInstall = {\n kochava_device_id: payload.kochava_device_id,\n kochava_app_id: payload.kochava_app_id,\n sdk_version: payload.sdk_version,\n time: sendTime,\n count: instance.installCount\n };\n if (instance.sdkDisabled) {\n lastInstall['sdk_disabled'] = true;\n }\n return lastInstall;\n};\nvar constructInstallData = function (instance) { return __awaiter(void 0, void 0, void 0, function () {\n var currTime, uptime, returnObj, persistedIdLinks, key, includeKey, _i, _a, denyIdLinkKey;\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n currTime = Math.floor(Date.now() / 1000);\n uptime = (currTime - instance.startTimeMS) / 1000;\n if (uptime < 0.0)\n uptime = 0.0;\n _b = {\n starttime: instance.startTimeMS / 1000,\n uptime: uptime\n };\n return [4 /*yield*/, determineInstallUserTime(instance, currTime)];\n case 1:\n returnObj = (_b.usertime = _c.sent(),\n _b.device_orientation = browser.getDeviceOrientation(),\n _b.package = browser.getPackageName(),\n _b.disp_w = browser.getDeviceWidth(),\n _b.disp_h = browser.getDeviceHeight(),\n _b.language = browser.getLanguage(),\n _b);\n if (instance.utm) {\n returnObj = __assign(__assign({}, returnObj), { conversion_data: { utm_source: instance.utm } });\n }\n if (instance.customValues.length > 0)\n returnObj.device_ids = {};\n instance.customValues.forEach(function (custom) {\n var customKey = Object.keys(custom.data)[0];\n if (instance.kochavaConfig.privacy) {\n var keyAllowed = false;\n for (var _i = 0, _a = instance.kochavaConfig.privacy.allow_custom_ids; _i < _a.length; _i++) {\n var allowed = _a[_i];\n if (customKey === allowed) {\n keyAllowed = true;\n }\n }\n if (keyAllowed) {\n if (custom.isDeviceId)\n returnObj.device_ids = __assign(__assign({}, returnObj.device_ids), custom.data);\n else\n returnObj = __assign(__assign({}, custom.data), returnObj);\n }\n }\n });\n return [4 /*yield*/, getPersistedIdentityLinks()];\n case 2:\n persistedIdLinks = _c.sent();\n if (persistedIdLinks) {\n returnObj.identity_link = {};\n for (key in persistedIdLinks) {\n includeKey = true;\n for (_i = 0, _a = instance.kochavaConfig.privacy.deny_identity_links; _i < _a.length; _i++) {\n denyIdLinkKey = _a[_i];\n if (denyIdLinkKey === key) {\n Log.debug(\"Denied identity_link \".concat(denyIdLinkKey, \", dropping from install.\"));\n includeKey = false;\n }\n }\n if (includeKey)\n returnObj.identity_link[key] = persistedIdLinks[key];\n }\n }\n return [2 /*return*/, returnObj];\n }\n });\n}); };\nvar determineInstallUserTime = function (instance, currTime) { return __awaiter(void 0, void 0, void 0, function () {\n var firstStartStr, firstStart;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, readAndUpdatePersistedValue(PersistKey.FirstStartDate, instance.useCookies)];\n case 1:\n firstStartStr = _a.sent();\n if (firstStartStr) {\n firstStart = JSON.parse(firstStartStr);\n // If its been 30 days since the sdk started\n if ((currTime - firstStart) > 2592000) {\n return [2 /*return*/, currTime];\n }\n return [2 /*return*/, firstStart];\n }\n return [2 /*return*/, currTime];\n }\n });\n}); };\n"]}