@searchspring/snap-tracker 0.40.0 → 0.41.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/dist/cjs/Tracker.d.ts +1 -0
- package/dist/cjs/Tracker.d.ts.map +1 -1
- package/dist/cjs/Tracker.js +24 -9
- package/dist/esm/Tracker.d.ts +1 -0
- package/dist/esm/Tracker.d.ts.map +1 -1
- package/dist/esm/Tracker.js +22 -7
- package/package.json +4 -4
package/dist/cjs/Tracker.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,YAAY,EAIZ,aAAa,EAQb,aAAa,EAEb,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,YAAY,EAIZ,aAAa,EAQb,aAAa,EAEb,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,aAAa,MAAM,CAAC;AAoBjC,qBAAa,OAAO;IACnB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAqB;IAEtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa;IA+IpD,UAAU,IAAI,cAAc;IAI5B,UAAU,IAAI,aAAa;IAI3B,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CAgTjB;IAEF,aAAa,QAAS,MAAM,aAAa,SAAS,GAAG,UAInD;IAEF,SAAS,QAAO,MAAM,GAAG,SAAS,GAAG,IAAI,CAmBvC;IAEF,YAAY,QAAO,MAAM,GAAG,SAAS,CAoBnC;IAEF,YAAY,QAAO,MAAM,GAAG,SAAS,CAOnC;IAEF,aAAa,QAAO,IAAI,CAuCtB;IAEF,OAAO;;uBAEI,MAAM,EAAE;yBAOJ,MAAM,EAAE,KAAG,IAAI;yBAYf,MAAM,EAAE,KAAG,IAAI;4BAaZ,MAAM,EAAE,KAAG,IAAI;;;;uBAqBtB,MAAM,EAAE;;MAQjB;IAEF,UAAU,gDAAmC,IAAI,CAyC/C;CACF"}
|
package/dist/cjs/Tracker.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Tracker = void 0;
|
|
26
|
+
exports.Tracker = exports.BATCH_TIMEOUT = void 0;
|
|
27
27
|
var deepmerge_1 = __importDefault(require("deepmerge"));
|
|
28
28
|
var uuid_1 = require("uuid");
|
|
29
29
|
var snap_store_mobx_1 = require("@searchspring/snap-store-mobx");
|
|
@@ -33,7 +33,7 @@ var TrackEvent_1 = require("./TrackEvent");
|
|
|
33
33
|
var PixelEvent_1 = require("./PixelEvent");
|
|
34
34
|
var BeaconEvent_1 = require("./BeaconEvent");
|
|
35
35
|
var types_1 = require("./types");
|
|
36
|
-
|
|
36
|
+
exports.BATCH_TIMEOUT = 200;
|
|
37
37
|
var LEGACY_USERID_COOKIE_NAME = '_isuid';
|
|
38
38
|
var USERID_COOKIE_NAME = 'ssUserId';
|
|
39
39
|
var SHOPPERID_COOKIE_NAME = 'ssShopperId';
|
|
@@ -485,23 +485,38 @@ var Tracker = /** @class */ (function () {
|
|
|
485
485
|
if (_this.mode !== snap_toolbox_2.AppMode.production) {
|
|
486
486
|
return;
|
|
487
487
|
}
|
|
488
|
-
var
|
|
488
|
+
var savedEvents = JSON.parse(_this.localStorage.get(LOCALSTORAGE_BEACON_POOL_NAME) || '[]');
|
|
489
489
|
if (eventsToSend) {
|
|
490
|
-
|
|
491
|
-
|
|
490
|
+
var eventsClone_1 = [];
|
|
491
|
+
savedEvents.forEach(function (_event, idx) {
|
|
492
|
+
// using Object.assign since we are not modifying nested properties
|
|
493
|
+
eventsClone_1.push(Object.assign({}, _event));
|
|
494
|
+
delete eventsClone_1[idx].id;
|
|
495
|
+
delete eventsClone_1[idx].pid;
|
|
492
496
|
});
|
|
493
|
-
|
|
497
|
+
var stringyEventsClone_1 = JSON.stringify(eventsClone_1);
|
|
498
|
+
// de-dupe events
|
|
499
|
+
eventsToSend.forEach(function (event, idx) {
|
|
500
|
+
var newEvent = Object.assign({}, event);
|
|
501
|
+
delete newEvent.id;
|
|
502
|
+
delete newEvent.pid;
|
|
503
|
+
if (stringyEventsClone_1.indexOf(JSON.stringify(newEvent)) == -1) {
|
|
504
|
+
savedEvents.push(__assign({}, eventsToSend[idx]));
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
// save the beacon pool with de-duped events
|
|
508
|
+
_this.localStorage.set(LOCALSTORAGE_BEACON_POOL_NAME, JSON.stringify(savedEvents));
|
|
494
509
|
}
|
|
495
510
|
clearTimeout(_this.isSending);
|
|
496
511
|
_this.isSending = window.setTimeout(function () {
|
|
497
|
-
if (
|
|
512
|
+
if (savedEvents.length) {
|
|
498
513
|
var xhr = new XMLHttpRequest();
|
|
499
514
|
xhr.open('POST', 'https://beacon.searchspring.io/beacon');
|
|
500
515
|
xhr.setRequestHeader('Content-Type', 'application/json');
|
|
501
|
-
xhr.send(JSON.stringify(
|
|
516
|
+
xhr.send(JSON.stringify(savedEvents.length == 1 ? savedEvents[0] : savedEvents));
|
|
502
517
|
}
|
|
503
518
|
_this.localStorage.set(LOCALSTORAGE_BEACON_POOL_NAME, JSON.stringify([]));
|
|
504
|
-
}, BATCH_TIMEOUT);
|
|
519
|
+
}, exports.BATCH_TIMEOUT);
|
|
505
520
|
};
|
|
506
521
|
if (typeof globals != 'object' || typeof globals.siteId != 'string') {
|
|
507
522
|
throw new Error("Invalid config passed to tracker. The \"siteId\" attribute must be provided.");
|
package/dist/esm/Tracker.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,YAAY,EAIZ,aAAa,EAQb,aAAa,EAEb,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,YAAY,EAIZ,aAAa,EAQb,aAAa,EAEb,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,aAAa,MAAM,CAAC;AAoBjC,qBAAa,OAAO;IACnB,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAqB;IAEtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa;IA+IpD,UAAU,IAAI,cAAc;IAI5B,UAAU,IAAI,aAAa;IAI3B,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CAgTjB;IAEF,aAAa,QAAS,MAAM,aAAa,SAAS,GAAG,UAInD;IAEF,SAAS,QAAO,MAAM,GAAG,SAAS,GAAG,IAAI,CAmBvC;IAEF,YAAY,QAAO,MAAM,GAAG,SAAS,CAoBnC;IAEF,YAAY,QAAO,MAAM,GAAG,SAAS,CAOnC;IAEF,aAAa,QAAO,IAAI,CAuCtB;IAEF,OAAO;;uBAEI,MAAM,EAAE;yBAOJ,MAAM,EAAE,KAAG,IAAI;yBAYf,MAAM,EAAE,KAAG,IAAI;4BAaZ,MAAM,EAAE,KAAG,IAAI;;;;uBAqBtB,MAAM,EAAE;;MAQjB;IAEF,UAAU,gDAAmC,IAAI,CAyC/C;CACF"}
|
package/dist/esm/Tracker.js
CHANGED
|
@@ -7,7 +7,7 @@ import { TrackEvent } from './TrackEvent';
|
|
|
7
7
|
import { PixelEvent } from './PixelEvent';
|
|
8
8
|
import { BeaconEvent } from './BeaconEvent';
|
|
9
9
|
import { BeaconType, BeaconCategory, } from './types';
|
|
10
|
-
const BATCH_TIMEOUT =
|
|
10
|
+
export const BATCH_TIMEOUT = 200;
|
|
11
11
|
const LEGACY_USERID_COOKIE_NAME = '_isuid';
|
|
12
12
|
const USERID_COOKIE_NAME = 'ssUserId';
|
|
13
13
|
const SHOPPERID_COOKIE_NAME = 'ssShopperId';
|
|
@@ -459,20 +459,35 @@ export class Tracker {
|
|
|
459
459
|
if (this.mode !== AppMode.production) {
|
|
460
460
|
return;
|
|
461
461
|
}
|
|
462
|
-
|
|
462
|
+
let savedEvents = JSON.parse(this.localStorage.get(LOCALSTORAGE_BEACON_POOL_NAME) || '[]');
|
|
463
463
|
if (eventsToSend) {
|
|
464
|
-
|
|
465
|
-
|
|
464
|
+
let eventsClone = [];
|
|
465
|
+
savedEvents.forEach((_event, idx) => {
|
|
466
|
+
// using Object.assign since we are not modifying nested properties
|
|
467
|
+
eventsClone.push(Object.assign({}, _event));
|
|
468
|
+
delete eventsClone[idx].id;
|
|
469
|
+
delete eventsClone[idx].pid;
|
|
466
470
|
});
|
|
467
|
-
|
|
471
|
+
const stringyEventsClone = JSON.stringify(eventsClone);
|
|
472
|
+
// de-dupe events
|
|
473
|
+
eventsToSend.forEach((event, idx) => {
|
|
474
|
+
let newEvent = Object.assign({}, event);
|
|
475
|
+
delete newEvent.id;
|
|
476
|
+
delete newEvent.pid;
|
|
477
|
+
if (stringyEventsClone.indexOf(JSON.stringify(newEvent)) == -1) {
|
|
478
|
+
savedEvents.push({ ...eventsToSend[idx] });
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
// save the beacon pool with de-duped events
|
|
482
|
+
this.localStorage.set(LOCALSTORAGE_BEACON_POOL_NAME, JSON.stringify(savedEvents));
|
|
468
483
|
}
|
|
469
484
|
clearTimeout(this.isSending);
|
|
470
485
|
this.isSending = window.setTimeout(() => {
|
|
471
|
-
if (
|
|
486
|
+
if (savedEvents.length) {
|
|
472
487
|
const xhr = new XMLHttpRequest();
|
|
473
488
|
xhr.open('POST', 'https://beacon.searchspring.io/beacon');
|
|
474
489
|
xhr.setRequestHeader('Content-Type', 'application/json');
|
|
475
|
-
xhr.send(JSON.stringify(
|
|
490
|
+
xhr.send(JSON.stringify(savedEvents.length == 1 ? savedEvents[0] : savedEvents));
|
|
476
491
|
}
|
|
477
492
|
this.localStorage.set(LOCALSTORAGE_BEACON_POOL_NAME, JSON.stringify([]));
|
|
478
493
|
}, BATCH_TIMEOUT);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-tracker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"description": "Snap Tracker",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"test:watch": "jest --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@searchspring/snap-store-mobx": "^0.
|
|
24
|
-
"@searchspring/snap-toolbox": "^0.
|
|
23
|
+
"@searchspring/snap-store-mobx": "^0.41.0",
|
|
24
|
+
"@searchspring/snap-toolbox": "^0.41.0",
|
|
25
25
|
"@types/uuid": "8.3.4",
|
|
26
26
|
"deepmerge": "4.2.2",
|
|
27
27
|
"uuid": "8.3.2"
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"files": [
|
|
31
31
|
"dist/**/*"
|
|
32
32
|
],
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "6407e4cb50b8845bf38528e9ed742f6ca97cc2a7"
|
|
34
34
|
}
|