@algolia/recommend 4.23.0 → 4.23.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/recommend.cjs.js +9 -2
- package/dist/recommend.d.ts +353 -0
- package/dist/recommend.esm.browser.js +10 -3
- package/dist/recommend.umd.js +2 -2
- package/package.json +15 -12
package/dist/recommend.cjs.js
CHANGED
|
@@ -188,7 +188,14 @@ function recommend(appId, apiKey, options) {
|
|
|
188
188
|
},
|
|
189
189
|
});
|
|
190
190
|
}
|
|
191
|
-
|
|
192
|
-
recommend.version = clientCommon.version;
|
|
191
|
+
/* eslint-disable functional/immutable-data */
|
|
192
|
+
recommend.version = clientCommon.version;
|
|
193
|
+
recommend.getFrequentlyBoughtTogether = getFrequentlyBoughtTogether;
|
|
194
|
+
recommend.getRecommendations = getRecommendations;
|
|
195
|
+
recommend.getRelatedProducts = getRelatedProducts;
|
|
196
|
+
recommend.getTrendingFacets = getTrendingFacets;
|
|
197
|
+
recommend.getTrendingItems = getTrendingItems;
|
|
198
|
+
recommend.getLookingSimilar = getLookingSimilar;
|
|
199
|
+
recommend.getRecommendedForYou = getRecommendedForYou;
|
|
193
200
|
|
|
194
201
|
module.exports = recommend;
|
package/dist/recommend.d.ts
CHANGED
|
@@ -34,6 +34,17 @@ declare function recommend(appId: string, apiKey: string, options?: RecommendOpt
|
|
|
34
34
|
|
|
35
35
|
declare namespace recommend {
|
|
36
36
|
var version: string;
|
|
37
|
+
var getFrequentlyBoughtTogether: (base: BaseRecommendClient) => <TObject>(queries: readonly Pick<RecommendationsQuery, "queryParameters" | "objectID" | "indexName" | "threshold" | "maxRecommendations">[], requestOptions?: (RequestOptions_2 & SearchOptions_2) | undefined) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;
|
|
38
|
+
var getRecommendations: (base: BaseRecommendClient) => <TObject>(queries: readonly (RecommendationsQuery | (TrendingItemsQuery & {
|
|
39
|
+
readonly model: TrendingModel;
|
|
40
|
+
}) | (TrendingFacetsQuery & {
|
|
41
|
+
readonly model: TrendingModel;
|
|
42
|
+
}) | RecommendedForYouQuery)[], requestOptions?: (RequestOptions_2 & SearchOptions_2) | undefined) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;
|
|
43
|
+
var getRelatedProducts: (base: BaseRecommendClient) => <TObject>(queries: readonly Pick<RecommendationsQuery, "queryParameters" | "objectID" | "indexName" | "threshold" | "maxRecommendations" | "fallbackParameters">[], requestOptions?: (RequestOptions_2 & SearchOptions_2) | undefined) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;
|
|
44
|
+
var getTrendingFacets: (base: BaseRecommendClient) => <TObject>(queries: readonly TrendingFacetsQuery[], requestOptions?: (RequestOptions_2 & SearchOptions_2) | undefined) => Readonly<Promise<RecommendTrendingFacetsQueriesResponse>>;
|
|
45
|
+
var getTrendingItems: (base: BaseRecommendClient) => <TObject>(queries: readonly TrendingItemsQuery[], requestOptions?: (RequestOptions_2 & SearchOptions_2) | undefined) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;
|
|
46
|
+
var getLookingSimilar: (base: BaseRecommendClient) => <TObject>(queries: readonly Pick<RecommendationsQuery, "queryParameters" | "objectID" | "indexName" | "threshold" | "maxRecommendations" | "fallbackParameters">[], requestOptions?: (RequestOptions_2 & SearchOptions_2) | undefined) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;
|
|
47
|
+
var getRecommendedForYou: (base: BaseRecommendClient) => <TObject>(queries: readonly Pick<RecommendedForYouQuery, "queryParameters" | "indexName" | "threshold" | "maxRecommendations" | "fallbackParameters">[], requestOptions?: (RequestOptions_2 & SearchOptions_2) | undefined) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;
|
|
37
48
|
}
|
|
38
49
|
export default recommend;
|
|
39
50
|
|
|
@@ -130,6 +141,348 @@ export declare type RecommendTrendingFacetsQueriesResponse = {
|
|
|
130
141
|
|
|
131
142
|
export declare type RelatedProductsQuery = Omit<RecommendationsQuery, 'model'>;
|
|
132
143
|
|
|
144
|
+
declare type RequestOptions_2 = {
|
|
145
|
+
/**
|
|
146
|
+
* If the given request should persist on the cache. Keep in mind,
|
|
147
|
+
* that some methods may have this option enabled by default.
|
|
148
|
+
*/
|
|
149
|
+
readonly cacheable?: boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Custom timeout for the request. Note that, in normal situacions
|
|
152
|
+
* the given timeout will be applied. But the transporter layer may
|
|
153
|
+
* increase this timeout if there is need for it.
|
|
154
|
+
*/
|
|
155
|
+
readonly timeout?: number;
|
|
156
|
+
/**
|
|
157
|
+
* Custom headers for the request. This headers are
|
|
158
|
+
* going to be merged the transporter headers.
|
|
159
|
+
*/
|
|
160
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
161
|
+
/**
|
|
162
|
+
* Custom query parameters for the request. This query parameters are
|
|
163
|
+
* going to be merged the transporter query parameters.
|
|
164
|
+
*/
|
|
165
|
+
readonly queryParameters?: Record<string, any>;
|
|
166
|
+
/**
|
|
167
|
+
* Custom data for the request. This data are
|
|
168
|
+
* going to be merged the transporter data.
|
|
169
|
+
*/
|
|
170
|
+
readonly data?: Record<string, any>;
|
|
171
|
+
/**
|
|
172
|
+
* Additional request body values. It's only taken in
|
|
173
|
+
* consideration in `POST` and `PUT` requests.
|
|
174
|
+
*/
|
|
175
|
+
[key: string]: any;
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
declare type SearchOptions_2 = {
|
|
179
|
+
/**
|
|
180
|
+
* Create a new query with an empty search query.
|
|
181
|
+
*/
|
|
182
|
+
readonly query?: string;
|
|
183
|
+
/**
|
|
184
|
+
* Allows a search for similar objects, but the query has to be constructed on your end and included alongside an empty query.
|
|
185
|
+
*
|
|
186
|
+
* The similarQuery should be made from the tags and keywords of the relevant object.
|
|
187
|
+
*/
|
|
188
|
+
readonly similarQuery?: string;
|
|
189
|
+
/**
|
|
190
|
+
* Filter hits by facet value.
|
|
191
|
+
*/
|
|
192
|
+
readonly facetFilters?: string | readonly string[] | ReadonlyArray<readonly string[] | string>;
|
|
193
|
+
/**
|
|
194
|
+
* Create filters for ranking purposes, where records that match the filter are ranked highest.
|
|
195
|
+
*/
|
|
196
|
+
readonly optionalFilters?: string | readonly string[] | ReadonlyArray<readonly string[] | string>;
|
|
197
|
+
/**
|
|
198
|
+
* Filter on numeric attributes.
|
|
199
|
+
*/
|
|
200
|
+
readonly numericFilters?: string | readonly string[] | ReadonlyArray<readonly string[] | string>;
|
|
201
|
+
/**
|
|
202
|
+
* Filter hits by tags. tagFilters is a different way of filtering, which relies on the _tags
|
|
203
|
+
* attribute. It uses a simpler syntax than filters. You can use it when you want to do
|
|
204
|
+
* simple filtering based on tags.
|
|
205
|
+
*/
|
|
206
|
+
readonly tagFilters?: string | readonly string[] | ReadonlyArray<readonly string[] | string>;
|
|
207
|
+
/**
|
|
208
|
+
* Determines how to calculate the total score for filtering.
|
|
209
|
+
*/
|
|
210
|
+
readonly sumOrFiltersScores?: boolean;
|
|
211
|
+
/**
|
|
212
|
+
* Filter the query with numeric, facet and/or tag filters.
|
|
213
|
+
*/
|
|
214
|
+
readonly filters?: string;
|
|
215
|
+
/**
|
|
216
|
+
* Specify the page to retrieve.
|
|
217
|
+
*/
|
|
218
|
+
readonly page?: number;
|
|
219
|
+
/**
|
|
220
|
+
* Set the number of hits per page.
|
|
221
|
+
*/
|
|
222
|
+
readonly hitsPerPage?: number;
|
|
223
|
+
/**
|
|
224
|
+
* Specify the offset of the first hit to return.
|
|
225
|
+
*/
|
|
226
|
+
readonly offset?: number;
|
|
227
|
+
/**
|
|
228
|
+
* Set the number of hits to retrieve (used only with offset).
|
|
229
|
+
*/
|
|
230
|
+
readonly length?: number;
|
|
231
|
+
/**
|
|
232
|
+
* List of attributes to highlight.
|
|
233
|
+
*/
|
|
234
|
+
readonly attributesToHighlight?: readonly string[];
|
|
235
|
+
/**
|
|
236
|
+
* List of attributes to snippet, with an optional maximum number of words to snippet.
|
|
237
|
+
*/
|
|
238
|
+
readonly attributesToSnippet?: readonly string[];
|
|
239
|
+
/**
|
|
240
|
+
* Gives control over which attributes to retrieve and which not to retrieve.
|
|
241
|
+
*/
|
|
242
|
+
readonly attributesToRetrieve?: readonly string[];
|
|
243
|
+
/**
|
|
244
|
+
* The HTML string to insert before the highlighted parts in all highlight and snippet results.
|
|
245
|
+
*/
|
|
246
|
+
readonly highlightPreTag?: string;
|
|
247
|
+
/**
|
|
248
|
+
* The HTML string to insert after the highlighted parts in all highlight and snippet results
|
|
249
|
+
*/
|
|
250
|
+
readonly highlightPostTag?: string;
|
|
251
|
+
/**
|
|
252
|
+
* String used as an ellipsis indicator when a snippet is truncated.
|
|
253
|
+
*/
|
|
254
|
+
readonly snippetEllipsisText?: string;
|
|
255
|
+
/**
|
|
256
|
+
* Restrict highlighting and snippeting to items that matched the query.
|
|
257
|
+
*/
|
|
258
|
+
readonly restrictHighlightAndSnippetArrays?: boolean;
|
|
259
|
+
/**
|
|
260
|
+
* Facets to retrieve.
|
|
261
|
+
*/
|
|
262
|
+
readonly facets?: readonly string[];
|
|
263
|
+
/**
|
|
264
|
+
* Maximum number of facet values to return for each facet during a regular search.
|
|
265
|
+
*/
|
|
266
|
+
readonly maxValuesPerFacet?: number;
|
|
267
|
+
/**
|
|
268
|
+
* Force faceting to be applied after de-duplication (via the Distinct setting).
|
|
269
|
+
*/
|
|
270
|
+
readonly facetingAfterDistinct?: boolean;
|
|
271
|
+
/**
|
|
272
|
+
* Minimum number of characters a word in the query string must contain to accept matches with 1 typo
|
|
273
|
+
*/
|
|
274
|
+
readonly minWordSizefor1Typo?: number;
|
|
275
|
+
/**
|
|
276
|
+
* Minimum number of characters a word in the query string must contain to accept matches with 2 typos.
|
|
277
|
+
*/
|
|
278
|
+
readonly minWordSizefor2Typos?: number;
|
|
279
|
+
/**
|
|
280
|
+
* Whether to allow typos on numbers (“numeric tokens”) in the query string.
|
|
281
|
+
*/
|
|
282
|
+
readonly allowTyposOnNumericTokens?: boolean;
|
|
283
|
+
/**
|
|
284
|
+
* List of attributes on which you want to disable typo tolerance.
|
|
285
|
+
*/
|
|
286
|
+
readonly disableTypoToleranceOnAttributes?: readonly string[];
|
|
287
|
+
/**
|
|
288
|
+
* Controls if and how query words are interpreted as prefixes.
|
|
289
|
+
*/
|
|
290
|
+
readonly queryType?: 'prefixLast' | 'prefixAll' | 'prefixNone';
|
|
291
|
+
/**
|
|
292
|
+
* Selects a strategy to remove words from the query when it doesn’t match any hits.
|
|
293
|
+
*/
|
|
294
|
+
readonly removeWordsIfNoResults?: 'none' | 'lastWords' | 'firstWords' | 'allOptional';
|
|
295
|
+
/**
|
|
296
|
+
* Enables the advanced query syntax.
|
|
297
|
+
*/
|
|
298
|
+
readonly advancedSyntax?: boolean;
|
|
299
|
+
/**
|
|
300
|
+
* AdvancedSyntaxFeatures can be exactPhrase or excludeWords
|
|
301
|
+
*/
|
|
302
|
+
readonly advancedSyntaxFeatures?: ReadonlyArray<'exactPhrase' | 'excludeWords'>;
|
|
303
|
+
/**
|
|
304
|
+
* A list of words that should be considered as optional when found in the query.
|
|
305
|
+
*/
|
|
306
|
+
readonly optionalWords?: string | readonly string[];
|
|
307
|
+
/**
|
|
308
|
+
* List of attributes on which you want to disable the exact ranking criterion.
|
|
309
|
+
*/
|
|
310
|
+
readonly disableExactOnAttributes?: readonly string[];
|
|
311
|
+
/**
|
|
312
|
+
* Controls how the exact ranking criterion is computed when the query contains only one word.
|
|
313
|
+
*/
|
|
314
|
+
readonly exactOnSingleWordQuery?: 'attribute' | 'none' | 'word';
|
|
315
|
+
/**
|
|
316
|
+
* List of alternatives that should be considered an exact match by the exact ranking criterion.
|
|
317
|
+
*/
|
|
318
|
+
readonly alternativesAsExact?: ReadonlyArray<'ignorePlurals' | 'singleWordSynonym' | 'multiWordsSynonym'>;
|
|
319
|
+
/**
|
|
320
|
+
* Whether rules should be globally enabled.
|
|
321
|
+
*/
|
|
322
|
+
readonly enableRules?: boolean;
|
|
323
|
+
/**
|
|
324
|
+
* Enables contextual rules.
|
|
325
|
+
*/
|
|
326
|
+
readonly ruleContexts?: readonly string[];
|
|
327
|
+
/**
|
|
328
|
+
* Enables de-duplication or grouping of results.
|
|
329
|
+
*/
|
|
330
|
+
readonly distinct?: boolean | number;
|
|
331
|
+
/**
|
|
332
|
+
* Whether the current query will be taken into account in the Analytics
|
|
333
|
+
*/
|
|
334
|
+
readonly analytics?: boolean;
|
|
335
|
+
/**
|
|
336
|
+
* List of tags to apply to the query in the analytics.
|
|
337
|
+
*/
|
|
338
|
+
readonly analyticsTags?: readonly string[];
|
|
339
|
+
/**
|
|
340
|
+
* Whether to take into account an index’s synonyms for a particular search.
|
|
341
|
+
*/
|
|
342
|
+
readonly synonyms?: boolean;
|
|
343
|
+
/**
|
|
344
|
+
* Whether to highlight and snippet the original word that matches the synonym or the synonym itself.
|
|
345
|
+
*/
|
|
346
|
+
readonly replaceSynonymsInHighlight?: boolean;
|
|
347
|
+
/**
|
|
348
|
+
* Precision of the proximity ranking criterion.
|
|
349
|
+
*/
|
|
350
|
+
readonly minProximity?: number;
|
|
351
|
+
/**
|
|
352
|
+
* Choose which fields the response will contain. Applies to search and browse queries.
|
|
353
|
+
*/
|
|
354
|
+
readonly responseFields?: readonly string[];
|
|
355
|
+
/**
|
|
356
|
+
* Maximum number of facet hits to return during a search for facet values.
|
|
357
|
+
*/
|
|
358
|
+
readonly maxFacetHits?: number;
|
|
359
|
+
/**
|
|
360
|
+
* Whether to include or exclude a query from the processing-time percentile computation.
|
|
361
|
+
*/
|
|
362
|
+
readonly percentileComputation?: boolean;
|
|
363
|
+
/**
|
|
364
|
+
* Enable the Click Analytics feature.
|
|
365
|
+
*/
|
|
366
|
+
readonly clickAnalytics?: boolean;
|
|
367
|
+
/**
|
|
368
|
+
* The `personalizationImpact` parameter sets the percentage of the impact that personalization has on ranking records. The
|
|
369
|
+
* value must be between 0 and 100 (inclusive). This parameter will not be taken into account if `enablePersonalization`
|
|
370
|
+
* is **false**.
|
|
371
|
+
*/
|
|
372
|
+
readonly personalizationImpact?: number;
|
|
373
|
+
/**
|
|
374
|
+
* Enable personalization for the query
|
|
375
|
+
*/
|
|
376
|
+
readonly enablePersonalization?: boolean;
|
|
377
|
+
/**
|
|
378
|
+
* Restricts a given query to look in only a subset of your searchable attributes.
|
|
379
|
+
*/
|
|
380
|
+
readonly restrictSearchableAttributes?: readonly string[];
|
|
381
|
+
/**
|
|
382
|
+
* Controls how facet values are sorted.
|
|
383
|
+
*/
|
|
384
|
+
readonly sortFacetValuesBy?: 'count' | 'alpha';
|
|
385
|
+
/**
|
|
386
|
+
* Controls whether typo tolerance is enabled and how it is applied.
|
|
387
|
+
*/
|
|
388
|
+
readonly typoTolerance?: boolean | 'min' | 'strict';
|
|
389
|
+
/**
|
|
390
|
+
* Search for entries around a central geolocation, enabling a geo search within a circular area.
|
|
391
|
+
*/
|
|
392
|
+
readonly aroundLatLng?: string;
|
|
393
|
+
/**
|
|
394
|
+
* Search for entries around a given location automatically computed from the requester’s IP address.
|
|
395
|
+
*/
|
|
396
|
+
readonly aroundLatLngViaIP?: boolean;
|
|
397
|
+
/**
|
|
398
|
+
* Define the maximum radius for a geo search (in meters).
|
|
399
|
+
*/
|
|
400
|
+
readonly aroundRadius?: number | 'all';
|
|
401
|
+
/**
|
|
402
|
+
* Precision of geo search (in meters), to add grouping by geo location to the ranking formula.
|
|
403
|
+
*/
|
|
404
|
+
readonly aroundPrecision?: number | ReadonlyArray<{
|
|
405
|
+
readonly from: number;
|
|
406
|
+
readonly value: number;
|
|
407
|
+
}>;
|
|
408
|
+
/**
|
|
409
|
+
* Minimum radius (in meters) used for a geo search when aroundRadius is not set.
|
|
410
|
+
*/
|
|
411
|
+
readonly minimumAroundRadius?: number;
|
|
412
|
+
/**
|
|
413
|
+
* Search inside a rectangular area (in geo coordinates).
|
|
414
|
+
*/
|
|
415
|
+
readonly insideBoundingBox?: ReadonlyArray<readonly number[]> | string;
|
|
416
|
+
/**
|
|
417
|
+
* Search inside a polygon (in geo coordinates).
|
|
418
|
+
*/
|
|
419
|
+
readonly insidePolygon?: ReadonlyArray<readonly number[]>;
|
|
420
|
+
/**
|
|
421
|
+
* Treats singular, plurals, and other forms of declensions as matching terms.
|
|
422
|
+
*/
|
|
423
|
+
readonly ignorePlurals?: boolean | readonly string[];
|
|
424
|
+
/**
|
|
425
|
+
* Removes stop (common) words from the query before executing it.
|
|
426
|
+
*/
|
|
427
|
+
readonly removeStopWords?: boolean | readonly string[];
|
|
428
|
+
/**
|
|
429
|
+
* List of supported languages with their associated language ISO code.
|
|
430
|
+
*
|
|
431
|
+
* Apply a set of natural language best practices such as ignorePlurals,
|
|
432
|
+
* removeStopWords, removeWordsIfNoResults, analyticsTags and ruleContexts.
|
|
433
|
+
*/
|
|
434
|
+
readonly naturalLanguages?: readonly string[];
|
|
435
|
+
/**
|
|
436
|
+
* When true, each hit in the response contains an additional _rankingInfo object.
|
|
437
|
+
*/
|
|
438
|
+
readonly getRankingInfo?: boolean;
|
|
439
|
+
/**
|
|
440
|
+
* A user identifier.
|
|
441
|
+
* Format: alpha numeric string [a-zA-Z0-9_-]
|
|
442
|
+
* Length: between 1 and 64 characters.
|
|
443
|
+
*/
|
|
444
|
+
readonly userToken?: string;
|
|
445
|
+
/**
|
|
446
|
+
* Can be to enable or disable A/B tests at query time.
|
|
447
|
+
* Engine's default: true
|
|
448
|
+
*/
|
|
449
|
+
readonly enableABTest?: boolean;
|
|
450
|
+
/**
|
|
451
|
+
* Enable word segmentation (also called decompounding) at query time for
|
|
452
|
+
* compatible languages. For example, this turns the Dutch query
|
|
453
|
+
* "spaanplaatbehang" into "spaan plaat behang" to retrieve more relevant
|
|
454
|
+
* results.
|
|
455
|
+
*/
|
|
456
|
+
readonly decompoundQuery?: boolean;
|
|
457
|
+
/**
|
|
458
|
+
* The relevancy threshold to apply to search in a virtual index [0-100]. A Bigger
|
|
459
|
+
* value means fewer, but more relevant results, smaller value means more, but
|
|
460
|
+
* less relevant results.
|
|
461
|
+
*/
|
|
462
|
+
readonly relevancyStrictness?: number;
|
|
463
|
+
/**
|
|
464
|
+
* Whether this search should use Dynamic Re-Ranking.
|
|
465
|
+
* @link https://www.algolia.com/doc/guides/algolia-ai/re-ranking/
|
|
466
|
+
*
|
|
467
|
+
* Note: You need to turn on Dynamic Re-Ranking on your index for it to have an effect on
|
|
468
|
+
* your search results. You can do this through the Re-Ranking page on the dashboard.
|
|
469
|
+
* This parameter is only used to turn off Dynamic Re-Ranking (with false) at search time.
|
|
470
|
+
*/
|
|
471
|
+
readonly enableReRanking?: boolean;
|
|
472
|
+
/**
|
|
473
|
+
* When Dynamic Re-Ranking is enabled, only records that match these filters will be impacted by Dynamic Re-Ranking.
|
|
474
|
+
*/
|
|
475
|
+
readonly reRankingApplyFilter?: string | readonly string[] | ReadonlyArray<readonly string[] | string> | null;
|
|
476
|
+
/**
|
|
477
|
+
* Sets the languages to be used by language-specific settings and functionalities such as ignorePlurals, removeStopWords, and CJK word-detection.
|
|
478
|
+
*/
|
|
479
|
+
readonly queryLanguages?: readonly string[];
|
|
480
|
+
/**
|
|
481
|
+
* Enriches the API’s response with meta-information as to how the query was processed.
|
|
482
|
+
*/
|
|
483
|
+
readonly explain?: readonly string[];
|
|
484
|
+
};
|
|
485
|
+
|
|
133
486
|
export declare type TrendingFacetHit = {
|
|
134
487
|
readonly _score: number;
|
|
135
488
|
readonly facetName: string;
|
|
@@ -206,7 +206,7 @@ function encode(format, ...args) {
|
|
|
206
206
|
return format.replace(/%s/g, () => encodeURIComponent(args[i++]));
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
const version = '4.23.
|
|
209
|
+
const version = '4.23.2';
|
|
210
210
|
|
|
211
211
|
const AuthMode = {
|
|
212
212
|
/**
|
|
@@ -945,7 +945,14 @@ function recommend(appId, apiKey, options) {
|
|
|
945
945
|
},
|
|
946
946
|
});
|
|
947
947
|
}
|
|
948
|
-
|
|
949
|
-
recommend.version = version;
|
|
948
|
+
/* eslint-disable functional/immutable-data */
|
|
949
|
+
recommend.version = version;
|
|
950
|
+
recommend.getFrequentlyBoughtTogether = getFrequentlyBoughtTogether;
|
|
951
|
+
recommend.getRecommendations = getRecommendations;
|
|
952
|
+
recommend.getRelatedProducts = getRelatedProducts;
|
|
953
|
+
recommend.getTrendingFacets = getTrendingFacets;
|
|
954
|
+
recommend.getTrendingItems = getTrendingItems;
|
|
955
|
+
recommend.getLookingSimilar = getLookingSimilar;
|
|
956
|
+
recommend.getRecommendedForYou = getRecommendedForYou;
|
|
950
957
|
|
|
951
958
|
export default recommend;
|
package/dist/recommend.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! recommend.umd.js | 4.23.
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self)["@algolia/recommend"]=t()}(this,(function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){e(r,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))}))}return r}function n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,o=!1,a=void 0;try{for(var u,i=e[Symbol.iterator]();!(n=(u=i.next()).done)&&(r.push(u.value),!t||r.length!==t);n=!0);}catch(e){o=!0,a=e}finally{try{n||null==i.return||i.return()}finally{if(o)throw a}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function o(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function a(e){var t,r="algoliasearch-client-js-".concat(e.key),o=function(){return void 0===t&&(t=e.localStorage||window.localStorage),t},a=function(){return JSON.parse(o().getItem(r)||"{}")},u=function(e){o().setItem(r,JSON.stringify(e))},i=function(){var t=e.timeToLive?1e3*e.timeToLive:null,r=a(),o=Object.fromEntries(Object.entries(r).filter((function(e){return void 0!==n(e,2)[1].timestamp})));if(u(o),t){var i=Object.fromEntries(Object.entries(o).filter((function(e){var r=n(e,2)[1],o=(new Date).getTime();return!(r.timestamp+t<o)})));u(i)}};return{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){i();var t=JSON.stringify(e);return a()[t]})).then((function(e){return Promise.all([e?e.value:t(),void 0!==e])})).then((function(e){var t=n(e,2),o=t[0],a=t[1];return Promise.all([o,a||r.miss(o)])})).then((function(e){return n(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var n=a();return n[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},o().setItem(r,JSON.stringify(n)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],o().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){o().removeItem(r)}))}}}function u(e){var t=o(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},o=t();return o.then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return n(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,o).catch((function(){return u({caches:t}).get(e,n,o)}))},set:function(e,n){return r.set(e,n).catch((function(){return u({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return u({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return u({caches:t}).clear()}))}}}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var u=n(),i=o&&o.miss||function(){return Promise.resolve()};return u.then((function(e){return i(e)})).then((function(){return u}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function s(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}var c={WithinQueryParameters:0,WithinHeaders:1},l=1,f=2,m=3;function d(e,t){var r=e||{},n=r.data||{};return Object.keys(r).forEach((function(e){-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var h={Read:1,Write:2,Any:3},p=1,v=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function b(e){return"string"==typeof e?{protocol:"https",url:e,accept:h.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||h.Any}}var O="GET",P="POST";function q(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),a=[].concat(o(r),o(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:a.length>0?a.map((function(e){return b(e)})):t}}))}function j(e,t,n,a){var u=[],i=function(e,t){if(e.method===O||void 0===e.data&&void 0===t.data)return;var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}(n,a),s=function(e,t){var n=r(r({},e.headers),t.headers),o={};return Object.keys(n).forEach((function(e){var t=n[e];o[e.toLowerCase()]=t})),o}(e,a),c=n.method,l=n.method!==O?{}:r(r({},n.data),a.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),l),a.queryParameters),m=0,d=function t(r,o){var l=r.pop();if(void 0===l)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:T(u)};var d={data:i,headers:s,method:c,url:w(l,n.path,f),connectTimeout:o(m,e.timeouts.connect),responseTimeout:o(m,a.timeout)},h=function(e){var t={request:d,response:e,host:l,triesLeft:r.length};return u.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var a=h(n);return n.isTimedOut&&m++,Promise.all([e.logger.info("Retryable failure",A(a)),e.hostsCache.set(l,y(l,n.isTimedOut?g:v))]).then((function(){return t(r,o)}))},onFail:function(e){throw h(e),function(e,t){var r=e.content,n=e.status,o=r;try{o=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(o,n,t)}(e,T(u))}};return e.requester.send(d).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return q(e.hostsCache,t).then((function(e){return d(o(e.statelessHosts).reverse(),e.getTimeout)}))}function S(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function w(e,t,r){var n,o=(n=r,Object.keys(n).map((function(e){return function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var o=0;return e.replace(/%s/g,(function(){return encodeURIComponent(r[o++])}))}("%s=%s",e,(t=n[e],"[object Object]"===Object.prototype.toString.call(t)||"[object Array]"===Object.prototype.toString.call(t)?JSON.stringify(n[e]):n[e]));var t})).join("&")),a="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return o.length&&(a+="?".concat(o)),a}function T(e){return e.map((function(e){return A(e)}))}function A(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var C=function(e){var t=e.appId,o=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===c.WithinHeaders?n:{}},queryParameters:function(){return e===c.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:c.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,o=e.requester,a=e.requestsCache,u=e.responsesCache,i=e.timeouts,s=e.userAgent,c=e.hosts,l=e.queryParameters,f={hostsCache:t,logger:r,requester:o,requestsCache:a,responsesCache:u,timeouts:i,userAgent:s,headers:e.headers,queryParameters:l,hosts:c.map((function(e){return b(e)})),read:function(e,t){var r=d(t,f.timeouts.read),o=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&h.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return o();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,o()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=n(e,2);t[0];return t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&h.Write)})),e,d(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:h.Read},{url:"".concat(t,".algolia.net"),accept:h.Write}].concat(s([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},o.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},o.queryParameters()),e.queryParameters)}));return function(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},k=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{threshold:e.threshold||0})}));return e.transporter.read({method:P,path:"1/indexes/*/recommendations",data:{requests:o},cacheable:!0},n)}},N=function(e){return function(t,n){return k(e)(t.map((function(e){return r(r({},e),{},{fallbackParameters:{},model:"bought-together"})})),n)}},x=function(e){return function(t,n){return k(e)(t.map((function(e){return r(r({},e),{},{model:"related-products"})})),n)}},J=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{model:"trending-facets",threshold:e.threshold||0})}));return e.transporter.read({method:P,path:"1/indexes/*/recommendations",data:{requests:o},cacheable:!0},n)}},E=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{model:"trending-items",threshold:e.threshold||0})}));return e.transporter.read({method:P,path:"1/indexes/*/recommendations",data:{requests:o},cacheable:!0},n)}},R=function(e){return function(t,n){return k(e)(t.map((function(e){return r(r({},e),{},{model:"looking-similar"})})),n)}},I=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{model:"recommended-for-you",threshold:e.threshold||0})}));return e.transporter.read({method:P,path:"1/indexes/*/recommendations",data:{requests:o},cacheable:!0},n)}};function D(e,t,n){var o,s={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,o=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=o(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=o(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(o=m,{debug:function(e,t){return l>=o&&console.debug(e,t),Promise.resolve()},info:function(e,t){return f>=o&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:i(),requestsCache:i({serializable:!1}),hostsCache:u({caches:[a({key:"".concat("4.23.0","-").concat(e)}),i()]}),userAgent:S("4.23.0").add({segment:"Recommend",version:"4.23.0"}).add({segment:"Browser"}),authMode:c.WithinQueryParameters};return C(r(r(r({},s),n),{},{methods:{getFrequentlyBoughtTogether:N,getRecommendations:k,getRelatedProducts:x,getTrendingFacets:J,getTrendingItems:E,getLookingSimilar:R,getRecommendedForYou:I}}))}return D.version="4.23.0",D}));
|
|
1
|
+
/*! recommend.umd.js | 4.23.2 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self)["@algolia/recommend"]=t()}(this,(function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){e(r,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))}))}return r}function n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,o=!1,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(n=(i=u.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(e){o=!0,a=e}finally{try{n||null==u.return||u.return()}finally{if(o)throw a}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function o(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function a(e){var t,r="algoliasearch-client-js-".concat(e.key),o=function(){return void 0===t&&(t=e.localStorage||window.localStorage),t},a=function(){return JSON.parse(o().getItem(r)||"{}")},i=function(e){o().setItem(r,JSON.stringify(e))},u=function(){var t=e.timeToLive?1e3*e.timeToLive:null,r=a(),o=Object.fromEntries(Object.entries(r).filter((function(e){return void 0!==n(e,2)[1].timestamp})));if(i(o),t){var u=Object.fromEntries(Object.entries(o).filter((function(e){var r=n(e,2)[1],o=(new Date).getTime();return!(r.timestamp+t<o)})));i(u)}};return{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){u();var t=JSON.stringify(e);return a()[t]})).then((function(e){return Promise.all([e?e.value:t(),void 0!==e])})).then((function(e){var t=n(e,2),o=t[0],a=t[1];return Promise.all([o,a||r.miss(o)])})).then((function(e){return n(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var n=a();return n[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},o().setItem(r,JSON.stringify(n)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],o().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){o().removeItem(r)}))}}}function i(e){var t=o(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},o=t();return o.then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return n(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,o).catch((function(){return i({caches:t}).get(e,n,o)}))},set:function(e,n){return r.set(e,n).catch((function(){return i({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return i({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return i({caches:t}).clear()}))}}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var i=n(),u=o&&o.miss||function(){return Promise.resolve()};return i.then((function(e){return u(e)})).then((function(){return i}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function s(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}var c={WithinQueryParameters:0,WithinHeaders:1},l=1,f=2,m=3;function d(e,t){var r=e||{},n=r.data||{};return Object.keys(r).forEach((function(e){-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var h={Read:1,Write:2,Any:3},g=1,p=2,v=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function b(e){return"string"==typeof e?{protocol:"https",url:e,accept:h.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||h.Any}}var O="GET",P="POST";function q(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===g||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===v&&Date.now()-e.lastUpdate<=12e4}(e)})),a=[].concat(o(r),o(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:a.length>0?a.map((function(e){return b(e)})):t}}))}function j(e,t,n,a){var i=[],u=function(e,t){if(e.method===O||void 0===e.data&&void 0===t.data)return;var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}(n,a),s=function(e,t){var n=r(r({},e.headers),t.headers),o={};return Object.keys(n).forEach((function(e){var t=n[e];o[e.toLowerCase()]=t})),o}(e,a),c=n.method,l=n.method!==O?{}:r(r({},n.data),a.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),l),a.queryParameters),m=0,d=function t(r,o){var l=r.pop();if(void 0===l)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:w(i)};var d={data:u,headers:s,method:c,url:T(l,n.path,f),connectTimeout:o(m,e.timeouts.connect),responseTimeout:o(m,a.timeout)},h=function(e){var t={request:d,response:e,host:l,triesLeft:r.length};return i.push(t),t},g={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var a=h(n);return n.isTimedOut&&m++,Promise.all([e.logger.info("Retryable failure",A(a)),e.hostsCache.set(l,y(l,n.isTimedOut?v:p))]).then((function(){return t(r,o)}))},onFail:function(e){throw h(e),function(e,t){var r=e.content,n=e.status,o=r;try{o=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(o,n,t)}(e,w(i))}};return e.requester.send(d).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,g)}))};return q(e.hostsCache,t).then((function(e){return d(o(e.statelessHosts).reverse(),e.getTimeout)}))}function S(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function T(e,t,r){var n,o=(n=r,Object.keys(n).map((function(e){return function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var o=0;return e.replace(/%s/g,(function(){return encodeURIComponent(r[o++])}))}("%s=%s",e,(t=n[e],"[object Object]"===Object.prototype.toString.call(t)||"[object Array]"===Object.prototype.toString.call(t)?JSON.stringify(n[e]):n[e]));var t})).join("&")),a="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return o.length&&(a+="?".concat(o)),a}function w(e){return e.map((function(e){return A(e)}))}function A(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var C=function(e){var t=e.appId,o=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===c.WithinHeaders?n:{}},queryParameters:function(){return e===c.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:c.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,o=e.requester,a=e.requestsCache,i=e.responsesCache,u=e.timeouts,s=e.userAgent,c=e.hosts,l=e.queryParameters,f={hostsCache:t,logger:r,requester:o,requestsCache:a,responsesCache:i,timeouts:u,userAgent:s,headers:e.headers,queryParameters:l,hosts:c.map((function(e){return b(e)})),read:function(e,t){var r=d(t,f.timeouts.read),o=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&h.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return o();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,o()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=n(e,2);t[0];return t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&h.Write)})),e,d(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:h.Read},{url:"".concat(t,".algolia.net"),accept:h.Write}].concat(s([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},o.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},o.queryParameters()),e.queryParameters)}));return function(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},k=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{threshold:e.threshold||0})}));return e.transporter.read({method:P,path:"1/indexes/*/recommendations",data:{requests:o},cacheable:!0},n)}},N=function(e){return function(t,n){return k(e)(t.map((function(e){return r(r({},e),{},{fallbackParameters:{},model:"bought-together"})})),n)}},R=function(e){return function(t,n){return k(e)(t.map((function(e){return r(r({},e),{},{model:"related-products"})})),n)}},x=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{model:"trending-facets",threshold:e.threshold||0})}));return e.transporter.read({method:P,path:"1/indexes/*/recommendations",data:{requests:o},cacheable:!0},n)}},J=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{model:"trending-items",threshold:e.threshold||0})}));return e.transporter.read({method:P,path:"1/indexes/*/recommendations",data:{requests:o},cacheable:!0},n)}},E=function(e){return function(t,n){return k(e)(t.map((function(e){return r(r({},e),{},{model:"looking-similar"})})),n)}},I=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{model:"recommended-for-you",threshold:e.threshold||0})}));return e.transporter.read({method:P,path:"1/indexes/*/recommendations",data:{requests:o},cacheable:!0},n)}};function D(e,t,n){var o,s={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,o=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=o(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=o(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(o=m,{debug:function(e,t){return l>=o&&console.debug(e,t),Promise.resolve()},info:function(e,t){return f>=o&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:i({caches:[a({key:"".concat("4.23.2","-").concat(e)}),u()]}),userAgent:S("4.23.2").add({segment:"Recommend",version:"4.23.2"}).add({segment:"Browser"}),authMode:c.WithinQueryParameters};return C(r(r(r({},s),n),{},{methods:{getFrequentlyBoughtTogether:N,getRecommendations:k,getRelatedProducts:R,getTrendingFacets:x,getTrendingItems:J,getLookingSimilar:E,getRecommendedForYou:I}}))}return D.version="4.23.2",D.getFrequentlyBoughtTogether=N,D.getRecommendations=k,D.getRelatedProducts=R,D.getTrendingFacets=x,D.getTrendingItems=J,D.getLookingSimilar=E,D.getRecommendedForYou=I,D}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@algolia/recommend",
|
|
3
|
-
"version": "4.23.
|
|
3
|
+
"version": "4.23.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The perfect starting point to integrate Algolia Recommend within your JavaScript project.",
|
|
6
6
|
"repository": {
|
|
@@ -21,17 +21,20 @@
|
|
|
21
21
|
"index.js",
|
|
22
22
|
"index.d.ts"
|
|
23
23
|
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"test:exports": "node --experimental-modules test/module/is-es-module.mjs && node test/module/is-cjs-module.cjs"
|
|
26
|
+
},
|
|
24
27
|
"dependencies": {
|
|
25
|
-
"@algolia/cache-browser-local-storage": "4.23.
|
|
26
|
-
"@algolia/cache-common": "4.23.
|
|
27
|
-
"@algolia/cache-in-memory": "4.23.
|
|
28
|
-
"@algolia/client-common": "4.23.
|
|
29
|
-
"@algolia/client-search": "4.23.
|
|
30
|
-
"@algolia/logger-common": "4.23.
|
|
31
|
-
"@algolia/logger-console": "4.23.
|
|
32
|
-
"@algolia/requester-browser-xhr": "4.23.
|
|
33
|
-
"@algolia/requester-common": "4.23.
|
|
34
|
-
"@algolia/requester-node-http": "4.23.
|
|
35
|
-
"@algolia/transporter": "4.23.
|
|
28
|
+
"@algolia/cache-browser-local-storage": "4.23.2",
|
|
29
|
+
"@algolia/cache-common": "4.23.2",
|
|
30
|
+
"@algolia/cache-in-memory": "4.23.2",
|
|
31
|
+
"@algolia/client-common": "4.23.2",
|
|
32
|
+
"@algolia/client-search": "4.23.2",
|
|
33
|
+
"@algolia/logger-common": "4.23.2",
|
|
34
|
+
"@algolia/logger-console": "4.23.2",
|
|
35
|
+
"@algolia/requester-browser-xhr": "4.23.2",
|
|
36
|
+
"@algolia/requester-common": "4.23.2",
|
|
37
|
+
"@algolia/requester-node-http": "4.23.2",
|
|
38
|
+
"@algolia/transporter": "4.23.2"
|
|
36
39
|
}
|
|
37
40
|
}
|