@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,
|
|
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
|
|
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) || ((
|
|
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
|
|
133
|
-
return __generator(this, function (
|
|
134
|
-
switch (
|
|
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
|
-
|
|
140
|
-
|
|
147
|
+
_l.sent();
|
|
148
|
+
_l.label = 2;
|
|
141
149
|
case 2:
|
|
142
150
|
params = this.params;
|
|
143
|
-
|
|
151
|
+
_l.label = 3;
|
|
144
152
|
case 3:
|
|
145
|
-
|
|
146
|
-
|
|
153
|
+
_l.trys.push([3, 20, , 21]);
|
|
154
|
+
_l.label = 4;
|
|
147
155
|
case 4:
|
|
148
|
-
|
|
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
|
-
|
|
162
|
+
_l.sent();
|
|
155
163
|
return [3 /*break*/, 7];
|
|
156
164
|
case 6:
|
|
157
|
-
err_1 =
|
|
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 =
|
|
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 = ((
|
|
198
|
-
if (!(((
|
|
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 < ((
|
|
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 =
|
|
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
|
-
|
|
219
|
+
_l.label = 10;
|
|
212
220
|
case 10:
|
|
213
221
|
response.results = __spreadArray(__spreadArray([], previousResults_1, true), (response.results || []), true);
|
|
214
|
-
|
|
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
|
-
|
|
227
|
+
_l.label = 12;
|
|
220
228
|
case 12:
|
|
221
|
-
|
|
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
|
-
|
|
236
|
+
_l.sent();
|
|
229
237
|
return [3 /*break*/, 15];
|
|
230
238
|
case 14:
|
|
231
|
-
err_2 =
|
|
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
|
-
|
|
257
|
+
_l.label = 16;
|
|
250
258
|
case 16:
|
|
251
|
-
|
|
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
|
-
|
|
266
|
+
_l.sent();
|
|
259
267
|
return [3 /*break*/, 19];
|
|
260
268
|
case 18:
|
|
261
|
-
err_3 =
|
|
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 =
|
|
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 (
|
|
362
|
-
switch (
|
|
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
|
-
|
|
373
|
+
_c.sent();
|
|
366
374
|
search.controller.store.loading = false;
|
|
367
|
-
|
|
368
|
-
this.storage.set('lastStringyParams',
|
|
369
|
-
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
230
|
-
|
|
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.
|
|
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.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.30.2",
|
|
24
24
|
"deepmerge": "4.2.2"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@searchspring/snap-client": "^0.30.
|
|
28
|
-
"@searchspring/snap-event-manager": "^0.30.
|
|
29
|
-
"@searchspring/snap-logger": "^0.30.
|
|
30
|
-
"@searchspring/snap-profiler": "^0.30.
|
|
31
|
-
"@searchspring/snap-store-mobx": "^0.30.
|
|
32
|
-
"@searchspring/snap-tracker": "^0.30.
|
|
33
|
-
"@searchspring/snap-url-manager": "^0.30.
|
|
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": "
|
|
39
|
+
"gitHead": "0d7dc2c374512e097827aa0f6f724d15a771fd5f"
|
|
40
40
|
}
|