@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/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: {
@@ -12,6 +12,8 @@ export interface SearchArgs {
12
12
  selectedFacets?: SelectedFacet[];
13
13
  fuzzy?: '0' | '1' | 'auto';
14
14
  hideUnavailableItems?: boolean;
15
+ showInvisibleItems?: boolean;
16
+ regionId?: string;
15
17
  }
16
18
  export interface ProductLocator {
17
19
  field: 'id' | 'slug';
@@ -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.48",
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": "9a273837d3afc05e1ef2c03d8aaee7eb90df1299"
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 (!regionId) {
74
+ if (!facet) {
72
75
  return null
73
76
  }
74
77
 
75
78
  return {
76
79
  key: REGION_KEY,
77
- value: regionId,
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 (skuIds: readonly string[]) => {
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