@searchspring/snap-controller 0.30.1 → 0.30.2

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 +1 @@
1
- {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAAgD,MAAM,2BAA2B,CAAC;AAoBlH,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;gBAGrB,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;IAkF3B,KAAK,EAAE,kBAAkB,CA0BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
1
+ {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAoB7I,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;gBAGrB,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;IA0F3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
@@ -105,18 +105,26 @@ var SearchController = /** @class */ (function (_super) {
105
105
  _this.track = {
106
106
  product: {
107
107
  click: function (e, result) {
108
- var _a, _b;
108
+ var _a, _b, _c, _d;
109
109
  // store scroll position
110
110
  if ((_a = _this.config.settings) === null || _a === void 0 ? void 0 : _a.infinite) {
111
111
  var stringyParams = _this.storage.get('lastStringyParams');
112
+ var paramsObj = JSON.parse(stringyParams);
113
+ if ((_b = paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search) === null || _b === void 0 ? void 0 : _b.redirectResponse) {
114
+ (_c = paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search) === null || _c === void 0 ? true : delete _c.redirectResponse;
115
+ }
116
+ if (paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.personalization) {
117
+ paramsObj === null || paramsObj === void 0 ? true : delete paramsObj.personalization;
118
+ }
119
+ stringyParams = JSON.stringify(paramsObj);
112
120
  var scrollMap = {};
113
121
  scrollMap[stringyParams] = window.scrollY;
114
122
  _this.storage.set('scrollMap', scrollMap);
115
123
  }
116
124
  // track
117
- var _c = result.attributes, intellisuggestData = _c.intellisuggestData, intellisuggestSignature = _c.intellisuggestSignature;
125
+ var _e = result.attributes, intellisuggestData = _e.intellisuggestData, intellisuggestSignature = _e.intellisuggestSignature;
118
126
  var target = e.target;
119
- var href = (target === null || target === void 0 ? void 0 : target.href) || ((_b = result.mappings.core) === null || _b === void 0 ? void 0 : _b.url) || undefined;
127
+ var href = (target === null || target === void 0 ? void 0 : target.href) || ((_d = result.mappings.core) === null || _d === void 0 ? void 0 : _d.url) || undefined;
120
128
  var event = _this.tracker.track.product.click({
121
129
  intellisuggestData: intellisuggestData,
122
130
  intellisuggestSignature: intellisuggestSignature,
@@ -129,32 +137,32 @@ var SearchController = /** @class */ (function (_super) {
129
137
  };
130
138
  _this.search = function () { return __awaiter(_this, void 0, void 0, function () {
131
139
  var params, err_1, stringyParams, prevStringyParams, preventBackfill, dontBackfill, searchProfile, _a, meta, response, previousResults_1, backfills, page, backfillParams, backfillResponses, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
132
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
133
- return __generator(this, function (_m) {
134
- switch (_m.label) {
140
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k;
141
+ return __generator(this, function (_l) {
142
+ switch (_l.label) {
135
143
  case 0:
136
144
  if (!!this.initialized) return [3 /*break*/, 2];
137
145
  return [4 /*yield*/, this.init()];
138
146
  case 1:
139
- _m.sent();
140
- _m.label = 2;
147
+ _l.sent();
148
+ _l.label = 2;
141
149
  case 2:
142
150
  params = this.params;
143
- _m.label = 3;
151
+ _l.label = 3;
144
152
  case 3:
145
- _m.trys.push([3, 20, , 21]);
146
- _m.label = 4;
153
+ _l.trys.push([3, 20, , 21]);
154
+ _l.label = 4;
147
155
  case 4:
148
- _m.trys.push([4, 6, , 7]);
156
+ _l.trys.push([4, 6, , 7]);
149
157
  return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
150
158
  controller: this,
151
159
  request: params,
152
160
  })];
153
161
  case 5:
154
- _m.sent();
162
+ _l.sent();
155
163
  return [3 /*break*/, 7];
156
164
  case 6:
157
- err_1 = _m.sent();
165
+ err_1 = _l.sent();
158
166
  if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
159
167
  this.log.warn("'beforeSearch' middleware cancelled");
160
168
  return [2 /*return*/];
@@ -183,7 +191,7 @@ var SearchController = /** @class */ (function (_super) {
183
191
  searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
184
192
  return [4 /*yield*/, this.client.search(params)];
185
193
  case 8:
186
- _a = _m.sent(), meta = _a[0], response = _a[1];
194
+ _a = _l.sent(), meta = _a[0], response = _a[1];
187
195
  // @ts-ignore
188
196
  if (!response.meta) {
189
197
  /**
@@ -194,41 +202,41 @@ var SearchController = /** @class */ (function (_super) {
194
202
  response.meta = meta;
195
203
  }
196
204
  if (!(((_g = this.config.settings) === null || _g === void 0 ? void 0 : _g.infinite) && ((_h = params.pagination) === null || _h === void 0 ? void 0 : _h.page) > 1)) return [3 /*break*/, 11];
197
- previousResults_1 = ((_j = this.store.data) === null || _j === void 0 ? void 0 : _j.results) || [];
198
- if (!(((_k = this.config.settings) === null || _k === void 0 ? void 0 : _k.infinite.backfill) && !previousResults_1.length)) return [3 /*break*/, 10];
205
+ previousResults_1 = JSON.parse(JSON.stringify(this.store.results)) || [];
206
+ if (!(((_j = this.config.settings) === null || _j === void 0 ? void 0 : _j.infinite.backfill) && !previousResults_1.length)) return [3 /*break*/, 10];
199
207
  backfills = [];
200
- for (page = 1; page < ((_l = params.pagination) === null || _l === void 0 ? void 0 : _l.page); page++) {
208
+ for (page = 1; page < ((_k = params.pagination) === null || _k === void 0 ? void 0 : _k.page); page++) {
201
209
  backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { page: page } });
202
210
  backfills.push(this.client.search(backfillParams));
203
211
  }
204
212
  return [4 /*yield*/, Promise.all(backfills)];
205
213
  case 9:
206
- backfillResponses = _m.sent();
214
+ backfillResponses = _l.sent();
207
215
  backfillResponses.map(function (_a) {
208
216
  var meta = _a[0], data = _a[1];
209
217
  previousResults_1 = previousResults_1.concat(data.results);
210
218
  });
211
- _m.label = 10;
219
+ _l.label = 10;
212
220
  case 10:
213
221
  response.results = __spreadArray(__spreadArray([], previousResults_1, true), (response.results || []), true);
214
- _m.label = 11;
222
+ _l.label = 11;
215
223
  case 11:
216
224
  searchProfile.stop();
217
225
  this.log.profile(searchProfile);
218
226
  afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
219
- _m.label = 12;
227
+ _l.label = 12;
220
228
  case 12:
221
- _m.trys.push([12, 14, , 15]);
229
+ _l.trys.push([12, 14, , 15]);
222
230
  return [4 /*yield*/, this.eventManager.fire('afterSearch', {
223
231
  controller: this,
224
232
  request: params,
225
233
  response: response,
226
234
  })];
227
235
  case 13:
228
- _m.sent();
236
+ _l.sent();
229
237
  return [3 /*break*/, 15];
230
238
  case 14:
231
- err_2 = _m.sent();
239
+ err_2 = _l.sent();
232
240
  if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
233
241
  this.log.warn("'afterSearch' middleware cancelled");
234
242
  afterSearchProfile.stop();
@@ -246,19 +254,19 @@ var SearchController = /** @class */ (function (_super) {
246
254
  // @ts-ignore
247
255
  this.store.update(response);
248
256
  afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
249
- _m.label = 16;
257
+ _l.label = 16;
250
258
  case 16:
251
- _m.trys.push([16, 18, , 19]);
259
+ _l.trys.push([16, 18, , 19]);
252
260
  return [4 /*yield*/, this.eventManager.fire('afterStore', {
253
261
  controller: this,
254
262
  request: params,
255
263
  response: response,
256
264
  })];
257
265
  case 17:
258
- _m.sent();
266
+ _l.sent();
259
267
  return [3 /*break*/, 19];
260
268
  case 18:
261
- err_3 = _m.sent();
269
+ err_3 = _l.sent();
262
270
  if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
263
271
  this.log.warn("'afterStore' middleware cancelled");
264
272
  afterStoreProfile.stop();
@@ -274,7 +282,7 @@ var SearchController = /** @class */ (function (_super) {
274
282
  this.log.profile(afterStoreProfile);
275
283
  return [3 /*break*/, 21];
276
284
  case 20:
277
- err_4 = _m.sent();
285
+ err_4 = _l.sent();
278
286
  if (err_4) {
279
287
  switch (err_4) {
280
288
  case 429:
@@ -355,18 +363,26 @@ var SearchController = /** @class */ (function (_super) {
355
363
  });
356
364
  }); });
357
365
  _this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
358
- var stringyParams, scrollMap_1, scrollToPosition_1, checkCount_1, heightCheck_1;
366
+ var requestParams, stringyParams, scrollMap_1, scrollToPosition_1, checkCount_1, heightCheck_1;
359
367
  var _this = this;
360
- var _a;
361
- return __generator(this, function (_b) {
362
- switch (_b.label) {
368
+ var _a, _b;
369
+ return __generator(this, function (_c) {
370
+ switch (_c.label) {
363
371
  case 0: return [4 /*yield*/, next()];
364
372
  case 1:
365
- _b.sent();
373
+ _c.sent();
366
374
  search.controller.store.loading = false;
367
- stringyParams = JSON.stringify(search.request);
368
- this.storage.set('lastStringyParams', stringyParams);
369
- if (((_a = this.config.settings) === null || _a === void 0 ? void 0 : _a.infinite) && window.scrollY === 0) {
375
+ // save last params
376
+ this.storage.set('lastStringyParams', JSON.stringify(search.request));
377
+ requestParams = __assign({}, search.request);
378
+ if (requestParams.personalization) {
379
+ delete requestParams.personalization;
380
+ }
381
+ if ((_a = requestParams === null || requestParams === void 0 ? void 0 : requestParams.search) === null || _a === void 0 ? void 0 : _a.redirectResponse) {
382
+ delete requestParams.search.redirectResponse;
383
+ }
384
+ stringyParams = JSON.stringify(requestParams);
385
+ if (((_b = this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) && window.scrollY === 0) {
370
386
  scrollMap_1 = this.storage.get('scrollMap') || {};
371
387
  scrollToPosition_1 = scrollMap_1[stringyParams];
372
388
  if (scrollToPosition_1) {
@@ -1 +1 @@
1
- {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAAgD,MAAM,2BAA2B,CAAC;AAoBlH,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;gBAGrB,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;IAkF3B,KAAK,EAAE,kBAAkB,CA0BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
1
+ {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAoB7I,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;gBAGrB,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;IA0F3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
@@ -28,7 +28,15 @@ export class SearchController extends AbstractController {
28
28
  click: (e, result) => {
29
29
  // store scroll position
30
30
  if (this.config.settings?.infinite) {
31
- const stringyParams = this.storage.get('lastStringyParams');
31
+ let stringyParams = this.storage.get('lastStringyParams');
32
+ const paramsObj = JSON.parse(stringyParams);
33
+ if (paramsObj?.search?.redirectResponse) {
34
+ delete paramsObj?.search?.redirectResponse;
35
+ }
36
+ if (paramsObj?.personalization) {
37
+ delete paramsObj?.personalization;
38
+ }
39
+ stringyParams = JSON.stringify(paramsObj);
32
40
  const scrollMap = {};
33
41
  scrollMap[stringyParams] = window.scrollY;
34
42
  this.storage.set('scrollMap', scrollMap);
@@ -100,7 +108,7 @@ export class SearchController extends AbstractController {
100
108
  // if params.page > 1 and infinite setting exists we should append results
101
109
  if (this.config.settings?.infinite && params.pagination?.page > 1) {
102
110
  // if no results fetch results...
103
- let previousResults = this.store.data?.results || [];
111
+ let previousResults = JSON.parse(JSON.stringify(this.store.results)) || [];
104
112
  if (this.config.settings?.infinite.backfill && !previousResults.length) {
105
113
  // figure out how many pages of results to backfill and wait on all responses
106
114
  const backfills = [];
@@ -226,8 +234,15 @@ export class SearchController extends AbstractController {
226
234
  await next();
227
235
  search.controller.store.loading = false;
228
236
  // save last params
229
- const stringyParams = JSON.stringify(search.request);
230
- this.storage.set('lastStringyParams', stringyParams);
237
+ this.storage.set('lastStringyParams', JSON.stringify(search.request));
238
+ const requestParams = { ...search.request };
239
+ if (requestParams.personalization) {
240
+ delete requestParams.personalization;
241
+ }
242
+ if (requestParams?.search?.redirectResponse) {
243
+ delete requestParams.search.redirectResponse;
244
+ }
245
+ const stringyParams = JSON.stringify(requestParams);
231
246
  if (this.config.settings?.infinite && window.scrollY === 0) {
232
247
  // browser didn't jump
233
248
  const scrollMap = this.storage.get('scrollMap') || {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-controller",
3
- "version": "0.30.1",
3
+ "version": "0.30.2",
4
4
  "description": "Snap Controllers",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -20,21 +20,21 @@
20
20
  "test:watch": "jest --watch"
21
21
  },
22
22
  "dependencies": {
23
- "@searchspring/snap-toolbox": "^0.30.1",
23
+ "@searchspring/snap-toolbox": "^0.30.2",
24
24
  "deepmerge": "4.2.2"
25
25
  },
26
26
  "devDependencies": {
27
- "@searchspring/snap-client": "^0.30.1",
28
- "@searchspring/snap-event-manager": "^0.30.1",
29
- "@searchspring/snap-logger": "^0.30.1",
30
- "@searchspring/snap-profiler": "^0.30.1",
31
- "@searchspring/snap-store-mobx": "^0.30.1",
32
- "@searchspring/snap-tracker": "^0.30.1",
33
- "@searchspring/snap-url-manager": "^0.30.1"
27
+ "@searchspring/snap-client": "^0.30.2",
28
+ "@searchspring/snap-event-manager": "^0.30.2",
29
+ "@searchspring/snap-logger": "^0.30.2",
30
+ "@searchspring/snap-profiler": "^0.30.2",
31
+ "@searchspring/snap-store-mobx": "^0.30.2",
32
+ "@searchspring/snap-tracker": "^0.30.2",
33
+ "@searchspring/snap-url-manager": "^0.30.2"
34
34
  },
35
35
  "sideEffects": false,
36
36
  "files": [
37
37
  "dist/**/*"
38
38
  ],
39
- "gitHead": "eb57d83253765d71e049f861c65e113f11cc28e3"
39
+ "gitHead": "0d7dc2c374512e097827aa0f6f724d15a771fd5f"
40
40
  }