@searchspring/snap-tracker 0.72.2 → 0.73.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.
- package/dist/cjs/Tracker.d.ts +2 -3
- package/dist/cjs/Tracker.d.ts.map +1 -1
- package/dist/cjs/Tracker.js +32 -26
- package/dist/cjs/types.d.ts +4 -11
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/Tracker.d.ts +2 -3
- package/dist/esm/Tracker.d.ts.map +1 -1
- package/dist/esm/Tracker.js +31 -26
- package/dist/esm/types.d.ts +4 -11
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/cjs/Tracker.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Beacon } from '@searchspring/beacon';
|
|
2
|
-
import type { BeaconConfig } from '@searchspring/beacon';
|
|
3
2
|
import { TrackerGlobals, TrackMethods, TrackerConfig } from './types';
|
|
4
3
|
export declare class Tracker extends Beacon {
|
|
5
4
|
private localStorage;
|
|
6
5
|
private doNotTrack;
|
|
7
|
-
config: TrackerConfig
|
|
6
|
+
config: TrackerConfig;
|
|
8
7
|
private targeters;
|
|
9
|
-
constructor(globals: TrackerGlobals, config?: TrackerConfig
|
|
8
|
+
constructor(globals: TrackerGlobals, config?: TrackerConfig);
|
|
10
9
|
getGlobals(): TrackerGlobals;
|
|
11
10
|
retarget(): void;
|
|
12
11
|
track: TrackMethods;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EACN,cAAc,EACd,YAAY,EAKZ,aAAa,EAEb,MAAM,SAAS,CAAC;AAejB,qBAAa,OAAQ,SAAQ,MAAM;IAClC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAkB;IAE7B,MAAM,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa;IAoOpD,UAAU,IAAI,cAAc;IAI5B,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CA0GjB;IAEF,OAAO;;uBAEI,MAAM,EAAE;yBAIJ,MAAM,EAAE,KAAG,IAAI;yBAKf,MAAM,EAAE,KAAG,IAAI;4BAMZ,MAAM,EAAE,KAAG,IAAI;;;;uBAWtB,MAAM,EAAE;;MAKjB;CACF"}
|
package/dist/cjs/Tracker.js
CHANGED
|
@@ -51,6 +51,11 @@ var defaultConfig = {
|
|
|
51
51
|
id: 'track',
|
|
52
52
|
framework: 'snap',
|
|
53
53
|
mode: snap_toolbox_2.AppMode.production,
|
|
54
|
+
requesters: {
|
|
55
|
+
beacon: {
|
|
56
|
+
origin: 'https://beacon.searchspring.io/beacon/v2',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
54
59
|
};
|
|
55
60
|
var Tracker = /** @class */ (function (_super) {
|
|
56
61
|
__extends(Tracker, _super);
|
|
@@ -59,6 +64,9 @@ var Tracker = /** @class */ (function (_super) {
|
|
|
59
64
|
var _a;
|
|
60
65
|
config = (0, deepmerge_1.default)(defaultConfig, config || {});
|
|
61
66
|
config.initiator = "searchspring/".concat(config.framework, "/").concat(snap_toolbox_1.version);
|
|
67
|
+
if (typeof globals != 'object' || typeof globals.siteId != 'string') {
|
|
68
|
+
throw new Error("Invalid config passed to tracker. The \"siteId\" attribute must be provided.");
|
|
69
|
+
}
|
|
62
70
|
_this = _super.call(this, globals, config) || this;
|
|
63
71
|
_this.targeters = [];
|
|
64
72
|
_this.track = {
|
|
@@ -101,11 +109,23 @@ var Tracker = /** @class */ (function (_super) {
|
|
|
101
109
|
if ((_a = _this.doNotTrack) === null || _a === void 0 ? void 0 : _a.includes('product.view')) {
|
|
102
110
|
return;
|
|
103
111
|
}
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
112
|
+
var dataPayload = {
|
|
113
|
+
result: {
|
|
114
|
+
parentId: data.parentId || data.uid || '',
|
|
115
|
+
uid: data.uid || data.parentId || data.sku || '',
|
|
116
|
+
sku: data.sku,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
if (data.childSku || data.childUid) {
|
|
120
|
+
dataPayload = {
|
|
121
|
+
result: {
|
|
122
|
+
parentId: data.parentId || data.uid || data.childUid || '',
|
|
123
|
+
uid: data.childUid || data.uid || '',
|
|
124
|
+
sku: data.childSku || data.sku,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
107
127
|
}
|
|
108
|
-
_this.events.product.pageView({ data:
|
|
128
|
+
_this.events.product.pageView({ data: dataPayload, siteId: siteId });
|
|
109
129
|
},
|
|
110
130
|
/**
|
|
111
131
|
* @deprecated tracker.track.product.click() is deprecated and will be removed. Use tracker.events['search' | 'category'].clickThrough() instead
|
|
@@ -138,11 +158,9 @@ var Tracker = /** @class */ (function (_super) {
|
|
|
138
158
|
country: order === null || order === void 0 ? void 0 : order.country,
|
|
139
159
|
results: items.map(function (item) {
|
|
140
160
|
return {
|
|
141
|
-
|
|
142
|
-
uid: item.uid || item.sku || '',
|
|
143
|
-
childUid: item.childUid,
|
|
161
|
+
parentId: item.parentId || item.uid || '',
|
|
162
|
+
uid: item.uid || item.parentId || item.sku || '',
|
|
144
163
|
sku: item.sku,
|
|
145
|
-
childSku: item.childSku,
|
|
146
164
|
qty: Number(item.qty),
|
|
147
165
|
price: Number(item.price),
|
|
148
166
|
};
|
|
@@ -160,18 +178,18 @@ var Tracker = /** @class */ (function (_super) {
|
|
|
160
178
|
},
|
|
161
179
|
set: function (items) {
|
|
162
180
|
var cartItems = items.map(function (item) { return "".concat(item).trim(); });
|
|
163
|
-
var uniqueCartItems = Array.from(new Set(cartItems)).map(function (uid) { return ({ uid: uid, sku: uid, price: 0, qty: 1 }); });
|
|
181
|
+
var uniqueCartItems = Array.from(new Set(cartItems)).map(function (uid) { return ({ parentId: uid, uid: uid, sku: uid, price: 0, qty: 1 }); });
|
|
164
182
|
_this.storage.cart.set(uniqueCartItems);
|
|
165
183
|
},
|
|
166
184
|
add: function (items) {
|
|
167
185
|
if (items.length) {
|
|
168
|
-
var itemsToAdd = items.map(function (item) { return "".concat(item).trim(); }).map(function (uid) { return ({ uid: uid, sku: uid, price: 0, qty: 1 }); });
|
|
186
|
+
var itemsToAdd = items.map(function (item) { return "".concat(item).trim(); }).map(function (uid) { return ({ parentId: uid, uid: uid, sku: uid, price: 0, qty: 1 }); });
|
|
169
187
|
_this.storage.cart.add(itemsToAdd);
|
|
170
188
|
}
|
|
171
189
|
},
|
|
172
190
|
remove: function (items) {
|
|
173
191
|
if (items.length) {
|
|
174
|
-
var itemsToRemove = items.map(function (item) { return "".concat(item).trim(); }).map(function (uid) { return ({ uid: uid, sku: uid, price: 0, qty: 1 }); });
|
|
192
|
+
var itemsToRemove = items.map(function (item) { return "".concat(item).trim(); }).map(function (uid) { return ({ parentId: uid, uid: uid, sku: uid, price: 0, qty: 1 }); });
|
|
175
193
|
_this.storage.cart.remove(itemsToRemove);
|
|
176
194
|
}
|
|
177
195
|
},
|
|
@@ -186,9 +204,6 @@ var Tracker = /** @class */ (function (_super) {
|
|
|
186
204
|
},
|
|
187
205
|
},
|
|
188
206
|
};
|
|
189
|
-
if (typeof globals != 'object' || typeof globals.siteId != 'string') {
|
|
190
|
-
throw new Error("Invalid config passed to tracker. The \"siteId\" attribute must be provided.");
|
|
191
|
-
}
|
|
192
207
|
_this.config = config;
|
|
193
208
|
_this.doNotTrack = _this.config.doNotTrack || [];
|
|
194
209
|
if (Object.values(snap_toolbox_2.AppMode).includes(_this.config.mode)) {
|
|
@@ -310,18 +325,12 @@ var Tracker = /** @class */ (function (_super) {
|
|
|
310
325
|
else if (cart.length) {
|
|
311
326
|
// length check here to be able to sent error event if invalid array of objects is provided
|
|
312
327
|
var currentCart = cart
|
|
313
|
-
.filter(function (item) {
|
|
314
|
-
return typeof item === 'object' &&
|
|
315
|
-
(item.uid || item.sku || item.childUid || item.childSku) &&
|
|
316
|
-
item.qty !== undefined &&
|
|
317
|
-
item.price !== undefined;
|
|
318
|
-
})
|
|
328
|
+
.filter(function (item) { return typeof item === 'object' && (item.parentId || item.uid || item.sku) && item.qty !== undefined && item.price !== undefined; })
|
|
319
329
|
.map(function (item) {
|
|
320
330
|
return {
|
|
331
|
+
parentId: item.parentId || item.uid,
|
|
321
332
|
uid: item.uid,
|
|
322
|
-
childUid: item.childUid,
|
|
323
333
|
sku: item.sku,
|
|
324
|
-
childSku: item.childSku,
|
|
325
334
|
price: item.price,
|
|
326
335
|
qty: item.qty,
|
|
327
336
|
};
|
|
@@ -346,10 +355,7 @@ var Tracker = /** @class */ (function (_super) {
|
|
|
346
355
|
else if (currentCart.length) {
|
|
347
356
|
currentCart.forEach(function (item) {
|
|
348
357
|
var existingItem = storedCart_1.find(function (existingItem) {
|
|
349
|
-
return
|
|
350
|
-
existingItem.sku === item.sku &&
|
|
351
|
-
existingItem.childUid === item.childUid &&
|
|
352
|
-
existingItem.childSku === item.childSku);
|
|
358
|
+
return existingItem.parentId === item.parentId && existingItem.uid === item.uid && existingItem.sku === item.sku;
|
|
353
359
|
});
|
|
354
360
|
if (!existingItem) {
|
|
355
361
|
// item does not exist in cart, add it
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
import { AppMode } from '@searchspring/snap-toolbox';
|
|
2
|
-
import type {
|
|
2
|
+
import type { BeaconConfig, Currency, Product } from '@searchspring/beacon';
|
|
3
3
|
export type TrackerGlobals = {
|
|
4
4
|
siteId: string;
|
|
5
|
-
currency?:
|
|
5
|
+
currency?: Currency;
|
|
6
6
|
cart?: Product[];
|
|
7
7
|
};
|
|
8
8
|
export type TrackerEvents = 'error' | 'shopper.login' | 'product.view' | 'product.click' | 'cart.view' | 'order.transaction';
|
|
9
|
-
export type TrackerConfig = {
|
|
9
|
+
export type TrackerConfig = BeaconConfig & {
|
|
10
10
|
id?: string;
|
|
11
11
|
framework?: string;
|
|
12
12
|
mode?: keyof typeof AppMode | AppMode;
|
|
13
|
-
requesters?: {
|
|
14
|
-
personalization?: {
|
|
15
|
-
origin: string;
|
|
16
|
-
};
|
|
17
|
-
beacon?: {
|
|
18
|
-
origin?: string;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
13
|
doNotTrack?: TrackerEvents[];
|
|
22
14
|
};
|
|
23
15
|
export interface ShopperLoginEvent {
|
|
@@ -43,6 +35,7 @@ export interface TrackErrorEvent {
|
|
|
43
35
|
}
|
|
44
36
|
export interface ProductViewEvent {
|
|
45
37
|
uid?: string;
|
|
38
|
+
parentId?: string;
|
|
46
39
|
sku?: string;
|
|
47
40
|
childUid?: string;
|
|
48
41
|
childSku?: string;
|
package/dist/cjs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/Tracker.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Beacon } from '@searchspring/beacon';
|
|
2
|
-
import type { BeaconConfig } from '@searchspring/beacon';
|
|
3
2
|
import { TrackerGlobals, TrackMethods, TrackerConfig } from './types';
|
|
4
3
|
export declare class Tracker extends Beacon {
|
|
5
4
|
private localStorage;
|
|
6
5
|
private doNotTrack;
|
|
7
|
-
config: TrackerConfig
|
|
6
|
+
config: TrackerConfig;
|
|
8
7
|
private targeters;
|
|
9
|
-
constructor(globals: TrackerGlobals, config?: TrackerConfig
|
|
8
|
+
constructor(globals: TrackerGlobals, config?: TrackerConfig);
|
|
10
9
|
getGlobals(): TrackerGlobals;
|
|
11
10
|
retarget(): void;
|
|
12
11
|
track: TrackMethods;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EACN,cAAc,EACd,YAAY,EAKZ,aAAa,EAEb,MAAM,SAAS,CAAC;AAejB,qBAAa,OAAQ,SAAQ,MAAM;IAClC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAkB;IAE7B,MAAM,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa;IAoOpD,UAAU,IAAI,cAAc;IAI5B,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CA0GjB;IAEF,OAAO;;uBAEI,MAAM,EAAE;yBAIJ,MAAM,EAAE,KAAG,IAAI;yBAKf,MAAM,EAAE,KAAG,IAAI;4BAMZ,MAAM,EAAE,KAAG,IAAI;;;;uBAWtB,MAAM,EAAE;;MAKjB;CACF"}
|
package/dist/esm/Tracker.js
CHANGED
|
@@ -8,11 +8,19 @@ const defaultConfig = {
|
|
|
8
8
|
id: 'track',
|
|
9
9
|
framework: 'snap',
|
|
10
10
|
mode: AppMode.production,
|
|
11
|
+
requesters: {
|
|
12
|
+
beacon: {
|
|
13
|
+
origin: 'https://beacon.searchspring.io/beacon/v2',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
11
16
|
};
|
|
12
17
|
export class Tracker extends Beacon {
|
|
13
18
|
constructor(globals, config) {
|
|
14
19
|
config = deepmerge(defaultConfig, config || {});
|
|
15
20
|
config.initiator = `searchspring/${config.framework}/${version}`;
|
|
21
|
+
if (typeof globals != 'object' || typeof globals.siteId != 'string') {
|
|
22
|
+
throw new Error(`Invalid config passed to tracker. The "siteId" attribute must be provided.`);
|
|
23
|
+
}
|
|
16
24
|
super(globals, config);
|
|
17
25
|
this.targeters = [];
|
|
18
26
|
this.track = {
|
|
@@ -52,14 +60,23 @@ export class Tracker extends Beacon {
|
|
|
52
60
|
if (this.doNotTrack?.includes('product.view')) {
|
|
53
61
|
return;
|
|
54
62
|
}
|
|
55
|
-
let
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
let dataPayload = {
|
|
64
|
+
result: {
|
|
65
|
+
parentId: data.parentId || data.uid || '',
|
|
66
|
+
uid: data.uid || data.parentId || data.sku || '',
|
|
67
|
+
sku: data.sku,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
if (data.childSku || data.childUid) {
|
|
71
|
+
dataPayload = {
|
|
72
|
+
result: {
|
|
73
|
+
parentId: data.parentId || data.uid || data.childUid || '',
|
|
74
|
+
uid: data.childUid || data.uid || '',
|
|
75
|
+
sku: data.childSku || data.sku,
|
|
76
|
+
},
|
|
60
77
|
};
|
|
61
78
|
}
|
|
62
|
-
this.events.product.pageView({ data:
|
|
79
|
+
this.events.product.pageView({ data: dataPayload, siteId });
|
|
63
80
|
},
|
|
64
81
|
/**
|
|
65
82
|
* @deprecated tracker.track.product.click() is deprecated and will be removed. Use tracker.events['search' | 'category'].clickThrough() instead
|
|
@@ -91,11 +108,9 @@ export class Tracker extends Beacon {
|
|
|
91
108
|
country: order?.country,
|
|
92
109
|
results: items.map((item) => {
|
|
93
110
|
return {
|
|
94
|
-
|
|
95
|
-
uid: item.uid || item.sku || '',
|
|
96
|
-
childUid: item.childUid,
|
|
111
|
+
parentId: item.parentId || item.uid || '',
|
|
112
|
+
uid: item.uid || item.parentId || item.sku || '',
|
|
97
113
|
sku: item.sku,
|
|
98
|
-
childSku: item.childSku,
|
|
99
114
|
qty: Number(item.qty),
|
|
100
115
|
price: Number(item.price),
|
|
101
116
|
};
|
|
@@ -113,18 +128,18 @@ export class Tracker extends Beacon {
|
|
|
113
128
|
},
|
|
114
129
|
set: (items) => {
|
|
115
130
|
const cartItems = items.map((item) => `${item}`.trim());
|
|
116
|
-
const uniqueCartItems = Array.from(new Set(cartItems)).map((uid) => ({ uid, sku: uid, price: 0, qty: 1 }));
|
|
131
|
+
const uniqueCartItems = Array.from(new Set(cartItems)).map((uid) => ({ parentId: uid, uid, sku: uid, price: 0, qty: 1 }));
|
|
117
132
|
this.storage.cart.set(uniqueCartItems);
|
|
118
133
|
},
|
|
119
134
|
add: (items) => {
|
|
120
135
|
if (items.length) {
|
|
121
|
-
const itemsToAdd = items.map((item) => `${item}`.trim()).map((uid) => ({ uid, sku: uid, price: 0, qty: 1 }));
|
|
136
|
+
const itemsToAdd = items.map((item) => `${item}`.trim()).map((uid) => ({ parentId: uid, uid, sku: uid, price: 0, qty: 1 }));
|
|
122
137
|
this.storage.cart.add(itemsToAdd);
|
|
123
138
|
}
|
|
124
139
|
},
|
|
125
140
|
remove: (items) => {
|
|
126
141
|
if (items.length) {
|
|
127
|
-
const itemsToRemove = items.map((item) => `${item}`.trim()).map((uid) => ({ uid, sku: uid, price: 0, qty: 1 }));
|
|
142
|
+
const itemsToRemove = items.map((item) => `${item}`.trim()).map((uid) => ({ parentId: uid, uid, sku: uid, price: 0, qty: 1 }));
|
|
128
143
|
this.storage.cart.remove(itemsToRemove);
|
|
129
144
|
}
|
|
130
145
|
},
|
|
@@ -139,9 +154,6 @@ export class Tracker extends Beacon {
|
|
|
139
154
|
},
|
|
140
155
|
},
|
|
141
156
|
};
|
|
142
|
-
if (typeof globals != 'object' || typeof globals.siteId != 'string') {
|
|
143
|
-
throw new Error(`Invalid config passed to tracker. The "siteId" attribute must be provided.`);
|
|
144
|
-
}
|
|
145
157
|
this.config = config;
|
|
146
158
|
this.doNotTrack = this.config.doNotTrack || [];
|
|
147
159
|
if (Object.values(AppMode).includes(this.config.mode)) {
|
|
@@ -262,16 +274,12 @@ export class Tracker extends Beacon {
|
|
|
262
274
|
else if (cart.length) {
|
|
263
275
|
// length check here to be able to sent error event if invalid array of objects is provided
|
|
264
276
|
const currentCart = cart
|
|
265
|
-
.filter((item) => typeof item === 'object' &&
|
|
266
|
-
(item.uid || item.sku || item.childUid || item.childSku) &&
|
|
267
|
-
item.qty !== undefined &&
|
|
268
|
-
item.price !== undefined)
|
|
277
|
+
.filter((item) => typeof item === 'object' && (item.parentId || item.uid || item.sku) && item.qty !== undefined && item.price !== undefined)
|
|
269
278
|
.map((item) => {
|
|
270
279
|
return {
|
|
280
|
+
parentId: item.parentId || item.uid,
|
|
271
281
|
uid: item.uid,
|
|
272
|
-
childUid: item.childUid,
|
|
273
282
|
sku: item.sku,
|
|
274
|
-
childSku: item.childSku,
|
|
275
283
|
price: item.price,
|
|
276
284
|
qty: item.qty,
|
|
277
285
|
};
|
|
@@ -296,10 +304,7 @@ export class Tracker extends Beacon {
|
|
|
296
304
|
else if (currentCart.length) {
|
|
297
305
|
currentCart.forEach((item) => {
|
|
298
306
|
const existingItem = storedCart.find((existingItem) => {
|
|
299
|
-
return
|
|
300
|
-
existingItem.sku === item.sku &&
|
|
301
|
-
existingItem.childUid === item.childUid &&
|
|
302
|
-
existingItem.childSku === item.childSku);
|
|
307
|
+
return existingItem.parentId === item.parentId && existingItem.uid === item.uid && existingItem.sku === item.sku;
|
|
303
308
|
});
|
|
304
309
|
if (!existingItem) {
|
|
305
310
|
// item does not exist in cart, add it
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
import { AppMode } from '@searchspring/snap-toolbox';
|
|
2
|
-
import type {
|
|
2
|
+
import type { BeaconConfig, Currency, Product } from '@searchspring/beacon';
|
|
3
3
|
export type TrackerGlobals = {
|
|
4
4
|
siteId: string;
|
|
5
|
-
currency?:
|
|
5
|
+
currency?: Currency;
|
|
6
6
|
cart?: Product[];
|
|
7
7
|
};
|
|
8
8
|
export type TrackerEvents = 'error' | 'shopper.login' | 'product.view' | 'product.click' | 'cart.view' | 'order.transaction';
|
|
9
|
-
export type TrackerConfig = {
|
|
9
|
+
export type TrackerConfig = BeaconConfig & {
|
|
10
10
|
id?: string;
|
|
11
11
|
framework?: string;
|
|
12
12
|
mode?: keyof typeof AppMode | AppMode;
|
|
13
|
-
requesters?: {
|
|
14
|
-
personalization?: {
|
|
15
|
-
origin: string;
|
|
16
|
-
};
|
|
17
|
-
beacon?: {
|
|
18
|
-
origin?: string;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
13
|
doNotTrack?: TrackerEvents[];
|
|
22
14
|
};
|
|
23
15
|
export interface ShopperLoginEvent {
|
|
@@ -43,6 +35,7 @@ export interface TrackErrorEvent {
|
|
|
43
35
|
}
|
|
44
36
|
export interface ProductViewEvent {
|
|
45
37
|
uid?: string;
|
|
38
|
+
parentId?: string;
|
|
46
39
|
sku?: string;
|
|
47
40
|
childUid?: string;
|
|
48
41
|
childSku?: string;
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-tracker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.73.5",
|
|
4
4
|
"description": "Snap Tracker",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"test:watch": "jest --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@searchspring/beacon": "0.0.
|
|
24
|
-
"@searchspring/snap-store-mobx": "0.
|
|
25
|
-
"@searchspring/snap-toolbox": "0.
|
|
23
|
+
"@searchspring/beacon": "0.0.48",
|
|
24
|
+
"@searchspring/snap-store-mobx": "0.73.5",
|
|
25
|
+
"@searchspring/snap-toolbox": "0.73.5",
|
|
26
26
|
"deepmerge": "4.3.1",
|
|
27
27
|
"uuid": "9.0.1"
|
|
28
28
|
},
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"files": [
|
|
31
31
|
"dist/**/*"
|
|
32
32
|
],
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "3052c4ea9cc631b0b398c72ea0f155084e15b7ee"
|
|
34
34
|
}
|