@searchspring/snap-controller 0.64.0 → 0.65.1

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.
@@ -67,7 +67,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
67
67
  Object.defineProperty(exports, "__esModule", { value: true });
68
68
  exports.RecommendationController = void 0;
69
69
  var deepmerge_1 = __importDefault(require("deepmerge"));
70
- var snap_tracker_1 = require("@searchspring/snap-tracker");
71
70
  var snap_store_mobx_1 = require("@searchspring/snap-store-mobx");
72
71
  var AbstractController_1 = require("../Abstract/AbstractController");
73
72
  var types_1 = require("../types");
@@ -86,311 +85,73 @@ var RecommendationController = /** @class */ (function (_super) {
86
85
  var _this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
87
86
  _this.type = types_1.ControllerTypes.recommendation;
88
87
  _this.events = {
89
- click: undefined,
90
- impression: undefined,
91
- render: undefined,
92
88
  product: {},
93
89
  };
94
- _this.track = (function () {
95
- var getSeed = function () {
96
- var _a, _b, _c, _d;
97
- var skus = [];
98
- switch (_this.store.profile.placement) {
99
- case snap_tracker_1.ProfilePlacement.PRODUCTPAGE:
100
- if ((_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.product) {
101
- skus = [(_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.product];
102
- }
103
- else if ((_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.products) {
104
- skus = (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.products;
105
- }
106
- break;
107
- case snap_tracker_1.ProfilePlacement.BASKETPAGE:
108
- skus = _this.tracker.cookies.cart.get(); // this is an array
109
- break;
110
- default:
111
- return;
112
- }
113
- if (skus.length) {
114
- return skus.map(function (sku) { return ({
115
- sku: sku,
116
- }); });
117
- }
118
- };
119
- return {
120
- product: {
121
- click: function (e, result) {
122
- var _a, _b, _c;
123
- if (!_this.store.profile.tag || !result)
124
- return;
125
- //set the profile click every time
126
- _this.track.click(e);
127
- var payload = {
128
- type: snap_tracker_1.BeaconType.PROFILE_PRODUCT_CLICK,
129
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
130
- context: ((_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId) ? { website: { trackingCode: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId } } : undefined,
131
- event: {
132
- context: {
133
- action: 'navigate',
134
- placement: _this.store.profile.placement,
135
- tag: _this.store.profile.tag,
136
- type: 'product-recommendation',
137
- },
138
- product: {
139
- id: result.id,
140
- mappings: {
141
- core: result.mappings.core,
142
- },
143
- seed: getSeed(),
144
- },
145
- },
146
- pid: (_c = _this.events.click) === null || _c === void 0 ? void 0 : _c.id,
147
- };
148
- var event = _this.tracker.track.event(payload);
149
- _this.eventManager.fire('track.product.click', { controller: _this, event: e, result: result, trackEvent: event });
150
- return event;
151
- },
152
- impression: function (result) {
153
- var _a, _b, _c;
154
- if (!_this.store.profile.tag || !result || !_this.events.impression || (_this.events.product && ((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.impression)))
155
- return;
156
- var payload = {
157
- type: snap_tracker_1.BeaconType.PROFILE_PRODUCT_IMPRESSION,
158
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
159
- context: ((_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId) ? { website: { trackingCode: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId } } : undefined,
160
- event: {
161
- context: {
162
- placement: _this.store.profile.placement,
163
- tag: _this.store.profile.tag,
164
- type: 'product-recommendation',
165
- },
166
- product: {
167
- id: result.id,
168
- mappings: {
169
- core: result.mappings.core,
170
- },
171
- seed: getSeed(),
172
- },
173
- },
174
- pid: _this.events.impression.id,
175
- };
176
- _this.events.product[result.id] = _this.events.product[result.id] || {};
177
- var event = (_this.events.product[result.id].impression = _this.tracker.track.event(payload));
178
- _this.eventManager.fire('track.product.impression', { controller: _this, result: result, trackEvent: event });
179
- return event;
180
- },
181
- render: function (result) {
182
- var _a, _b, _c;
183
- if (!_this.store.profile.tag || !result || !_this.events.render || ((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render))
184
- return;
185
- var payload = {
186
- type: snap_tracker_1.BeaconType.PROFILE_PRODUCT_RENDER,
187
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
188
- context: ((_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId) ? { website: { trackingCode: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId } } : undefined,
189
- event: {
190
- context: {
191
- placement: _this.store.profile.placement,
192
- tag: _this.store.profile.tag,
193
- type: 'product-recommendation',
194
- },
195
- product: {
196
- id: result.id,
197
- mappings: {
198
- core: result.mappings.core,
199
- },
200
- seed: getSeed(),
201
- },
202
- },
203
- pid: _this.events.render.id,
204
- };
205
- _this.events.product[result.id] = _this.events.product[result.id] || {};
206
- var event = (_this.events.product[result.id].render = _this.tracker.track.event(payload));
207
- _this.eventManager.fire('track.product.render', { controller: _this, result: result, trackEvent: event });
208
- return event;
209
- },
210
- removedFromBundle: function (result) {
211
- var _a, _b, _c, _d;
212
- if (!_this.store.profile.tag ||
213
- !result ||
214
- !_this.events.render ||
215
- !((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render) ||
216
- _this.store.profile.type != 'bundle')
217
- return;
218
- var payload = {
219
- type: snap_tracker_1.BeaconType.PROFILE_PRODUCT_REMOVEDFROMBUNDLE,
220
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
221
- context: ((_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId) ? { website: { trackingCode: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId } } : undefined,
222
- event: {
223
- context: {
224
- placement: _this.store.profile.placement,
225
- tag: _this.store.profile.tag,
226
- type: 'product-recommendation',
227
- },
228
- product: {
229
- id: result.id,
230
- mappings: {
231
- core: result.mappings.core,
232
- },
233
- seed: getSeed(),
234
- },
235
- },
236
- pid: (_d = _this.events.click) === null || _d === void 0 ? void 0 : _d.id,
237
- };
238
- _this.events.product[result.id] = _this.events.product[result.id] || {};
239
- var event = (_this.events.product[result.id].render = _this.tracker.track.event(payload));
240
- _this.eventManager.fire('track.product.removedFromBundle', { controller: _this, result: result, trackEvent: event });
241
- return event;
242
- },
243
- addedToBundle: function (result) {
244
- var _a, _b, _c, _d;
245
- if (!_this.store.profile.tag ||
246
- !result ||
247
- !_this.events.render ||
248
- !((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render) ||
249
- _this.store.profile.type != 'bundle')
250
- return;
251
- var payload = {
252
- type: snap_tracker_1.BeaconType.PROFILE_PRODUCT_ADDEDTOBUNDLE,
253
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
254
- context: ((_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId) ? { website: { trackingCode: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId } } : undefined,
255
- event: {
256
- context: {
257
- placement: _this.store.profile.placement,
258
- tag: _this.store.profile.tag,
259
- type: 'product-recommendation',
260
- },
261
- product: {
262
- id: result.id,
263
- mappings: {
264
- core: result.mappings.core,
265
- },
266
- seed: getSeed(),
267
- },
268
- },
269
- pid: (_d = _this.events.click) === null || _d === void 0 ? void 0 : _d.id,
270
- };
271
- _this.events.product[result.id] = _this.events.product[result.id] || {};
272
- var event = (_this.events.product[result.id].render = _this.tracker.track.event(payload));
273
- _this.eventManager.fire('track.product.addedToBundle', { controller: _this, result: result, trackEvent: event });
274
- return event;
275
- },
276
- },
277
- addBundle: function (e, results) {
90
+ _this.track = {
91
+ product: {
92
+ clickThrough: function (e, result) {
278
93
  var _a, _b;
279
- if (!results.length || !_this.store.profile.tag || _this.store.profile.type != 'bundle')
94
+ if ((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.clickThrough)
280
95
  return;
281
- var event = _this.tracker.track.event({
282
- type: snap_tracker_1.BeaconType.PROFILE_ADDBUNDLE,
283
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
284
- context: ((_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId) ? { website: { trackingCode: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId } } : undefined,
285
- event: {
286
- context: {
287
- placement: _this.store.profile.placement,
288
- tag: _this.store.profile.tag,
289
- type: 'product-recommendation',
290
- },
291
- products: results.map(function (result) { return ({
292
- id: result.id,
293
- mappings: {
294
- core: result.mappings.core,
295
- },
296
- quantity: result.quantity,
297
- }); }),
298
- profile: {
299
- tag: _this.store.profile.tag,
300
- placement: _this.store.profile.placement,
301
- threshold: _this.store.profile.display.threshold,
302
- templateId: _this.store.profile.display.template.uuid,
303
- seed: getSeed(),
304
- },
305
- },
306
- });
307
- _this.eventManager.fire('track.addBundle', { controller: _this, event: e, trackEvent: event });
308
- return event;
96
+ var data = getRecommendationsSchemaData({ store: _this.store, results: [result] });
97
+ _this.tracker.events.recommendations.clickThrough({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
98
+ _this.events.product[result.id] = _this.events.product[result.id] || {};
99
+ _this.events.product[result.id].clickThrough = true;
100
+ _this.eventManager.fire('track.product.clickThrough', { controller: _this, event: e, products: [result], trackEvent: data });
309
101
  },
310
- click: function (e) {
102
+ click: function (e, result) {
103
+ var _a, _b, _c;
104
+ // TODO: closest might be going too far - write own function to only go n levels up - additionally check that href includes result.url
105
+ var href = ((_a = e.target) === null || _a === void 0 ? void 0 : _a.getAttribute('href')) || ((_c = (_b = e.target) === null || _b === void 0 ? void 0 : _b.closest('a')) === null || _c === void 0 ? void 0 : _c.getAttribute('href'));
106
+ if (href) {
107
+ _this.track.product.clickThrough(e, result);
108
+ }
109
+ else {
110
+ // TODO: in future, send as an interaction event
111
+ }
112
+ },
113
+ impression: function (result) {
311
114
  var _a, _b;
312
- if (!_this.store.profile.tag)
115
+ if ((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.impression)
313
116
  return;
314
- var event = _this.tracker.track.event({
315
- type: snap_tracker_1.BeaconType.PROFILE_CLICK,
316
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
317
- context: ((_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId) ? { website: { trackingCode: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId } } : undefined,
318
- event: {
319
- context: {
320
- action: 'navigate',
321
- placement: _this.store.profile.placement,
322
- tag: _this.store.profile.tag,
323
- type: 'product-recommendation',
324
- },
325
- profile: {
326
- tag: _this.store.profile.tag,
327
- placement: _this.store.profile.placement,
328
- threshold: _this.store.profile.display.threshold,
329
- templateId: _this.store.profile.display.template.uuid,
330
- seed: getSeed(),
331
- },
332
- },
333
- });
334
- _this.events.click = event;
335
- _this.eventManager.fire('track.click', { controller: _this, event: e, trackEvent: event });
336
- return event;
117
+ var data = getRecommendationsSchemaData({ store: _this.store, results: [result] });
118
+ _this.tracker.events.recommendations.impression({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
119
+ _this.events.product[result.id] = _this.events.product[result.id] || {};
120
+ _this.events.product[result.id].impression = true;
121
+ _this.eventManager.fire('track.product.impression', { controller: _this, products: [result], trackEvent: data });
122
+ return data;
337
123
  },
338
- impression: function () {
124
+ render: function (result) {
339
125
  var _a, _b;
340
- if (!_this.store.profile.tag || _this.events.impression)
126
+ if ((_a = _this.events.product[result.id]) === null || _a === void 0 ? void 0 : _a.render)
341
127
  return;
342
- var event = _this.tracker.track.event({
343
- type: snap_tracker_1.BeaconType.PROFILE_IMPRESSION,
344
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
345
- context: ((_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId) ? { website: { trackingCode: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId } } : undefined,
346
- event: {
347
- context: {
348
- placement: _this.store.profile.placement,
349
- tag: _this.store.profile.tag,
350
- type: 'product-recommendation',
351
- },
352
- profile: {
353
- tag: _this.store.profile.tag,
354
- placement: _this.store.profile.placement,
355
- threshold: _this.store.profile.display.threshold,
356
- templateId: _this.store.profile.display.template.uuid,
357
- seed: getSeed(),
358
- },
359
- },
360
- });
361
- _this.events.impression = event;
362
- _this.eventManager.fire('track.impression', { controller: _this, trackEvent: event });
363
- return event;
128
+ var data = getRecommendationsSchemaData({ store: _this.store, results: [result] });
129
+ _this.tracker.events.recommendations.render({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
130
+ _this.events.product[result.id] = _this.events.product[result.id] || {};
131
+ _this.events.product[result.id].render = true;
132
+ _this.eventManager.fire('track.product.render', { controller: _this, products: [result], trackEvent: data });
133
+ return data;
364
134
  },
365
- render: function () {
366
- var _a, _b;
367
- if (!_this.store.profile.tag || _this.events.render)
135
+ addToCart: function (result) {
136
+ var _a;
137
+ var data = getRecommendationsSchemaData({ store: _this.store, results: [result] });
138
+ _this.tracker.events.recommendations.addToCart({ data: data, siteId: (_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
139
+ _this.eventManager.fire('track.product.addToCart', { controller: _this, products: [result], trackEvent: data });
140
+ return data;
141
+ },
142
+ },
143
+ bundle: {
144
+ addToCart: function (results) {
145
+ var _a;
146
+ if (_this.store.profile.type != 'bundle')
368
147
  return;
369
- var event = _this.tracker.track.event({
370
- type: snap_tracker_1.BeaconType.PROFILE_RENDER,
371
- category: snap_tracker_1.BeaconCategory.RECOMMENDATIONS,
372
- context: ((_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId) ? { website: { trackingCode: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId } } : undefined,
373
- event: {
374
- context: {
375
- placement: _this.store.profile.placement,
376
- tag: _this.store.profile.tag,
377
- type: 'product-recommendation',
378
- },
379
- profile: {
380
- tag: _this.store.profile.tag,
381
- placement: _this.store.profile.placement,
382
- threshold: _this.store.profile.display.threshold,
383
- templateId: _this.store.profile.display.template.uuid,
384
- seed: getSeed(),
385
- },
386
- },
387
- });
388
- _this.events.render = event;
389
- _this.eventManager.fire('track.render', { controller: _this, trackEvent: event });
390
- return event;
148
+ var data = getRecommendationsSchemaData({ store: _this.store, results: results });
149
+ _this.tracker.events.recommendations.addToCart({ data: data, siteId: (_a = _this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
150
+ _this.eventManager.fire('track.bundle.addToCart', { controller: _this, products: results, trackEvent: data });
151
+ return data;
391
152
  },
392
- };
393
- })();
153
+ },
154
+ };
394
155
  _this.search = function () { return __awaiter(_this, void 0, void 0, function () {
395
156
  var params, err_1, searchProfile, response, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
396
157
  return __generator(this, function (_a) {
@@ -404,6 +165,8 @@ var RecommendationController = /** @class */ (function (_super) {
404
165
  _a.label = 2;
405
166
  case 2:
406
167
  params = this.params;
168
+ // reset events for new search
169
+ this.events = { product: {} };
407
170
  this.store.loading = true;
408
171
  _a.label = 3;
409
172
  case 3:
@@ -555,31 +318,16 @@ var RecommendationController = /** @class */ (function (_super) {
555
318
  _this.config = (0, deepmerge_1.default)(defaultConfig, _this.config);
556
319
  _this.store.setConfig(_this.config);
557
320
  // add 'afterStore' middleware
558
- _this.eventManager.on('afterStore', function (recommend, next) { return __awaiter(_this, void 0, void 0, function () {
559
- var _this = this;
560
- var _a, _b;
561
- return __generator(this, function (_c) {
562
- switch (_c.label) {
563
- case 0: return [4 /*yield*/, next()];
564
- case 1:
565
- _c.sent();
566
- // attach tracking events to cart store
567
- (_a = this.store.cart) === null || _a === void 0 ? void 0 : _a.on('addItems', function (_a) {
568
- var items = _a.items;
569
- items.forEach(function (item) {
570
- _this.track.product.addedToBundle(item);
571
- });
572
- });
573
- (_b = this.store.cart) === null || _b === void 0 ? void 0 : _b.on('removeItems', function (_a) {
574
- var items = _a.items;
575
- items.forEach(function (item) {
576
- _this.track.product.removedFromBundle(item);
577
- });
578
- });
579
- return [2 /*return*/];
580
- }
581
- });
582
- }); });
321
+ // this.eventManager.on('afterStore', async (recommend: AfterStoreObj, next: Next): Promise<void | boolean> => {
322
+ // await next();
323
+ // // attach tracking events to cart store
324
+ // this.store.cart?.on('addItems', ({ items }: { items: Product[] }) => {
325
+ // // add to bundle
326
+ // });
327
+ // this.store.cart?.on('removeItems', ({ items }: { items: Product[] }) => {
328
+ // // remove from bundle
329
+ // });
330
+ // });
583
331
  // attach config plugins and event middleware
584
332
  _this.use(_this.config);
585
333
  return _this;
@@ -588,12 +336,12 @@ var RecommendationController = /** @class */ (function (_super) {
588
336
  get: function () {
589
337
  var params = __assign({ tag: this.config.tag, batched: this.config.batched, branch: this.config.branch || 'production', batchId: this.config.batchId }, this.config.globals);
590
338
  var shopperId = this.tracker.getContext().shopperId;
591
- var cart = this.tracker.cookies.cart.get();
592
- var lastViewed = this.tracker.cookies.viewed.get();
593
339
  if (shopperId) {
594
340
  params.shopper = shopperId;
595
341
  }
596
342
  if (!params.siteId || params.siteId == this.tracker.getGlobals().siteId) {
343
+ var cart = this.tracker.cookies.cart.get();
344
+ var lastViewed = this.tracker.cookies.viewed.get();
597
345
  if (cart === null || cart === void 0 ? void 0 : cart.length) {
598
346
  params.cart = cart;
599
347
  }
@@ -609,3 +357,18 @@ var RecommendationController = /** @class */ (function (_super) {
609
357
  return RecommendationController;
610
358
  }(AbstractController_1.AbstractController));
611
359
  exports.RecommendationController = RecommendationController;
360
+ function getRecommendationsSchemaData(_a) {
361
+ var store = _a.store, results = _a.results;
362
+ return {
363
+ tag: store.profile.tag,
364
+ results: (results === null || results === void 0 ? void 0 : results.map(function (result) {
365
+ var core = result.mappings.core;
366
+ return {
367
+ uid: core.uid || '',
368
+ // childUid: core.uid,
369
+ sku: core.sku,
370
+ // childSku: core.sku,
371
+ };
372
+ })) || [],
373
+ };
374
+ }
@@ -1,14 +1,18 @@
1
1
  import { AbstractController } from '../Abstract/AbstractController';
2
2
  import { StorageStore } from '@searchspring/snap-store-mobx';
3
3
  import { ControllerTypes } from '../types';
4
- import type { BeaconEvent } from '@searchspring/snap-tracker';
5
- import type { SearchStore } from '@searchspring/snap-store-mobx';
4
+ import type { Product, Banner, SearchStore } from '@searchspring/snap-store-mobx';
6
5
  import type { SearchControllerConfig, ControllerServices, ContextVariables } from '../types';
7
6
  import type { SearchRequestModel } from '@searchspring/snapi-types';
8
7
  type SearchTrackMethods = {
9
8
  product: {
10
- click: (e: MouseEvent, result: any) => BeaconEvent | undefined;
9
+ clickThrough: (e: MouseEvent, result: Product) => void;
10
+ click: (e: MouseEvent, result: Product | Banner) => void;
11
+ render: (result: Product) => void;
12
+ impression: (result: Product) => void;
13
+ addToCart: (results: Product) => void;
11
14
  };
15
+ redirect: (redirectURL: string) => void;
12
16
  };
13
17
  export declare class SearchController extends AbstractController {
14
18
  type: ControllerTypes;
@@ -16,10 +20,13 @@ export declare class SearchController extends AbstractController {
16
20
  config: SearchControllerConfig;
17
21
  storage: StorageStore;
18
22
  private previousResults;
23
+ private pageType;
24
+ private events;
19
25
  constructor(config: SearchControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
20
26
  track: SearchTrackMethods;
21
27
  get params(): SearchRequestModel;
22
28
  search: () => Promise<void>;
29
+ addToCart: (product: Product) => Promise<void>;
23
30
  }
24
31
  export declare function getStorableRequestParams(request: SearchRequestModel): SearchRequestModel;
25
32
  export declare function generateHrefSelector(element: HTMLElement, href: string, levels?: number): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAa,MAAM,+BAA+B,CAAC;AAExE,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,EACX,sBAAsB,EAGtB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAKlB,MAAM,2BAA2B,CAAC;AAmBnC,KAAK,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;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,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;IA2J3B,KAAK,EAAE,kBAAkB,CA+CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAoN9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,GAAG,SAAS,CAgCvG"}
1
+ {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAa,MAAM,+BAA+B,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAqB,MAAM,+BAA+B,CAAC;AACrG,OAAO,KAAK,EACX,sBAAsB,EAGtB,kBAAkB,EAClB,gBAAgB,EAIhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAOlB,MAAM,2BAA2B,CAAC;AA8BnC,KAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACtC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,MAAM,CASM;gBAGnB,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;IAmM3B,KAAK,EAAE,kBAAkB,CA0FvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CA8C/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuN9B;IAEF,SAAS,YAAmB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAGjD;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,GAAG,SAAS,CAgCvG"}