@searchspring/snap-client 0.27.2 → 0.27.5

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.
Files changed (36) hide show
  1. package/dist/cjs/Client/Client.d.ts.map +1 -1
  2. package/dist/cjs/Client/Client.js +13 -13
  3. package/dist/cjs/Client/NetworkCache/NetworkCache.d.ts +3 -3
  4. package/dist/cjs/Client/NetworkCache/NetworkCache.d.ts.map +1 -1
  5. package/dist/cjs/Client/NetworkCache/NetworkCache.js +5 -3
  6. package/dist/cjs/Client/apis/Abstract.js +4 -3
  7. package/dist/cjs/Client/apis/Recommend.d.ts.map +1 -1
  8. package/dist/cjs/Client/apis/Recommend.js +52 -24
  9. package/dist/cjs/Client/transforms/searchRequest.d.ts +6 -6
  10. package/dist/cjs/Client/transforms/searchRequest.d.ts.map +1 -1
  11. package/dist/cjs/Client/transforms/searchRequest.js +4 -4
  12. package/dist/cjs/Client/transforms/searchResponse.d.ts +161 -20
  13. package/dist/cjs/Client/transforms/searchResponse.d.ts.map +1 -1
  14. package/dist/cjs/Client/transforms/searchResponse.js +49 -40
  15. package/dist/cjs/Client/utils/mergeParams.d.ts.map +1 -1
  16. package/dist/cjs/types.d.ts +7 -6
  17. package/dist/cjs/types.d.ts.map +1 -1
  18. package/dist/esm/Client/Client.d.ts.map +1 -1
  19. package/dist/esm/Client/Client.js +8 -8
  20. package/dist/esm/Client/NetworkCache/NetworkCache.d.ts +3 -3
  21. package/dist/esm/Client/NetworkCache/NetworkCache.d.ts.map +1 -1
  22. package/dist/esm/Client/NetworkCache/NetworkCache.js +4 -3
  23. package/dist/esm/Client/apis/Abstract.js +3 -3
  24. package/dist/esm/Client/apis/Recommend.d.ts.map +1 -1
  25. package/dist/esm/Client/apis/Recommend.js +26 -9
  26. package/dist/esm/Client/transforms/searchRequest.d.ts +21 -21
  27. package/dist/esm/Client/transforms/searchRequest.d.ts.map +1 -1
  28. package/dist/esm/Client/transforms/searchRequest.js +3 -3
  29. package/dist/esm/Client/transforms/searchResponse.d.ts +161 -20
  30. package/dist/esm/Client/transforms/searchResponse.d.ts.map +1 -1
  31. package/dist/esm/Client/transforms/searchResponse.js +51 -45
  32. package/dist/esm/Client/transforms/suggestResponse.d.ts +2 -2
  33. package/dist/esm/Client/utils/mergeParams.d.ts.map +1 -1
  34. package/dist/esm/types.d.ts +7 -6
  35. package/dist/esm/types.d.ts.map +1 -1
  36. package/package.json +3 -3
@@ -45,19 +45,19 @@ function transformSearchResponse(response, request) {
45
45
  }
46
46
  exports.transformSearchResponse = transformSearchResponse;
47
47
  transformSearchResponse.pagination = function (response) {
48
- var pagination = (response || {}).pagination || {};
48
+ var pagination = response === null || response === void 0 ? void 0 : response.pagination;
49
49
  return {
50
50
  pagination: {
51
- totalResults: pagination.totalResults,
52
- page: pagination.currentPage,
53
- pageSize: pagination.perPage,
54
- defaultPageSize: pagination.defaultPerPage,
55
- totalPages: pagination.totalPages,
51
+ totalResults: pagination === null || pagination === void 0 ? void 0 : pagination.totalResults,
52
+ page: pagination === null || pagination === void 0 ? void 0 : pagination.currentPage,
53
+ pageSize: pagination === null || pagination === void 0 ? void 0 : pagination.perPage,
54
+ defaultPageSize: pagination === null || pagination === void 0 ? void 0 : pagination.defaultPerPage,
55
+ totalPages: pagination === null || pagination === void 0 ? void 0 : pagination.totalPages,
56
56
  },
57
57
  };
58
58
  };
59
59
  transformSearchResponse.results = function (response) {
60
- var results = (response || {}).results || [];
60
+ var results = (response === null || response === void 0 ? void 0 : response.results) || [];
61
61
  return { results: results.map(transformSearchResponse.result) };
62
62
  };
63
63
  transformSearchResponse.result = function (rawResult) {
@@ -65,7 +65,7 @@ transformSearchResponse.result = function (rawResult) {
65
65
  var coreFieldValues = CORE_FIELDS.reduce(function (coreFields, key) {
66
66
  var _a;
67
67
  if (typeof rawResult[key] != 'undefined') {
68
- return __assign(__assign({}, coreFields), (_a = {}, _a[key] = decodeProperty(rawResult[key]), _a));
68
+ return __assign(__assign({}, coreFields), (_a = {}, _a[key] = decodeProperty(rawResult[key] || ''), _a));
69
69
  }
70
70
  return coreFields;
71
71
  }, {});
@@ -77,7 +77,7 @@ transformSearchResponse.result = function (rawResult) {
77
77
  .filter(function (k) { return CORE_FIELDS.indexOf(k) == -1; })
78
78
  .reduce(function (attributes, key) {
79
79
  var _a;
80
- return __assign(__assign({}, attributes), (_a = {}, _a[key] = decodeProperty(rawResult[key]), _a));
80
+ return __assign(__assign({}, attributes), (_a = {}, _a[key] = decodeProperty(rawResult[key] || ''), _a));
81
81
  }, {});
82
82
  var children = ((_a = rawResult === null || rawResult === void 0 ? void 0 : rawResult.children) === null || _a === void 0 ? void 0 : _a.map(function (child) {
83
83
  return {
@@ -97,17 +97,19 @@ transformSearchResponse.result = function (rawResult) {
97
97
  });
98
98
  };
99
99
  transformSearchResponse.filters = function (response) {
100
- var filterSummary = (response || {}).filterSummary || [];
100
+ var filterSummary = (response === null || response === void 0 ? void 0 : response.filterSummary) || [];
101
101
  return {
102
102
  filters: filterSummary.map(function (filter) {
103
103
  var value = filter.value;
104
104
  var type = 'value';
105
105
  if (typeof filter.value == 'object') {
106
- (type = 'range'),
107
- (value = {
108
- low: +filter.value.rangeLow,
109
- high: +filter.value.rangeHigh,
110
- });
106
+ if (filter && filter.value && filter.value.rangeHigh && filter.value.rangeLow) {
107
+ (type = 'range'),
108
+ (value = {
109
+ low: +filter.value.rangeLow,
110
+ high: +filter.value.rangeHigh,
111
+ });
112
+ }
111
113
  }
112
114
  return {
113
115
  type: type,
@@ -121,23 +123,26 @@ transformSearchResponse.filters = function (response) {
121
123
  transformSearchResponse.facets = function (response, request) {
122
124
  if (request === void 0) { request = {}; }
123
125
  var filters = request.filters || [];
124
- var facets = (response || {}).facets || [];
126
+ var facets = (response === null || response === void 0 ? void 0 : response.facets) || [];
125
127
  return {
126
128
  facets: facets.map(function (facet) {
129
+ var _a;
127
130
  var transformedFacet = {
128
131
  field: facet.field,
129
132
  type: 'value',
130
133
  filtered: Boolean(facet.facet_active),
131
134
  };
132
135
  if (facet.step) {
133
- transformedFacet = __assign(__assign({}, transformedFacet), { type: 'range', step: facet.step, range: {
134
- low: facet.range[0] == '*' ? null : +facet.range[0],
135
- high: facet.range[1] == '*' ? null : +facet.range[1],
136
- } });
137
- if (facet.active && facet.active.length > 1) {
136
+ if (facet.range) {
137
+ transformedFacet = __assign(__assign({}, transformedFacet), { type: 'range', step: facet.step, range: {
138
+ low: facet.range[0] == '*' ? undefined : +facet.range[0],
139
+ high: facet.range[1] == '*' ? undefined : +facet.range[1],
140
+ } });
141
+ }
142
+ if (facet.active && typeof facet.active != 'boolean' && facet.active.length > 1) {
138
143
  transformedFacet.active = {
139
- low: facet.active[0] == '*' ? null : +facet.active[0],
140
- high: facet.active[1] == '*' ? null : +facet.active[1],
144
+ low: facet.active[0] == '*' ? undefined : +facet.active[0],
145
+ high: facet.active[1] == '*' ? undefined : +facet.active[1],
141
146
  };
142
147
  }
143
148
  }
@@ -155,15 +160,17 @@ transformSearchResponse.facets = function (response, request) {
155
160
  var filterSelected = filters.find(function (f) { return f.field == facet.field; });
156
161
  var newValues = [];
157
162
  if (filterSelected && !filterSelected.background) {
158
- var valueLevels = filterSelected.value.split(facet.hierarchyDelimiter);
159
- for (var i = valueLevels.length - 1; i >= 0; i--) {
160
- var valueSplit = valueLevels.slice(0, i + 1);
161
- var value = valueSplit.join(facet.hierarchyDelimiter);
162
- newValues.unshift({
163
- value: value,
164
- filtered: value == filterSelected.value,
165
- label: valueSplit[valueSplit.length - 1],
166
- });
163
+ var valueLevels = (_a = filterSelected.value) === null || _a === void 0 ? void 0 : _a.split(facet.hierarchyDelimiter || '>');
164
+ if (valueLevels) {
165
+ for (var i = valueLevels.length - 1; i >= 0; i--) {
166
+ var valueSplit = valueLevels.slice(0, i + 1);
167
+ var value = valueSplit.join(facet.hierarchyDelimiter);
168
+ newValues.unshift({
169
+ value: value,
170
+ filtered: value == filterSelected.value,
171
+ label: valueSplit[valueSplit.length - 1],
172
+ });
173
+ }
167
174
  }
168
175
  newValues.unshift({
169
176
  value: null,
@@ -189,8 +196,8 @@ transformSearchResponse.facets = function (response, request) {
189
196
  transformedFacet.values = facet.values.map(function (value) {
190
197
  return {
191
198
  filtered: value.active,
192
- low: value.low == '*' ? null : +value.low,
193
- high: value.high == '*' ? null : +value.high,
199
+ low: value.low == '*' ? null : value.low ? +value.low : null,
200
+ high: value.high == '*' ? null : value.high ? +value.high : null,
194
201
  label: value.label,
195
202
  count: value.count,
196
203
  };
@@ -202,7 +209,8 @@ transformSearchResponse.facets = function (response, request) {
202
209
  };
203
210
  };
204
211
  transformSearchResponse.sorting = function (response) {
205
- var sorts = ((response || {}).sorting || {}).options || [];
212
+ var _a;
213
+ var sorts = ((_a = response === null || response === void 0 ? void 0 : response.sorting) === null || _a === void 0 ? void 0 : _a.options) || [];
206
214
  var transformedSorting = sorts
207
215
  .filter(function (sort) { return sort.active; })
208
216
  .map(function (sort) {
@@ -216,7 +224,7 @@ transformSearchResponse.sorting = function (response) {
216
224
  };
217
225
  };
218
226
  transformSearchResponse.merchandising = function (response) {
219
- var merchandising = (response || {}).merchandising || {};
227
+ var merchandising = response === null || response === void 0 ? void 0 : response.merchandising;
220
228
  if (merchandising.content && Array.isArray(merchandising.content) && !merchandising.content.length) {
221
229
  merchandising.content = {};
222
230
  }
@@ -225,12 +233,13 @@ transformSearchResponse.merchandising = function (response) {
225
233
  };
226
234
  };
227
235
  transformSearchResponse.search = function (response, request) {
228
- var didYouMean = ((response || {}).didYouMean || {}).query;
229
- var originalQuery = ((request || {}).search || {}).originalQuery;
230
- var matchType = ((response || {}).query || {}).matchType;
236
+ var _a, _b, _c, _d, _e;
237
+ var didYouMean = (_a = response === null || response === void 0 ? void 0 : response.didYouMean) === null || _a === void 0 ? void 0 : _a.query;
238
+ var originalQuery = (_b = request === null || request === void 0 ? void 0 : request.search) === null || _b === void 0 ? void 0 : _b.originalQuery;
239
+ var matchType = (_c = response === null || response === void 0 ? void 0 : response.query) === null || _c === void 0 ? void 0 : _c.matchType;
231
240
  return {
232
241
  search: {
233
- query: (((request || {}).search || {}).query || {}).string,
242
+ query: (_e = (_d = request === null || request === void 0 ? void 0 : request.search) === null || _d === void 0 ? void 0 : _d.query) === null || _e === void 0 ? void 0 : _e.string,
234
243
  didYouMean: didYouMean,
235
244
  originalQuery: originalQuery,
236
245
  matchType: matchType,
@@ -1 +1 @@
1
- {"version":3,"file":"mergeParams.d.ts","sourceRoot":"","sources":["../../../../src/Client/utils/mergeParams.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,GAAG,IAAI,OAAA,GAAG,GAAG,CAYxC"}
1
+ {"version":3,"file":"mergeParams.d.ts","sourceRoot":"","sources":["../../../../src/Client/utils/mergeParams.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAY/C"}
@@ -20,18 +20,19 @@ export declare type ClientConfig = {
20
20
  cache?: CacheConfig;
21
21
  };
22
22
  };
23
- export declare type CacheConfig = {
24
- enabled?: boolean;
25
- ttl?: number;
26
- maxSize?: number;
27
- purgeable?: boolean;
23
+ export declare type CacheConfig = Partial<DefaultCacheConfig>;
24
+ export declare type DefaultCacheConfig = {
25
+ enabled: boolean;
26
+ ttl: number;
27
+ maxSize: number;
28
+ purgeable: boolean;
28
29
  entries?: {
29
30
  [key: string]: Response;
30
31
  };
31
32
  };
32
33
  export declare type CacheEntry = {
33
34
  value: Response;
34
- expires?: number;
35
+ expires: number;
35
36
  purgeable?: boolean;
36
37
  };
37
38
  export declare type Cache = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY,GAAG;IAC1B,IAAI,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,YAAY,CAAC,EAAE;QACd,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,SAAS,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACT,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;CACF,CAAC;AAEF,oBAAY,WAAW,GAAG;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAC;CACtC,CAAC;AAEF,oBAAY,UAAU,GAAG;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,oBAAY,KAAK,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;CAC1B,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,iBAAiB,EAAE,MAAM,GAAG,GAAG,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY,GAAG;IAC1B,IAAI,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,YAAY,CAAC,EAAE;QACd,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,SAAS,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACT,GAAG,CAAC,EAAE,aAAa,CAAC;QACpB,KAAK,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;CACF,CAAC;AAEF,oBAAY,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEtD,oBAAY,kBAAkB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAC;CACtC,CAAC;AACF,oBAAY,UAAU,GAAG;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,oBAAY,KAAK,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;CAC1B,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,iBAAiB,EAAE,MAAM,GAAG,GAAG,CAAC;CACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../src/Client/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,oBAAoB,EACpB,qBAAqB,EAErB,6BAA6B,EAC7B,8BAA8B,EAG9B,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE5D,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAgCnC,qBAAa,MAAM;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAMhB;gBAEU,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,YAAiB;IA0CvD,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO3D,YAAY,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;IAU5G,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAM/E,SAAS,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;CAgC/F"}
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../src/Client/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,oBAAoB,EACpB,qBAAqB,EAErB,6BAA6B,EAC7B,8BAA8B,EAG9B,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE5D,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAgCnC,qBAAa,MAAM;IAClB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAMhB;gBAEU,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,YAAiB;IA0CvD,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO3D,YAAY,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;IAU5G,MAAM,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAM1F,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAM/E,SAAS,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,8BAA8B,CAAC;CAgC/F"}
@@ -37,23 +37,23 @@ export class Client {
37
37
  this.requesters = {
38
38
  autocomplete: new HybridAPI(new ApiConfiguration({
39
39
  origin: this.config.autocomplete?.api?.origin,
40
- cache: this.config.autocomplete.cache,
40
+ cache: this.config.autocomplete?.cache,
41
41
  })),
42
42
  meta: new HybridAPI(new ApiConfiguration({
43
43
  origin: this.config.meta?.api?.origin,
44
- cache: this.config.meta.cache,
44
+ cache: this.config.meta?.cache,
45
45
  })),
46
46
  recommend: new RecommendAPI(new ApiConfiguration({
47
47
  origin: this.config.recommend?.api?.origin,
48
- cache: this.config.recommend.cache,
48
+ cache: this.config.recommend?.cache,
49
49
  })),
50
50
  search: new HybridAPI(new ApiConfiguration({
51
51
  origin: this.config.search?.api?.origin,
52
- cache: this.config.search.cache,
52
+ cache: this.config.search?.cache,
53
53
  })),
54
54
  suggest: new SuggestAPI(new ApiConfiguration({
55
55
  origin: this.config.suggest?.api?.origin,
56
- cache: this.config.suggest.cache,
56
+ cache: this.config.suggest?.cache,
57
57
  })),
58
58
  };
59
59
  }
@@ -67,11 +67,11 @@ export class Client {
67
67
  throw 'query string parameter is required';
68
68
  }
69
69
  params = deepmerge(this.globals, params);
70
- return Promise.all([this.meta({ siteId: params.siteId }), this.requesters.autocomplete.getAutocomplete(params)]);
70
+ return Promise.all([this.meta({ siteId: params.siteId || '' }), this.requesters.autocomplete.getAutocomplete(params)]);
71
71
  }
72
72
  async search(params = {}) {
73
73
  params = deepmerge(this.globals, params);
74
- return Promise.all([this.meta({ siteId: params.siteId }), this.requesters.search.getSearch(params)]);
74
+ return Promise.all([this.meta({ siteId: params.siteId || '' }), this.requesters.search.getSearch(params)]);
75
75
  }
76
76
  async trending(params) {
77
77
  params = deepmerge({ siteId: this.globals.siteId }, params || {});
@@ -92,8 +92,8 @@ export class Client {
92
92
  }
93
93
  const recommendParams = {
94
94
  tags: [tag],
95
- siteId: params.siteId || this.globals.siteId,
96
95
  ...otherParams,
96
+ siteId: params.siteId || this.globals.siteId,
97
97
  };
98
98
  const [profile, recommendations] = await Promise.all([
99
99
  this.requesters.recommend.getProfile(profileParams),
@@ -1,9 +1,9 @@
1
- import { CacheConfig } from '../../types';
1
+ import { CacheConfig, DefaultCacheConfig } from '../../types';
2
2
  export declare class NetworkCache {
3
3
  private memoryCache;
4
- config: CacheConfig;
4
+ config: DefaultCacheConfig;
5
5
  constructor(config?: CacheConfig);
6
- get(key: string): Response;
6
+ get(key: string): Response | void;
7
7
  set(key: string, value: Response): void;
8
8
  clear(): void;
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkCache.d.ts","sourceRoot":"","sources":["../../../../src/Client/NetworkCache/NetworkCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAWjD,qBAAa,YAAY;IACxB,OAAO,CAAC,WAAW,CAAa;IAChC,MAAM,EAAE,WAAW,CAAC;gBAER,MAAM,CAAC,EAAE,WAAW;IASzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAgC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAyCvC,KAAK;CAQZ"}
1
+ {"version":3,"file":"NetworkCache.d.ts","sourceRoot":"","sources":["../../../../src/Client/NetworkCache/NetworkCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAS,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWrE,qBAAa,YAAY;IACxB,OAAO,CAAC,WAAW,CAAa;IAChC,MAAM,EAAE,kBAAkB,CAAC;gBAEf,MAAM,CAAC,EAAE,WAAW;IAWzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAgCjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAyCvC,KAAK;CAQZ"}
@@ -10,11 +10,12 @@ export class NetworkCache {
10
10
  constructor(config) {
11
11
  this.memoryCache = {};
12
12
  this.config = deepmerge(defaultConfig, config || {});
13
- if (this.config.entries) {
13
+ this.config?.entries &&
14
14
  Object.keys(this.config.entries).map((key) => {
15
- this.set(key, this.config.entries[key]);
15
+ if (this.config.entries && this.config.entries[key]) {
16
+ this.set(key, this.config.entries[key]);
17
+ }
16
18
  });
17
- }
18
19
  }
19
20
  get(key) {
20
21
  try {
@@ -79,13 +79,13 @@ export class ApiConfiguration {
79
79
  }
80
80
  }
81
81
  get cache() {
82
- return this.configuration.cache;
82
+ return this.configuration?.cache || {};
83
83
  }
84
84
  get maxRetry() {
85
- return this.configuration.maxRetry;
85
+ return this.configuration.maxRetry || 8;
86
86
  }
87
87
  get origin() {
88
- return this.configuration.origin;
88
+ return this.configuration.origin || '';
89
89
  }
90
90
  get fetchApi() {
91
91
  return this.configuration.fetchApi || window.fetch.bind(window);
@@ -1 +1 @@
1
- {"version":3,"file":"Recommend.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Recommend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Recommend.d.ts","sourceRoot":"","sources":["../../../../src/Client/apis/Recommend.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { API } from './Abstract';
2
2
  import { hashParams } from '../utils/hashParams';
3
3
  import { charsParams } from '@searchspring/snap-toolbox';
4
- import deepmerge from 'deepmerge';
5
4
  class Deferred {
6
5
  constructor() {
7
6
  this.promise = new Promise((resolve, reject) => {
@@ -27,10 +26,10 @@ export class RecommendAPI extends API {
27
26
  return response;
28
27
  }
29
28
  async batchRecommendations(parameters) {
30
- const { tags, limits, ...otherParams } = parameters;
29
+ let { tags, limits, categories, ...otherParams } = parameters;
30
+ if (!limits)
31
+ limits = 20;
31
32
  const [tag] = tags || [];
32
- if (!tag)
33
- return;
34
33
  let key = hashParams(otherParams);
35
34
  if ('batched' in otherParams) {
36
35
  if (otherParams.batched) {
@@ -42,23 +41,41 @@ export class RecommendAPI extends API {
42
41
  const paramBatch = this.batches[key];
43
42
  const deferred = new Deferred();
44
43
  paramBatch.request.tags.push(tag);
44
+ if (categories) {
45
+ if (!paramBatch.request.categories) {
46
+ paramBatch.request.categories = categories;
47
+ }
48
+ else {
49
+ paramBatch.request.categories = paramBatch.request.categories.concat(categories);
50
+ }
51
+ }
45
52
  paramBatch.request.limits = paramBatch.request.limits.concat(limits);
46
- paramBatch.request = deepmerge(paramBatch.request, otherParams);
47
- paramBatch.deferreds.push(deferred);
53
+ paramBatch.request = { ...paramBatch.request, ...otherParams };
54
+ paramBatch.deferreds?.push(deferred);
48
55
  window.clearTimeout(paramBatch.timeout);
49
56
  paramBatch.timeout = window.setTimeout(async () => {
50
57
  let requestMethod = 'getRecommendations';
51
58
  if (charsParams(paramBatch.request) > 1024) {
52
59
  requestMethod = 'postRecommendations';
60
+ //post request needs products as a string.
61
+ if (paramBatch.request['product']) {
62
+ paramBatch.request['product'] = paramBatch.request['product'].toString();
63
+ }
53
64
  }
54
65
  try {
55
- const response = await this[requestMethod](paramBatch.request);
56
- paramBatch.deferreds.forEach((def, index) => {
66
+ let response;
67
+ if (charsParams(paramBatch.request) > 1024) {
68
+ response = await this.postRecommendations(paramBatch.request);
69
+ }
70
+ else {
71
+ response = await this.getRecommendations(paramBatch.request);
72
+ }
73
+ paramBatch.deferreds?.forEach((def, index) => {
57
74
  def.resolve([response[index]]);
58
75
  });
59
76
  }
60
77
  catch (err) {
61
- paramBatch.deferreds.forEach((def) => {
78
+ paramBatch.deferreds?.forEach((def) => {
62
79
  def.reject(err);
63
80
  });
64
81
  }
@@ -1,22 +1,22 @@
1
- import { SearchRequestModel } from '@searchspring/snapi-types';
1
+ import { SearchRequestModel, SearchRequestModelSortsDirectionEnum, SearchRequestModelFilterRangeAllOfValue } from '@searchspring/snapi-types';
2
2
  export declare function transformSearchRequest(request: SearchRequestModel): any;
3
3
  export declare namespace transformSearchRequest {
4
- var sorts: (request?: SearchRequestModel) => import("@searchspring/snapi-types").SearchRequestModelSorts;
4
+ var sorts: (request?: SearchRequestModel) => Record<string, SearchRequestModelSortsDirectionEnum[]>;
5
5
  var search: (request?: SearchRequestModel) => {
6
- q?: string;
7
- rq?: string;
8
- originalQuery?: string;
9
- redirectResponse?: string;
6
+ q?: string | undefined;
7
+ rq?: string | undefined;
8
+ originalQuery?: string | undefined;
9
+ redirectResponse?: string | undefined;
10
10
  };
11
- var filters: (request?: SearchRequestModel) => {};
11
+ var filters: (request?: SearchRequestModel) => Record<string, (string | number | SearchRequestModelFilterRangeAllOfValue | undefined)[]>;
12
12
  var merchandising: (request?: SearchRequestModel) => {
13
- disableMerchandising: boolean;
14
- } | {
15
- disableMerchandising?: undefined;
13
+ disableMerchandising?: boolean | undefined;
14
+ tag?: string[] | undefined;
15
+ 'landing-page'?: string | undefined;
16
16
  };
17
17
  var pagination: (request?: SearchRequestModel) => {
18
- page?: number;
19
- resultsPerPage?: number;
18
+ page?: number | undefined;
19
+ resultsPerPage?: number | undefined;
20
20
  };
21
21
  var siteId: (request?: SearchRequestModel) => {
22
22
  siteId: string;
@@ -24,19 +24,19 @@ export declare namespace transformSearchRequest {
24
24
  siteId?: undefined;
25
25
  };
26
26
  var facets: (request?: SearchRequestModel) => {
27
- includedFacets?: string[];
28
- excludedFacets?: string[];
29
- disableFacetDrillDown?: boolean;
27
+ includedFacets?: string[] | undefined;
28
+ excludedFacets?: string[] | undefined;
29
+ disableFacetDrillDown?: boolean | undefined;
30
30
  };
31
31
  var tracking: (request?: SearchRequestModel) => {
32
- userId?: string;
33
- domain?: string;
32
+ userId?: string | undefined;
33
+ domain?: string | undefined;
34
34
  };
35
35
  var personalization: (request?: SearchRequestModel) => {
36
- skipPersonalization?: boolean;
37
- cart?: string;
38
- shopper?: string;
39
- lastViewed?: string;
36
+ skipPersonalization?: boolean | undefined;
37
+ cart?: string | undefined;
38
+ shopper?: string | undefined;
39
+ lastViewed?: string | undefined;
40
40
  };
41
41
  }
42
42
  //# sourceMappingURL=searchRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchRequest.d.ts","sourceRoot":"","sources":["../../../../src/Client/transforms/searchRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAgE,MAAM,2BAA2B,CAAC;AAE7H,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,GAAG,CAYvE;yBAZe,sBAAsB"}
1
+ {"version":3,"file":"searchRequest.d.ts","sourceRoot":"","sources":["../../../../src/Client/transforms/searchRequest.ts"],"names":[],"mappings":"AACA,OAAO,EACN,kBAAkB,EAIlB,oCAAoC,EACpC,uCAAuC,EACvC,MAAM,2BAA2B,CAAC;AAEnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,GAAG,CAYvE;yBAZe,sBAAsB"}
@@ -15,7 +15,7 @@ transformSearchRequest.sorts = (request = {}) => {
15
15
  }
16
16
  return {
17
17
  ...acc,
18
- ['sort.' + sort.field]: (acc[sort.field] || []).concat(sort.direction),
18
+ ['sort.' + sort.field]: (acc[sort.field] || []).concat([sort.direction]),
19
19
  };
20
20
  }, {});
21
21
  };
@@ -49,8 +49,8 @@ transformSearchRequest.filters = (request = {}) => {
49
49
  else if (filter.type == 'range') {
50
50
  const keyLow = baseKey + '.' + filter.field + '.low';
51
51
  const keyHigh = baseKey + '.' + filter.field + '.high';
52
- const low = filter.value.low ?? '*';
53
- const high = filter.value.high ?? '*';
52
+ const low = filter?.value?.low ?? '*';
53
+ const high = filter?.value?.high ?? '*';
54
54
  return {
55
55
  ...acc,
56
56
  [keyLow]: (acc[keyLow] || []).concat([low]),