@faststore/core 3.0.45 → 3.0.47
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/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +25 -0
- package/.next/app-path-routes-manifest.json +1 -0
- package/.next/build-manifest.json +95 -90
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/eslint/.cache_1gneedd +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.js +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +17 -17
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/app/_not-found.html +1 -0
- package/.next/server/app/_not-found.js +1 -0
- package/.next/server/app/_not-found.js.nft.json +1 -0
- package/.next/server/app/_not-found.meta +1 -0
- package/.next/server/app/_not-found.rsc +6 -0
- package/.next/server/app/_not-found_client-reference-manifest.js +1 -0
- package/.next/server/app/fs-next-update/page.js +1 -0
- package/.next/server/app/fs-next-update/page.js.nft.json +1 -0
- package/.next/server/app/fs-next-update/page_client-reference-manifest.js +1 -0
- package/.next/server/app/fs-next-update.html +1 -0
- package/.next/server/app/fs-next-update.meta +1 -0
- package/.next/server/app/fs-next-update.rsc +6 -0
- package/.next/server/app-paths-manifest.json +4 -0
- package/.next/server/chunks/1408.js +1 -0
- package/.next/server/chunks/1488.js +9 -0
- package/.next/server/chunks/2053.js +8 -0
- package/.next/server/chunks/3057.js +1 -0
- package/.next/server/chunks/3068.js +1 -0
- package/.next/server/chunks/3131.js +1 -0
- package/.next/server/chunks/3404.js +1 -0
- package/.next/server/chunks/3607.js +1 -0
- package/.next/server/chunks/368.js +1 -0
- package/.next/server/chunks/3779.js +1 -0
- package/.next/server/chunks/3992.js +1 -0
- package/.next/server/chunks/4222.js +1 -0
- package/.next/server/chunks/466.js +1 -0
- package/.next/server/chunks/513.js +1 -0
- package/.next/server/chunks/522.js +1 -0
- package/.next/server/chunks/5640.js +6 -0
- package/.next/server/chunks/5686.js +1 -0
- package/.next/server/chunks/6090.js +1 -0
- package/.next/server/chunks/6414.js +1 -0
- package/.next/server/chunks/647.js +296 -0
- package/.next/server/chunks/6535.js +1 -0
- package/.next/server/chunks/6693.js +1 -0
- package/.next/server/chunks/{859.js → 6859.js} +2 -2
- package/.next/server/chunks/692.js +1 -0
- package/.next/server/chunks/7143.js +1 -0
- package/.next/server/chunks/7982.js +1 -0
- package/.next/server/chunks/8352.js +1 -0
- package/.next/server/chunks/8609.js +1 -0
- package/.next/server/chunks/8653.js +1 -0
- package/.next/server/chunks/8811.js +1 -0
- package/.next/server/chunks/9134.js +1 -0
- package/.next/server/chunks/9239.js +1 -0
- package/.next/server/chunks/9740.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -0
- package/.next/server/pages/404.js +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.js +1 -1
- package/.next/server/pages/500.js.nft.json +1 -1
- package/.next/server/pages/[...slug].js +1 -1
- package/.next/server/pages/[...slug].js.nft.json +1 -1
- package/.next/server/pages/[slug]/p.js +1 -1
- package/.next/server/pages/[slug]/p.js.nft.json +1 -1
- package/.next/server/pages/_app.js +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/account.js +1 -1
- package/.next/server/pages/account.js.nft.json +1 -1
- package/.next/server/pages/api/graphql.js +1 -1
- package/.next/server/pages/api/graphql.js.nft.json +1 -1
- package/.next/server/pages/api/health/live.js +1 -1
- package/.next/server/pages/api/health/live.js.nft.json +1 -1
- package/.next/server/pages/api/health/ready.js +1 -1
- package/.next/server/pages/api/health/ready.js.nft.json +1 -1
- package/.next/server/pages/api/preview.js +1 -1
- package/.next/server/pages/api/preview.js.nft.json +1 -1
- package/.next/server/pages/checkout.js +1 -1
- package/.next/server/pages/checkout.js.nft.json +1 -1
- package/.next/server/pages/en-US/404.html +2 -2
- package/.next/server/pages/en-US/404.json +1 -1
- package/.next/server/pages/en-US/500.html +2 -2
- package/.next/server/pages/en-US/500.json +1 -1
- package/.next/server/pages/en-US/account.html +2 -2
- package/.next/server/pages/en-US/account.json +1 -1
- package/.next/server/pages/en-US/checkout.html +2 -2
- package/.next/server/pages/en-US/checkout.json +1 -1
- package/.next/server/pages/en-US/login.html +2 -2
- package/.next/server/pages/en-US/login.json +1 -1
- package/.next/server/pages/en-US/s.html +2 -2
- package/.next/server/pages/en-US/s.json +1 -1
- package/.next/server/pages/en-US.html +2 -2
- package/.next/server/pages/en-US.json +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/login.js +1 -1
- package/.next/server/pages/login.js.nft.json +1 -1
- package/.next/server/pages/s.js +1 -1
- package/.next/server/pages/s.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-api-runtime.js +1 -1
- package/.next/server/webpack-runtime.js +1 -1
- package/.next/static/chunks/{484.b82b73b1d8c37e02.js → 119.e218828b0132b8b2.js} +1 -1
- package/.next/static/chunks/{857.d2299cfe995af21d.js → 319.8d30e9ffafb22a7b.js} +1 -1
- package/.next/static/chunks/346-94f30a4bb6dafd89.js +1 -0
- package/.next/static/chunks/439.db1fe827fd6839bb.js +1 -0
- package/.next/static/chunks/461.74f76bc649cb0446.js +1 -0
- package/.next/static/chunks/503-e6db8cab6eb3bf60.js +25 -0
- package/.next/static/chunks/{540.6c62d2536d42a1e0.js → 515.e66ca5426460f9b5.js} +1 -1
- package/.next/static/chunks/551-448d32b3b6393825.js +1 -0
- package/.next/static/chunks/{575-853fb8b1ba4ce8c4.js → 575-cdcaf62ab25bbfca.js} +1 -1
- package/.next/static/chunks/{202.c7d8a71173edecfb.js → 576.bd044c1cd3af7bbc.js} +1 -1
- package/.next/static/chunks/{217.01bc0ad07edd6f1b.js → 641.e663ec37da787600.js} +1 -1
- package/.next/static/chunks/{758.3ca049c36b5ddd7d.js → 661.df439acd66dbae34.js} +1 -1
- package/.next/static/chunks/680.355e4fc032bd559f.js +1 -0
- package/.next/static/chunks/913-4af007b10d50c50f.js +1 -0
- package/.next/static/chunks/app/_not-found-3649108cdca52b21.js +1 -0
- package/.next/static/chunks/app/fs-next-update/page-9a2debb5dd829908.js +1 -0
- package/.next/static/chunks/app/layout-a5723c7cfcca3bdf.js +1 -0
- package/.next/static/chunks/fd9d1056-e4950b334bc218cf.js +9 -0
- package/.next/static/chunks/main-5e45f8a409e3ce1c.js +1 -0
- package/.next/static/chunks/main-app-7b31a9960d0fa675.js +1 -0
- package/.next/static/chunks/pages/{404-1334d11ab8467b3d.js → 404-2e174f10fe6712cd.js} +1 -1
- package/.next/static/chunks/pages/{500-449c5bd51f98423f.js → 500-52c42b827ed9693b.js} +1 -1
- package/.next/static/chunks/pages/[...slug]-91cd643a14638b90.js +1 -0
- package/.next/static/chunks/pages/[slug]/p-436d394ddc268573.js +1 -0
- package/.next/static/chunks/pages/{_app-ec0d2e833bd9cea0.js → _app-88eac41033b6a613.js} +2 -2
- package/.next/static/chunks/pages/{_error-fbf331a03642b495.js → _error-5a3e12f364a20272.js} +1 -1
- package/.next/static/chunks/pages/{account-dbc5c028225cd1ac.js → account-9e4bcc3ab5b88353.js} +1 -1
- package/.next/static/chunks/pages/{checkout-29ae2c37eaf172e1.js → checkout-7c95e252d2cbfd75.js} +1 -1
- package/.next/static/chunks/pages/index-d3008f576cb2fc9d.js +1 -0
- package/.next/static/chunks/pages/{login-c4d2c856008df5ac.js → login-7a53f93622c6fded.js} +1 -1
- package/.next/static/chunks/pages/s-4d4c0bb22d489fa2.js +1 -0
- package/.next/static/chunks/webpack-31f87692f808967d.js +1 -0
- package/.next/static/css/173705e880fb4eaf.css +1 -0
- package/.next/static/css/17e37eb991935d47.css +1 -0
- package/.next/static/css/185f3332f3d0db64.css +1 -0
- package/.next/static/css/25261a033e496803.css +1 -0
- package/.next/static/css/36f9392d58a1a958.css +1 -0
- package/.next/static/css/4ababb851a0d481b.css +1 -0
- package/.next/static/css/6ce7302d311d7d68.css +1 -0
- package/.next/static/css/d6562b2ce182bbef.css +1 -0
- package/.next/static/css/ec44b650be144ada.css +1 -0
- package/.next/static/css/ec840ce35f0cf5e0.css +1 -0
- package/.next/static/ieYDvu46hXTqDayv0izz5/_buildManifest.js +1 -0
- package/.next/trace +113 -91
- package/.next/types/app/fs-next-update/page.ts +71 -0
- package/.next/types/package.json +1 -0
- package/.turbo/turbo-build.log +38 -28
- package/.turbo/turbo-test.log +11 -11
- package/@generated/gql.ts +4 -4
- package/@generated/graphql.ts +15 -3
- package/@generated/persisted-documents.json +3 -3
- package/@generated/schema.graphql +2 -0
- package/api/index.ts +2 -0
- package/app/fs-next-update/page.tsx +3 -0
- package/app/layout.tsx +11 -0
- package/cms/faststore/sections.json +22 -0
- package/index.ts +1 -9
- package/next-env.d.ts +1 -0
- package/next.config.js +11 -0
- package/package.json +9 -9
- package/src/components/cart/CartItem/CartItem.tsx +4 -1
- package/src/components/cart/CartSidebar/CartSidebar.tsx +10 -1
- package/src/components/sections/ProductDetails/ProductDetails.tsx +7 -2
- package/src/components/templates/LandingPage/LandingPage.tsx +10 -1
- package/src/components/ui/ProductDetails/ProductDetailsSettings.tsx +7 -0
- package/src/customizations/src/dynamicContent/index.ts +16 -0
- package/src/experimental/index.ts +4 -0
- package/src/pages/[...slug].tsx +5 -0
- package/src/pages/index.tsx +18 -4
- package/src/sdk/cart/index.ts +1 -0
- package/src/sdk/graphql/request.ts +3 -3
- package/src/sdk/overrides/PageProvider.tsx +19 -8
- package/src/utils/dynamicContent.ts +29 -0
- package/tsconfig.json +17 -2
- package/.next/server/chunks/119.js +0 -1
- package/.next/server/chunks/12.js +0 -1
- package/.next/server/chunks/187.js +0 -1
- package/.next/server/chunks/202.js +0 -1
- package/.next/server/chunks/24.js +0 -1
- package/.next/server/chunks/242.js +0 -1
- package/.next/server/chunks/247.js +0 -1
- package/.next/server/chunks/344.js +0 -1
- package/.next/server/chunks/404.js +0 -1
- package/.next/server/chunks/414.js +0 -1
- package/.next/server/chunks/484.js +0 -1
- package/.next/server/chunks/493.js +0 -1
- package/.next/server/chunks/498.js +0 -1
- package/.next/server/chunks/540.js +0 -1
- package/.next/server/chunks/57.js +0 -1
- package/.next/server/chunks/624.js +0 -1
- package/.next/server/chunks/640.js +0 -6
- package/.next/server/chunks/646.js +0 -292
- package/.next/server/chunks/659.js +0 -9
- package/.next/server/chunks/679.js +0 -1
- package/.next/server/chunks/693.js +0 -1
- package/.next/server/chunks/694.js +0 -1
- package/.next/server/chunks/779.js +0 -1
- package/.next/server/chunks/82.js +0 -8
- package/.next/server/chunks/857.js +0 -1
- package/.next/server/chunks/881.js +0 -1
- package/.next/server/chunks/917.js +0 -1
- package/.next/server/chunks/936.js +0 -1
- package/.next/server/chunks/96.js +0 -1
- package/.next/server/chunks/997.js +0 -1
- package/.next/static/4d-dhs4ERxMUlufFbhp1E/_buildManifest.js +0 -1
- package/.next/static/chunks/104-549e3a03338dbf15.js +0 -1
- package/.next/static/chunks/161-b39fe2f79ff7bc85.js +0 -1
- package/.next/static/chunks/247.6f1391104a867395.js +0 -1
- package/.next/static/chunks/624.455cdc0925956ae5.js +0 -1
- package/.next/static/chunks/629-751d31ac7c84f87d.js +0 -1
- package/.next/static/chunks/65.da22595d53beae76.js +0 -1
- package/.next/static/chunks/main-6f63f6746cc029db.js +0 -1
- package/.next/static/chunks/pages/[...slug]-bcaf61b01157d8cb.js +0 -1
- package/.next/static/chunks/pages/[slug]/p-7ac0f128969c3df8.js +0 -1
- package/.next/static/chunks/pages/index-cd109119d65df8e3.js +0 -1
- package/.next/static/chunks/pages/s-26e475975386c51a.js +0 -1
- package/.next/static/chunks/webpack-cb411fb5cc9a0449.js +0 -1
- package/.next/static/css/0d45c82d8887a269.css +0 -1
- package/.next/static/css/211c7542af66d8b4.css +0 -1
- package/.next/static/css/2980acad3f8e1028.css +0 -1
- package/.next/static/css/4c4d90eb8cb1d2b7.css +0 -1
- package/.next/static/css/96e3fddf695d6aa9.css +0 -1
- package/.next/static/css/b9d9ba1b04f3160d.css +0 -1
- package/.next/static/css/cff9aafa16fccc9c.css +0 -1
- package/.next/static/css/d586715f4f707df4.css +0 -1
- package/.next/static/css/d8b918e01478a2ed.css +0 -1
- package/.next/static/css/e32410b31c666cb2.css +0 -1
- /package/.next/static/chunks/{framework-8e279965036b6169.js → framework-21e9365486ba23a6.js} +0 -0
- /package/.next/static/{4d-dhs4ERxMUlufFbhp1E → ieYDvu46hXTqDayv0izz5}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// File: /home/runner/work/faststore/faststore/packages/core/app/fs-next-update/page.tsx
|
|
2
|
+
import * as entry from '../../../../app/fs-next-update/page.js'
|
|
3
|
+
import type { ResolvingMetadata } from 'next/dist/lib/metadata/types/metadata-interface.js'
|
|
4
|
+
|
|
5
|
+
type TEntry = typeof import('../../../../app/fs-next-update/page.js')
|
|
6
|
+
|
|
7
|
+
// Check that the entry is a valid entry
|
|
8
|
+
checkFields<Diff<{
|
|
9
|
+
default: Function
|
|
10
|
+
config?: {}
|
|
11
|
+
generateStaticParams?: Function
|
|
12
|
+
revalidate?: RevalidateRange<TEntry> | false
|
|
13
|
+
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
|
14
|
+
dynamicParams?: boolean
|
|
15
|
+
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
|
16
|
+
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
|
17
|
+
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
|
18
|
+
maxDuration?: number
|
|
19
|
+
|
|
20
|
+
metadata?: any
|
|
21
|
+
generateMetadata?: Function
|
|
22
|
+
|
|
23
|
+
}, TEntry, ''>>()
|
|
24
|
+
|
|
25
|
+
// Check the prop type of the entry function
|
|
26
|
+
checkFields<Diff<PageProps, FirstArg<TEntry['default']>, 'default'>>()
|
|
27
|
+
|
|
28
|
+
// Check the arguments and return type of the generateMetadata function
|
|
29
|
+
if ('generateMetadata' in entry) {
|
|
30
|
+
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
|
31
|
+
checkFields<Diff<ResolvingMetadata, SecondArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Check the arguments and return type of the generateStaticParams function
|
|
35
|
+
if ('generateStaticParams' in entry) {
|
|
36
|
+
checkFields<Diff<{ params: PageParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
|
37
|
+
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type PageParams = any
|
|
41
|
+
export interface PageProps {
|
|
42
|
+
params?: any
|
|
43
|
+
searchParams?: any
|
|
44
|
+
}
|
|
45
|
+
export interface LayoutProps {
|
|
46
|
+
children?: React.ReactNode
|
|
47
|
+
|
|
48
|
+
params?: any
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// =============
|
|
52
|
+
// Utility types
|
|
53
|
+
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
|
54
|
+
|
|
55
|
+
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
|
56
|
+
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
|
57
|
+
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
|
58
|
+
|
|
59
|
+
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
|
60
|
+
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
|
61
|
+
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
|
66
|
+
|
|
67
|
+
// https://github.com/sindresorhus/type-fest
|
|
68
|
+
type Numeric = number | bigint
|
|
69
|
+
type Zero = 0 | 0n
|
|
70
|
+
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
|
71
|
+
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module"}
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
$ yarn partytown & yarn generate && next build
|
|
2
|
-
$ faststore generate-graphql -c
|
|
3
2
|
$ partytown copylib ./public/~partytown
|
|
3
|
+
$ faststore generate-graphql -c
|
|
4
4
|
Partytown lib copied to: /home/runner/work/faststore/faststore/packages/core/public/~partytown
|
|
5
5
|
success - GraphQL schema, types, and optimizations successfully generated 🎉
|
|
6
6
|
⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
|
|
@@ -9,10 +9,6 @@ This information is used to shape Next.js' roadmap and prioritize features.
|
|
|
9
9
|
You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
|
|
10
10
|
https://nextjs.org/telemetry
|
|
11
11
|
|
|
12
|
-
Browserslist: caniuse-lite is outdated. Please run:
|
|
13
|
-
npx browserslist@latest --update-db
|
|
14
|
-
Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
15
|
-
Linting and checking validity of types ...
|
|
16
12
|
Browserslist: caniuse-lite is outdated. Please run:
|
|
17
13
|
npx browserslist@latest --update-db
|
|
18
14
|
Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
@@ -23,38 +19,52 @@ Browserslist: caniuse-lite is outdated. Please run:
|
|
|
23
19
|
npx update-browserslist-db@latest
|
|
24
20
|
Why you should do it regularly: https://github.com/browserslist/update-db#readme
|
|
25
21
|
✓ Compiled successfully
|
|
22
|
+
Linting and checking validity of types ...
|
|
23
|
+
Browserslist: caniuse-lite is outdated. Please run:
|
|
24
|
+
npx browserslist@latest --update-db
|
|
25
|
+
Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
26
26
|
Collecting page data ...
|
|
27
|
-
Generating static pages (0/7) ...
|
|
28
|
-
|
|
29
27
|
Generating static pages (1/7)
|
|
30
|
-
|
|
31
28
|
Generating static pages (3/7)
|
|
32
|
-
|
|
33
29
|
Generating static pages (5/7)
|
|
34
|
-
|
|
35
30
|
✓ Generating static pages (7/7)
|
|
31
|
+
Generating static pages (0/9) ...
|
|
32
|
+
|
|
36
33
|
Generating static pages (2/9)
|
|
34
|
+
|
|
37
35
|
Generating static pages (4/9)
|
|
36
|
+
Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview for mapping the page and the corresponding data-fetching function.
|
|
37
|
+
|
|
38
38
|
Generating static pages (6/9)
|
|
39
|
+
|
|
39
40
|
✓ Generating static pages (9/9)
|
|
40
41
|
Finalizing page optimization ...
|
|
41
42
|
Collecting build traces ...
|
|
42
43
|
|
|
44
|
+
Route (app) Size First Load JS
|
|
45
|
+
┌ ○ /_not-found 875 B 83 kB
|
|
46
|
+
└ ○ /fs-next-update 142 B 82.3 kB
|
|
47
|
+
+ First Load JS shared by all 82.1 kB
|
|
48
|
+
├ chunks/503-e6db8cab6eb3bf60.js 28.4 kB
|
|
49
|
+
├ chunks/fd9d1056-e4950b334bc218cf.js 51.1 kB
|
|
50
|
+
├ chunks/main-app-7b31a9960d0fa675.js 232 B
|
|
51
|
+
└ chunks/webpack-31f87692f808967d.js 2.45 kB
|
|
52
|
+
|
|
43
53
|
Route (pages) Size First Load JS
|
|
44
|
-
┌ ● / 3.
|
|
45
|
-
├ └ css/
|
|
46
|
-
├ /_app 0 B 93.
|
|
47
|
-
├ ● /[...slug] 4.
|
|
48
|
-
├ └ css/
|
|
49
|
-
├ ● /[slug]/p 11.
|
|
50
|
-
├ └ css/
|
|
54
|
+
┌ ● / 3.39 kB 144 kB
|
|
55
|
+
├ └ css/6ce7302d311d7d68.css 6.57 kB
|
|
56
|
+
├ /_app 0 B 93.5 kB
|
|
57
|
+
├ ● /[...slug] 4.5 kB 156 kB
|
|
58
|
+
├ └ css/ec840ce35f0cf5e0.css 7.02 kB
|
|
59
|
+
├ ● /[slug]/p 11.1 kB 151 kB
|
|
60
|
+
├ └ css/36f9392d58a1a958.css 11.4 kB
|
|
51
61
|
├ ○ /404 1.47 kB 127 kB
|
|
52
62
|
├ ● /500 1.47 kB 127 kB
|
|
53
|
-
├ ● /account
|
|
54
|
-
├ λ /api/graphql 0 B 93.
|
|
55
|
-
├ λ /api/health/live 0 B 93.
|
|
56
|
-
├ λ /api/health/ready 0 B 93.
|
|
57
|
-
├ λ /api/preview 0 B 93.
|
|
58
|
-
├ ● /checkout
|
|
63
|
+
├ ● /account 675 B 126 kB
|
|
64
|
+
├ λ /api/graphql 0 B 93.5 kB
|
|
65
|
+
├ λ /api/health/live 0 B 93.5 kB
|
|
66
|
+
├ λ /api/health/ready 0 B 93.5 kB
|
|
67
|
+
├ λ /api/preview 0 B 93.5 kB
|
|
68
|
+
├ ● /checkout 660 B 126 kB
|
|
59
69
|
├ ● /login 1.58 kB 127 kB
|
|
60
|
-
└ ● /s 4.
|
|
70
|
+
└ ● /s 4.97 kB 141 kB
|
|
61
71
|
+ First Load JS shared by all 96.5 kB
|
|
62
|
-
├ chunks/framework-
|
|
63
|
-
├ chunks/main-
|
|
64
|
-
├ chunks/pages/_app-
|
|
65
|
-
├ chunks/webpack-
|
|
72
|
+
├ chunks/framework-21e9365486ba23a6.js 45.4 kB
|
|
73
|
+
├ chunks/main-5e45f8a409e3ce1c.js 33.1 kB
|
|
74
|
+
├ chunks/pages/_app-88eac41033b6a613.js 12.6 kB
|
|
75
|
+
├ chunks/webpack-31f87692f808967d.js 2.45 kB
|
|
66
76
|
└ css/5d1f64b61ea581f4.css 3.05 kB
|
|
67
77
|
|
|
68
78
|
λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
$ jest
|
|
2
|
-
PASS test/server/index.test.ts (27.
|
|
2
|
+
PASS test/server/index.test.ts (27.469 s)
|
|
3
3
|
FastStore GraphQL Layer
|
|
4
4
|
@faststore/api
|
|
5
|
-
✓ should return a valid GraphQL schema (
|
|
6
|
-
✓ should return a valid GraphQL schema contain all expected types (
|
|
7
|
-
✓ should return a valid GraphQL schema contain all expected queries (
|
|
8
|
-
✓ should return a valid GraphQL schema contain all expected mutations (
|
|
5
|
+
✓ should return a valid GraphQL schema (13 ms)
|
|
6
|
+
✓ should return a valid GraphQL schema contain all expected types (19 ms)
|
|
7
|
+
✓ should return a valid GraphQL schema contain all expected queries (2 ms)
|
|
8
|
+
✓ should return a valid GraphQL schema contain all expected mutations (1 ms)
|
|
9
9
|
VTEX API Extension
|
|
10
|
-
✓ getTypeDefsFromFolder function should return an Array (
|
|
10
|
+
✓ getTypeDefsFromFolder function should return an Array (11 ms)
|
|
11
11
|
Third Party API Extension
|
|
12
|
-
✓ getTypeDefsFromFolder function should return an Array (
|
|
12
|
+
✓ getTypeDefsFromFolder function should return an Array (9 ms)
|
|
13
13
|
Final Schema after merging
|
|
14
|
-
✓ should return a valid merged GraphQL schema (
|
|
14
|
+
✓ should return a valid merged GraphQL schema (47 ms)
|
|
15
15
|
Envelop
|
|
16
|
-
✓ should exist with its plugins (
|
|
17
|
-
✓ should handle options and execute (
|
|
16
|
+
✓ should exist with its plugins (54 ms)
|
|
17
|
+
✓ should handle options and execute (706 ms)
|
|
18
18
|
|
|
19
19
|
Test Suites: 1 passed, 1 total
|
|
20
20
|
Tests: 9 passed, 9 total
|
|
21
21
|
Snapshots: 0 total
|
|
22
|
-
Time: 27.
|
|
22
|
+
Time: 27.645 s
|
|
23
23
|
Ran all test suites.
|
package/@generated/gql.ts
CHANGED
|
@@ -16,7 +16,7 @@ const documents = {
|
|
|
16
16
|
types.ProductSummary_ProductFragmentDoc,
|
|
17
17
|
'\n fragment Filter_facets on StoreFacet {\n ... on StoreFacetRange {\n key\n label\n\n min {\n selected\n absolute\n }\n\n max {\n selected\n absolute\n }\n\n __typename\n }\n ... on StoreFacetBoolean {\n key\n label\n values {\n label\n value\n selected\n quantity\n }\n\n __typename\n }\n }\n':
|
|
18
18
|
types.Filter_FacetsFragmentDoc,
|
|
19
|
-
'\n fragment ProductDetailsFragment_product on StoreProduct {\n id: productID\n sku\n name\n gtin\n description\n\n isVariantOf {\n name\n productGroupID\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n # Contains necessary info to add this item to cart\n ...CartProductItem\n }\n':
|
|
19
|
+
'\n fragment ProductDetailsFragment_product on StoreProduct {\n id: productID\n sku\n name\n gtin\n description\n unitMultiplier\n isVariantOf {\n name\n productGroupID\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n # Contains necessary info to add this item to cart\n ...CartProductItem\n }\n':
|
|
20
20
|
types.ProductDetailsFragment_ProductFragmentDoc,
|
|
21
21
|
'\n fragment ClientManyProducts on Query {\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n ) {\n products {\n pageInfo {\n totalCount\n }\n }\n }\n }\n':
|
|
22
22
|
types.ClientManyProductsFragmentDoc,
|
|
@@ -38,7 +38,7 @@ const documents = {
|
|
|
38
38
|
types.ServerCollectionPageQueryDocument,
|
|
39
39
|
'\n query ServerProductQuery($locator: [IStoreSelectedFacet!]!) {\n ...ServerProduct\n product(locator: $locator) {\n id: productID\n\n seo {\n title\n description\n canonical\n }\n\n brand {\n name\n }\n\n sku\n gtin\n name\n description\n releaseDate\n\n breadcrumbList {\n itemListElement {\n item\n name\n position\n }\n }\n\n image {\n url\n alternateName\n }\n\n offers {\n lowPrice\n highPrice\n priceCurrency\n offers {\n availability\n price\n priceValidUntil\n priceCurrency\n itemCondition\n seller {\n identifier\n }\n }\n }\n\n isVariantOf {\n productGroupID\n }\n\n ...ProductDetailsFragment_product\n }\n }\n':
|
|
40
40
|
types.ServerProductQueryDocument,
|
|
41
|
-
'\n mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n ...CartItem\n }\n }\n messages {\n ...CartMessage\n }\n }\n }\n\n fragment CartMessage on StoreCartMessage {\n text\n status\n }\n\n fragment CartItem on StoreOffer {\n seller {\n identifier\n }\n quantity\n price\n listPrice\n itemOffered {\n ...CartProductItem\n }\n }\n\n fragment CartProductItem on StoreProduct {\n sku\n name\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n':
|
|
41
|
+
'\n mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n ...CartItem\n }\n }\n messages {\n ...CartMessage\n }\n }\n }\n\n fragment CartMessage on StoreCartMessage {\n text\n status\n }\n\n fragment CartItem on StoreOffer {\n seller {\n identifier\n }\n quantity\n price\n listPrice\n itemOffered {\n ...CartProductItem\n }\n }\n\n fragment CartProductItem on StoreProduct {\n sku\n name\n unitMultiplier\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n':
|
|
42
42
|
types.ValidateCartMutationDocument,
|
|
43
43
|
'\n mutation SubscribeToNewsletter($data: IPersonNewsletter!) {\n subscribeToNewsletter(data: $data) {\n id\n }\n }\n':
|
|
44
44
|
types.SubscribeToNewsletterDocument,
|
|
@@ -76,7 +76,7 @@ export function gql(
|
|
|
76
76
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
77
77
|
*/
|
|
78
78
|
export function gql(
|
|
79
|
-
source: '\n fragment ProductDetailsFragment_product on StoreProduct {\n id: productID\n sku\n name\n gtin\n description\n\n isVariantOf {\n name\n productGroupID\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n # Contains necessary info to add this item to cart\n ...CartProductItem\n }\n'
|
|
79
|
+
source: '\n fragment ProductDetailsFragment_product on StoreProduct {\n id: productID\n sku\n name\n gtin\n description\n unitMultiplier\n isVariantOf {\n name\n productGroupID\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n # Contains necessary info to add this item to cart\n ...CartProductItem\n }\n'
|
|
80
80
|
): typeof import('./graphql').ProductDetailsFragment_ProductFragmentDoc
|
|
81
81
|
/**
|
|
82
82
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
@@ -142,7 +142,7 @@ export function gql(
|
|
|
142
142
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
143
143
|
*/
|
|
144
144
|
export function gql(
|
|
145
|
-
source: '\n mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n ...CartItem\n }\n }\n messages {\n ...CartMessage\n }\n }\n }\n\n fragment CartMessage on StoreCartMessage {\n text\n status\n }\n\n fragment CartItem on StoreOffer {\n seller {\n identifier\n }\n quantity\n price\n listPrice\n itemOffered {\n ...CartProductItem\n }\n }\n\n fragment CartProductItem on StoreProduct {\n sku\n name\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n'
|
|
145
|
+
source: '\n mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n ...CartItem\n }\n }\n messages {\n ...CartMessage\n }\n }\n }\n\n fragment CartMessage on StoreCartMessage {\n text\n status\n }\n\n fragment CartItem on StoreOffer {\n seller {\n identifier\n }\n quantity\n price\n listPrice\n itemOffered {\n ...CartProductItem\n }\n }\n\n fragment CartProductItem on StoreProduct {\n sku\n name\n unitMultiplier\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n }\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n'
|
|
146
146
|
): typeof import('./graphql').ValidateCartMutationDocument
|
|
147
147
|
/**
|
|
148
148
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
package/@generated/graphql.ts
CHANGED
|
@@ -927,6 +927,8 @@ export type StoreProduct = {
|
|
|
927
927
|
sku: Scalars['String']['output']
|
|
928
928
|
/** Corresponding collection URL slug, with which to retrieve this entity. */
|
|
929
929
|
slug: Scalars['String']['output']
|
|
930
|
+
/** Sku Unit Multiplier */
|
|
931
|
+
unitMultiplier: Maybe<Scalars['Float']['output']>
|
|
930
932
|
}
|
|
931
933
|
|
|
932
934
|
/** Product information. Products are variants within product groups, equivalent to VTEX [SKUs](https://help.vtex.com/en/tutorial/what-is-an-sku--1K75s4RXAQyOuGUYKMM68u#). For example, you may have a **Shirt** product group with associated products such as **Blue shirt size L**, **Green shirt size XL** and so on. */
|
|
@@ -1146,6 +1148,7 @@ export type ProductDetailsFragment_ProductFragment = {
|
|
|
1146
1148
|
name: string
|
|
1147
1149
|
gtin: string
|
|
1148
1150
|
description: string
|
|
1151
|
+
unitMultiplier: number | null
|
|
1149
1152
|
id: string
|
|
1150
1153
|
isVariantOf: {
|
|
1151
1154
|
name: string
|
|
@@ -1227,6 +1230,7 @@ export type ServerProductQueryQuery = {
|
|
|
1227
1230
|
name: string
|
|
1228
1231
|
description: string
|
|
1229
1232
|
releaseDate: string
|
|
1233
|
+
unitMultiplier: number | null
|
|
1230
1234
|
id: string
|
|
1231
1235
|
seo: { title: string; description: string; canonical: string }
|
|
1232
1236
|
brand: { name: string }
|
|
@@ -1283,6 +1287,7 @@ export type ValidateCartMutationMutation = {
|
|
|
1283
1287
|
itemOffered: {
|
|
1284
1288
|
sku: string
|
|
1285
1289
|
name: string
|
|
1290
|
+
unitMultiplier: number | null
|
|
1286
1291
|
gtin: string
|
|
1287
1292
|
image: Array<{ url: string; alternateName: string }>
|
|
1288
1293
|
brand: { name: string }
|
|
@@ -1318,6 +1323,7 @@ export type CartItemFragment = {
|
|
|
1318
1323
|
itemOffered: {
|
|
1319
1324
|
sku: string
|
|
1320
1325
|
name: string
|
|
1326
|
+
unitMultiplier: number | null
|
|
1321
1327
|
gtin: string
|
|
1322
1328
|
image: Array<{ url: string; alternateName: string }>
|
|
1323
1329
|
brand: { name: string }
|
|
@@ -1342,6 +1348,7 @@ export type CartItemFragment = {
|
|
|
1342
1348
|
export type CartProductItemFragment = {
|
|
1343
1349
|
sku: string
|
|
1344
1350
|
name: string
|
|
1351
|
+
unitMultiplier: number | null
|
|
1345
1352
|
gtin: string
|
|
1346
1353
|
image: Array<{ url: string; alternateName: string }>
|
|
1347
1354
|
brand: { name: string }
|
|
@@ -1469,6 +1476,7 @@ export type ClientProductQueryQuery = {
|
|
|
1469
1476
|
name: string
|
|
1470
1477
|
gtin: string
|
|
1471
1478
|
description: string
|
|
1479
|
+
unitMultiplier: number | null
|
|
1472
1480
|
id: string
|
|
1473
1481
|
isVariantOf: {
|
|
1474
1482
|
name: string
|
|
@@ -1705,6 +1713,7 @@ export const CartProductItemFragmentDoc = new TypedDocumentString(
|
|
|
1705
1713
|
fragment CartProductItem on StoreProduct {
|
|
1706
1714
|
sku
|
|
1707
1715
|
name
|
|
1716
|
+
unitMultiplier
|
|
1708
1717
|
image {
|
|
1709
1718
|
url
|
|
1710
1719
|
alternateName
|
|
@@ -1741,6 +1750,7 @@ export const ProductDetailsFragment_ProductFragmentDoc =
|
|
|
1741
1750
|
name
|
|
1742
1751
|
gtin
|
|
1743
1752
|
description
|
|
1753
|
+
unitMultiplier
|
|
1744
1754
|
isVariantOf {
|
|
1745
1755
|
name
|
|
1746
1756
|
productGroupID
|
|
@@ -1779,6 +1789,7 @@ export const ProductDetailsFragment_ProductFragmentDoc =
|
|
|
1779
1789
|
fragment CartProductItem on StoreProduct {
|
|
1780
1790
|
sku
|
|
1781
1791
|
name
|
|
1792
|
+
unitMultiplier
|
|
1782
1793
|
image {
|
|
1783
1794
|
url
|
|
1784
1795
|
alternateName
|
|
@@ -1943,6 +1954,7 @@ export const CartItemFragmentDoc = new TypedDocumentString(
|
|
|
1943
1954
|
fragment CartProductItem on StoreProduct {
|
|
1944
1955
|
sku
|
|
1945
1956
|
name
|
|
1957
|
+
unitMultiplier
|
|
1946
1958
|
image {
|
|
1947
1959
|
url
|
|
1948
1960
|
alternateName
|
|
@@ -1991,7 +2003,7 @@ export const ServerCollectionPageQueryDocument = {
|
|
|
1991
2003
|
export const ServerProductQueryDocument = {
|
|
1992
2004
|
__meta__: {
|
|
1993
2005
|
operationName: 'ServerProductQuery',
|
|
1994
|
-
operationHash: '
|
|
2006
|
+
operationHash: '3ce56e42296689b601347fedc380c89519355ab7',
|
|
1995
2007
|
},
|
|
1996
2008
|
} as unknown as TypedDocumentString<
|
|
1997
2009
|
ServerProductQueryQuery,
|
|
@@ -2000,7 +2012,7 @@ export const ServerProductQueryDocument = {
|
|
|
2000
2012
|
export const ValidateCartMutationDocument = {
|
|
2001
2013
|
__meta__: {
|
|
2002
2014
|
operationName: 'ValidateCartMutation',
|
|
2003
|
-
operationHash: '
|
|
2015
|
+
operationHash: '534fae829675533052d75fd4aa509b9cf85b4d40',
|
|
2004
2016
|
},
|
|
2005
2017
|
} as unknown as TypedDocumentString<
|
|
2006
2018
|
ValidateCartMutationMutation,
|
|
@@ -2036,7 +2048,7 @@ export const ClientProductGalleryQueryDocument = {
|
|
|
2036
2048
|
export const ClientProductQueryDocument = {
|
|
2037
2049
|
__meta__: {
|
|
2038
2050
|
operationName: 'ClientProductQuery',
|
|
2039
|
-
operationHash: '
|
|
2051
|
+
operationHash: 'cedeb0c3e7ec1678400fe2ae930f5a79382fba1e',
|
|
2040
2052
|
},
|
|
2041
2053
|
} as unknown as TypedDocumentString<
|
|
2042
2054
|
ClientProductQueryQuery,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"4b33c5c07f440dc7489e55619dc2211a13786e72": "fragment ServerCollectionPage on Query { collection(slug: $slug) { id } } query ServerCollectionPageQuery($slug: String!) { collection(slug: $slug) { breadcrumbList { itemListElement { item name position } } meta { selectedFacets { key value } } seo { description title } } ...ServerCollectionPage }",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"3ce56e42296689b601347fedc380c89519355ab7": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name offers { lowPrice offers { availability listPrice price seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } fragment ServerProduct on Query { product(locator: $locator) { id: productID } } query ServerProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { brand { name } breadcrumbList { itemListElement { item name position } } description gtin image { alternateName url } isVariantOf { productGroupID } name offers { highPrice lowPrice offers { availability itemCondition price priceCurrency priceValidUntil seller { identifier } } priceCurrency } id: productID releaseDate seo { canonical description title } sku ...ProductDetailsFragment_product } ...ServerProduct }",
|
|
4
|
+
"534fae829675533052d75fd4aa509b9cf85b4d40": "fragment CartItem on StoreOffer { itemOffered { ...CartProductItem } listPrice price quantity seller { identifier } } fragment CartMessage on StoreCartMessage { status text } fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) { validateCart(cart: $cart, session: $session) { messages { ...CartMessage } order { acceptedOffer { ...CartItem } orderNumber } } }",
|
|
5
5
|
"feb7005103a859e2bc8cf2360d568806fd88deba": "mutation SubscribeToNewsletter($data: IPersonNewsletter!) { subscribeToNewsletter(data: $data) { id } }",
|
|
6
6
|
"c0d7d2ae1d5aaae5d50eea683b389377c36fb57d": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice offers { availability listPrice price quantity seller { identifier } } } id: productID sku slug } query ClientManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }",
|
|
7
7
|
"054742a6e1a39f1e09237dcec956879d964f3f20": "fragment ClientProductGallery on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment Filter_facets on StoreFacet { ... on StoreFacetBoolean { __typename key label values { label quantity selected value } } ... on StoreFacetRange { __typename key label max { absolute selected } min { absolute selected } } } fragment SearchEvent_metadata on SearchMetadata { fuzzy isTermMisspelled logicalOperator } query ClientProductGalleryQuery($after: String!, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { facets { ...Filter_facets } metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } } ...ClientProductGallery }",
|
|
8
|
-
"
|
|
8
|
+
"cedeb0c3e7ec1678400fe2ae930f5a79382fba1e": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ClientProduct on Query { product(locator: $locator) { id: productID } } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name offers { lowPrice offers { availability listPrice price seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } query ClientProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { ...ProductDetailsFragment_product } ...ClientProduct }",
|
|
9
9
|
"a8a27661f6a032e086c047339e0d0f180f0e0161": "fragment ClientSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice offers { availability listPrice price quantity seller { identifier } } } id: productID sku slug } fragment SearchEvent_metadata on SearchMetadata { fuzzy isTermMisspelled logicalOperator } query ClientSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } suggestions { products { ...ProductSummary_product } terms { value } } } ...ClientSearchSuggestions }",
|
|
10
10
|
"e2385b0f11726d0068f96548f57a8dd441c064e3": "fragment ClientTopSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } query ClientTopSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } ...ClientTopSearchSuggestions }",
|
|
11
11
|
"5696202828f9275216a445e316ebf516f168c506": "mutation ValidateSession($search: String!, $session: IStoreSession!) { validateSession(session: $session, search: $search) { addressType channel country currency { code symbol } deliveryMode { deliveryChannel deliveryMethod deliveryWindow { endDate startDate } } geoCoordinates { latitude longitude } locale person { email familyName givenName id } postalCode } }",
|
|
@@ -374,6 +374,8 @@ type StoreProduct {
|
|
|
374
374
|
additionalProperty: [StorePropertyValue!]!
|
|
375
375
|
"""The product's release date. Formatted using https://en.wikipedia.org/wiki/ISO_8601"""
|
|
376
376
|
releaseDate: String!
|
|
377
|
+
"""Sku Unit Multiplier"""
|
|
378
|
+
unitMultiplier: Float
|
|
377
379
|
}
|
|
378
380
|
|
|
379
381
|
"""Product input. Products are variants within product groups, equivalent to VTEX [SKUs](https://help.vtex.com/en/tutorial/what-is-an-sku--1K75s4RXAQyOuGUYKMM68u#). For example, you may have a **Shirt** product group with associated products such as **Blue shirt size L**, **Green shirt size XL** and so on."""
|
package/api/index.ts
CHANGED
package/app/layout.tsx
ADDED
|
@@ -1538,6 +1538,17 @@
|
|
|
1538
1538
|
"default": "Description"
|
|
1539
1539
|
}
|
|
1540
1540
|
}
|
|
1541
|
+
},
|
|
1542
|
+
"quantitySelector": {
|
|
1543
|
+
"title": "Quantity Selector",
|
|
1544
|
+
"type": "object",
|
|
1545
|
+
"properties": {
|
|
1546
|
+
"useUnitMultiplier": {
|
|
1547
|
+
"title": "Should use unit multiplier?",
|
|
1548
|
+
"type": "boolean",
|
|
1549
|
+
"default": false
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1541
1552
|
}
|
|
1542
1553
|
}
|
|
1543
1554
|
}
|
|
@@ -1831,6 +1842,17 @@
|
|
|
1831
1842
|
}
|
|
1832
1843
|
}
|
|
1833
1844
|
}
|
|
1845
|
+
},
|
|
1846
|
+
"quantitySelector": {
|
|
1847
|
+
"title": "Quantity Selector",
|
|
1848
|
+
"type": "object",
|
|
1849
|
+
"properties": {
|
|
1850
|
+
"useUnitMultiplier": {
|
|
1851
|
+
"title": "Should use unit multiplier?",
|
|
1852
|
+
"type": "boolean",
|
|
1853
|
+
"default": false
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1834
1856
|
}
|
|
1835
1857
|
}
|
|
1836
1858
|
}
|
package/index.ts
CHANGED
package/next-env.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="next" />
|
|
2
2
|
/// <reference types="next/image-types/global" />
|
|
3
|
+
/// <reference types="next/navigation-types/compat/navigation" />
|
|
3
4
|
|
|
4
5
|
// NOTE: This file should not be edited
|
|
5
6
|
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
package/next.config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
const path = require('path')
|
|
3
3
|
const storeConfig = require('./faststore.config')
|
|
4
|
+
const webpack = require('webpack')
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* @type {import('next').NextConfig}
|
|
@@ -40,6 +41,16 @@ const nextConfig = {
|
|
|
40
41
|
}
|
|
41
42
|
})
|
|
42
43
|
|
|
44
|
+
// Make css order works as expected in Next 13. See https://github.com/vercel/next.js/issues/51030#issuecomment-2005254907
|
|
45
|
+
config.plugins.push(
|
|
46
|
+
new webpack.BannerPlugin({
|
|
47
|
+
banner: '@layer base, components, theme;',
|
|
48
|
+
test: /\.css$/,
|
|
49
|
+
raw: true,
|
|
50
|
+
entryOnly: false,
|
|
51
|
+
})
|
|
52
|
+
)
|
|
53
|
+
|
|
43
54
|
// Reduce the number of chunks so we ship a smaller first bundle.
|
|
44
55
|
// This should help reducing TBT
|
|
45
56
|
if (!isServer && !dev && config.optimization?.splitChunks) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.47",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "vtex/faststore",
|
|
6
6
|
"browserslist": "supports es6-module and not dead",
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"@envelop/graphql-jit": "^1.1.1",
|
|
40
40
|
"@envelop/parser-cache": "^2.2.0",
|
|
41
41
|
"@envelop/validation-cache": "^2.2.0",
|
|
42
|
-
"@faststore/api": "^3.0.
|
|
43
|
-
"@faststore/components": "^3.0.
|
|
44
|
-
"@faststore/graphql-utils": "^3.0.
|
|
45
|
-
"@faststore/sdk": "^3.0.
|
|
46
|
-
"@faststore/ui": "^3.0.
|
|
42
|
+
"@faststore/api": "^3.0.47",
|
|
43
|
+
"@faststore/components": "^3.0.47",
|
|
44
|
+
"@faststore/graphql-utils": "^3.0.47",
|
|
45
|
+
"@faststore/sdk": "^3.0.47",
|
|
46
|
+
"@faststore/ui": "^3.0.47",
|
|
47
47
|
"@graphql-codegen/cli": "^3.3.1",
|
|
48
48
|
"@graphql-codegen/client-preset": "^4.1.0",
|
|
49
49
|
"@graphql-codegen/typescript": "^3.0.4",
|
|
@@ -82,8 +82,8 @@
|
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@cypress/code-coverage": "^3.12.1",
|
|
84
84
|
"@envelop/testing": "^6.0.0",
|
|
85
|
-
"@faststore/cli": "^3.0.
|
|
86
|
-
"@faststore/eslint-config": "^3.0.
|
|
85
|
+
"@faststore/cli": "^3.0.47",
|
|
86
|
+
"@faststore/eslint-config": "^3.0.47",
|
|
87
87
|
"@faststore/lighthouse": "^1.12.32",
|
|
88
88
|
"@lhci/cli": "^0.9.0",
|
|
89
89
|
"@testing-library/cypress": "^10.0.1",
|
|
@@ -124,5 +124,5 @@
|
|
|
124
124
|
"node": "18.19.0",
|
|
125
125
|
"yarn": "1.19.1"
|
|
126
126
|
},
|
|
127
|
-
"gitHead": "
|
|
127
|
+
"gitHead": "bdb7b6cc92d39717ab8f583586859f5d34b85f16"
|
|
128
128
|
}
|
|
@@ -62,9 +62,10 @@ function useCartItemEvent() {
|
|
|
62
62
|
|
|
63
63
|
interface Props {
|
|
64
64
|
item: ICartItem
|
|
65
|
+
useUnitMultiplier: boolean
|
|
65
66
|
}
|
|
66
67
|
|
|
67
|
-
function CartItem({ item }: Props) {
|
|
68
|
+
function CartItem({ item, useUnitMultiplier = false }: Props) {
|
|
68
69
|
const btnProps = useRemoveButton(item)
|
|
69
70
|
|
|
70
71
|
const { sendCartItemEvent } = useCartItemEvent()
|
|
@@ -97,6 +98,8 @@ function CartItem({ item }: Props) {
|
|
|
97
98
|
removeBtnProps={btnProps}
|
|
98
99
|
data-sku={item.itemOffered.sku}
|
|
99
100
|
data-seller={item.seller.identifier}
|
|
101
|
+
unitMultiplier={item.itemOffered.unitMultiplier}
|
|
102
|
+
useUnitMultiplier={useUnitMultiplier}
|
|
100
103
|
>
|
|
101
104
|
<UICartItemImage>
|
|
102
105
|
<Image
|
|
@@ -69,6 +69,9 @@ export interface CartSidebarProps {
|
|
|
69
69
|
alt: string
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
+
quantitySelector: {
|
|
73
|
+
useUnitMultiplier?: boolean
|
|
74
|
+
}
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
function CartSidebar({
|
|
@@ -82,6 +85,7 @@ function CartSidebar({
|
|
|
82
85
|
loadingLabel: checkoutLoadingLabel,
|
|
83
86
|
icon: { icon: checkoutButtonIcon, alt: checkoutButtonIconAlt },
|
|
84
87
|
},
|
|
88
|
+
quantitySelector,
|
|
85
89
|
}: CartSidebarProps) {
|
|
86
90
|
const btnProps = useCheckoutButton()
|
|
87
91
|
const { items, gifts, totalItems, isValidating, subTotal, total } = useCart()
|
|
@@ -120,7 +124,12 @@ function CartSidebar({
|
|
|
120
124
|
<UICartSidebarList>
|
|
121
125
|
{items.map((item) => (
|
|
122
126
|
<li key={item.id}>
|
|
123
|
-
<CartItem
|
|
127
|
+
<CartItem
|
|
128
|
+
item={item}
|
|
129
|
+
useUnitMultiplier={
|
|
130
|
+
quantitySelector?.useUnitMultiplier ?? false
|
|
131
|
+
}
|
|
132
|
+
/>
|
|
124
133
|
</li>
|
|
125
134
|
))}
|
|
126
135
|
{gifts.length > 0 && (
|