@searchspring/snap-tracker 0.72.2 → 0.73.6

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.
@@ -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 & BeaconConfig;
6
+ config: TrackerConfig;
8
7
  private targeters;
9
- constructor(globals: TrackerGlobals, config?: TrackerConfig & BeaconConfig);
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;AAC9C,OAAO,KAAK,EAA6C,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EACN,cAAc,EACd,YAAY,EAKZ,aAAa,EAEb,MAAM,SAAS,CAAC;AAUjB,qBAAa,OAAQ,SAAQ,MAAM;IAClC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAkB;IAE7B,MAAM,EAAE,aAAa,GAAG,YAAY,CAAC;IAC5C,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,YAAY;IAgPnE,UAAU,IAAI,cAAc;IAI5B,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CAkGjB;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"}
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"}
@@ -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 result = data;
105
- if (!data.uid && data.sku) {
106
- result = __assign(__assign({}, data), { uid: data.sku });
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: { result: result }, siteId: siteId });
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
- // uid is required - fallback to get most relevant
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 (existingItem.uid === item.uid &&
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
@@ -1,23 +1,15 @@
1
1
  import { AppMode } from '@searchspring/snap-toolbox';
2
- import type { ContextCurrency, Product } from '@searchspring/beacon';
2
+ import type { BeaconConfig, Currency, Product } from '@searchspring/beacon';
3
3
  export type TrackerGlobals = {
4
4
  siteId: string;
5
- currency?: ContextCurrency;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -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 & BeaconConfig;
6
+ config: TrackerConfig;
8
7
  private targeters;
9
- constructor(globals: TrackerGlobals, config?: TrackerConfig & BeaconConfig);
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;AAC9C,OAAO,KAAK,EAA6C,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EACN,cAAc,EACd,YAAY,EAKZ,aAAa,EAEb,MAAM,SAAS,CAAC;AAUjB,qBAAa,OAAQ,SAAQ,MAAM;IAClC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAkB;IAE7B,MAAM,EAAE,aAAa,GAAG,YAAY,CAAC;IAC5C,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,YAAY;IAgPnE,UAAU,IAAI,cAAc;IAI5B,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CAkGjB;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"}
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"}
@@ -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 result = data;
56
- if (!data.uid && data.sku) {
57
- result = {
58
- ...data,
59
- uid: data.sku,
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: { result: result }, siteId });
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
- // uid is required - fallback to get most relevant
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 (existingItem.uid === item.uid &&
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
@@ -1,23 +1,15 @@
1
1
  import { AppMode } from '@searchspring/snap-toolbox';
2
- import type { ContextCurrency, Product } from '@searchspring/beacon';
2
+ import type { BeaconConfig, Currency, Product } from '@searchspring/beacon';
3
3
  export type TrackerGlobals = {
4
4
  siteId: string;
5
- currency?: ContextCurrency;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
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.72.2",
3
+ "version": "0.73.6",
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.44",
24
- "@searchspring/snap-store-mobx": "0.72.2",
25
- "@searchspring/snap-toolbox": "0.72.2",
23
+ "@searchspring/beacon": "0.0.48",
24
+ "@searchspring/snap-store-mobx": "0.73.6",
25
+ "@searchspring/snap-toolbox": "0.73.6",
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": "e6a243a563a22c1d6f87f8b42c540b46b875c54f"
33
+ "gitHead": "afcdd6d76bafbd19d5a1e7fa656a811700d99c19"
34
34
  }