@searchspring/snap-controller 0.20.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.
- package/LICENSE +21 -0
- package/README.md +167 -0
- package/dist/cjs/Abstract/AbstractController.d.ts +40 -0
- package/dist/cjs/Abstract/AbstractController.d.ts.map +1 -0
- package/dist/cjs/Abstract/AbstractController.js +281 -0
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts +40 -0
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -0
- package/dist/cjs/Autocomplete/AutocompleteController.js +687 -0
- package/dist/cjs/Finder/FinderController.d.ts +14 -0
- package/dist/cjs/Finder/FinderController.d.ts.map +1 -0
- package/dist/cjs/Finder/FinderController.js +286 -0
- package/dist/cjs/Recommendation/RecommendationController.d.ts +31 -0
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -0
- package/dist/cjs/Recommendation/RecommendationController.js +452 -0
- package/dist/cjs/Search/SearchController.d.ts +23 -0
- package/dist/cjs/Search/SearchController.d.ts.map +1 -0
- package/dist/cjs/Search/SearchController.js +429 -0
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +24 -0
- package/dist/cjs/types.d.ts +52 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utils/getParams.d.ts +2 -0
- package/dist/cjs/utils/getParams.d.ts.map +1 -0
- package/dist/cjs/utils/getParams.js +72 -0
- package/dist/esm/Abstract/AbstractController.d.ts +40 -0
- package/dist/esm/Abstract/AbstractController.d.ts.map +1 -0
- package/dist/esm/Abstract/AbstractController.js +181 -0
- package/dist/esm/Autocomplete/AutocompleteController.d.ts +40 -0
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -0
- package/dist/esm/Autocomplete/AutocompleteController.js +472 -0
- package/dist/esm/Finder/FinderController.d.ts +14 -0
- package/dist/esm/Finder/FinderController.d.ts.map +1 -0
- package/dist/esm/Finder/FinderController.js +164 -0
- package/dist/esm/Recommendation/RecommendationController.d.ts +31 -0
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -0
- package/dist/esm/Recommendation/RecommendationController.js +330 -0
- package/dist/esm/Search/SearchController.d.ts +23 -0
- package/dist/esm/Search/SearchController.d.ts.map +1 -0
- package/dist/esm/Search/SearchController.js +282 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/types.d.ts +52 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/getParams.d.ts +2 -0
- package/dist/esm/utils/getParams.d.ts.map +1 -0
- package/dist/esm/utils/getParams.js +68 -0
- package/package.json +40 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AbstractController } from '../Abstract/AbstractController';
|
|
2
|
+
import type { FinderStore } from '@searchspring/snap-store-mobx';
|
|
3
|
+
import type { FinderControllerConfig, ControllerServices } from '../types';
|
|
4
|
+
export declare class FinderController extends AbstractController {
|
|
5
|
+
type: string;
|
|
6
|
+
store: FinderStore;
|
|
7
|
+
config: FinderControllerConfig;
|
|
8
|
+
constructor(config: FinderControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices);
|
|
9
|
+
get params(): Record<string, any>;
|
|
10
|
+
find: () => void;
|
|
11
|
+
reset: () => void;
|
|
12
|
+
search: () => Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=FinderController.d.ts.map
|
|
@@ -0,0 +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,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAa,MAAM,UAAU,CAAC;AAQvH,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,SAAY;IAChB,KAAK,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,sBAAsB,CAAC;gBAEnB,MAAM,EAAE,sBAAsB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB;IAoCtI,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAUhC;IAED,IAAI,QAAO,IAAI,CAEb;IAEF,KAAK,QAAO,IAAI,CAMd;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CA6G9B;CACF"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
31
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
32
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
33
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
34
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
38
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
39
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
40
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
|
+
function step(op) {
|
|
42
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
+
while (_) try {
|
|
44
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
|
+
switch (op[0]) {
|
|
47
|
+
case 0: case 1: t = op; break;
|
|
48
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
49
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
50
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
51
|
+
default:
|
|
52
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
53
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
54
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
55
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
56
|
+
if (t[2]) _.ops.pop();
|
|
57
|
+
_.trys.pop(); continue;
|
|
58
|
+
}
|
|
59
|
+
op = body.call(thisArg, _);
|
|
60
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
65
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
66
|
+
};
|
|
67
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68
|
+
exports.FinderController = void 0;
|
|
69
|
+
var deepmerge_1 = __importDefault(require("deepmerge"));
|
|
70
|
+
var snap_store_mobx_1 = require("@searchspring/snap-store-mobx");
|
|
71
|
+
var AbstractController_1 = require("../Abstract/AbstractController");
|
|
72
|
+
var getParams_1 = require("../utils/getParams");
|
|
73
|
+
var defaultConfig = {
|
|
74
|
+
id: 'finder',
|
|
75
|
+
globals: {},
|
|
76
|
+
fields: [],
|
|
77
|
+
};
|
|
78
|
+
var FinderController = /** @class */ (function (_super) {
|
|
79
|
+
__extends(FinderController, _super);
|
|
80
|
+
function FinderController(config, _a) {
|
|
81
|
+
var client = _a.client, store = _a.store, urlManager = _a.urlManager, eventManager = _a.eventManager, profiler = _a.profiler, logger = _a.logger, tracker = _a.tracker;
|
|
82
|
+
var _this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }) || this;
|
|
83
|
+
_this.type = 'finder';
|
|
84
|
+
_this.find = function () {
|
|
85
|
+
window.location.href = _this.urlManager.href;
|
|
86
|
+
};
|
|
87
|
+
_this.reset = function () {
|
|
88
|
+
// only need to reset when selections have been made
|
|
89
|
+
if (_this.urlManager.state.filter) {
|
|
90
|
+
_this.store.storage.clear();
|
|
91
|
+
_this.urlManager.remove('filter').go();
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
_this.search = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
95
|
+
var params, err_1, searchProfile, _a, meta, response, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
|
|
96
|
+
return __generator(this, function (_b) {
|
|
97
|
+
switch (_b.label) {
|
|
98
|
+
case 0:
|
|
99
|
+
if (!!this.initialized) return [3 /*break*/, 2];
|
|
100
|
+
return [4 /*yield*/, this.init()];
|
|
101
|
+
case 1:
|
|
102
|
+
_b.sent();
|
|
103
|
+
_b.label = 2;
|
|
104
|
+
case 2:
|
|
105
|
+
params = this.params;
|
|
106
|
+
_b.label = 3;
|
|
107
|
+
case 3:
|
|
108
|
+
_b.trys.push([3, 17, , 18]);
|
|
109
|
+
_b.label = 4;
|
|
110
|
+
case 4:
|
|
111
|
+
_b.trys.push([4, 6, , 7]);
|
|
112
|
+
return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
|
|
113
|
+
controller: this,
|
|
114
|
+
request: params,
|
|
115
|
+
})];
|
|
116
|
+
case 5:
|
|
117
|
+
_b.sent();
|
|
118
|
+
return [3 /*break*/, 7];
|
|
119
|
+
case 6:
|
|
120
|
+
err_1 = _b.sent();
|
|
121
|
+
if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
|
|
122
|
+
this.log.warn("'beforeSearch' middleware cancelled");
|
|
123
|
+
return [2 /*return*/];
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.log.error("error in 'beforeSearch' middleware");
|
|
127
|
+
throw err_1;
|
|
128
|
+
}
|
|
129
|
+
return [3 /*break*/, 7];
|
|
130
|
+
case 7:
|
|
131
|
+
searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
132
|
+
return [4 /*yield*/, this.client.search(params)];
|
|
133
|
+
case 8:
|
|
134
|
+
_a = _b.sent(), meta = _a[0], response = _a[1];
|
|
135
|
+
if (!response.meta) {
|
|
136
|
+
/**
|
|
137
|
+
* MockClient will overwrite the client search() method and use
|
|
138
|
+
* SearchData to return mock data which already contains meta data
|
|
139
|
+
*/
|
|
140
|
+
response.meta = meta;
|
|
141
|
+
}
|
|
142
|
+
searchProfile.stop();
|
|
143
|
+
this.log.profile(searchProfile);
|
|
144
|
+
afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
|
|
145
|
+
_b.label = 9;
|
|
146
|
+
case 9:
|
|
147
|
+
_b.trys.push([9, 11, , 12]);
|
|
148
|
+
return [4 /*yield*/, this.eventManager.fire('afterSearch', {
|
|
149
|
+
controller: this,
|
|
150
|
+
request: params,
|
|
151
|
+
response: response,
|
|
152
|
+
})];
|
|
153
|
+
case 10:
|
|
154
|
+
_b.sent();
|
|
155
|
+
return [3 /*break*/, 12];
|
|
156
|
+
case 11:
|
|
157
|
+
err_2 = _b.sent();
|
|
158
|
+
if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
|
|
159
|
+
this.log.warn("'afterSearch' middleware cancelled");
|
|
160
|
+
afterSearchProfile.stop();
|
|
161
|
+
return [2 /*return*/];
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.log.error("error in 'afterSearch' middleware");
|
|
165
|
+
throw err_2;
|
|
166
|
+
}
|
|
167
|
+
return [3 /*break*/, 12];
|
|
168
|
+
case 12:
|
|
169
|
+
afterSearchProfile.stop();
|
|
170
|
+
this.log.profile(afterSearchProfile);
|
|
171
|
+
// update the store
|
|
172
|
+
this.store.update(response);
|
|
173
|
+
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
174
|
+
_b.label = 13;
|
|
175
|
+
case 13:
|
|
176
|
+
_b.trys.push([13, 15, , 16]);
|
|
177
|
+
return [4 /*yield*/, this.eventManager.fire('afterStore', {
|
|
178
|
+
controller: this,
|
|
179
|
+
request: params,
|
|
180
|
+
response: response,
|
|
181
|
+
})];
|
|
182
|
+
case 14:
|
|
183
|
+
_b.sent();
|
|
184
|
+
return [3 /*break*/, 16];
|
|
185
|
+
case 15:
|
|
186
|
+
err_3 = _b.sent();
|
|
187
|
+
if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
|
|
188
|
+
this.log.warn("'afterStore' middleware cancelled");
|
|
189
|
+
afterStoreProfile.stop();
|
|
190
|
+
return [2 /*return*/];
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
this.log.error("error in 'afterStore' middleware");
|
|
194
|
+
throw err_3;
|
|
195
|
+
}
|
|
196
|
+
return [3 /*break*/, 16];
|
|
197
|
+
case 16:
|
|
198
|
+
afterStoreProfile.stop();
|
|
199
|
+
this.log.profile(afterStoreProfile);
|
|
200
|
+
return [3 /*break*/, 18];
|
|
201
|
+
case 17:
|
|
202
|
+
err_4 = _b.sent();
|
|
203
|
+
if (err_4) {
|
|
204
|
+
switch (err_4) {
|
|
205
|
+
case 429:
|
|
206
|
+
this.store.error = {
|
|
207
|
+
code: 429,
|
|
208
|
+
type: snap_store_mobx_1.ErrorType.WARNING,
|
|
209
|
+
message: 'Too many requests try again later',
|
|
210
|
+
};
|
|
211
|
+
this.log.warn(this.store.error);
|
|
212
|
+
break;
|
|
213
|
+
case 500:
|
|
214
|
+
this.store.error = {
|
|
215
|
+
code: 500,
|
|
216
|
+
type: snap_store_mobx_1.ErrorType.ERROR,
|
|
217
|
+
message: 'Invalid Search Request or Service Unavailable',
|
|
218
|
+
};
|
|
219
|
+
this.log.error(this.store.error);
|
|
220
|
+
break;
|
|
221
|
+
default:
|
|
222
|
+
this.log.error(err_4);
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
this.store.loading = false;
|
|
226
|
+
}
|
|
227
|
+
return [3 /*break*/, 18];
|
|
228
|
+
case 18: return [2 /*return*/];
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
}); };
|
|
232
|
+
// deep merge config with defaults
|
|
233
|
+
_this.config = (0, deepmerge_1.default)(defaultConfig, _this.config);
|
|
234
|
+
_this.store.setConfig(_this.config);
|
|
235
|
+
// set the root URL on urlManager
|
|
236
|
+
if (_this.config.url) {
|
|
237
|
+
_this.urlManager = _this.urlManager.withConfig(function (translatorConfig) {
|
|
238
|
+
return __assign(__assign({}, translatorConfig), { urlRoot: _this.config.url });
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
// add 'beforeSearch' middleware
|
|
242
|
+
_this.eventManager.on('beforeSearch', function (finder, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
243
|
+
return __generator(this, function (_a) {
|
|
244
|
+
switch (_a.label) {
|
|
245
|
+
case 0:
|
|
246
|
+
finder.controller.store.loading = true;
|
|
247
|
+
return [4 /*yield*/, next()];
|
|
248
|
+
case 1:
|
|
249
|
+
_a.sent();
|
|
250
|
+
return [2 /*return*/];
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}); });
|
|
254
|
+
// TODO: move this to afterStore
|
|
255
|
+
// add 'afterSearch' middleware
|
|
256
|
+
_this.eventManager.on('afterSearch', function (finder, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
257
|
+
return __generator(this, function (_a) {
|
|
258
|
+
switch (_a.label) {
|
|
259
|
+
case 0: return [4 /*yield*/, next()];
|
|
260
|
+
case 1:
|
|
261
|
+
_a.sent();
|
|
262
|
+
finder.controller.store.loading = false;
|
|
263
|
+
return [2 /*return*/];
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
}); });
|
|
267
|
+
// attach config plugins and event middleware
|
|
268
|
+
_this.use(_this.config);
|
|
269
|
+
return _this;
|
|
270
|
+
}
|
|
271
|
+
Object.defineProperty(FinderController.prototype, "params", {
|
|
272
|
+
get: function () {
|
|
273
|
+
var urlState = this.urlManager.state;
|
|
274
|
+
var params = (0, deepmerge_1.default)(__assign({}, (0, getParams_1.getSearchParams)(urlState)), this.config.globals);
|
|
275
|
+
// get only the finder fields
|
|
276
|
+
params.facets = {
|
|
277
|
+
include: this.config.fields.map(function (fieldConfig) { return fieldConfig.field; }),
|
|
278
|
+
};
|
|
279
|
+
return params;
|
|
280
|
+
},
|
|
281
|
+
enumerable: false,
|
|
282
|
+
configurable: true
|
|
283
|
+
});
|
|
284
|
+
return FinderController;
|
|
285
|
+
}(AbstractController_1.AbstractController));
|
|
286
|
+
exports.FinderController = FinderController;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AbstractController } from '../Abstract/AbstractController';
|
|
2
|
+
import type { BeaconEvent } from '@searchspring/snap-tracker';
|
|
3
|
+
import type { RecommendationStore } from '@searchspring/snap-store-mobx';
|
|
4
|
+
import type { RecommendationControllerConfig, ControllerServices } from '../types';
|
|
5
|
+
declare type RecommendationTrackMethods = {
|
|
6
|
+
product: {
|
|
7
|
+
click: (e: any, result: any) => BeaconEvent;
|
|
8
|
+
render: (result: any) => BeaconEvent;
|
|
9
|
+
impression: (result: any) => BeaconEvent;
|
|
10
|
+
};
|
|
11
|
+
click: (e: any) => BeaconEvent;
|
|
12
|
+
impression: () => BeaconEvent;
|
|
13
|
+
render: () => BeaconEvent;
|
|
14
|
+
};
|
|
15
|
+
export declare class RecommendationController extends AbstractController {
|
|
16
|
+
type: string;
|
|
17
|
+
store: RecommendationStore;
|
|
18
|
+
config: RecommendationControllerConfig;
|
|
19
|
+
events: {
|
|
20
|
+
click: any;
|
|
21
|
+
impression: any;
|
|
22
|
+
render: any;
|
|
23
|
+
product: {};
|
|
24
|
+
};
|
|
25
|
+
constructor(config: RecommendationControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices);
|
|
26
|
+
track: RecommendationTrackMethods;
|
|
27
|
+
get params(): Record<string, any>;
|
|
28
|
+
search: () => Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=RecommendationController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAa,MAAM,UAAU,CAAC;AAE9H,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAA,EAAE,MAAM,KAAA,KAAK,WAAW,CAAC;QAClC,MAAM,EAAE,CAAC,MAAM,KAAA,KAAK,WAAW,CAAC;QAChC,UAAU,EAAE,CAAC,MAAM,KAAA,KAAK,WAAW,CAAC;KACpC,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,KAAA,KAAK,WAAW,CAAC;IAC1B,UAAU,EAAE,MAAM,WAAW,CAAC;IAC9B,MAAM,EAAE,MAAM,WAAW,CAAC;CAC1B,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,SAAoB;IACxB,KAAK,EAAE,mBAAmB,CAAC;IAClC,MAAM,EAAE,8BAA8B,CAAC;IACvC,MAAM;;;;;MAKJ;gBAEU,MAAM,EAAE,8BAA8B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB;IA6B9I,KAAK,EAAE,0BAA0B,CAoK/B;IAEF,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAyBhC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAqG9B;CACF"}
|