@fast-simon/dashboard-utilities 1.0.181-beta.9 → 1.0.182-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/categories.d.ts +1 -0
- package/dist/@types/categories.js.map +1 -1
- package/dist/@types/product.d.ts +0 -1
- package/dist/@types/product.js.map +1 -1
- package/dist/components/FastSimonApi/FastSimonApi.d.ts +2 -0
- package/dist/components/FastSimonApi/FastSimonApi.js +28 -4
- package/dist/components/FastSimonApi/FastSimonApi.js.map +1 -1
- package/dist/components/FastSimonApi/context.d.ts +2 -1
- package/dist/components/FastSimonApi/context.js.map +1 -1
- package/dist/components/FastSimonApi/reducer.d.ts +3 -1
- package/dist/components/FastSimonApi/reducer.js.map +1 -1
- package/dist/services/API.d.ts +3 -0
- package/dist/services/API.js +54 -6
- package/dist/services/API.js.map +1 -1
- package/dist/services/landingPage.js +2 -0
- package/dist/services/landingPage.js.map +1 -1
- package/dist/services/search.js +2 -0
- package/dist/services/search.js.map +1 -1
- package/dist/services/smartCollections.d.ts +1 -1
- package/dist/services/smartCollections.js +5 -2
- package/dist/services/smartCollections.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../src/components/FastSimonApi/reducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComparisonData, CustomSortSettings, FastStateProps, IsLoading} from \"./context\";\nimport {PersonalizationPreviewSettings} from \"../../utils/personalizationPreview\";\nimport {AppType} from \"./FastSimonApi\";\nimport {SortBy} from \"../../@types/sortBy\";\nimport {FullTextServerResponseAll} from \"../../@types/results\";\nimport {smartCollectionsResults} from \"../../@types/categories\";\nimport {Narrow, ServerNarrow} from \"../../@types/narrow\";\nimport {PersonalizationStory, Product, ProductAnalytics} from \"../../@types/product\";\n\nimport {Widget} from \"../../@types/widget\";\nimport {AutocompleteReasoningResponse, AutocompleteResults} from \"../../@types/autocomplete\";\n\ntype FastStateAction =\n | { type: 'setReady', payload: boolean }\n | { type: 'setType', payload: AppType }\n | { type: 'setPage', payload: number }\n | { type: 'setQuery', payload: string }\n | { type: 'setSortBy', payload: SortBy }\n | { type: 'setIsLoading', payload: IsLoading }\n | { type: 'setCollectionID', payload: string }\n | { type: 'setNarrow', payload: ServerNarrow[] | undefined }\n | { type: 'setResults', payload: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse | undefined }\n | { type: 'mergeResults', payload: { results: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse, infiniteScroll: boolean } }\n | { type: 'mergeFacetsWithResults', payload:Narrow[] }\n | { type: 'mergeResultsKeepProduct', payload: { results: FullTextServerResponseAll | smartCollectionsResults } }\n | { type: 'setState', payload: Partial<FastStateProps> }\n | { type: 'setRecommendations', payload: { id: string, widget: Widget } }\n | { type: 'setSingleProducts', payload: Product[] }\n | { type: 'setIsAutocomplete', payload: boolean }\n | { type: 'setAutocomplete', payload: AutocompleteResults }\n | { type: 'setSearchWithinSearch', payload: string }\n | { type: 'setSegments', payload: string[] }\n | { type: 'setFlag', payload: string[] }\n | { type: 'setCustomSort',payload:CustomSortSettings}\n | { type: 'setVariationId', payload: string | null }\n | { type: 'setForceAnd', payload: boolean }\n | { type: 'setUserSegmentPreview', payload: 'none' | 'new' | 'returning' }\n | { type: 'setComparisonData', payload: ComparisonData | null }\n | { type: 'setIsComparing', payload: boolean }\n | { type: 'setPersonalizationPreview', payload: PersonalizationPreviewSettings | null }\n | { type: 'mergeAnalyticsData', payload: {\n analytics?: FullTextServerResponseAll['analytics'],\n matching_sets?: Record<string, string>,\n group_strategy?: Record<string, string>,\n variety_strategy?: number[],\n productAnalyticsMap?: Record<string, ProductAnalytics>,\n personalizationStoryMap?: Record<string, PersonalizationStory>\n }}\n | { type: 'updateSettingsAndRefetch', payload: Partial<Pick<FastStateProps, 'force_and' | 'custom_sort_settings' | 'flag' | 'user_segment_preview' | 'personalization_preview' | 'session_token'>> }\n\n\n\nexport function fastStateReducer(state: FastStateProps, action: FastStateAction) {\n switch (action.type) {\n case \"setReady\":\n return {...state, isReady: action.payload}\n\n case 'setType':\n return {...state, type: action.payload};\n\n case 'setPage':\n return {...state, page: action.payload};\n\n case 'setQuery':\n return {...state, query: action.payload, collectionID: undefined, page: 1, narrow: undefined, searchWithinSearch: undefined, sortBy:undefined};\n\n case 'setSortBy':\n return {...state, sortBy: action.payload, page: 1};\n\n case 'setSegments':\n return {...state, segments: action.payload, page: 1};\n\n case 'setIsLoading':\n return {...state, isLoading: action.payload};\n\n case 'setCollectionID':\n return {...state, collectionID: action.payload, query: \"\", page: 1, narrow: undefined, searchWithinSearch: undefined , sortBy:undefined};\n\n case 'setNarrow':\n return {...state, narrow: action.payload, page: 1};\n\n case 'setResults':\n return {...state, results: {isNoResults: false, ...action.payload}} as FastStateProps;\n\n case 'mergeResultsKeepProduct': {\n return {...state, results: {...state.results, ...action.payload.results, products: state.results?.products || []}};\n }\n\n case 'mergeFacetsWithResults':{\n return {...state, narrow: action.payload};\n }\n\n case 'mergeResults': {\n // Don't adopt the sort the server echoes back. sortBy should reflect only the caller's\n // intent — the initial defaultSort prop (FastSimonApi) plus the user's explicit\n // setSortBy, reset by setQuery/setCollectionID. Adopting the echo locked the\n // server-resolved sort in as an explicit sort_by that was then re-sent on pagination,\n // overriding the site default and resetting a user-chosen sort on the next page. Where\n // no defaultSort is passed (e.g. the AI Explainer) sortBy stays undefined until the user\n // picks, so requests omit sort_by and the server keeps applying the site default.\n // See AI Explainer sort bugs.\n if (!action.payload.infiniteScroll) {\n return {...state, results: { ...action.payload.results}} as FastStateProps;\n }\n\n const products = state.results?.products ?? [];\n const newProducts = action.payload.results.products ?? [];\n\n // Optimize: Use Set for O(1) lookup instead of O(n) find() - prevents O(n²)\n const existingIds = new Set(products.map(p => p.id));\n const uniqueNewProducts = newProducts.filter(p => !existingIds.has(p.id));\n\n // Only merge if there are actually new products\n if (uniqueNewProducts.length > 0) {\n return {\n ...state,\n results: {...state.results, isNoResults: false, ...action.payload.results, products: [...products, ...uniqueNewProducts]}\n } as FastStateProps;\n }\n\n return {\n ...state,\n results: {...state.results, isNoResults: false, ...action.payload.results, products: products}\n } as FastStateProps;\n\n }\n\n case 'setState': {\n if (action.payload.query) {\n return {...state, ...action.payload, collectionID: undefined, searchWithinSearch: undefined, segments: undefined}\n } else {\n return {...state, ...action.payload, query: \"\", searchWithinSearch: undefined, segments: undefined};\n }\n }\n\n case \"setRecommendations\": {\n return {\n ...state,\n recommendations: {\n ...state.recommendations,\n [action.payload.id]: action.payload.widget\n }\n }\n }\n\n case \"setSingleProducts\": {\n const products: { [id: string]: Product } = {...state.singleProducts};\n\n for (const product of action.payload) {\n products[product.id] = product;\n }\n\n return {...state, singleProducts: products}\n }\n case \"setIsAutocomplete\":{\n return {...state, isAutocomplete: action.payload}\n }\n\n case \"setAutocomplete\": {\n return {...state, autocomplete: action.payload}\n }\n\n case \"setSearchWithinSearch\": {\n return {...state, searchWithinSearch: action.payload}\n }\n case 'setFlag':\n return {...state, flag: action.payload};\n\n case 'setCustomSort':\n return {...state, custom_sort_settings: action.payload};\n\n case 'setVariationId':\n return {...state, variation_id: action.payload};\n\n case 'setForceAnd':\n return {...state, force_and: action.payload};\n\n case 'setUserSegmentPreview':\n return {...state, user_segment_preview: action.payload};\n\n case 'setComparisonData':\n return {...state, comparisonData: action.payload};\n\n case 'setIsComparing':\n return {...state, isComparing: action.payload};\n\n case 'setPersonalizationPreview':\n return {...state, personalization_preview: action.payload};\n\n case 'mergeAnalyticsData': {\n if (!state.results || !state.results.products) return state;\n\n const updatedResults = { ...state.results };\n\n if (action.payload.analytics) {\n (updatedResults as any).analytics = action.payload.analytics;\n }\n\n if (action.payload.matching_sets) {\n (updatedResults as any).matching_sets = action.payload.matching_sets;\n }\n\n if (action.payload.group_strategy) {\n (updatedResults as any).group_strategy = action.payload.group_strategy;\n }\n\n if (action.payload.variety_strategy) {\n (updatedResults as any).variety_strategy = action.payload.variety_strategy;\n }\n\n if (action.payload.productAnalyticsMap || action.payload.personalizationStoryMap) {\n const analyticsMap = action.payload.productAnalyticsMap;\n const storyMap = action.payload.personalizationStoryMap;\n updatedResults.products = updatedResults.products.map(product => {\n const pid = String(product.id);\n const productAnalytics = analyticsMap?.[pid];\n const productStory = storyMap?.[pid];\n if (!productAnalytics && !productStory) return product;\n const next = { ...product };\n if (productAnalytics) next.analytics = productAnalytics;\n if (productStory) next.personalization_story = productStory;\n return next;\n });\n }\n\n return { ...state, results: updatedResults } as FastStateProps;\n }\n\n case 'updateSettingsAndRefetch':\n return {...state, ...action.payload, refetchTrigger: (state.refetchTrigger ?? 0) + 1};\n\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../src/components/FastSimonApi/reducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComparisonData, CustomSortSettings, FastStateProps, IsLoading} from \"./context\";\nimport {PersonalizationPreviewSettings} from \"../../utils/personalizationPreview\";\nimport {AppType} from \"./FastSimonApi\";\nimport {SortBy} from \"../../@types/sortBy\";\nimport {FullTextServerResponseAll} from \"../../@types/results\";\nimport {smartCollectionsResults} from \"../../@types/categories\";\nimport {Narrow, ServerNarrow} from \"../../@types/narrow\";\nimport {PersonalizationStory, Product, ProductAnalytics} from \"../../@types/product\";\n\nimport {Widget} from \"../../@types/widget\";\nimport {AutocompleteReasoningResponse, AutocompleteResults} from \"../../@types/autocomplete\";\n\ntype FastStateAction =\n | { type: 'setReady', payload: boolean }\n | { type: 'setType', payload: AppType }\n | { type: 'setPage', payload: number }\n | { type: 'setQuery', payload: string }\n | { type: 'setSortBy', payload: SortBy }\n | { type: 'setIsLoading', payload: IsLoading }\n | { type: 'setCollectionID', payload: string }\n | { type: 'setNarrow', payload: ServerNarrow[] | undefined }\n | { type: 'setResults', payload: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse | undefined }\n | { type: 'mergeResults', payload: { results: FullTextServerResponseAll | smartCollectionsResults | AutocompleteReasoningResponse, infiniteScroll: boolean } }\n | { type: 'mergeFacetsWithResults', payload:Narrow[] }\n | { type: 'mergeResultsKeepProduct', payload: { results: FullTextServerResponseAll | smartCollectionsResults } }\n | { type: 'setState', payload: Partial<FastStateProps> }\n | { type: 'setRecommendations', payload: { id: string, widget: Widget } }\n | { type: 'setSingleProducts', payload: Product[] }\n | { type: 'setIsAutocomplete', payload: boolean }\n | { type: 'setAutocomplete', payload: AutocompleteResults }\n | { type: 'setSearchWithinSearch', payload: string }\n | { type: 'setSegments', payload: string[] }\n | { type: 'setFlag', payload: string[] }\n | { type: 'setCustomSort',payload:CustomSortSettings}\n | { type: 'setVariationId', payload: string | null }\n | { type: 'setForceAnd', payload: boolean }\n | { type: 'setUserSegmentPreview', payload: 'none' | 'new' | 'returning' }\n | { type: 'setComparisonData', payload: ComparisonData | null }\n | { type: 'setIsComparing', payload: boolean }\n | { type: 'setPersonalizationPreview', payload: PersonalizationPreviewSettings | null }\n | { type: 'mergeAnalyticsData', payload: {\n analytics?: FullTextServerResponseAll['analytics'],\n matching_sets?: Record<string, string>,\n group_strategy?: Record<string, string>,\n variety_strategy?: number[],\n productAnalyticsMap?: Record<string, ProductAnalytics>,\n personalizationStoryMap?: Record<string, PersonalizationStory>\n }}\n | { type: 'updateSettingsAndRefetch', payload: Partial<Pick<FastStateProps, 'force_and' | 'custom_sort_settings' | 'flag' | 'user_segment_preview' | 'personalization_preview' | 'session_token' | 'include_unpublished'>> }\n\n\n\nexport function fastStateReducer(state: FastStateProps, action: FastStateAction) {\n switch (action.type) {\n case \"setReady\":\n return {...state, isReady: action.payload}\n\n case 'setType':\n return {...state, type: action.payload};\n\n case 'setPage':\n return {...state, page: action.payload};\n\n case 'setQuery':\n return {...state, query: action.payload, collectionID: undefined, page: 1, narrow: undefined, searchWithinSearch: undefined, sortBy:undefined};\n\n case 'setSortBy':\n return {...state, sortBy: action.payload, page: 1};\n\n case 'setSegments':\n return {...state, segments: action.payload, page: 1};\n\n case 'setIsLoading':\n return {...state, isLoading: action.payload};\n\n case 'setCollectionID':\n return {...state, collectionID: action.payload, query: \"\", page: 1, narrow: undefined, searchWithinSearch: undefined , sortBy:undefined};\n\n case 'setNarrow':\n return {...state, narrow: action.payload, page: 1};\n\n case 'setResults':\n return {...state, results: {isNoResults: false, ...action.payload}} as FastStateProps;\n\n case 'mergeResultsKeepProduct': {\n return {...state, results: {...state.results, ...action.payload.results, products: state.results?.products || []}};\n }\n\n case 'mergeFacetsWithResults':{\n return {...state, narrow: action.payload};\n }\n\n case 'mergeResults': {\n // Don't adopt the sort the server echoes back. sortBy should reflect only the caller's\n // intent — the initial defaultSort prop (FastSimonApi) plus the user's explicit\n // setSortBy, reset by setQuery/setCollectionID. Adopting the echo locked the\n // server-resolved sort in as an explicit sort_by that was then re-sent on pagination,\n // overriding the site default and resetting a user-chosen sort on the next page. Where\n // no defaultSort is passed (e.g. the AI Explainer) sortBy stays undefined until the user\n // picks, so requests omit sort_by and the server keeps applying the site default.\n // See AI Explainer sort bugs.\n if (!action.payload.infiniteScroll) {\n return {...state, results: { ...action.payload.results}} as FastStateProps;\n }\n\n const products = state.results?.products ?? [];\n const newProducts = action.payload.results.products ?? [];\n\n // Optimize: Use Set for O(1) lookup instead of O(n) find() - prevents O(n²)\n const existingIds = new Set(products.map(p => p.id));\n const uniqueNewProducts = newProducts.filter(p => !existingIds.has(p.id));\n\n // Only merge if there are actually new products\n if (uniqueNewProducts.length > 0) {\n return {\n ...state,\n results: {...state.results, isNoResults: false, ...action.payload.results, products: [...products, ...uniqueNewProducts]}\n } as FastStateProps;\n }\n\n return {\n ...state,\n results: {...state.results, isNoResults: false, ...action.payload.results, products: products}\n } as FastStateProps;\n\n }\n\n case 'setState': {\n if (action.payload.query) {\n return {...state, ...action.payload, collectionID: undefined, searchWithinSearch: undefined, segments: undefined}\n } else {\n return {...state, ...action.payload, query: \"\", searchWithinSearch: undefined, segments: undefined};\n }\n }\n\n case \"setRecommendations\": {\n return {\n ...state,\n recommendations: {\n ...state.recommendations,\n [action.payload.id]: action.payload.widget\n }\n }\n }\n\n case \"setSingleProducts\": {\n const products: { [id: string]: Product } = {...state.singleProducts};\n\n for (const product of action.payload) {\n products[product.id] = product;\n }\n\n return {...state, singleProducts: products}\n }\n case \"setIsAutocomplete\":{\n return {...state, isAutocomplete: action.payload}\n }\n\n case \"setAutocomplete\": {\n return {...state, autocomplete: action.payload}\n }\n\n case \"setSearchWithinSearch\": {\n return {...state, searchWithinSearch: action.payload}\n }\n case 'setFlag':\n return {...state, flag: action.payload};\n\n case 'setCustomSort':\n return {...state, custom_sort_settings: action.payload};\n\n case 'setVariationId':\n return {...state, variation_id: action.payload};\n\n case 'setForceAnd':\n return {...state, force_and: action.payload};\n\n case 'setUserSegmentPreview':\n return {...state, user_segment_preview: action.payload};\n\n case 'setComparisonData':\n return {...state, comparisonData: action.payload};\n\n case 'setIsComparing':\n return {...state, isComparing: action.payload};\n\n case 'setPersonalizationPreview':\n return {...state, personalization_preview: action.payload};\n\n case 'mergeAnalyticsData': {\n if (!state.results || !state.results.products) return state;\n\n const updatedResults = { ...state.results };\n\n if (action.payload.analytics) {\n (updatedResults as any).analytics = action.payload.analytics;\n }\n\n if (action.payload.matching_sets) {\n (updatedResults as any).matching_sets = action.payload.matching_sets;\n }\n\n if (action.payload.group_strategy) {\n (updatedResults as any).group_strategy = action.payload.group_strategy;\n }\n\n if (action.payload.variety_strategy) {\n (updatedResults as any).variety_strategy = action.payload.variety_strategy;\n }\n\n if (action.payload.productAnalyticsMap || action.payload.personalizationStoryMap) {\n const analyticsMap = action.payload.productAnalyticsMap;\n const storyMap = action.payload.personalizationStoryMap;\n updatedResults.products = updatedResults.products.map(product => {\n const pid = String(product.id);\n const productAnalytics = analyticsMap?.[pid];\n const productStory = storyMap?.[pid];\n if (!productAnalytics && !productStory) return product;\n const next = { ...product };\n if (productAnalytics) next.analytics = productAnalytics;\n if (productStory) next.personalization_story = productStory;\n return next;\n });\n }\n\n return { ...state, results: updatedResults } as FastStateProps;\n }\n\n case 'updateSettingsAndRefetch':\n return {...state, ...action.payload, refetchTrigger: (state.refetchTrigger ?? 0) + 1};\n\n }\n}\n"]}
|
package/dist/services/API.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ interface PostProps {
|
|
|
16
16
|
data?: Params;
|
|
17
17
|
config?: AxiosRequestConfig;
|
|
18
18
|
}
|
|
19
|
+
export declare function setMerchantToken(token?: string): void;
|
|
20
|
+
export declare function setOnMerchantTokenRejected(handler?: () => Promise<string>): void;
|
|
21
|
+
export declare const merchantTokenHeaders: () => Record<string, string>;
|
|
19
22
|
export declare const API: {
|
|
20
23
|
get: <T>({ url, params, config }: GetProps) => Promise<T>;
|
|
21
24
|
getWithUrl: <T_1>({ url, params, config }: GetProps) => Promise<ApiResponseWithUrl<T_1>>;
|
package/dist/services/API.js
CHANGED
|
@@ -16,10 +16,47 @@ const buildUrlWithParams = (url, params) => {
|
|
|
16
16
|
.join('&');
|
|
17
17
|
return `${url}?${queryString}`;
|
|
18
18
|
};
|
|
19
|
+
// The dashboard's signed credential for this site, sent as `sid` on every serving and chat-bots call. The host owns
|
|
20
|
+
// it: it sets the token, and on a 401 hands back a refreshed one through the rejected handler.
|
|
21
|
+
let merchantToken = '';
|
|
22
|
+
let onMerchantTokenRejected;
|
|
23
|
+
export function setMerchantToken(token) {
|
|
24
|
+
merchantToken = token !== null && token !== void 0 ? token : '';
|
|
25
|
+
}
|
|
26
|
+
export function setOnMerchantTokenRejected(handler) {
|
|
27
|
+
onMerchantTokenRejected = handler;
|
|
28
|
+
}
|
|
29
|
+
export const merchantTokenHeaders = () => merchantToken ? { sid: merchantToken } : {};
|
|
30
|
+
// Whether the host produced a refreshed token to retry with.
|
|
31
|
+
function refreshRejectedToken() {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
if (!onMerchantTokenRejected) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
merchantToken = yield onMerchantTokenRejected();
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// `send` reads the token itself, so the one retry carries the refreshed one.
|
|
46
|
+
function sendWithTokenRetry(send) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const response = yield send();
|
|
49
|
+
if (response.status !== 401 || !(yield refreshRejectedToken())) {
|
|
50
|
+
return response;
|
|
51
|
+
}
|
|
52
|
+
return yield send();
|
|
53
|
+
});
|
|
54
|
+
}
|
|
19
55
|
export const API = {
|
|
20
56
|
get: function ({ url, params, config }) {
|
|
21
57
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
const
|
|
58
|
+
const fullUrl = url + `?${Object.entries(params).filter(param => param[1]).map((param) => `${param[0]}=${param[1]}`).join('&')}`;
|
|
59
|
+
const response = yield sendWithTokenRetry(() => fetch(fullUrl, { headers: merchantTokenHeaders() }));
|
|
23
60
|
return yield response.json();
|
|
24
61
|
});
|
|
25
62
|
},
|
|
@@ -27,7 +64,7 @@ export const API = {
|
|
|
27
64
|
getWithUrl: function ({ url, params, config }) {
|
|
28
65
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
66
|
const fullUrl = buildUrlWithParams(url, params);
|
|
30
|
-
const response = yield fetch(fullUrl);
|
|
67
|
+
const response = yield sendWithTokenRetry(() => fetch(fullUrl, { headers: merchantTokenHeaders() }));
|
|
31
68
|
const data = yield response.json();
|
|
32
69
|
return {
|
|
33
70
|
data,
|
|
@@ -36,6 +73,7 @@ export const API = {
|
|
|
36
73
|
});
|
|
37
74
|
},
|
|
38
75
|
post: function ({ url, config, data }) {
|
|
76
|
+
var _a;
|
|
39
77
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40
78
|
const instance = axios.create({
|
|
41
79
|
baseURL: url,
|
|
@@ -47,7 +85,17 @@ export const API = {
|
|
|
47
85
|
if ('SiteKey' in instance.defaults.headers) {
|
|
48
86
|
delete (instance.defaults.headers['SiteKey']);
|
|
49
87
|
}
|
|
50
|
-
const
|
|
88
|
+
const post = () => instance.post(url, data, Object.assign(Object.assign({}, config), { headers: Object.assign(Object.assign({}, config === null || config === void 0 ? void 0 : config.headers), merchantTokenHeaders()) }));
|
|
89
|
+
let response;
|
|
90
|
+
try {
|
|
91
|
+
response = yield post();
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) !== 401 || !(yield refreshRejectedToken())) {
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
response = yield post();
|
|
98
|
+
}
|
|
51
99
|
return response.data;
|
|
52
100
|
});
|
|
53
101
|
},
|
|
@@ -72,11 +120,11 @@ export function fastSimonPost(endpoint, path, params) {
|
|
|
72
120
|
const body = Object.assign({ src: "visual-editor" }, params);
|
|
73
121
|
// Remove undefined/null values
|
|
74
122
|
const cleanBody = Object.fromEntries(Object.entries(body).filter(([_, v]) => v !== undefined && v !== null));
|
|
75
|
-
const response = yield fetch(`${endpoint}/${path}`, {
|
|
123
|
+
const response = yield sendWithTokenRetry(() => fetch(`${endpoint}/${path}`, {
|
|
76
124
|
method: 'POST',
|
|
77
|
-
headers: { 'Content-Type': 'application/json' },
|
|
125
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, merchantTokenHeaders()),
|
|
78
126
|
body: JSON.stringify(cleanBody),
|
|
79
|
-
});
|
|
127
|
+
}));
|
|
80
128
|
return yield response.json();
|
|
81
129
|
});
|
|
82
130
|
}
|
package/dist/services/API.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"API.js","sourceRoot":"","sources":["../../src/services/API.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAuBhD,qDAAqD;AACrD,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAU,EAAE;IAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACrC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SAC/E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"API.js","sourceRoot":"","sources":["../../src/services/API.ts"],"names":[],"mappings":"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","sourcesContent":["import axios, {AxiosRequestConfig} from \"axios\";\n\ninterface Params {\n [key: string]: string | number | object | undefined | boolean\n}\n\ninterface GetProps {\n url: string,\n params: Params,\n config?: AxiosRequestConfig\n}\n\nexport interface ApiResponseWithUrl<T> {\n data: T;\n request_url: string;\n}\n\ninterface PostProps {\n url: string,\n data?: Params,\n config?: AxiosRequestConfig\n}\n\n// Helper function to construct URL with query params\nconst buildUrlWithParams = (url: string, params: Params): string => {\n const queryString = Object.entries(params)\n .filter(param => param[1] !== undefined && param[1] !== null && param[1] !== '')\n .map((param) => `${param[0]}=${encodeURIComponent(String(param[1]))}`)\n .join('&');\n return `${url}?${queryString}`;\n};\n\n// The dashboard's signed credential for this site, sent as `sid` on every serving and chat-bots call. The host owns\n// it: it sets the token, and on a 401 hands back a refreshed one through the rejected handler.\nlet merchantToken = '';\nlet onMerchantTokenRejected: (() => Promise<string>) | undefined;\n\nexport function setMerchantToken(token?: string) {\n merchantToken = token ?? '';\n}\n\nexport function setOnMerchantTokenRejected(handler?: () => Promise<string>) {\n onMerchantTokenRejected = handler;\n}\n\nexport const merchantTokenHeaders = (): Record<string, string> => merchantToken ? {sid: merchantToken} : {};\n\n// Whether the host produced a refreshed token to retry with.\nasync function refreshRejectedToken(): Promise<boolean> {\n if(!onMerchantTokenRejected) {\n return false;\n }\n try {\n merchantToken = await onMerchantTokenRejected();\n return true;\n } catch(error) {\n return false;\n }\n}\n\n// `send` reads the token itself, so the one retry carries the refreshed one.\nasync function sendWithTokenRetry(send: () => Promise<Response>): Promise<Response> {\n const response = await send();\n if(response.status !== 401 || !(await refreshRejectedToken())) {\n return response;\n }\n return await send();\n}\n\nexport const API = {\n get: async function <T>({url, params, config}: GetProps): Promise<T> {\n\n const fullUrl = url + `?${Object.entries(params).filter(param => param[1]).map((param) => `${param[0]}=${param[1]}`).join('&')}`;\n const response = await sendWithTokenRetry(() => fetch(fullUrl, {headers: merchantTokenHeaders()}));\n\n return await response.json();\n },\n\n // Same as get but also returns the full request URL for debugging\n getWithUrl: async function <T>({url, params, config}: GetProps): Promise<ApiResponseWithUrl<T>> {\n const fullUrl = buildUrlWithParams(url, params);\n const response = await sendWithTokenRetry(() => fetch(fullUrl, {headers: merchantTokenHeaders()}));\n const data = await response.json();\n\n return {\n data,\n request_url: fullUrl\n };\n },\n\n post: async function <T>({url, config, data}: PostProps) {\n const instance = axios.create({\n baseURL: url,\n data: data\n });\n if('Session' in instance.defaults.headers) {\n delete ((instance.defaults.headers as Record<string, any>)['Session']);\n }\n if('SiteKey' in instance.defaults.headers) {\n delete ((instance.defaults.headers as Record<string, any>)['SiteKey']);\n }\n const post = () => instance.post(url, data, {...config, headers: {...config?.headers, ...merchantTokenHeaders()}});\n let response;\n try {\n response = await post();\n } catch(error: any) {\n if(error?.response?.status !== 401 || !(await refreshRejectedToken())) {\n throw error;\n }\n response = await post();\n }\n\n return response.data as T;\n },\n};\n\nexport const parseUrl = (url: string) => {\n const fixed = url.replace(\"https://\", \"\").replace(\"http://\", \"\");\n if (fixed[fixed.length - 1] === \"/\") {\n return fixed.slice(0, fixed.length - 1)\n }\n return fixed;\n};\n\nexport async function fastSimonGet<T>(endpoint: string, path: string, params?: Params) {\n return await API.get<T>({\n url: `${endpoint}/${path}`,\n params: {\n src: \"visual-editor\",\n ...params\n }\n })\n}\n\nexport async function fastSimonPost<T>(endpoint: string, path: string, params?: Params): Promise<T> {\n const body = {\n src: \"visual-editor\",\n ...params\n };\n // Remove undefined/null values\n const cleanBody = Object.fromEntries(\n Object.entries(body).filter(([_, v]) => v !== undefined && v !== null)\n );\n const response = await sendWithTokenRetry(() => fetch(`${endpoint}/${path}`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...merchantTokenHeaders() },\n body: JSON.stringify(cleanBody),\n }));\n return await response.json();\n}"]}
|
|
@@ -31,6 +31,8 @@ export const LandingPage = {
|
|
|
31
31
|
merchandising_rules: type == 1 && merchandisingRules && Object.keys(merchandisingRules).length > 0
|
|
32
32
|
? JSON.stringify(merchandisingRules)
|
|
33
33
|
: undefined,
|
|
34
|
+
// No last_product: serving ignores visual merchandising on landing_page_editor, so its order never moves,
|
|
35
|
+
// while the client re-sorts pins locally; resuming after the client's last card would re-send cards already shown.
|
|
34
36
|
ids_only: idsOnly ? 1 : undefined,
|
|
35
37
|
};
|
|
36
38
|
const res = yield fastSimonPost(BASE_URL, "landing_page_editor", params);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"landingPage.js","sourceRoot":"","sources":["../../src/services/landingPage.ts"],"names":[],"mappings":"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","sourcesContent":["import type {SortBy} from \"../@types/sortBy\";\nimport type {Narrow, ServerNarrow} from \"@fast-simon/utilities\";\nimport {fastSimonGet, fastSimonPost} from \"./API\";\nimport {FacetsParser, ServerFacet} from \"@fast-simon/utilities\"\nimport {AncestorCategory} from \"../@types/categories\";\nimport {EditorProduct} from \"../@types/editorProduct\";\ninterface LandingPageRequest {\n uuid: string;\n storeID: string;\n landingPage: string\n type: number\n page?: number\n sortBy?: SortBy\n facets?: boolean\n narrow?: Narrow\n productsPerPage?: number\n withProductAttributes?: boolean\n searchWithinResultsQuery?: string\n idsOnly?: boolean\n}\n\ninterface LandingPageFacetsOnly extends Omit<LandingPageRequest, \"facets\"> {\n avoid_tag_prefixes?: string\n}\n\ninterface LandingPageServerResponseFacetsOnly {\n total_results: number\n term: string\n narrow?: ServerNarrow\n facets_completed: true\n facets: ServerFacet[],\n}\n\ninterface LandingPageServerResponseAll {\n items: EditorProduct[]\n alternatives?: string[]\n facets_completed: boolean\n narrow?: ServerNarrow[]\n p: number\n total_p: number\n total_results: number\n term: string\n lp_slug: string\n title: string\n index_page: number\n banner_html: string\n banner_html_mobile: string\n facets: ServerFacet[]\n sort_by: SortBy\n avoid_tag_prefixes?: string\n cms_number_found?: number\n within_search_results_for?: string,\n ancestor_categories?: AncestorCategory[]\n}\n\nconst BASE_URL = import.meta.env.VITE_SERVING_BASE_URL ?? \"https://internal-v3joil6oqa-uc.a.run.app/search\";\n\ninterface LandingPageResponse {\n items: EditorProduct[]\n facets_completed: boolean\n narrow?: Narrow[]\n p: number\n total_p: number\n isp_quick_view_mode: number\n related_results: boolean\n total_results: number\n lp_slug: string\n title: string\n facets: ServerFacet[]\n sort_by: SortBy\n avoid_tag_prefixes?: string\n}\n\nexport const LandingPage = {\n landingPage: async ({\n uuid,\n storeID,\n landingPage,\n page = 1,\n sortBy = \"relevency\",\n facets = true,\n narrow,\n productsPerPage,\n withProductAttributes = undefined,\n searchWithinResultsQuery,\n type,\n visualMerchandising,\n merchandisingRules,\n idsOnly,\n }: any) => {\n const params: Record<string, any> = {\n UUID: uuid,\n store_id: storeID,\n facets_required: facets ? 1 : 0,\n products_per_page: productsPerPage,\n narrow: JSON.stringify(narrow),\n lp: landingPage,\n page_num: page,\n type: type,\n with_product_attributes: withProductAttributes,\n search_within_search: searchWithinResultsQuery\n ? searchWithinResultsQuery\n : undefined,\n visual_merchandising: JSON.stringify(visualMerchandising).replaceAll('\"[', \"[\").replaceAll(']\"', \"]\"),\n m: 1,\n merchandising_rules:\n type == 1 && merchandisingRules && Object.keys(merchandisingRules).length > 0\n ? JSON.stringify(merchandisingRules)\n : undefined,\n ids_only: idsOnly ? 1 : undefined,\n };\n const res = await fastSimonPost<LandingPageResponse>(\n BASE_URL,\n \"landing_page_editor\",\n params\n );\n return {\n data: res,\n getFacets: async () =>\n res?.facets_completed\n ? transformFacetsOnlyData(\n res.facets,\n res.avoid_tag_prefixes\n )\n : await LandingPage.landingPageFacetsOnly({\n uuid,\n storeID,\n landingPage,\n page,\n narrow,\n type,\n productsPerPage,\n searchWithinResultsQuery,\n withProductAttributes,\n visualMerchandising,\n merchandisingRules,\n }),\n };\n },\n\n landingPageFacetsOnly: async ({\n uuid,\n storeID,\n landingPage,\n page = 1,\n narrow,\n type,\n productsPerPage,\n searchWithinResultsQuery,\n withProductAttributes = false,\n visualMerchandising,\n merchandisingRules\n }: any) => {\n const data = await fastSimonPost<LandingPageServerResponseAll>(\n BASE_URL,\n \"landing_page_editor\",\n {\n UUID: uuid,\n store_id: storeID,\n facets_required: 2,\n products_per_page: productsPerPage,\n narrow: JSON.stringify(narrow),\n type: type,\n lp: landingPage,\n page_num: page ?? 1,\n with_product_attributes: withProductAttributes,\n search_within_search: searchWithinResultsQuery\n ? searchWithinResultsQuery\n : undefined,\n visual_merchandising: JSON.stringify(visualMerchandising).replaceAll('\"[', \"[\").replaceAll(']\"', \"]\"),\n merchandising_rules: merchandisingRules\n ? JSON.stringify(merchandisingRules)\n : undefined,\n m: 1,\n }\n );\n return transformFacetsOnlyData(data.facets, data.avoid_tag_prefixes);\n },\n};\n\nexport const transformFacetsOnlyData = (r: ServerFacet[], avoidTagPrefixes?: string) => new FacetsParser().parseFacets(r, avoidTagPrefixes ? avoidTagPrefixes.split(\",\") : []);"]}
|
|
1
|
+
{"version":3,"file":"landingPage.js","sourceRoot":"","sources":["../../src/services/landingPage.ts"],"names":[],"mappings":"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","sourcesContent":["import type {SortBy} from \"../@types/sortBy\";\nimport type {Narrow, ServerNarrow} from \"@fast-simon/utilities\";\nimport {fastSimonGet, fastSimonPost} from \"./API\";\nimport {FacetsParser, ServerFacet} from \"@fast-simon/utilities\"\nimport {AncestorCategory} from \"../@types/categories\";\nimport {EditorProduct} from \"../@types/editorProduct\";\ninterface LandingPageRequest {\n uuid: string;\n storeID: string;\n landingPage: string\n type: number\n page?: number\n sortBy?: SortBy\n facets?: boolean\n narrow?: Narrow\n productsPerPage?: number\n withProductAttributes?: boolean\n searchWithinResultsQuery?: string\n idsOnly?: boolean\n}\n\ninterface LandingPageFacetsOnly extends Omit<LandingPageRequest, \"facets\"> {\n avoid_tag_prefixes?: string\n}\n\ninterface LandingPageServerResponseFacetsOnly {\n total_results: number\n term: string\n narrow?: ServerNarrow\n facets_completed: true\n facets: ServerFacet[],\n}\n\ninterface LandingPageServerResponseAll {\n items: EditorProduct[]\n alternatives?: string[]\n facets_completed: boolean\n narrow?: ServerNarrow[]\n p: number\n total_p: number\n total_results: number\n term: string\n lp_slug: string\n title: string\n index_page: number\n banner_html: string\n banner_html_mobile: string\n facets: ServerFacet[]\n sort_by: SortBy\n avoid_tag_prefixes?: string\n cms_number_found?: number\n within_search_results_for?: string,\n ancestor_categories?: AncestorCategory[]\n}\n\nconst BASE_URL = import.meta.env.VITE_SERVING_BASE_URL ?? \"https://internal-v3joil6oqa-uc.a.run.app/search\";\n\ninterface LandingPageResponse {\n items: EditorProduct[]\n facets_completed: boolean\n narrow?: Narrow[]\n p: number\n total_p: number\n isp_quick_view_mode: number\n related_results: boolean\n total_results: number\n lp_slug: string\n title: string\n facets: ServerFacet[]\n sort_by: SortBy\n avoid_tag_prefixes?: string\n}\n\nexport const LandingPage = {\n landingPage: async ({\n uuid,\n storeID,\n landingPage,\n page = 1,\n sortBy = \"relevency\",\n facets = true,\n narrow,\n productsPerPage,\n withProductAttributes = undefined,\n searchWithinResultsQuery,\n type,\n visualMerchandising,\n merchandisingRules,\n idsOnly,\n }: any) => {\n const params: Record<string, any> = {\n UUID: uuid,\n store_id: storeID,\n facets_required: facets ? 1 : 0,\n products_per_page: productsPerPage,\n narrow: JSON.stringify(narrow),\n lp: landingPage,\n page_num: page,\n type: type,\n with_product_attributes: withProductAttributes,\n search_within_search: searchWithinResultsQuery\n ? searchWithinResultsQuery\n : undefined,\n visual_merchandising: JSON.stringify(visualMerchandising).replaceAll('\"[', \"[\").replaceAll(']\"', \"]\"),\n m: 1,\n merchandising_rules:\n type == 1 && merchandisingRules && Object.keys(merchandisingRules).length > 0\n ? JSON.stringify(merchandisingRules)\n : undefined,\n // No last_product: serving ignores visual merchandising on landing_page_editor, so its order never moves,\n // while the client re-sorts pins locally; resuming after the client's last card would re-send cards already shown.\n ids_only: idsOnly ? 1 : undefined,\n };\n const res = await fastSimonPost<LandingPageResponse>(\n BASE_URL,\n \"landing_page_editor\",\n params\n );\n return {\n data: res,\n getFacets: async () =>\n res?.facets_completed\n ? transformFacetsOnlyData(\n res.facets,\n res.avoid_tag_prefixes\n )\n : await LandingPage.landingPageFacetsOnly({\n uuid,\n storeID,\n landingPage,\n page,\n narrow,\n type,\n productsPerPage,\n searchWithinResultsQuery,\n withProductAttributes,\n visualMerchandising,\n merchandisingRules,\n }),\n };\n },\n\n landingPageFacetsOnly: async ({\n uuid,\n storeID,\n landingPage,\n page = 1,\n narrow,\n type,\n productsPerPage,\n searchWithinResultsQuery,\n withProductAttributes = false,\n visualMerchandising,\n merchandisingRules\n }: any) => {\n const data = await fastSimonPost<LandingPageServerResponseAll>(\n BASE_URL,\n \"landing_page_editor\",\n {\n UUID: uuid,\n store_id: storeID,\n facets_required: 2,\n products_per_page: productsPerPage,\n narrow: JSON.stringify(narrow),\n type: type,\n lp: landingPage,\n page_num: page ?? 1,\n with_product_attributes: withProductAttributes,\n search_within_search: searchWithinResultsQuery\n ? searchWithinResultsQuery\n : undefined,\n visual_merchandising: JSON.stringify(visualMerchandising).replaceAll('\"[', \"[\").replaceAll(']\"', \"]\"),\n merchandising_rules: merchandisingRules\n ? JSON.stringify(merchandisingRules)\n : undefined,\n m: 1,\n }\n );\n return transformFacetsOnlyData(data.facets, data.avoid_tag_prefixes);\n },\n};\n\nexport const transformFacetsOnlyData = (r: ServerFacet[], avoidTagPrefixes?: string) => new FacetsParser().parseFacets(r, avoidTagPrefixes ? avoidTagPrefixes.split(\",\") : []);"]}
|
package/dist/services/search.js
CHANGED
|
@@ -18,6 +18,8 @@ export const FullTextSearch = {
|
|
|
18
18
|
const params = {
|
|
19
19
|
UUID: uuid,
|
|
20
20
|
store_id: storeID,
|
|
21
|
+
// A direct POST skips fastSimonGet's src default; serving honors last_product only for a non-v1 src (#16215).
|
|
22
|
+
src: 'visual-editor',
|
|
21
23
|
facets_required: 1,
|
|
22
24
|
q: searchWithinSearch || query,
|
|
23
25
|
page_num: page !== null && page !== void 0 ? page : 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/services/search.ts"],"names":[],"mappings":"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","sourcesContent":["import {CategoryNavigationResponse} from \"../@types/categoriesNavigation\";\nimport {API, fastSimonGet} from \"./API\";\nimport {FacetsParser, ServerFacet} from \"@fast-simon/utilities\"\nimport {fullTextSearchProps, FullTextServerResponseAll} from \"../@types/results\";\nimport {getLSVectorSearchDict, getLSVectorSearchOn} from \"../utils/getLSVectorSearch\";\nimport {getInternalURL} from \"../utils/getInternalURL\";\nimport {getUseCacheSetting} from \"../utils/getCacheSettings\";\n\n\nconst BASE_URL = \"https://internal-v3joil6oqa-uc.a.run.app\";\n\nexport const FullTextSearch = {\n getFullTextSearch: async ({\n uuid,\n storeID,\n facetRequired,\n narrow,\n page,\n productsPerPage,\n withAttributes,\n query,\n searchWithinSearch,\n visualMerchandising,\n lastProduct\n }: any) => {\n\n const params: Record<string, any> = {\n UUID: uuid,\n store_id: storeID,\n facets_required: 1,\n q: searchWithinSearch || query,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrow),\n products_per_page: productsPerPage,\n visual_merchandising: !searchWithinSearch ? JSON.stringify(visualMerchandising).replaceAll('\"[', '[').replaceAll(']\"', ']') : undefined\n };\n if(lastProduct) {\n params['last_product'] = lastProduct\n }\n const res = await API.post<CategoryNavigationResponse>({url: BASE_URL+'/search/full_text_search_editor', data: params, config: {headers: {'content-type': 'text/plain'}}});\n return {\n data: res,\n getFacets: async () => (res?.facets_completed ? transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes) : await FullTextSearch.fullTextFacetsOnly({ uuid,\n storeID,\n facetRequired,\n narrow,\n page,\n productsPerPage,\n withAttributes,\n searchWithinSearch,\n visualMerchandising,\n lastProduct,\n query})\n )\n };\n },\n fullTextFacetsOnly: async ({\n uuid,\n storeID,\n narrow,\n page,\n productsPerPage,\n withAttributes,\n collectionID,\n searchWithinSearch,\n visualMerchandising,\n query\n }: any) => {\n\n const params: Record<string, any> = {\n UUID: uuid,\n store_id: storeID,\n facets_required: 2,\n q: query,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrow),\n products_per_page: productsPerPage,\n search_within_search: searchWithinSearch,\n visual_merchandising: JSON.stringify(visualMerchandising).replaceAll('\"[', '[').replaceAll(']\"', ']')\n };\n\n const res = await fastSimonGet<CategoryNavigationResponse>(BASE_URL, '/search/full_text_search_editor', params);\n\n return transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes);\n },\n getReasoningFullTextSearch: async ({\n uuid, storeID, siteKey,cdn,\n facetRequired, narrowBy, page,\n productsPerPage, term, sortBy\n , withAttributes, recent, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, with_product_analytics, market_context, variation_id, force_and, ps, spv, personalization, session_token\n }: fullTextSearchProps): Promise<FullTextServerResponseAll> => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params: Record<string, any> = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n q: term,\n page_num: page,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n with_product_analytics: with_product_analytics ? true : undefined,\n with_matching_sets: with_product_analytics ? true : undefined,\n group_strategy_data: with_product_analytics ? true : undefined,\n variety_strategy_data: with_product_analytics ? true : undefined,\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n force_and: force_and ? true : undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n personalization: personalization || undefined,\n st: session_token || undefined\n };\n\n\n if(getLSVectorSearchOn())\n {\n params[\"hybrid_search_settings\"] = getLSVectorSearchDict()??undefined;\n }\n params[\"segments\"] = JSON.stringify(segments) || undefined;\n\n // Use getWithUrl to capture the full request URL for debugging\n const result = await API.getWithUrl<FullTextServerResponseAll>({\n url: `${internal_url}/search/full_text_search_reasoning`,\n params,\n });\n\n // Return response with request_url included\n return {\n ...result.data,\n request_url: result.request_url\n };\n\n },\n // Comparison IDs search - gets ALL product IDs with Hybrid Search DISABLED\n // Used to compare full ranking with Hybrid ON vs OFF\n getComparisonProductIds: ({\n uuid, storeID, siteKey,cdn,\n facetRequired, narrowBy, page,\n productsPerPage, term, sortBy\n , withAttributes, recent, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, market_context, variation_id, force_and, ps, spv, personalization, session_token\n }: fullTextSearchProps) => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n const use_cache = getUseCacheSetting();\n\n const params: Record<string, any> = {\n site_key:siteKey,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n q: term,\n page_num: 1,\n with_product_attributes: false,\n narrow: JSON.stringify(narrowBy),\n products_per_page: 1000000, // Get all IDs\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n ids_only: 1,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n force_and: force_and ? true : undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n personalization: personalization || undefined,\n st: session_token || undefined,\n // Explicitly disable hybrid/vector search for comparison\n hybrid_search_settings: JSON.stringify({\n no_results: false,\n search: false,\n weights: {\n keyword: 100,\n vector_search: 0\n }\n })\n };\n\n params[\"segments\"] = JSON.stringify(segments) || undefined;\n\n return API.get<FullTextServerResponseAll>({\n url: `${internal_url}/search/full_text_search`,\n params,\n });\n },\n getReasoningFullTextSearchProductsIds: ({\n uuid, storeID, siteKey,cdn,\n facetRequired, narrowBy, page,\n productsPerPage, term, sortBy\n , withAttributes, recent, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, market_context, variation_id, force_and, ps, spv, personalization, session_token\n }: fullTextSearchProps) => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params: Record<string, any> = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n q: term,\n page_num: page,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n ids_only:1,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n force_and: force_and ? true : undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n personalization: personalization || undefined,\n st: session_token || undefined\n };\n\n\n if(getLSVectorSearchOn())\n {\n params[\"hybrid_search_settings\"] = getLSVectorSearchDict()??undefined;\n }\n params[\"segments\"] = JSON.stringify(segments) || undefined;\n return API.get<FullTextServerResponseAll>({\n url: `${internal_url}/search/full_text_search`,\n params,\n });\n\n },\n }\n;\nexport const transformFacetsOnlyData = (r: ServerFacet[], avoidTagPrefixes?: string) => new FacetsParser().parseFacets(r, avoidTagPrefixes ? avoidTagPrefixes.split(\",\") : []);"]}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/services/search.ts"],"names":[],"mappings":"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","sourcesContent":["import {CategoryNavigationResponse} from \"../@types/categoriesNavigation\";\nimport {API, fastSimonGet} from \"./API\";\nimport {FacetsParser, ServerFacet} from \"@fast-simon/utilities\"\nimport {fullTextSearchProps, FullTextServerResponseAll} from \"../@types/results\";\nimport {getLSVectorSearchDict, getLSVectorSearchOn} from \"../utils/getLSVectorSearch\";\nimport {getInternalURL} from \"../utils/getInternalURL\";\nimport {getUseCacheSetting} from \"../utils/getCacheSettings\";\n\n\nconst BASE_URL = \"https://internal-v3joil6oqa-uc.a.run.app\";\n\nexport const FullTextSearch = {\n getFullTextSearch: async ({\n uuid,\n storeID,\n facetRequired,\n narrow,\n page,\n productsPerPage,\n withAttributes,\n query,\n searchWithinSearch,\n visualMerchandising,\n lastProduct\n }: any) => {\n\n const params: Record<string, any> = {\n UUID: uuid,\n store_id: storeID,\n // A direct POST skips fastSimonGet's src default; serving honors last_product only for a non-v1 src (#16215).\n src: 'visual-editor',\n facets_required: 1,\n q: searchWithinSearch || query,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrow),\n products_per_page: productsPerPage,\n visual_merchandising: !searchWithinSearch ? JSON.stringify(visualMerchandising).replaceAll('\"[', '[').replaceAll(']\"', ']') : undefined\n };\n if(lastProduct) {\n params['last_product'] = lastProduct\n }\n const res = await API.post<CategoryNavigationResponse>({url: BASE_URL+'/search/full_text_search_editor', data: params, config: {headers: {'content-type': 'text/plain'}}});\n return {\n data: res,\n getFacets: async () => (res?.facets_completed ? transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes) : await FullTextSearch.fullTextFacetsOnly({ uuid,\n storeID,\n facetRequired,\n narrow,\n page,\n productsPerPage,\n withAttributes,\n searchWithinSearch,\n visualMerchandising,\n lastProduct,\n query})\n )\n };\n },\n fullTextFacetsOnly: async ({\n uuid,\n storeID,\n narrow,\n page,\n productsPerPage,\n withAttributes,\n collectionID,\n searchWithinSearch,\n visualMerchandising,\n query\n }: any) => {\n\n const params: Record<string, any> = {\n UUID: uuid,\n store_id: storeID,\n facets_required: 2,\n q: query,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrow),\n products_per_page: productsPerPage,\n search_within_search: searchWithinSearch,\n visual_merchandising: JSON.stringify(visualMerchandising).replaceAll('\"[', '[').replaceAll(']\"', ']')\n };\n\n const res = await fastSimonGet<CategoryNavigationResponse>(BASE_URL, '/search/full_text_search_editor', params);\n\n return transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes);\n },\n getReasoningFullTextSearch: async ({\n uuid, storeID, siteKey,cdn,\n facetRequired, narrowBy, page,\n productsPerPage, term, sortBy\n , withAttributes, recent, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, with_product_analytics, market_context, variation_id, force_and, ps, spv, personalization, session_token\n }: fullTextSearchProps): Promise<FullTextServerResponseAll> => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params: Record<string, any> = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n q: term,\n page_num: page,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n with_product_analytics: with_product_analytics ? true : undefined,\n with_matching_sets: with_product_analytics ? true : undefined,\n group_strategy_data: with_product_analytics ? true : undefined,\n variety_strategy_data: with_product_analytics ? true : undefined,\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n force_and: force_and ? true : undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n personalization: personalization || undefined,\n st: session_token || undefined\n };\n\n\n if(getLSVectorSearchOn())\n {\n params[\"hybrid_search_settings\"] = getLSVectorSearchDict()??undefined;\n }\n params[\"segments\"] = JSON.stringify(segments) || undefined;\n\n // Use getWithUrl to capture the full request URL for debugging\n const result = await API.getWithUrl<FullTextServerResponseAll>({\n url: `${internal_url}/search/full_text_search_reasoning`,\n params,\n });\n\n // Return response with request_url included\n return {\n ...result.data,\n request_url: result.request_url\n };\n\n },\n // Comparison IDs search - gets ALL product IDs with Hybrid Search DISABLED\n // Used to compare full ranking with Hybrid ON vs OFF\n getComparisonProductIds: ({\n uuid, storeID, siteKey,cdn,\n facetRequired, narrowBy, page,\n productsPerPage, term, sortBy\n , withAttributes, recent, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, market_context, variation_id, force_and, ps, spv, personalization, session_token\n }: fullTextSearchProps) => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n const use_cache = getUseCacheSetting();\n\n const params: Record<string, any> = {\n site_key:siteKey,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n q: term,\n page_num: 1,\n with_product_attributes: false,\n narrow: JSON.stringify(narrowBy),\n products_per_page: 1000000, // Get all IDs\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n ids_only: 1,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n force_and: force_and ? true : undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n personalization: personalization || undefined,\n st: session_token || undefined,\n // Explicitly disable hybrid/vector search for comparison\n hybrid_search_settings: JSON.stringify({\n no_results: false,\n search: false,\n weights: {\n keyword: 100,\n vector_search: 0\n }\n })\n };\n\n params[\"segments\"] = JSON.stringify(segments) || undefined;\n\n return API.get<FullTextServerResponseAll>({\n url: `${internal_url}/search/full_text_search`,\n params,\n });\n },\n getReasoningFullTextSearchProductsIds: ({\n uuid, storeID, siteKey,cdn,\n facetRequired, narrowBy, page,\n productsPerPage, term, sortBy\n , withAttributes, recent, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, market_context, variation_id, force_and, ps, spv, personalization, session_token\n }: fullTextSearchProps) => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params: Record<string, any> = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n q: term,\n page_num: page,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n ids_only:1,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n force_and: force_and ? true : undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n personalization: personalization || undefined,\n st: session_token || undefined\n };\n\n\n if(getLSVectorSearchOn())\n {\n params[\"hybrid_search_settings\"] = getLSVectorSearchDict()??undefined;\n }\n params[\"segments\"] = JSON.stringify(segments) || undefined;\n return API.get<FullTextServerResponseAll>({\n url: `${internal_url}/search/full_text_search`,\n params,\n });\n\n },\n }\n;\nexport const transformFacetsOnlyData = (r: ServerFacet[], avoidTagPrefixes?: string) => new FacetsParser().parseFacets(r, avoidTagPrefixes ? avoidTagPrefixes.split(\",\") : []);"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { smartCollectionsProps, smartCollectionsResults } from "../@types/categories";
|
|
2
2
|
export declare const SmartCollections: {
|
|
3
|
-
getSmartCollections: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, with_product_analytics, market_context, variation_id, ps, spv, spc, personalization, force_and, session_token }: smartCollectionsProps) => Promise<smartCollectionsResults>;
|
|
3
|
+
getSmartCollections: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, with_product_analytics, market_context, variation_id, ps, spv, spc, personalization, force_and, session_token, include_unpublished }: smartCollectionsProps) => Promise<smartCollectionsResults>;
|
|
4
4
|
getSmartCollectionsProductsIds: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, market_context, variation_id, ps, spv, spc, personalization, force_and, session_token }: smartCollectionsProps) => Promise<smartCollectionsResults>;
|
|
5
5
|
};
|
|
@@ -12,7 +12,7 @@ import { getInternalURL } from "../utils/getInternalURL";
|
|
|
12
12
|
import { getUseCacheSetting } from "../utils/getCacheSettings";
|
|
13
13
|
const BASE_URL = "https://internal-v3joil6oqa-uc.a.run.app";
|
|
14
14
|
export const SmartCollections = {
|
|
15
|
-
getSmartCollections: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, with_product_analytics, market_context, variation_id, ps, spv, spc, personalization, force_and, session_token }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
getSmartCollections: ({ uuid, storeID, siteKey, cdn, facetRequired, narrowBy, page, productsPerPage, sortBy, withAttributes, categoryID, recent, rec, searchWithinSearch, segments, disable_semantics, disable_merchandising, disable_strategies, disable_turbolinks, disable_merchandising_rules, disable_antonyms, custom_sort_settings, with_product_analytics, market_context, variation_id, ps, spv, spc, personalization, force_and, session_token, include_unpublished }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
16
|
var internal_url = getInternalURL();
|
|
17
17
|
if (internal_url == "") {
|
|
18
18
|
internal_url = BASE_URL;
|
|
@@ -24,7 +24,10 @@ export const SmartCollections = {
|
|
|
24
24
|
const params = Object.assign(Object.assign({ site_key: siteKey,
|
|
25
25
|
// UUID: uuid,
|
|
26
26
|
// store_id: storeID,
|
|
27
|
-
cdn_cache_key: cdn, facets_required: facetRequired, category_id: categoryID, page_num: page !== null && page !== void 0 ? page : 1, with_product_attributes: withAttributes, narrow: JSON.stringify(narrowBy), products_per_page: productsPerPage, sort_by: sortBy, sp: recent }, (!use_cache ? { m: 1 } : {})), { search_within_search: searchWithinSearch, st: session_token || undefined, disable_semantics: disable_semantics ? 1 : 0, disable_merchandising: disable_merchandising ? 1 : 0, disable_strategies: disable_strategies ? 1 : 0, disable_turbolinks: disable_turbolinks ? 1 : 0, disable_merchandising_rules: disable_merchandising_rules ? 1 : 0, disable_antonyms: disable_antonyms ? 1 : 0, custom_sort_settings: JSON.stringify(custom_sort_settings), with_product_analytics: with_product_analytics ? true : undefined, with_matching_sets: with_product_analytics ? true : undefined, group_strategy_data: with_product_analytics ? true : undefined, variety_strategy_data: with_product_analytics ? true : undefined, market_context: market_context || undefined, variation_id: variation_id || undefined, ps: ps || undefined, spv: spv || undefined, spc: spc || undefined, personalization: personalization || undefined
|
|
27
|
+
cdn_cache_key: cdn, facets_required: facetRequired, category_id: categoryID, page_num: page !== null && page !== void 0 ? page : 1, with_product_attributes: withAttributes, narrow: JSON.stringify(narrowBy), products_per_page: productsPerPage, sort_by: sortBy, sp: recent }, (!use_cache ? { m: 1 } : {})), { search_within_search: searchWithinSearch, st: session_token || undefined, disable_semantics: disable_semantics ? 1 : 0, disable_merchandising: disable_merchandising ? 1 : 0, disable_strategies: disable_strategies ? 1 : 0, disable_turbolinks: disable_turbolinks ? 1 : 0, disable_merchandising_rules: disable_merchandising_rules ? 1 : 0, disable_antonyms: disable_antonyms ? 1 : 0, custom_sort_settings: JSON.stringify(custom_sort_settings), with_product_analytics: with_product_analytics ? true : undefined, with_matching_sets: with_product_analytics ? true : undefined, group_strategy_data: with_product_analytics ? true : undefined, variety_strategy_data: with_product_analytics ? true : undefined, market_context: market_context || undefined, variation_id: variation_id || undefined, ps: ps || undefined, spv: spv || undefined, spc: spc || undefined, personalization: personalization || undefined,
|
|
28
|
+
// Absent rather than 0 when off: API.getWithUrl drops only undefined, null and '', so a 0 would
|
|
29
|
+
// put include_unpublished=0 on every request.
|
|
30
|
+
include_unpublished: include_unpublished ? 1 : undefined });
|
|
28
31
|
params["segments"] = JSON.stringify(segments) || undefined;
|
|
29
32
|
// Use getWithUrl to capture the full request URL for debugging
|
|
30
33
|
const result = yield API.getWithUrl({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartCollections.js","sourceRoot":"","sources":["../../src/services/smartCollections.ts"],"names":[],"mappings":"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","sourcesContent":["import {API} from \"./API\";\nimport {smartCollectionsProps, smartCollectionsResults} from \"../@types/categories\";\nimport {getInternalURL} from \"../utils/getInternalURL\";\nimport {getUseCacheSetting} from \"../utils/getCacheSettings\";\n\nconst BASE_URL = \"https://internal-v3joil6oqa-uc.a.run.app\";\n\n\nexport const SmartCollections = {\n getSmartCollections: async ({\n uuid, storeID,siteKey, cdn,\n facetRequired, narrowBy, page,\n productsPerPage, sortBy\n , withAttributes, categoryID, recent, rec, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, with_product_analytics, market_context, variation_id, ps, spv, spc, personalization, force_and,\n session_token\n }: smartCollectionsProps): Promise<smartCollectionsResults> => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n category_id: categoryID,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n st: session_token || undefined,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n with_product_analytics: with_product_analytics ? true : undefined,\n with_matching_sets: with_product_analytics ? true : undefined,\n group_strategy_data: with_product_analytics ? true : undefined,\n variety_strategy_data: with_product_analytics ? true : undefined,\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n spc: spc || undefined,\n personalization: personalization || undefined,\n // force_and: force_and ? true : undefined\n\n\n };\n\n (params as any)[\"segments\"] = JSON.stringify(segments) || undefined;\n\n // Use getWithUrl to capture the full request URL for debugging\n const result = await API.getWithUrl<smartCollectionsResults>({\n url: `${internal_url}/categories_navigation_reasoning`,\n params,\n });\n\n // Return response with request_url included\n return {\n ...result.data,\n request_url: result.request_url\n };\n },\n getSmartCollectionsProductsIds: ({\n uuid, storeID,siteKey, cdn,\n facetRequired, narrowBy, page,\n productsPerPage, sortBy\n , withAttributes, categoryID, recent, rec, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, market_context, variation_id, ps, spv, spc, personalization, force_and,\n session_token\n }: smartCollectionsProps) => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n category_id: categoryID,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n st: session_token || undefined,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n ids_only:1,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n spc: spc || undefined,\n personalization: personalization || undefined,\n // force_and: force_and ? true : undefined\n\n };\n\n (params as any)[\"segments\"] = JSON.stringify(segments) || undefined;\n return API.get<smartCollectionsResults>({\n url: `${internal_url}/categories_navigation`,\n params,\n });\n },\n }\n;"]}
|
|
1
|
+
{"version":3,"file":"smartCollections.js","sourceRoot":"","sources":["../../src/services/smartCollections.ts"],"names":[],"mappings":"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","sourcesContent":["import {API} from \"./API\";\nimport {smartCollectionsProps, smartCollectionsResults} from \"../@types/categories\";\nimport {getInternalURL} from \"../utils/getInternalURL\";\nimport {getUseCacheSetting} from \"../utils/getCacheSettings\";\n\nconst BASE_URL = \"https://internal-v3joil6oqa-uc.a.run.app\";\n\n\nexport const SmartCollections = {\n getSmartCollections: async ({\n uuid, storeID,siteKey, cdn,\n facetRequired, narrowBy, page,\n productsPerPage, sortBy\n , withAttributes, categoryID, recent, rec, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, with_product_analytics, market_context, variation_id, ps, spv, spc, personalization, force_and,\n session_token, include_unpublished\n }: smartCollectionsProps): Promise<smartCollectionsResults> => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n category_id: categoryID,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n st: session_token || undefined,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n with_product_analytics: with_product_analytics ? true : undefined,\n with_matching_sets: with_product_analytics ? true : undefined,\n group_strategy_data: with_product_analytics ? true : undefined,\n variety_strategy_data: with_product_analytics ? true : undefined,\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n spc: spc || undefined,\n personalization: personalization || undefined,\n // Absent rather than 0 when off: API.getWithUrl drops only undefined, null and '', so a 0 would\n // put include_unpublished=0 on every request.\n include_unpublished: include_unpublished ? 1 : undefined,\n // force_and: force_and ? true : undefined\n\n\n };\n\n (params as any)[\"segments\"] = JSON.stringify(segments) || undefined;\n\n // Use getWithUrl to capture the full request URL for debugging\n const result = await API.getWithUrl<smartCollectionsResults>({\n url: `${internal_url}/categories_navigation_reasoning`,\n params,\n });\n\n // Return response with request_url included\n return {\n ...result.data,\n request_url: result.request_url\n };\n },\n getSmartCollectionsProductsIds: ({\n uuid, storeID,siteKey, cdn,\n facetRequired, narrowBy, page,\n productsPerPage, sortBy\n , withAttributes, categoryID, recent, rec, searchWithinSearch, segments,\n disable_semantics,disable_merchandising,disable_strategies,disable_turbolinks,disable_merchandising_rules,disable_antonyms,\n custom_sort_settings, market_context, variation_id, ps, spv, spc, personalization, force_and,\n session_token\n }: smartCollectionsProps) => {\n var internal_url=getInternalURL();\n if(internal_url==\"\")\n {\n internal_url=BASE_URL;\n }\n\n // Cache setting: Controls whether 'm' param is added to request\n // When true (default): omit 'm' - backend uses cache for faster responses\n // When false: add 'm: 1' - backend forces fresh data (useful for debugging)\n const use_cache = getUseCacheSetting();\n\n const params = {\n site_key:siteKey,\n // UUID: uuid,\n // store_id: storeID,\n cdn_cache_key: cdn,\n facets_required: facetRequired,\n category_id: categoryID,\n page_num: page ?? 1,\n with_product_attributes: withAttributes,\n narrow: JSON.stringify(narrowBy),\n products_per_page: productsPerPage,\n sort_by: sortBy,\n sp: recent,\n ...(!use_cache ? { m: 1 } : {}),\n search_within_search: searchWithinSearch,\n st: session_token || undefined,\n disable_semantics:disable_semantics?1:0,\n disable_merchandising:disable_merchandising?1:0,\n disable_strategies:disable_strategies?1:0,\n disable_turbolinks:disable_turbolinks?1:0,\n disable_merchandising_rules:disable_merchandising_rules?1:0,\n disable_antonyms:disable_antonyms?1:0,\n ids_only:1,\n custom_sort_settings:JSON.stringify(custom_sort_settings),\n market_context: market_context || undefined,\n variation_id: variation_id || undefined,\n ps: ps || undefined,\n spv: spv || undefined,\n spc: spc || undefined,\n personalization: personalization || undefined,\n // force_and: force_and ? true : undefined\n\n };\n\n (params as any)[\"segments\"] = JSON.stringify(segments) || undefined;\n return API.get<smartCollectionsResults>({\n url: `${internal_url}/categories_navigation`,\n params,\n });\n },\n }\n;"]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fast-simon/dashboard-utilities",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.182-beta.1",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"dev": "vite",
|
|
6
6
|
"preview": "vite preview",
|
|
7
7
|
"build": "tsc -p tsconfig-build.json && npm test",
|
|
8
|
-
"test": "node --test tests/rpiSnapshot.test.cjs tests/searchPreview.test.cjs",
|
|
8
|
+
"test": "node --test tests/rpiSnapshot.test.cjs tests/searchPreview.test.cjs tests/smartCollections.test.cjs tests/editorRequestSource.test.cjs tests/merchantToken.test.cjs",
|
|
9
9
|
"postbuild": "copyfiles -u 2 \"src/components/**/*.css\" dist/components && copyfiles -u 2 \"src/icons/**/*.css\" dist/icons && copyfiles -u 2 \"src/assets/**/*.gif\" dist/assets"
|
|
10
10
|
},
|
|
11
11
|
"main": "dist/index.js",
|