@searchspring/snap-controller 0.73.6 → 0.74.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.
@@ -28,7 +28,6 @@ export declare class AutocompleteController extends AbstractController {
28
28
  store: AutocompleteStore;
29
29
  config: AutocompleteControllerConfig;
30
30
  storage: StorageStore;
31
- private lastSearchQuery;
32
31
  private events;
33
32
  constructor(config: AutocompleteControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
34
33
  track: AutocompleteTrackMethods;
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,OAAO,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAA6C,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9I,OAAO,KAAK,EAAE,wBAAwB,EAA4C,MAAM,2BAA2B,CAAC;AAkBpH,eAAO,MAAM,WAAW,MAAM,CAAC;AA+B/B,KAAK,wBAAwB,GAAG;IAC/B,MAAM,EAAE;QACP,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;QAChF,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;QACvF,UAAU,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;KACtE,CAAC;IACF,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAC/C,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7F,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;IAC7B,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,MAAM,CAgBP;gBAGN,MAAM,EAAE,4BAA4B,EACpC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAwE3B,KAAK,EAAE,wBAAwB,CAwI7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CAkDrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAiDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCA+ChD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,KAAK;;;;uBA0DL,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgF3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CA+J9B;IAEF,SAAS,cAAqB,OAAO,EAAE,GAAG,OAAO,KAAG,QAAQ,IAAI,CAAC,CAQ/D;CACF"}
1
+ {"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,OAAO,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAA6C,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9I,OAAO,KAAK,EAAE,wBAAwB,EAA4C,MAAM,2BAA2B,CAAC;AAkBpH,eAAO,MAAM,WAAW,MAAM,CAAC;AAkC/B,KAAK,wBAAwB,GAAG;IAC/B,MAAM,EAAE;QACP,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;QAChF,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;QACvF,UAAU,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;KACtE,CAAC;IACF,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAC/C,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7F,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;IAE7B,OAAO,CAAC,MAAM,CAgBP;gBAGN,MAAM,EAAE,4BAA4B,EACpC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA8D3B,KAAK,EAAE,wBAAwB,CAkL7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CAkDrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAiDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCA+ChD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,KAAK;;;;uBA0DL,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgF3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkK9B;IAEF,SAAS,cAAqB,OAAO,EAAE,GAAG,OAAO,KAAG,QAAQ,IAAI,CAAC,CAY/D;CACF"}
@@ -84,6 +84,9 @@ var defaultConfig = {
84
84
  selector: '',
85
85
  action: '',
86
86
  globals: {},
87
+ beacon: {
88
+ enabled: true,
89
+ },
87
90
  settings: {
88
91
  integratedSpellCorrection: false,
89
92
  initializeFromUrl: true,
@@ -113,7 +116,11 @@ var AutocompleteController = /** @class */ (function (_super) {
113
116
  _this.track = {
114
117
  banner: {
115
118
  impression: function (_banner) {
116
- var _a, _b, _c, _d;
119
+ var _a, _b, _c, _d, _e;
120
+ if (!_banner) {
121
+ _this.log.warn('No banner provided to track.banner.impression');
122
+ return;
123
+ }
117
124
  var responseId = _banner.responseId, uid = _banner.uid;
118
125
  if ((_c = (_b = (_a = _this.events[responseId]) === null || _a === void 0 ? void 0 : _a.banner) === null || _b === void 0 ? void 0 : _b[uid]) === null || _c === void 0 ? void 0 : _c.impression) {
119
126
  return;
@@ -125,12 +132,16 @@ var AutocompleteController = /** @class */ (function (_super) {
125
132
  results: [],
126
133
  };
127
134
  _this.eventManager.fire('track.banner.impression', { controller: _this, product: { uid: uid }, trackEvent: data });
128
- _this.tracker.events.autocomplete.impression({ data: data, siteId: (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.siteId });
135
+ ((_d = _this.config.beacon) === null || _d === void 0 ? void 0 : _d.enabled) && _this.tracker.events.autocomplete.impression({ data: data, siteId: (_e = _this.config.globals) === null || _e === void 0 ? void 0 : _e.siteId });
129
136
  _this.events[responseId].banner[uid] = _this.events[responseId].banner[uid] || {};
130
137
  _this.events[responseId].banner[uid].impression = true;
131
138
  },
132
139
  click: function (e, banner) {
133
140
  var _a, _b, _c;
141
+ if (!banner) {
142
+ _this.log.warn('No banner provided to track.banner.click');
143
+ return;
144
+ }
134
145
  var responseId = banner.responseId, uid = banner.uid;
135
146
  if ((0, isClickWithinBannerLink_1.isClickWithinBannerLink)(e)) {
136
147
  if ((_c = (_b = (_a = _this.events) === null || _a === void 0 ? void 0 : _a[responseId]) === null || _b === void 0 ? void 0 : _b.banner[uid]) === null || _c === void 0 ? void 0 : _c.clickThrough) {
@@ -145,15 +156,19 @@ var AutocompleteController = /** @class */ (function (_super) {
145
156
  }
146
157
  },
147
158
  clickThrough: function (e, _a) {
148
- var _b;
159
+ var _b, _c;
149
160
  var uid = _a.uid, responseId = _a.responseId;
161
+ if (!uid) {
162
+ _this.log.warn('No banner uid provided to track.banner.clickThrough');
163
+ return;
164
+ }
150
165
  var banner = { uid: uid };
151
166
  var data = {
152
167
  responseId: responseId,
153
168
  banners: [banner],
154
169
  };
155
170
  _this.eventManager.fire('track.banner.clickThrough', { controller: _this, event: e, product: { uid: uid }, trackEvent: data });
156
- _this.tracker.events.autocomplete.clickThrough({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
171
+ ((_b = _this.config.beacon) === null || _b === void 0 ? void 0 : _b.enabled) && _this.tracker.events.autocomplete.clickThrough({ data: data, siteId: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId });
157
172
  _this.events[responseId].banner[uid] = _this.events[responseId].banner[uid] || {};
158
173
  _this.events[responseId].banner[uid].clickThrough = true;
159
174
  setTimeout(function () {
@@ -163,23 +178,32 @@ var AutocompleteController = /** @class */ (function (_super) {
163
178
  },
164
179
  product: {
165
180
  clickThrough: function (e, result) {
166
- var _a, _b;
181
+ var _a, _b, _c, _d;
182
+ if (!result) {
183
+ _this.log.warn('No result provided to track.product.clickThrough');
184
+ return;
185
+ }
167
186
  var responseId = result.responseId;
168
- var item = {
169
- type: result.type,
170
- uid: result.id,
171
- parentId: result.id,
172
- sku: (_a = result.mappings.core) === null || _a === void 0 ? void 0 : _a.sku,
173
- };
187
+ var type = (['product', 'banner'].includes(result.type) ? result.type : 'product');
188
+ var item = __assign({ type: type, uid: result.id ? '' + result.id : '' }, (type === 'product'
189
+ ? {
190
+ parentId: result.id ? '' + result.id : '',
191
+ sku: ((_a = result.mappings.core) === null || _a === void 0 ? void 0 : _a.sku) ? '' + ((_b = result.mappings.core) === null || _b === void 0 ? void 0 : _b.sku) : undefined,
192
+ }
193
+ : {}));
174
194
  var data = {
175
195
  responseId: responseId,
176
196
  results: [item],
177
197
  };
178
198
  _this.eventManager.fire('track.product.clickThrough', { controller: _this, event: e, product: result, trackEvent: data });
179
- _this.tracker.events.autocomplete.clickThrough({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
199
+ ((_c = _this.config.beacon) === null || _c === void 0 ? void 0 : _c.enabled) && _this.tracker.events.autocomplete.clickThrough({ data: data, siteId: (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.siteId });
180
200
  },
181
201
  click: function (e, result) {
182
202
  var _a, _b, _c, _d, _e, _f;
203
+ if (!result) {
204
+ _this.log.warn('No result provided to track.product.click');
205
+ return;
206
+ }
183
207
  var responseId = result.responseId;
184
208
  if (result.type === 'banner' && (0, isClickWithinBannerLink_1.isClickWithinBannerLink)(e)) {
185
209
  if ((_c = (_b = (_a = _this.events) === null || _a === void 0 ? void 0 : _a[responseId]) === null || _b === void 0 ? void 0 : _b.product[result.id]) === null || _c === void 0 ? void 0 : _c.inlineBannerClickThrough) {
@@ -205,29 +229,38 @@ var AutocompleteController = /** @class */ (function (_super) {
205
229
  }
206
230
  },
207
231
  impression: function (result) {
208
- var _a, _b, _c, _d, _e;
232
+ var _a, _b, _c, _d, _e, _f, _g;
233
+ if (!result) {
234
+ _this.log.warn('No result provided to track.product.impression');
235
+ return;
236
+ }
209
237
  var responseId = result.responseId;
210
238
  if ((_c = (_b = (_a = _this.events) === null || _a === void 0 ? void 0 : _a[responseId]) === null || _b === void 0 ? void 0 : _b.product[result.id]) === null || _c === void 0 ? void 0 : _c.impression) {
211
239
  return;
212
240
  }
213
- var item = {
214
- type: result.type,
215
- uid: result.id,
216
- parentId: result.id,
217
- sku: (_d = result.mappings.core) === null || _d === void 0 ? void 0 : _d.sku,
218
- };
241
+ var type = (['product', 'banner'].includes(result.type) ? result.type : 'product');
242
+ var item = __assign({ type: type, uid: result.id ? '' + result.id : '' }, (type === 'product'
243
+ ? {
244
+ parentId: result.id ? '' + result.id : '',
245
+ sku: ((_d = result.mappings.core) === null || _d === void 0 ? void 0 : _d.sku) ? '' + ((_e = result.mappings.core) === null || _e === void 0 ? void 0 : _e.sku) : undefined,
246
+ }
247
+ : {}));
219
248
  var data = {
220
249
  responseId: responseId,
221
250
  results: [item],
222
251
  banners: [],
223
252
  };
224
253
  _this.eventManager.fire('track.product.impression', { controller: _this, product: result, trackEvent: data });
225
- _this.tracker.events.autocomplete.impression({ data: data, siteId: (_e = _this.config.globals) === null || _e === void 0 ? void 0 : _e.siteId });
254
+ ((_f = _this.config.beacon) === null || _f === void 0 ? void 0 : _f.enabled) && _this.tracker.events.autocomplete.impression({ data: data, siteId: (_g = _this.config.globals) === null || _g === void 0 ? void 0 : _g.siteId });
226
255
  _this.events[responseId].product[result.id] = _this.events[responseId].product[result.id] || {};
227
256
  _this.events[responseId].product[result.id].impression = true;
228
257
  },
229
258
  addToCart: function (result) {
230
- var _a, _b, _c;
259
+ var _a, _b, _c, _d;
260
+ if (!result) {
261
+ _this.log.warn('No result provided to track.product.addToCart');
262
+ return;
263
+ }
231
264
  var responseId = result.responseId;
232
265
  var product = {
233
266
  parentId: result.id,
@@ -241,18 +274,22 @@ var AutocompleteController = /** @class */ (function (_super) {
241
274
  results: [product],
242
275
  };
243
276
  _this.eventManager.fire('track.product.addToCart', { controller: _this, product: result, trackEvent: data });
244
- _this.tracker.events.autocomplete.addToCart({ data: data, siteId: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId });
277
+ ((_c = _this.config.beacon) === null || _c === void 0 ? void 0 : _c.enabled) && _this.tracker.events.autocomplete.addToCart({ data: data, siteId: (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.siteId });
245
278
  },
246
279
  },
247
280
  redirect: function (_a) {
248
- var _b;
281
+ var _b, _c;
249
282
  var redirectURL = _a.redirectURL, responseId = _a.responseId;
283
+ if (!redirectURL) {
284
+ _this.log.warn('No redirectURL provided to track.redirect');
285
+ return;
286
+ }
250
287
  var data = {
251
288
  responseId: responseId,
252
289
  redirect: redirectURL,
253
290
  };
254
291
  _this.eventManager.fire('track.redirect', { controller: _this, redirectURL: redirectURL, trackEvent: data });
255
- _this.tracker.events.autocomplete.redirect({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
292
+ ((_b = _this.config.beacon) === null || _b === void 0 ? void 0 : _b.enabled) && _this.tracker.events.autocomplete.redirect({ data: data, siteId: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId });
256
293
  },
257
294
  };
258
295
  _this.handlers = {
@@ -515,18 +552,18 @@ var AutocompleteController = /** @class */ (function (_super) {
515
552
  });
516
553
  }); };
517
554
  _this.search = function () { return __awaiter(_this, void 0, void 0, function () {
518
- var params, err_3, searchProfile, _a, meta, response, responseId_1, impressedResultIds, afterSearchProfile, err_4, afterStoreProfile, err_5, err_6;
555
+ var params, err_3, searchProfile, _a, meta, response, responseId_1, previousResponseId, impressedResultIds, afterSearchProfile, err_4, data, afterStoreProfile, err_5, err_6;
519
556
  var _this = this;
520
- var _b, _c, _d, _e;
521
- return __generator(this, function (_f) {
522
- switch (_f.label) {
557
+ var _b, _c, _d, _e, _f;
558
+ return __generator(this, function (_g) {
559
+ switch (_g.label) {
523
560
  case 0:
524
- _f.trys.push([0, 16, 17, 18]);
561
+ _g.trys.push([0, 16, 17, 18]);
525
562
  if (!!this.initialized) return [3 /*break*/, 2];
526
563
  return [4 /*yield*/, this.init()];
527
564
  case 1:
528
- _f.sent();
529
- _f.label = 2;
565
+ _g.sent();
566
+ _g.label = 2;
530
567
  case 2:
531
568
  // if urlManager has no query, there will be no need to get params and no query
532
569
  if (!this.urlManager.state.query) {
@@ -540,18 +577,18 @@ var AutocompleteController = /** @class */ (function (_super) {
540
577
  this.store.loading = true;
541
578
  // clear the redirect URL until proper abort functionality is implemented
542
579
  this.store.merchandising.redirect = '';
543
- _f.label = 3;
580
+ _g.label = 3;
544
581
  case 3:
545
- _f.trys.push([3, 5, , 6]);
582
+ _g.trys.push([3, 5, , 6]);
546
583
  return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
547
584
  controller: this,
548
585
  request: params,
549
586
  })];
550
587
  case 4:
551
- _f.sent();
588
+ _g.sent();
552
589
  return [3 /*break*/, 6];
553
590
  case 5:
554
- err_3 = _f.sent();
591
+ err_3 = _g.sent();
555
592
  if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
556
593
  this.log.warn("'beforeSearch' middleware cancelled");
557
594
  return [2 /*return*/];
@@ -565,7 +602,7 @@ var AutocompleteController = /** @class */ (function (_super) {
565
602
  searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
566
603
  return [4 /*yield*/, this.client.autocomplete(params)];
567
604
  case 7:
568
- _a = _f.sent(), meta = _a[0], response = _a[1];
605
+ _a = _g.sent(), meta = _a[0], response = _a[1];
569
606
  // @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
570
607
  if (!response.meta) {
571
608
  // @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
@@ -575,7 +612,8 @@ var AutocompleteController = /** @class */ (function (_super) {
575
612
  this.log.profile(searchProfile);
576
613
  responseId_1 = response.tracking.responseId;
577
614
  this.events[responseId_1] = this.events[responseId_1] || { product: {}, banner: {} };
578
- if (((_d = response.search) === null || _d === void 0 ? void 0 : _d.query) === this.lastSearchQuery) {
615
+ previousResponseId = (_d = this.store.results[0]) === null || _d === void 0 ? void 0 : _d.responseId;
616
+ if (previousResponseId && previousResponseId === responseId_1) {
579
617
  impressedResultIds = Object.keys(this.events[responseId_1].product || {}).filter(function (resultId) { var _a, _b; return (_b = (_a = _this.events[responseId_1].product) === null || _a === void 0 ? void 0 : _a[resultId]) === null || _b === void 0 ? void 0 : _b.impression; });
580
618
  this.events[responseId_1] = {
581
619
  product: impressedResultIds.reduce(function (acc, resultId) {
@@ -587,22 +625,21 @@ var AutocompleteController = /** @class */ (function (_super) {
587
625
  }
588
626
  else {
589
627
  this.events[responseId_1] = { product: {}, banner: {} };
590
- this.lastSearchQuery = (_e = response.search) === null || _e === void 0 ? void 0 : _e.query;
591
628
  }
592
629
  afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
593
- _f.label = 8;
630
+ _g.label = 8;
594
631
  case 8:
595
- _f.trys.push([8, 10, , 11]);
632
+ _g.trys.push([8, 10, , 11]);
596
633
  return [4 /*yield*/, this.eventManager.fire('afterSearch', {
597
634
  controller: this,
598
635
  request: params,
599
636
  response: response,
600
637
  })];
601
638
  case 9:
602
- _f.sent();
639
+ _g.sent();
603
640
  return [3 /*break*/, 11];
604
641
  case 10:
605
- err_4 = _f.sent();
642
+ err_4 = _g.sent();
606
643
  if ((err_4 === null || err_4 === void 0 ? void 0 : err_4.message) == 'cancelled') {
607
644
  this.log.warn("'afterSearch' middleware cancelled");
608
645
  afterSearchProfile.stop();
@@ -618,20 +655,22 @@ var AutocompleteController = /** @class */ (function (_super) {
618
655
  this.log.profile(afterSearchProfile);
619
656
  // update the store
620
657
  this.store.update(response);
658
+ data = { responseId: responseId_1 };
659
+ ((_e = this.config.beacon) === null || _e === void 0 ? void 0 : _e.enabled) && this.tracker.events.autocomplete.render({ data: data, siteId: (_f = this.config.globals) === null || _f === void 0 ? void 0 : _f.siteId });
621
660
  afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
622
- _f.label = 12;
661
+ _g.label = 12;
623
662
  case 12:
624
- _f.trys.push([12, 14, , 15]);
663
+ _g.trys.push([12, 14, , 15]);
625
664
  return [4 /*yield*/, this.eventManager.fire('afterStore', {
626
665
  controller: this,
627
666
  request: params,
628
667
  response: response,
629
668
  })];
630
669
  case 13:
631
- _f.sent();
670
+ _g.sent();
632
671
  return [3 /*break*/, 15];
633
672
  case 14:
634
- err_5 = _f.sent();
673
+ err_5 = _g.sent();
635
674
  if ((err_5 === null || err_5 === void 0 ? void 0 : err_5.message) == 'cancelled') {
636
675
  this.log.warn("'afterStore' middleware cancelled");
637
676
  afterStoreProfile.stop();
@@ -647,7 +686,7 @@ var AutocompleteController = /** @class */ (function (_super) {
647
686
  this.log.profile(afterStoreProfile);
648
687
  return [3 /*break*/, 18];
649
688
  case 16:
650
- err_6 = _f.sent();
689
+ err_6 = _g.sent();
651
690
  if (err_6) {
652
691
  if (err_6.err && err_6.fetchDetails) {
653
692
  switch (err_6.fetchDetails.status) {
@@ -699,7 +738,11 @@ var AutocompleteController = /** @class */ (function (_super) {
699
738
  var products;
700
739
  var _this = this;
701
740
  return __generator(this, function (_a) {
702
- products = typeof _products.slice == 'function' ? _products.slice() : [_products];
741
+ products = typeof (_products === null || _products === void 0 ? void 0 : _products.slice) == 'function' ? _products.slice() : [_products];
742
+ if (!_products || products.length === 0) {
743
+ this.log.warn('No products provided to autocomplete controller.addToCart');
744
+ return [2 /*return*/];
745
+ }
703
746
  products.forEach(function (product) {
704
747
  _this.track.product.addToCart(product);
705
748
  });
@@ -724,24 +767,6 @@ var AutocompleteController = /** @class */ (function (_super) {
724
767
  type: 'session',
725
768
  key: "ss-controller-".concat(_this.config.id),
726
769
  });
727
- _this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
728
- var controller, responseId, data;
729
- var _a;
730
- return __generator(this, function (_b) {
731
- switch (_b.label) {
732
- case 0: return [4 /*yield*/, next()];
733
- case 1:
734
- _b.sent();
735
- controller = search.controller;
736
- responseId = search.response.tracking.responseId;
737
- if (controller.store.loaded && !controller.store.error) {
738
- data = { responseId: responseId };
739
- this.tracker.events.autocomplete.render({ data: data, siteId: (_a = this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
740
- }
741
- return [2 /*return*/];
742
- }
743
- });
744
- }); });
745
770
  // add 'afterSearch' middleware
746
771
  _this.eventManager.on('afterSearch', function (ac, next) { return __awaiter(_this, void 0, void 0, function () {
747
772
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAwB,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiBnH,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA+B3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAkB5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAoI9B;CACF"}
1
+ {"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAwB,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAoBnH,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA+B3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAkB5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAoI9B;CACF"}
@@ -73,6 +73,9 @@ var getParams_1 = require("../utils/getParams");
73
73
  var types_1 = require("../types");
74
74
  var defaultConfig = {
75
75
  id: 'finder',
76
+ beacon: {
77
+ enabled: true,
78
+ },
76
79
  globals: {
77
80
  pagination: {
78
81
  pageSize: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAW3C,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,gBAAgB,EAAiB,MAAM,UAAU,CAAC;AAIpH,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAC/C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;KACrC,CAAC;CACF,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,OAAO,CAAC,MAAM,CAUP;gBAGN,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAkD3B,KAAK,EAAE,0BAA0B,CAqF/B;IAEF,IAAI,MAAM,IAAI,qBAAqB,CA4BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA6H9B;IAEF,SAAS,cAAqB,OAAO,EAAE,GAAG,OAAO,KAAG,QAAQ,IAAI,CAAC,CAQ/D;CACF"}
1
+ {"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAW3C,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGrG,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAC/C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;KACrC,CAAC;CACF,CAAC;AAaF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,OAAO,CAAC,MAAM,CAUP;gBAGN,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAwC3B,KAAK,EAAE,0BAA0B,CA+G/B;IAEF,IAAI,MAAM,IAAI,qBAAqB,CA4BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAgI9B;IAEF,SAAS,cAAqB,OAAO,EAAE,GAAG,OAAO,KAAG,QAAQ,IAAI,CAAC,CAY/D;CACF"}