@athoscommerce/snap-client 1.0.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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/dist/cjs/Client/Client.d.ts +29 -0
  4. package/dist/cjs/Client/Client.d.ts.map +1 -0
  5. package/dist/cjs/Client/Client.js +278 -0
  6. package/dist/cjs/Client/NetworkCache/NetworkCache.d.ts +12 -0
  7. package/dist/cjs/Client/NetworkCache/NetworkCache.d.ts.map +1 -0
  8. package/dist/cjs/Client/NetworkCache/NetworkCache.js +198 -0
  9. package/dist/cjs/Client/apis/Abstract.d.ts +60 -0
  10. package/dist/cjs/Client/apis/Abstract.d.ts.map +1 -0
  11. package/dist/cjs/Client/apis/Abstract.js +297 -0
  12. package/dist/cjs/Client/apis/Meta.d.ts +8 -0
  13. package/dist/cjs/Client/apis/Meta.d.ts.map +1 -0
  14. package/dist/cjs/Client/apis/Meta.js +102 -0
  15. package/dist/cjs/Client/apis/Recommend.d.ts +15 -0
  16. package/dist/cjs/Client/apis/Recommend.d.ts.map +1 -0
  17. package/dist/cjs/Client/apis/Recommend.js +276 -0
  18. package/dist/cjs/Client/apis/Search.d.ts +12 -0
  19. package/dist/cjs/Client/apis/Search.d.ts.map +1 -0
  20. package/dist/cjs/Client/apis/Search.js +137 -0
  21. package/dist/cjs/Client/apis/Suggest.d.ts +9 -0
  22. package/dist/cjs/Client/apis/Suggest.d.ts.map +1 -0
  23. package/dist/cjs/Client/apis/Suggest.js +145 -0
  24. package/dist/cjs/Client/apis/index.d.ts +6 -0
  25. package/dist/cjs/Client/apis/index.d.ts.map +1 -0
  26. package/dist/cjs/Client/apis/index.js +21 -0
  27. package/dist/cjs/Client/transforms/index.d.ts +5 -0
  28. package/dist/cjs/Client/transforms/index.d.ts.map +1 -0
  29. package/dist/cjs/Client/transforms/index.js +20 -0
  30. package/dist/cjs/Client/transforms/recommendationFiltersPost.d.ts +3 -0
  31. package/dist/cjs/Client/transforms/recommendationFiltersPost.d.ts.map +1 -0
  32. package/dist/cjs/Client/transforms/recommendationFiltersPost.js +63 -0
  33. package/dist/cjs/Client/transforms/searchRequest.d.ts +49 -0
  34. package/dist/cjs/Client/transforms/searchRequest.d.ts.map +1 -0
  35. package/dist/cjs/Client/transforms/searchRequest.js +169 -0
  36. package/dist/cjs/Client/transforms/searchResponse.d.ts +146 -0
  37. package/dist/cjs/Client/transforms/searchResponse.d.ts.map +1 -0
  38. package/dist/cjs/Client/transforms/searchResponse.js +296 -0
  39. package/dist/cjs/Client/transforms/suggestResponse.d.ts +18 -0
  40. package/dist/cjs/Client/transforms/suggestResponse.d.ts.map +1 -0
  41. package/dist/cjs/Client/transforms/suggestResponse.js +30 -0
  42. package/dist/cjs/Client/utils/fibonacci.d.ts +2 -0
  43. package/dist/cjs/Client/utils/fibonacci.d.ts.map +1 -0
  44. package/dist/cjs/Client/utils/fibonacci.js +14 -0
  45. package/dist/cjs/Client/utils/index.d.ts +2 -0
  46. package/dist/cjs/Client/utils/index.d.ts.map +1 -0
  47. package/dist/cjs/Client/utils/index.js +17 -0
  48. package/dist/cjs/Client/utils/mergeParams.d.ts +2 -0
  49. package/dist/cjs/Client/utils/mergeParams.d.ts.map +1 -0
  50. package/dist/cjs/Client/utils/mergeParams.js +27 -0
  51. package/dist/cjs/index.d.ts +3 -0
  52. package/dist/cjs/index.d.ts.map +1 -0
  53. package/dist/cjs/index.js +17 -0
  54. package/dist/cjs/types.d.ts +212 -0
  55. package/dist/cjs/types.d.ts.map +1 -0
  56. package/dist/cjs/types.js +2 -0
  57. package/dist/esm/Client/Client.d.ts +29 -0
  58. package/dist/esm/Client/Client.d.ts.map +1 -0
  59. package/dist/esm/Client/Client.js +157 -0
  60. package/dist/esm/Client/NetworkCache/NetworkCache.d.ts +12 -0
  61. package/dist/esm/Client/NetworkCache/NetworkCache.d.ts.map +1 -0
  62. package/dist/esm/Client/NetworkCache/NetworkCache.js +168 -0
  63. package/dist/esm/Client/apis/Abstract.d.ts +60 -0
  64. package/dist/esm/Client/apis/Abstract.d.ts.map +1 -0
  65. package/dist/esm/Client/apis/Abstract.js +165 -0
  66. package/dist/esm/Client/apis/Meta.d.ts +8 -0
  67. package/dist/esm/Client/apis/Meta.d.ts.map +1 -0
  68. package/dist/esm/Client/apis/Meta.js +23 -0
  69. package/dist/esm/Client/apis/Recommend.d.ts +15 -0
  70. package/dist/esm/Client/apis/Recommend.d.ts.map +1 -0
  71. package/dist/esm/Client/apis/Recommend.js +172 -0
  72. package/dist/esm/Client/apis/Search.d.ts +12 -0
  73. package/dist/esm/Client/apis/Search.d.ts.map +1 -0
  74. package/dist/esm/Client/apis/Search.js +41 -0
  75. package/dist/esm/Client/apis/Suggest.d.ts +9 -0
  76. package/dist/esm/Client/apis/Suggest.d.ts.map +1 -0
  77. package/dist/esm/Client/apis/Suggest.js +45 -0
  78. package/dist/esm/Client/apis/index.d.ts +6 -0
  79. package/dist/esm/Client/apis/index.d.ts.map +1 -0
  80. package/dist/esm/Client/apis/index.js +5 -0
  81. package/dist/esm/Client/transforms/index.d.ts +5 -0
  82. package/dist/esm/Client/transforms/index.d.ts.map +1 -0
  83. package/dist/esm/Client/transforms/index.js +4 -0
  84. package/dist/esm/Client/transforms/recommendationFiltersPost.d.ts +3 -0
  85. package/dist/esm/Client/transforms/recommendationFiltersPost.d.ts.map +1 -0
  86. package/dist/esm/Client/transforms/recommendationFiltersPost.js +59 -0
  87. package/dist/esm/Client/transforms/searchRequest.d.ts +49 -0
  88. package/dist/esm/Client/transforms/searchRequest.d.ts.map +1 -0
  89. package/dist/esm/Client/transforms/searchRequest.js +152 -0
  90. package/dist/esm/Client/transforms/searchResponse.d.ts +146 -0
  91. package/dist/esm/Client/transforms/searchResponse.d.ts.map +1 -0
  92. package/dist/esm/Client/transforms/searchResponse.js +284 -0
  93. package/dist/esm/Client/transforms/suggestResponse.d.ts +18 -0
  94. package/dist/esm/Client/transforms/suggestResponse.d.ts.map +1 -0
  95. package/dist/esm/Client/transforms/suggestResponse.js +26 -0
  96. package/dist/esm/Client/utils/fibonacci.d.ts +2 -0
  97. package/dist/esm/Client/utils/fibonacci.d.ts.map +1 -0
  98. package/dist/esm/Client/utils/fibonacci.js +10 -0
  99. package/dist/esm/Client/utils/index.d.ts +2 -0
  100. package/dist/esm/Client/utils/index.d.ts.map +1 -0
  101. package/dist/esm/Client/utils/index.js +1 -0
  102. package/dist/esm/Client/utils/mergeParams.d.ts +2 -0
  103. package/dist/esm/Client/utils/mergeParams.d.ts.map +1 -0
  104. package/dist/esm/Client/utils/mergeParams.js +20 -0
  105. package/dist/esm/index.d.ts +3 -0
  106. package/dist/esm/index.d.ts.map +1 -0
  107. package/dist/esm/index.js +1 -0
  108. package/dist/esm/types.d.ts +212 -0
  109. package/dist/esm/types.d.ts.map +1 -0
  110. package/dist/esm/types.js +1 -0
  111. package/package.json +31 -0
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.transformSearchResponse = transformSearchResponse;
15
+ var snap_toolbox_1 = require("@athoscommerce/snap-toolbox");
16
+ var CORE_FIELDS = [
17
+ 'uid',
18
+ 'sku',
19
+ 'available',
20
+ 'name',
21
+ 'url',
22
+ 'addToCartUrl',
23
+ 'parentId',
24
+ 'parentImageUrl',
25
+ 'price',
26
+ 'msrp',
27
+ 'imageUrl',
28
+ 'secureImageUrl',
29
+ 'thumbnailImageUrl',
30
+ 'secureThumbnailImageUrl',
31
+ 'rating',
32
+ 'ratingCount',
33
+ 'description',
34
+ 'stockMessage',
35
+ 'brand',
36
+ 'popularity',
37
+ 'caption',
38
+ ];
39
+ var Result = /** @class */ (function () {
40
+ function Result(result) {
41
+ Object.assign(this, result);
42
+ }
43
+ return Result;
44
+ }());
45
+ function transformSearchResponse(response, request) {
46
+ return {
47
+ pagination: transformSearchResponse.pagination(response),
48
+ results: transformSearchResponse.results(response),
49
+ filters: transformSearchResponse.filters(response),
50
+ facets: transformSearchResponse.facets(response, request),
51
+ sorting: transformSearchResponse.sorting(response),
52
+ merchandising: transformSearchResponse.merchandising(response),
53
+ search: transformSearchResponse.search(response, request),
54
+ tracking: transformSearchResponse.tracking(response),
55
+ };
56
+ }
57
+ transformSearchResponse.pagination = function (response) {
58
+ var pagination = response === null || response === void 0 ? void 0 : response.pagination;
59
+ return {
60
+ totalResults: pagination === null || pagination === void 0 ? void 0 : pagination.totalResults,
61
+ page: pagination === null || pagination === void 0 ? void 0 : pagination.currentPage,
62
+ pageSize: pagination === null || pagination === void 0 ? void 0 : pagination.perPage,
63
+ totalPages: pagination === null || pagination === void 0 ? void 0 : pagination.totalPages,
64
+ };
65
+ };
66
+ transformSearchResponse.results = function (response) {
67
+ var results = (response === null || response === void 0 ? void 0 : response.results) || [];
68
+ return results.map(function (result) {
69
+ return transformSearchResponse.result(result, response);
70
+ });
71
+ };
72
+ transformSearchResponse.result = function (rawResult, response) {
73
+ var _a, _b;
74
+ var coreFieldValues = CORE_FIELDS.reduce(function (coreFields, key) {
75
+ var _a;
76
+ if (typeof rawResult[key] != 'undefined') {
77
+ return __assign(__assign({}, coreFields), (_a = {}, _a[key] = decodeProperty(rawResult[key] || ''), _a));
78
+ }
79
+ return coreFields;
80
+ }, {});
81
+ if (coreFieldValues.price)
82
+ coreFieldValues.price = +coreFieldValues.price;
83
+ if (coreFieldValues.msrp)
84
+ coreFieldValues.msrp = +coreFieldValues.msrp;
85
+ if (((_a = coreFieldValues.available) === null || _a === void 0 ? void 0 : _a.toString()) === 'true') {
86
+ coreFieldValues.available = true;
87
+ }
88
+ else if (((_b = coreFieldValues.available) === null || _b === void 0 ? void 0 : _b.toString()) === 'false') {
89
+ coreFieldValues.available = false;
90
+ }
91
+ var attributes = Object.keys(rawResult)
92
+ .filter(function (k) { return CORE_FIELDS.indexOf(k) == -1; })
93
+ // remove 'badges' from attributes - but only if it is an object
94
+ .filter(function (k) { var _a; return !(k == 'badges' && Array.isArray(rawResult[k]) && typeof ((_a = rawResult[k]) === null || _a === void 0 ? void 0 : _a[0]) == 'object'); })
95
+ .filter(function (k) { return !(k == 'variants'); })
96
+ .reduce(function (attributes, key) {
97
+ var _a;
98
+ return __assign(__assign({}, attributes), (_a = {}, _a[key] = decodeProperty(rawResult[key] || ''), _a));
99
+ }, {});
100
+ return new Result({
101
+ id: rawResult.uid,
102
+ responseId: response.responseId,
103
+ mappings: {
104
+ core: coreFieldValues,
105
+ },
106
+ attributes: attributes,
107
+ badges: Array.isArray(rawResult.badges) && typeof rawResult.badges[0] == 'object' ? rawResult.badges : [],
108
+ variants: rawResult.variants,
109
+ });
110
+ };
111
+ transformSearchResponse.filters = function (response) {
112
+ var filterSummary = (response === null || response === void 0 ? void 0 : response.filterSummary) || [];
113
+ return filterSummary.map(function (filter) {
114
+ var value = filter.value;
115
+ var type = 'value';
116
+ if (typeof filter.value == 'object') {
117
+ if (filter && filter.value && filter.value.rangeHigh != null && filter.value.rangeLow != null) {
118
+ (type = 'range'),
119
+ (value = {
120
+ low: +filter.value.rangeLow,
121
+ high: +filter.value.rangeHigh,
122
+ });
123
+ }
124
+ }
125
+ return {
126
+ type: type,
127
+ field: filter.field,
128
+ label: filter.filterValue,
129
+ value: value,
130
+ };
131
+ });
132
+ };
133
+ transformSearchResponse.facets = function (response, request) {
134
+ var _a, _b;
135
+ if (request === void 0) { request = {}; }
136
+ var filters = request.filters || [];
137
+ var facets = (response === null || response === void 0 ? void 0 : response.facets) || [];
138
+ var limit = (_a = request === null || request === void 0 ? void 0 : request.facets) === null || _a === void 0 ? void 0 : _a.limit;
139
+ var valueLimit = (_b = request === null || request === void 0 ? void 0 : request.facets) === null || _b === void 0 ? void 0 : _b.valueLimit;
140
+ var transformedFacets = facets.map(function (facet) {
141
+ var _a;
142
+ var transformedFacet = {
143
+ field: facet.field,
144
+ type: 'value',
145
+ filtered: Boolean(facet.facet_active),
146
+ };
147
+ if (facet.step) {
148
+ if (facet.range) {
149
+ transformedFacet = __assign(__assign({}, transformedFacet), { type: 'range', step: facet.step, range: {
150
+ low: facet.range[0] == '*' ? undefined : +facet.range[0],
151
+ high: facet.range[1] == '*' ? undefined : +facet.range[1],
152
+ } });
153
+ }
154
+ if (facet.active && typeof facet.active != 'boolean' && facet.active.length > 1) {
155
+ transformedFacet.active = {
156
+ low: facet.active[0] == '*' ? undefined : +facet.active[0],
157
+ high: facet.active[1] == '*' ? undefined : +facet.active[1],
158
+ };
159
+ }
160
+ }
161
+ else if (facet.values instanceof Array) {
162
+ if (facet.type == 'hierarchy') {
163
+ transformedFacet.type = 'value';
164
+ transformedFacet.values = (facet.values || []).map(function (value) {
165
+ return {
166
+ filtered: Boolean(value.active),
167
+ value: value.value,
168
+ label: value.label,
169
+ count: value.count,
170
+ };
171
+ });
172
+ var filterSelected = filters.find(function (f) { return f.field == facet.field; });
173
+ var newValues = [];
174
+ if (filterSelected && !filterSelected.background) {
175
+ var valueLevels = (_a = filterSelected.value) === null || _a === void 0 ? void 0 : _a.split(facet.hierarchyDelimiter || '>');
176
+ if (valueLevels) {
177
+ for (var i = valueLevels.length - 1; i >= 0; i--) {
178
+ var valueSplit = valueLevels.slice(0, i + 1);
179
+ var value = valueSplit.join(facet.hierarchyDelimiter);
180
+ newValues.unshift({
181
+ value: value,
182
+ filtered: value == filterSelected.value,
183
+ label: valueSplit[valueSplit.length - 1],
184
+ });
185
+ }
186
+ }
187
+ newValues.unshift({
188
+ value: undefined,
189
+ filtered: false,
190
+ label: 'View All',
191
+ });
192
+ }
193
+ transformedFacet.values = newValues.concat(transformedFacet.values);
194
+ }
195
+ else if (facet.values[0].type == 'value') {
196
+ transformedFacet.type = 'value';
197
+ transformedFacet.values = facet.values.map(function (value) {
198
+ return {
199
+ filtered: value.active,
200
+ value: value.value,
201
+ label: value.label,
202
+ count: value.count,
203
+ };
204
+ });
205
+ }
206
+ else if (facet.values[0].type == 'range') {
207
+ transformedFacet.type = 'range-buckets';
208
+ transformedFacet.values = facet.values.map(function (value) {
209
+ return {
210
+ filtered: value.active,
211
+ low: value.low == '*' ? undefined : value.low != null ? +value.low : undefined,
212
+ high: value.high == '*' ? undefined : value.high != null ? +value.high : undefined,
213
+ label: value.label,
214
+ count: value.count,
215
+ };
216
+ });
217
+ }
218
+ }
219
+ return transformedFacet;
220
+ });
221
+ // limit facets based on request
222
+ if (limit) {
223
+ transformedFacets = transformedFacets.slice(0, limit);
224
+ }
225
+ // limit facet values based on request
226
+ if (valueLimit) {
227
+ transformedFacets = transformedFacets.map(function (facet) {
228
+ if (facet.values) {
229
+ facet.values = facet.values.slice(0, valueLimit);
230
+ }
231
+ return facet;
232
+ });
233
+ }
234
+ return transformedFacets;
235
+ };
236
+ transformSearchResponse.sorting = function (response) {
237
+ var _a;
238
+ var sorts = ((_a = response === null || response === void 0 ? void 0 : response.sorting) === null || _a === void 0 ? void 0 : _a.options) || [];
239
+ return sorts
240
+ .filter(function (sort) { return sort.active; })
241
+ .map(function (sort) {
242
+ return {
243
+ field: sort.field,
244
+ direction: sort.direction,
245
+ };
246
+ });
247
+ };
248
+ transformSearchResponse.merchandising = function (response) {
249
+ var merchandising = response === null || response === void 0 ? void 0 : response.merchandising;
250
+ if ((merchandising === null || merchandising === void 0 ? void 0 : merchandising.content) && Array.isArray(merchandising.content) && !merchandising.content.length) {
251
+ merchandising.content = {};
252
+ }
253
+ return {
254
+ redirect: (merchandising === null || merchandising === void 0 ? void 0 : merchandising.redirect) || '',
255
+ content: (merchandising === null || merchandising === void 0 ? void 0 : merchandising.content) || {},
256
+ campaigns: (merchandising === null || merchandising === void 0 ? void 0 : merchandising.triggeredCampaigns) || [],
257
+ personalized: merchandising === null || merchandising === void 0 ? void 0 : merchandising.personalized,
258
+ experiments: (merchandising === null || merchandising === void 0 ? void 0 : merchandising.experiments) || [],
259
+ };
260
+ };
261
+ transformSearchResponse.search = function (response, request) {
262
+ var _a, _b, _c, _d, _e, _f, _g;
263
+ var searchObj = {
264
+ query: (_b = (_a = request === null || request === void 0 ? void 0 : request.search) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.string,
265
+ didYouMean: (_c = response === null || response === void 0 ? void 0 : response.didYouMean) === null || _c === void 0 ? void 0 : _c.query,
266
+ matchType: (_d = response === null || response === void 0 ? void 0 : response.query) === null || _d === void 0 ? void 0 : _d.matchType,
267
+ };
268
+ if (((_e = response === null || response === void 0 ? void 0 : response.query) === null || _e === void 0 ? void 0 : _e.corrected) && (response === null || response === void 0 ? void 0 : response.query.original)) {
269
+ // integrated spell correction is enabled
270
+ searchObj.query = (_f = response === null || response === void 0 ? void 0 : response.query) === null || _f === void 0 ? void 0 : _f.corrected;
271
+ searchObj.originalQuery = (_g = response === null || response === void 0 ? void 0 : response.query) === null || _g === void 0 ? void 0 : _g.original;
272
+ }
273
+ return searchObj;
274
+ };
275
+ transformSearchResponse.tracking = function (response) {
276
+ return {
277
+ responseId: response.responseId,
278
+ };
279
+ };
280
+ // used for HTML entities decoding
281
+ function decodeProperty(encoded) {
282
+ if (Array.isArray(encoded)) {
283
+ return encoded.map(function (item) {
284
+ if (typeof item === 'string') {
285
+ return (0, snap_toolbox_1.unescapeHTML)(String(item));
286
+ }
287
+ return item;
288
+ });
289
+ }
290
+ else {
291
+ if (typeof encoded === 'string') {
292
+ return (0, snap_toolbox_1.unescapeHTML)(encoded);
293
+ }
294
+ return (0, snap_toolbox_1.unescapeHTML)(JSON.stringify(encoded));
295
+ }
296
+ }
@@ -0,0 +1,18 @@
1
+ import { AutocompleteResponseModelAllOfAutocomplete } from '@athoscommerce/snapi-types';
2
+ import { SuggestResponseModel } from '../../types';
3
+ export declare function transformSuggestResponse(response: SuggestResponseModel): AutocompleteResponseModelAllOfAutocomplete;
4
+ export declare namespace transformSuggestResponse {
5
+ var suggested: (response: SuggestResponseModel) => {
6
+ text?: undefined;
7
+ type?: undefined;
8
+ source?: undefined;
9
+ } | {
10
+ text: string;
11
+ type: string | undefined;
12
+ source: string | undefined;
13
+ };
14
+ var alternatives: (response: SuggestResponseModel) => {
15
+ text: string;
16
+ }[];
17
+ }
18
+ //# sourceMappingURL=suggestResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestResponse.d.ts","sourceRoot":"","sources":["../../../../src/Client/transforms/suggestResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0CAA0C,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,0CAA0C,CAOnH;yBAPe,wBAAwB;8BASQ,oBAAoB;;;;;;;;;iCAYjB,oBAAoB"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformSuggestResponse = transformSuggestResponse;
4
+ function transformSuggestResponse(response) {
5
+ return {
6
+ query: response === null || response === void 0 ? void 0 : response.query,
7
+ correctedQuery: response === null || response === void 0 ? void 0 : response['corrected-query'],
8
+ suggested: transformSuggestResponse.suggested(response),
9
+ alternatives: transformSuggestResponse.alternatives(response),
10
+ };
11
+ }
12
+ transformSuggestResponse.suggested = function (response) {
13
+ var _a, _b, _c;
14
+ if (typeof response != 'object' || !response.suggested || typeof response.suggested != 'object') {
15
+ return {};
16
+ }
17
+ return {
18
+ text: (_a = response.suggested) === null || _a === void 0 ? void 0 : _a.text,
19
+ type: (_b = response.suggested) === null || _b === void 0 ? void 0 : _b.type,
20
+ source: (_c = response.suggested) === null || _c === void 0 ? void 0 : _c.source,
21
+ };
22
+ };
23
+ transformSuggestResponse.alternatives = function (response) {
24
+ var alternatives = (response === null || response === void 0 ? void 0 : response.alternatives) || [];
25
+ return alternatives.map(function (alternative) {
26
+ return {
27
+ text: alternative.text,
28
+ };
29
+ });
30
+ };
@@ -0,0 +1,2 @@
1
+ export declare const fibonacci: (num: number) => number;
2
+ //# sourceMappingURL=fibonacci.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fibonacci.d.ts","sourceRoot":"","sources":["../../../../src/Client/utils/fibonacci.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAavC,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fibonacci = void 0;
4
+ var fibonacci = function (num) {
5
+ var a = 1, b = 0, temp;
6
+ while (num >= 0) {
7
+ temp = a;
8
+ a = a + b;
9
+ b = temp;
10
+ num--;
11
+ }
12
+ return b;
13
+ };
14
+ exports.fibonacci = fibonacci;
@@ -0,0 +1,2 @@
1
+ export * from './mergeParams';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Client/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mergeParams"), exports);
@@ -0,0 +1,2 @@
1
+ export declare function mergeParams(...args: any[]): any;
2
+ //# sourceMappingURL=mergeParams.d.ts.map
@@ -0,0 +1 @@
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,CAoB/C"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeParams = mergeParams;
4
+ function mergeParams() {
5
+ var args = [];
6
+ for (var _i = 0; _i < arguments.length; _i++) {
7
+ args[_i] = arguments[_i];
8
+ }
9
+ var ret = {};
10
+ args.reverse().forEach(function (params) {
11
+ Object.keys(params).forEach(function (key) {
12
+ var incoming = params[key];
13
+ var existing = ret[key];
14
+ if (incoming instanceof Array) {
15
+ var base_1 = existing !== undefined ? (existing instanceof Array ? existing : [existing]) : [];
16
+ ret[key] = base_1.concat(incoming.filter(function (v) { return base_1.indexOf(v) === -1; }));
17
+ }
18
+ else if (existing instanceof Array) {
19
+ ret[key] = existing.indexOf(incoming) === -1 ? [incoming].concat(existing) : existing;
20
+ }
21
+ else {
22
+ ret[key] = incoming;
23
+ }
24
+ });
25
+ });
26
+ return ret;
27
+ }
@@ -0,0 +1,3 @@
1
+ export * from './Client/Client';
2
+ export { ClientGlobals, ClientConfig, TrendingResponseModel, RecommendCombinedResponseModel, ProfileResponseModel, RecommendResponseModel, RecommendRequestModel, RecommendationRequestFilterModel, } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EACN,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,gCAAgC,GAChC,MAAM,SAAS,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Client/Client"), exports);
@@ -0,0 +1,212 @@
1
+ import { AppMode } from '@athoscommerce/snap-toolbox';
2
+ import type { MetaRequestModel, SearchResponseModelResult, SearchRequestModel, MetaResponseModel } from '@athoscommerce/snapi-types';
3
+ export type HTTPHeaders = {
4
+ [key: string]: string;
5
+ };
6
+ export type SearchRequesterPaths = {
7
+ autocomplete?: string;
8
+ search?: string;
9
+ category?: string;
10
+ finder?: string;
11
+ };
12
+ export type MetaRequesterPaths = {
13
+ meta?: string;
14
+ };
15
+ export type SuggestRequesterPaths = {
16
+ suggest?: string;
17
+ trending?: string;
18
+ };
19
+ export type RecommendRequesterPaths = {
20
+ recommend?: string;
21
+ profile?: string;
22
+ };
23
+ type RequesterConfig<RequestType, PathConfigurationType> = {
24
+ origin?: string;
25
+ headers?: HTTPHeaders;
26
+ cache?: CacheConfig;
27
+ globals?: Partial<RequestType>;
28
+ paths?: Partial<PathConfigurationType>;
29
+ };
30
+ export type ClientConfig = {
31
+ mode?: keyof typeof AppMode | AppMode;
32
+ initiator?: string;
33
+ fetchApi?: WindowOrWorkerGlobalScope['fetch'];
34
+ meta?: RequesterConfig<MetaRequestModel, MetaRequesterPaths>;
35
+ search?: RequesterConfig<SearchRequestModel, SearchRequesterPaths>;
36
+ recommend?: RequesterConfig<RecommendRequestModel, RecommendRequesterPaths>;
37
+ suggest?: RequesterConfig<SuggestRequestModel, SuggestRequesterPaths>;
38
+ };
39
+ export type CacheConfig = Partial<DefaultCacheConfig>;
40
+ export type DefaultCacheConfig = {
41
+ enabled: boolean;
42
+ ttl: number;
43
+ maxSize: number;
44
+ purgeable: boolean;
45
+ entries?: {
46
+ [key: string]: Response;
47
+ };
48
+ };
49
+ export type CacheEntry = {
50
+ value: Response;
51
+ expires: number;
52
+ purgeable?: boolean;
53
+ };
54
+ export type Cache = {
55
+ [key: string]: CacheEntry;
56
+ };
57
+ export type GenericGlobals = {
58
+ [configurationPath: string]: any;
59
+ };
60
+ export type ClientGlobals = GenericGlobals & {
61
+ siteId: string;
62
+ };
63
+ export type SuggestRequestModel = {
64
+ siteId: string;
65
+ query: string;
66
+ language?: string;
67
+ suggestionCount?: number;
68
+ productCount?: number;
69
+ disableSpellCorrect?: boolean;
70
+ };
71
+ export type SuggestResponseModelSuggestion = {
72
+ text: string;
73
+ type?: string;
74
+ source?: string;
75
+ popularity?: number;
76
+ completed?: {
77
+ token: string;
78
+ query: string;
79
+ type: string;
80
+ }[];
81
+ };
82
+ export type SuggestResponseModel = {
83
+ query: string;
84
+ 'corrected-query'?: string;
85
+ suggested?: SuggestResponseModelSuggestion;
86
+ alternatives?: SuggestResponseModelSuggestion[];
87
+ };
88
+ export type TrendingRequestModel = {
89
+ siteId: string;
90
+ limit?: number;
91
+ };
92
+ export type TrendingResponseModel = {
93
+ trending: {
94
+ queries: {
95
+ popularity: number;
96
+ searchQuery: string;
97
+ }[];
98
+ };
99
+ };
100
+ export type RecommendRequestModel = RecommendRequestGlobalsModel & RecommendRequestOptionsModel & {
101
+ tag: string;
102
+ profile?: RecommendRequestOptionsModel;
103
+ };
104
+ export type RecommendRequestGlobalsModel = {
105
+ product?: string;
106
+ products?: string[];
107
+ cart?: string[];
108
+ lastViewed?: string[];
109
+ shopper?: string;
110
+ filters?: RecommendationRequestFilterModel[];
111
+ blockedItems?: string[];
112
+ batchId?: number;
113
+ test?: boolean;
114
+ };
115
+ export type RecommendRequestOptionsModel = {
116
+ siteId?: string;
117
+ categories?: string[];
118
+ brands?: string[];
119
+ branch?: string;
120
+ filters?: RecommendationRequestFilterModel[];
121
+ blockedItems?: string[];
122
+ batched?: boolean;
123
+ limit?: number;
124
+ order?: number;
125
+ query?: string;
126
+ dedupe?: boolean;
127
+ };
128
+ export type RecommendPostRequestModel = {
129
+ siteId: string;
130
+ profiles: RecommendPostRequestProfileModel[];
131
+ product?: string;
132
+ products?: string[];
133
+ shopper?: string;
134
+ cart?: string[];
135
+ lastViewed?: string[];
136
+ test?: boolean;
137
+ withRecInfo?: boolean;
138
+ blockedItems?: string[];
139
+ filters?: RecommendPostRequestFiltersModel[];
140
+ };
141
+ export type RecommendPostRequestProfileModel = {
142
+ tag: string;
143
+ categories?: string[];
144
+ brands?: string[];
145
+ blockedItems?: string[];
146
+ limit?: number;
147
+ dedupe?: boolean;
148
+ searchTerm?: string;
149
+ filters?: RecommendPostRequestFiltersModel[];
150
+ };
151
+ export type RecommendPostRequestFiltersModel = {
152
+ field: string;
153
+ type: '=' | '==' | '===' | '!=' | '!==' | '>' | '<' | '>=' | '<=';
154
+ values: (string | number)[];
155
+ };
156
+ export type RecommendResponseModel = {
157
+ profile: {
158
+ tag: string;
159
+ };
160
+ results: SearchResponseModelResult[];
161
+ responseId: string;
162
+ };
163
+ export type ProfileRequestModel = {
164
+ siteId: string;
165
+ tag: string;
166
+ branch?: string;
167
+ };
168
+ export type ProfileResponseModel = {
169
+ profile: {
170
+ tag: string;
171
+ placement: string;
172
+ display: {
173
+ threshold: number;
174
+ template: {
175
+ name: string;
176
+ uuid: string;
177
+ markup?: string;
178
+ styles?: string;
179
+ component?: string;
180
+ branch?: string;
181
+ group?: string;
182
+ type?: string;
183
+ };
184
+ templateParameters: {
185
+ [any: string]: unknown;
186
+ };
187
+ };
188
+ };
189
+ };
190
+ export type RecommendationRequestFilterModel = RecommendationRequestRangeFilterModel | RecommendationRequestValueFilterModel;
191
+ type RecommendationRequestRangeFilterModel = {
192
+ type: 'range';
193
+ field: string;
194
+ value: {
195
+ low?: number;
196
+ high?: number;
197
+ };
198
+ };
199
+ type RecommendationRequestValueFilterModel = {
200
+ type: 'value';
201
+ field: string;
202
+ value: string | number;
203
+ };
204
+ export type RecommendCombinedResponseModel = ProfileResponseModel & {
205
+ results: SearchResponseModelResult[];
206
+ } & {
207
+ meta: MetaResponseModel;
208
+ } & {
209
+ responseId: string;
210
+ };
211
+ export {};
212
+ //# sourceMappingURL=types.d.ts.map