@faststore/api 1.12.48 → 1.12.50
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/api.cjs.development.js +30 -13
- package/dist/api.cjs.development.js.map +1 -1
- package/dist/api.cjs.production.min.js +1 -1
- package/dist/api.cjs.production.min.js.map +1 -1
- package/dist/api.esm.js +30 -13
- package/dist/api.esm.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/platforms/vtex/clients/index.d.ts +3 -3
- package/dist/platforms/vtex/clients/search/index.d.ts +2 -0
- package/dist/platforms/vtex/index.d.ts +2 -2
- package/dist/platforms/vtex/resolvers/query.d.ts +1 -1
- package/dist/platforms/vtex/utils/facets.d.ts +1 -0
- package/package.json +2 -2
- package/src/platforms/vtex/clients/search/index.ts +15 -6
- package/src/platforms/vtex/loaders/sku.ts +5 -1
- package/src/platforms/vtex/resolvers/query.ts +3 -0
- package/src/platforms/vtex/resolvers/validateCart.ts +1 -1
- package/src/platforms/vtex/utils/facets.ts +3 -0
package/dist/index.d.ts
CHANGED
|
@@ -73,7 +73,7 @@ export declare const getResolvers: (options: Options) => {
|
|
|
73
73
|
attachmentsValues?: import("./platforms/vtex/clients/commerce/types/OrderForm").Attachment[] | undefined;
|
|
74
74
|
}, unknown, any>>;
|
|
75
75
|
StoreSearchResult: Record<string, import("./platforms/vtex").Resolver<{
|
|
76
|
-
searchArgs: Pick<import("./platforms/vtex/clients/search").SearchArgs, "sort" | "selectedFacets" | "hideUnavailableItems" | "query" | "page" | "count" | "fuzzy">;
|
|
76
|
+
searchArgs: Pick<import("./platforms/vtex/clients/search").SearchArgs, "sort" | "selectedFacets" | "hideUnavailableItems" | "query" | "page" | "count" | "fuzzy" | "showInvisibleItems" | "regionId">;
|
|
77
77
|
productSearchPromise: Promise<import("./platforms/vtex/clients/search/types/ProductSearchResult").ProductSearchResult>;
|
|
78
78
|
}, unknown, any>>;
|
|
79
79
|
StorePropertyValue: Record<string, import("./platforms/vtex").Resolver<import("./__generated__/schema").IStorePropertyValue, unknown, any>>;
|
|
@@ -93,7 +93,7 @@ export declare const getResolvers: (options: Options) => {
|
|
|
93
93
|
product: (_: unknown, { locator }: import("./__generated__/schema").QueryProductArgs, ctx: import("./platforms/vtex").Context) => Promise<import("./platforms/vtex/utils/enhanceSku").EnhancedSku>;
|
|
94
94
|
collection: (_: unknown, { slug }: import("./__generated__/schema").QueryCollectionArgs, ctx: import("./platforms/vtex").Context) => Promise<import("./platforms/vtex/clients/commerce/types/Portal").CollectionPageType>;
|
|
95
95
|
search: (_: unknown, { first, after: maybeAfter, sort, term, selectedFacets }: import("./__generated__/schema").QuerySearchArgs, ctx: import("./platforms/vtex").Context) => Promise<{
|
|
96
|
-
searchArgs: Pick<import("./platforms/vtex/clients/search").SearchArgs, "sort" | "selectedFacets" | "hideUnavailableItems" | "query" | "page" | "count" | "fuzzy">;
|
|
96
|
+
searchArgs: Pick<import("./platforms/vtex/clients/search").SearchArgs, "sort" | "selectedFacets" | "hideUnavailableItems" | "query" | "page" | "count" | "fuzzy" | "showInvisibleItems" | "regionId">;
|
|
97
97
|
productSearchPromise: Promise<import("./platforms/vtex/clients/search/types/ProductSearchResult").ProductSearchResult>;
|
|
98
98
|
}>;
|
|
99
99
|
allProducts: (_: unknown, { first, after: maybeAfter }: import("./__generated__/schema").QueryAllProductsArgs, ctx: import("./platforms/vtex").Context) => Promise<{
|
|
@@ -2,9 +2,9 @@ import type { Context, Options } from '..';
|
|
|
2
2
|
export declare type Clients = ReturnType<typeof getClients>;
|
|
3
3
|
export declare const getClients: (options: Options, ctx: Context) => {
|
|
4
4
|
search: {
|
|
5
|
-
facets: (args: Pick<import("./search").SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy">) => Promise<import("./search/types/FacetSearchResult").FacetSearchResult>;
|
|
6
|
-
products: (args: Pick<import("./search").SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy">) => Promise<import("./search/types/ProductSearchResult").ProductSearchResult>;
|
|
7
|
-
suggestedTerms: (args: Pick<import("./search").SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy">) => Promise<import("./search/types/ProductSearchResult").Suggestion>;
|
|
5
|
+
facets: (args: Pick<import("./search").SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy" | "showInvisibleItems" | "regionId">) => Promise<import("./search/types/FacetSearchResult").FacetSearchResult>;
|
|
6
|
+
products: (args: Pick<import("./search").SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy" | "showInvisibleItems" | "regionId">) => Promise<import("./search/types/ProductSearchResult").ProductSearchResult>;
|
|
7
|
+
suggestedTerms: (args: Pick<import("./search").SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy" | "showInvisibleItems" | "regionId">) => Promise<import("./search/types/ProductSearchResult").Suggestion>;
|
|
8
8
|
topSearches: () => Promise<import("./search/types/ProductSearchResult").Suggestion>;
|
|
9
9
|
};
|
|
10
10
|
commerce: {
|
|
@@ -100,7 +100,7 @@ export declare const getResolvers: (_: Options) => {
|
|
|
100
100
|
attachmentsValues?: import("./clients/commerce/types/OrderForm").Attachment[] | undefined;
|
|
101
101
|
}, unknown, any>>;
|
|
102
102
|
StoreSearchResult: Record<string, Resolver<{
|
|
103
|
-
searchArgs: Pick<SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy">;
|
|
103
|
+
searchArgs: Pick<SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy" | "showInvisibleItems" | "regionId">;
|
|
104
104
|
productSearchPromise: Promise<import("./clients/search/types/ProductSearchResult").ProductSearchResult>;
|
|
105
105
|
}, unknown, any>>;
|
|
106
106
|
StorePropertyValue: Record<string, Resolver<import("../..").IStorePropertyValue, unknown, any>>;
|
|
@@ -120,7 +120,7 @@ export declare const getResolvers: (_: Options) => {
|
|
|
120
120
|
product: (_: unknown, { locator }: import("../..").QueryProductArgs, ctx: Context) => Promise<import("./utils/enhanceSku").EnhancedSku>;
|
|
121
121
|
collection: (_: unknown, { slug }: import("../..").QueryCollectionArgs, ctx: Context) => Promise<import("./clients/commerce/types/Portal").CollectionPageType>;
|
|
122
122
|
search: (_: unknown, { first, after: maybeAfter, sort, term, selectedFacets }: import("../..").QuerySearchArgs, ctx: Context) => Promise<{
|
|
123
|
-
searchArgs: Pick<SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy">;
|
|
123
|
+
searchArgs: Pick<SearchArgs, "hideUnavailableItems" | "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy" | "showInvisibleItems" | "regionId">;
|
|
124
124
|
productSearchPromise: Promise<import("./clients/search/types/ProductSearchResult").ProductSearchResult>;
|
|
125
125
|
}>;
|
|
126
126
|
allProducts: (_: unknown, { first, after: maybeAfter }: import("../..").QueryAllProductsArgs, ctx: Context) => Promise<{
|
|
@@ -6,7 +6,7 @@ export declare const Query: {
|
|
|
6
6
|
product: (_: unknown, { locator }: QueryProductArgs, ctx: Context) => Promise<import("../utils/enhanceSku").EnhancedSku>;
|
|
7
7
|
collection: (_: unknown, { slug }: QueryCollectionArgs, ctx: Context) => Promise<import("../clients/commerce/types/Portal").CollectionPageType>;
|
|
8
8
|
search: (_: unknown, { first, after: maybeAfter, sort, term, selectedFacets }: QuerySearchArgs, ctx: Context) => Promise<{
|
|
9
|
-
searchArgs: Pick<SearchArgs, "sort" | "selectedFacets" | "hideUnavailableItems" | "query" | "page" | "count" | "fuzzy">;
|
|
9
|
+
searchArgs: Pick<SearchArgs, "sort" | "selectedFacets" | "hideUnavailableItems" | "query" | "page" | "count" | "fuzzy" | "showInvisibleItems" | "regionId">;
|
|
10
10
|
productSearchPromise: Promise<import("../clients/search/types/ProductSearchResult").ProductSearchResult>;
|
|
11
11
|
}>;
|
|
12
12
|
allProducts: (_: unknown, { first, after: maybeAfter }: QueryAllProductsArgs, ctx: Context) => Promise<{
|
|
@@ -32,3 +32,4 @@ export declare const findSlug: (facets?: SelectedFacet[] | null | undefined) =>
|
|
|
32
32
|
export declare const findSkuId: (facets?: SelectedFacet[] | null | undefined) => string | null;
|
|
33
33
|
export declare const findLocale: (facets?: SelectedFacet[] | null | undefined) => string | null;
|
|
34
34
|
export declare const findChannel: (facets?: SelectedFacet[] | null | undefined) => string | null;
|
|
35
|
+
export declare const findRegionId: (facets?: SelectedFacet[] | null | undefined) => string | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/api",
|
|
3
|
-
"version": "1.12.
|
|
3
|
+
"version": "1.12.50",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"@envelop/core": "^1 || ^2",
|
|
54
54
|
"graphql": "^15.6.0"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "6a034d875598025c79f2c6ff6b7801bf0c955aef"
|
|
57
57
|
}
|
|
@@ -31,6 +31,8 @@ export interface SearchArgs {
|
|
|
31
31
|
selectedFacets?: SelectedFacet[]
|
|
32
32
|
fuzzy?: '0' | '1' | 'auto'
|
|
33
33
|
hideUnavailableItems?: boolean
|
|
34
|
+
showInvisibleItems?: boolean
|
|
35
|
+
regionId?: string
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
export interface ProductLocator {
|
|
@@ -65,27 +67,28 @@ export const IntelligentSearch = (
|
|
|
65
67
|
}
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
const getRegionFacet = (): IStoreSelectedFacet | null => {
|
|
70
|
+
const getRegionFacet = (regionIdFromQuery?: string): IStoreSelectedFacet | null => {
|
|
69
71
|
const { regionId } = ctx.storage.channel
|
|
72
|
+
const facet = regionIdFromQuery ?? regionId
|
|
70
73
|
|
|
71
|
-
if (!
|
|
74
|
+
if (!facet) {
|
|
72
75
|
return null
|
|
73
76
|
}
|
|
74
77
|
|
|
75
78
|
return {
|
|
76
79
|
key: REGION_KEY,
|
|
77
|
-
value:
|
|
80
|
+
value: facet,
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
83
|
|
|
81
|
-
const addDefaultFacets = (facets: SelectedFacet[]) => {
|
|
84
|
+
const addDefaultFacets = (facets: SelectedFacet[], regionIdFromQuery?: string) => {
|
|
82
85
|
const withDefaltFacets = facets.filter(({ key }) => !CHANNEL_KEYS.has(key))
|
|
83
86
|
|
|
84
87
|
const policyFacet =
|
|
85
88
|
facets.find(({ key }) => key === POLICY_KEY) ?? getPolicyFacet()
|
|
86
89
|
|
|
87
90
|
const regionFacet =
|
|
88
|
-
facets.find(({ key }) => key === REGION_KEY) ?? getRegionFacet()
|
|
91
|
+
facets.find(({ key }) => key === REGION_KEY) ?? getRegionFacet(regionIdFromQuery)
|
|
89
92
|
|
|
90
93
|
if (policyFacet !== null) {
|
|
91
94
|
withDefaltFacets.push(policyFacet)
|
|
@@ -106,6 +109,8 @@ export const IntelligentSearch = (
|
|
|
106
109
|
selectedFacets = [],
|
|
107
110
|
type,
|
|
108
111
|
fuzzy = 'auto',
|
|
112
|
+
showInvisibleItems,
|
|
113
|
+
regionId,
|
|
109
114
|
}: SearchArgs): Promise<T> => {
|
|
110
115
|
const params = new URLSearchParams({
|
|
111
116
|
page: (page + 1).toString(),
|
|
@@ -116,11 +121,15 @@ export const IntelligentSearch = (
|
|
|
116
121
|
locale: ctx.storage.locale,
|
|
117
122
|
})
|
|
118
123
|
|
|
124
|
+
if (showInvisibleItems) {
|
|
125
|
+
params.append('show-invisible-items', 'true')
|
|
126
|
+
}
|
|
127
|
+
|
|
119
128
|
if (hideUnavailableItems !== undefined) {
|
|
120
129
|
params.append('hideUnavailableItems', hideUnavailableItems.toString())
|
|
121
130
|
}
|
|
122
131
|
|
|
123
|
-
const pathname = addDefaultFacets(selectedFacets)
|
|
132
|
+
const pathname = addDefaultFacets(selectedFacets, regionId)
|
|
124
133
|
.map(({ key, value }) => `${key}/${value}`)
|
|
125
134
|
.join('/')
|
|
126
135
|
|
|
@@ -7,11 +7,15 @@ import type { Options } from '..'
|
|
|
7
7
|
import type { Clients } from '../clients'
|
|
8
8
|
|
|
9
9
|
export const getSkuLoader = (_: Options, clients: Clients) => {
|
|
10
|
-
const loader = async (
|
|
10
|
+
const loader = async (keys: readonly string[]) => {
|
|
11
|
+
const skuIds = keys.map((key) => key.split('-')[0]);
|
|
12
|
+
const showInvisibleItems = keys.some((key) => key.split('-')[1] === 'invisibleItems')
|
|
13
|
+
|
|
11
14
|
const { products } = await clients.search.products({
|
|
12
15
|
query: `sku:${skuIds.join(';')}`,
|
|
13
16
|
page: 0,
|
|
14
17
|
count: skuIds.length,
|
|
18
|
+
showInvisibleItems
|
|
15
19
|
})
|
|
16
20
|
|
|
17
21
|
const skuBySkuId = products.reduce((acc, product) => {
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
findSkuId,
|
|
10
10
|
findSlug,
|
|
11
11
|
transformSelectedFacet,
|
|
12
|
+
findRegionId,
|
|
12
13
|
} from "../utils/facets"
|
|
13
14
|
import { SORT_MAP } from "../utils/sort"
|
|
14
15
|
import { StoreCollection } from "./collection"
|
|
@@ -31,6 +32,7 @@ export const Query = {
|
|
|
31
32
|
// Insert channel in context for later usage
|
|
32
33
|
const channel = findChannel(locator)
|
|
33
34
|
const locale = findLocale(locator)
|
|
35
|
+
const regionId = findRegionId(locator)
|
|
34
36
|
const id = findSkuId(locator)
|
|
35
37
|
const slug = findSlug(locator)
|
|
36
38
|
|
|
@@ -90,6 +92,7 @@ export const Query = {
|
|
|
90
92
|
page: 0,
|
|
91
93
|
count: 1,
|
|
92
94
|
query: `product:${route.id}`,
|
|
95
|
+
regionId,
|
|
93
96
|
})
|
|
94
97
|
|
|
95
98
|
if (!product) {
|
|
@@ -145,7 +145,7 @@ const orderFormToCart = async (
|
|
|
145
145
|
orderNumber: form.orderFormId,
|
|
146
146
|
acceptedOffer: form.items.map(async (item) => ({
|
|
147
147
|
...item,
|
|
148
|
-
product: await skuLoader.load(item.id),
|
|
148
|
+
product: await skuLoader.load(`${item.id}-invisibleItems`),
|
|
149
149
|
})),
|
|
150
150
|
},
|
|
151
151
|
messages: form.messages.map(({ text, status }) => ({
|
|
@@ -104,3 +104,6 @@ export const findLocale = (facets?: Maybe<SelectedFacet[]>) =>
|
|
|
104
104
|
|
|
105
105
|
export const findChannel = (facets?: Maybe<SelectedFacet[]>) =>
|
|
106
106
|
facets?.find((facet) => facet.key === 'channel')?.value ?? null
|
|
107
|
+
|
|
108
|
+
export const findRegionId = (facets?: Maybe<SelectedFacet[]>) =>
|
|
109
|
+
facets?.find((facet) => facet.key === 'regionId')?.value ?? undefined
|