@faststore/core 3.34.0 → 3.35.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.
Files changed (48) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +14 -14
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/webpack/client-production/0.pack +0 -0
  6. package/.next/cache/webpack/client-production/index.pack +0 -0
  7. package/.next/cache/webpack/server-production/0.pack +0 -0
  8. package/.next/cache/webpack/server-production/index.pack +0 -0
  9. package/.next/prerender-manifest.js +1 -1
  10. package/.next/prerender-manifest.json +1 -1
  11. package/.next/react-loadable-manifest.json +2 -2
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/1506.js +1 -1
  14. package/.next/server/chunks/3117.js +1 -1
  15. package/.next/server/chunks/8646.js +1 -1
  16. package/.next/server/middleware-build-manifest.js +1 -1
  17. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  18. package/.next/server/pages/api/graphql.js +1 -1
  19. package/.next/server/pages/en-US/404.html +2 -2
  20. package/.next/server/pages/en-US/404.json +1 -1
  21. package/.next/server/pages/en-US/500.html +2 -2
  22. package/.next/server/pages/en-US/500.json +1 -1
  23. package/.next/server/pages/en-US/account.html +2 -2
  24. package/.next/server/pages/en-US/account.json +1 -1
  25. package/.next/server/pages/en-US/checkout.html +2 -2
  26. package/.next/server/pages/en-US/checkout.json +1 -1
  27. package/.next/server/pages/en-US/login.html +2 -2
  28. package/.next/server/pages/en-US/login.json +1 -1
  29. package/.next/server/pages/en-US/s.html +2 -2
  30. package/.next/server/pages/en-US/s.json +1 -1
  31. package/.next/server/pages/en-US.html +2 -2
  32. package/.next/server/pages/en-US.json +1 -1
  33. package/.next/server/pages-manifest.json +1 -1
  34. package/.next/static/chunks/{1552.b5a073e7ac834965.js → 1552.e7cece605fc2e1cd.js} +1 -1
  35. package/.next/static/chunks/CartSidebar.26d3e39bf93a368f.js +1 -0
  36. package/.next/static/chunks/pages/{_app-6f5e402671759f41.js → _app-836e2ad874a5b36e.js} +1 -1
  37. package/.next/static/chunks/{webpack-c5394865bff5422b.js → webpack-045fa70c18f7d0f7.js} +1 -1
  38. package/.next/trace +122 -122
  39. package/.turbo/turbo-build.log +14 -14
  40. package/.turbo/turbo-test.log +5 -5
  41. package/CHANGELOG.md +12 -0
  42. package/discovery.config.default.js +4 -0
  43. package/package.json +3 -3
  44. package/src/components/cart/CartSidebar/CartSidebar.tsx +7 -2
  45. package/src/pages/api/graphql.ts +20 -1
  46. package/.next/static/chunks/CartSidebar.11e73132b1647eec.js +0 -1
  47. /package/.next/static/{OwH-uNw-YBhi22iEHDVKf → Shnxq4E8-HNxCfP-iRIQV}/_buildManifest.js +0 -0
  48. /package/.next/static/{OwH-uNw-YBhi22iEHDVKf → Shnxq4E8-HNxCfP-iRIQV}/_ssgManifest.js +0 -0
@@ -1,23 +1,23 @@
1
1
 
2
- > @faststore/core@3.33.5 prebuild /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@3.35.0 prebuild /home/runner/work/faststore/faststore/packages/core
3
3
  > na run partytown && na run generate
4
4
 
5
5
 
6
- > @faststore/core@3.33.5 partytown /home/runner/work/faststore/faststore/packages/core
6
+ > @faststore/core@3.35.0 partytown /home/runner/work/faststore/faststore/packages/core
7
7
  > partytown copylib ./public/~partytown
8
8
 
9
9
  Partytown lib copied to: /home/runner/work/faststore/faststore/packages/core/public/~partytown
10
10
 
11
- > @faststore/core@3.33.5 generate /home/runner/work/faststore/faststore/packages/core
11
+ > @faststore/core@3.35.0 generate /home/runner/work/faststore/faststore/packages/core
12
12
  > na run generate:schema && na run generate:codegen && na run format:generated
13
13
 
14
14
 
15
- > @faststore/core@3.33.5 generate:schema /home/runner/work/faststore/faststore/packages/core
15
+ > @faststore/core@3.35.0 generate:schema /home/runner/work/faststore/faststore/packages/core
16
16
  > tsx src/server/generator/generateGraphQLSchemaFile.ts
17
17
 
18
18
  Schema GraphQL file generated successfully
19
19
 
20
- > @faststore/core@3.33.5 generate:codegen /home/runner/work/faststore/faststore/packages/core
20
+ > @faststore/core@3.35.0 generate:codegen /home/runner/work/faststore/faststore/packages/core
21
21
  > graphql-codegen
22
22
 
23
23
  [STARTED] Parse Configuration
@@ -37,11 +37,11 @@ Running lifecycle hook "afterStart" scripts...
37
37
  [CLI] Loading Documents
38
38
  [CLI] Generating output
39
39
 
40
- > @faststore/core@3.33.5 format:generated /home/runner/work/faststore/faststore/packages/core
40
+ > @faststore/core@3.35.0 format:generated /home/runner/work/faststore/faststore/packages/core
41
41
  > prettier --write "@generated/**/*.{ts,js,tsx,jsx,json}" --loglevel error
42
42
 
43
43
 
44
- > @faststore/core@3.33.5 build /home/runner/work/faststore/faststore/packages/core
44
+ > @faststore/core@3.35.0 build /home/runner/work/faststore/faststore/packages/core
45
45
  > next build
46
46
 
47
47
  ⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
@@ -69,7 +69,7 @@ Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Cont
69
69
  Route (pages) Size First Load JS
70
70
  ┌ ● / 3.86 kB 124 kB
71
71
  ├ └ css/b1806cbafd0c1f81.css 3.06 kB
72
- ├ /_app 0 B 92.3 kB
72
+ ├ /_app 0 B 92.4 kB
73
73
  ├ ● /[...slug] 2.34 kB 133 kB
74
74
  ├ ● /[slug]/p 35.5 kB 156 kB
75
75
  ├ ├ css/a3ca6a9b63f657be.css 5.75 kB
@@ -78,18 +78,18 @@ Route (pages) Size First Load JS
78
78
  ├ ○ /404 1.48 kB 122 kB
79
79
  ├ ● /500 1.48 kB 122 kB
80
80
  ├ ● /account 712 B 121 kB
81
- ├ λ /api/graphql 0 B 92.3 kB
82
- ├ λ /api/health/live 0 B 92.3 kB
83
- ├ λ /api/health/ready 0 B 92.3 kB
84
- ├ λ /api/preview 0 B 92.3 kB
81
+ ├ λ /api/graphql 0 B 92.4 kB
82
+ ├ λ /api/health/live 0 B 92.4 kB
83
+ ├ λ /api/health/ready 0 B 92.4 kB
84
+ ├ λ /api/preview 0 B 92.4 kB
85
85
  ├ ● /checkout 694 B 121 kB
86
86
  ├ ● /login 1.59 kB 122 kB
87
87
  └ ● /s 3.18 kB 134 kB
88
88
  + First Load JS shared by all 95.8 kB
89
89
  ├ chunks/framework-807b0f81cbc129f0.js 45.4 kB
90
90
  ├ chunks/main-5569625b3fdd6741.js 33.1 kB
91
- ├ chunks/pages/_app-6f5e402671759f41.js 10.3 kB
92
- ├ chunks/webpack-c5394865bff5422b.js 3.58 kB
91
+ ├ chunks/pages/_app-836e2ad874a5b36e.js 10.3 kB
92
+ ├ chunks/webpack-045fa70c18f7d0f7.js 3.58 kB
93
93
  └ css/0a57ee6c7a57788c.css 3.49 kB
94
94
 
95
95
  λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
@@ -1,14 +1,14 @@
1
1
 
2
- > @faststore/core@3.33.5 test /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@3.35.0 test /home/runner/work/faststore/faststore/packages/core
3
3
  > jest
4
4
 
5
- PASS test/server/cms/global.test.ts (23.014 s)
6
- PASS test/utils/multipleTemplates.test.ts (24.047 s)
5
+ PASS test/utils/multipleTemplates.test.ts (23.635 s)
6
+ PASS test/server/cms/global.test.ts (23.741 s)
7
7
  PASS test/server/cms/index.test.ts
8
- PASS test/server/index.test.ts (28.833 s)
8
+ PASS test/server/index.test.ts (29.278 s)
9
9
 
10
10
  Test Suites: 4 passed, 4 total
11
11
  Tests: 22 passed, 22 total
12
12
  Snapshots: 0 total
13
- Time: 30.098 s
13
+ Time: 30.352 s
14
14
  Ran all test suites.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.35.1](https://github.com/vtex/faststore/compare/v3.35.0...v3.35.1) (2025-04-08)
7
+
8
+ ### Bug Fixes
9
+
10
+ - multiple view_cart events ([#2770](https://github.com/vtex/faststore/issues/2770)) ([9e8234b](https://github.com/vtex/faststore/commit/9e8234b0e097b7c4a749584e491c556cbdab4a31))
11
+
12
+ # [3.35.0](https://github.com/vtex/faststore/compare/v3.34.0...v3.35.0) (2025-04-08)
13
+
14
+ ### Features
15
+
16
+ - add API GraphQL cache control using flags ([#2756](https://github.com/vtex/faststore/issues/2756)) ([8b4dc64](https://github.com/vtex/faststore/commit/8b4dc6485f9e262cc5da47a51c3075715acdb0db))
17
+
6
18
  # [3.34.0](https://github.com/vtex/faststore/compare/v3.33.5...v3.34.0) (2025-04-08)
7
19
 
8
20
  ### Features
@@ -131,5 +131,9 @@ module.exports = {
131
131
  enableRedirects: false,
132
132
  enableSearchSSR: false,
133
133
  enableVtexAssetsLoader: false,
134
+ graphqlCacheControl: {
135
+ maxAge: 0, // 0 disables cache, 5 * 60 enable cache control maxAge 5 minutes
136
+ staleWhileRevalidate: 60,
137
+ },
134
138
  },
135
139
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "3.34.0",
3
+ "version": "3.35.1",
4
4
  "license": "MIT",
5
5
  "repository": "vtex/faststore",
6
6
  "browserslist": "supports es6-module and not dead",
@@ -44,7 +44,7 @@
44
44
  "@envelop/graphql-jit": "^8.0.3",
45
45
  "@envelop/parser-cache": "^6.0.2",
46
46
  "@envelop/validation-cache": "^6.0.2",
47
- "@faststore/api": "^3.33.3",
47
+ "@faststore/api": "^3.35.0",
48
48
  "@faststore/components": "^3.28.0",
49
49
  "@faststore/graphql-utils": "^3.28.0",
50
50
  "@faststore/lighthouse": "^3.28.0",
@@ -105,5 +105,5 @@
105
105
  "ts-jest": "29.1.1",
106
106
  "typescript": "5.3.2"
107
107
  },
108
- "gitHead": "08a42529c642b8e82ff08f7f636180770c443b6b"
108
+ "gitHead": "376034d85db380012d92c5cc7680b83c12e0003c"
109
109
  }
@@ -65,7 +65,12 @@ function useViewCartEvent() {
65
65
  const {
66
66
  currency: { code },
67
67
  } = useSession()
68
- const { items, gifts, total } = useCart()
68
+ const { items: itemsFromCart, gifts: giftsFromCart, total } = useCart()
69
+
70
+ // We need to stringify the items and gifts to avoid circular references
71
+ // when sending the event to the analytics
72
+ const gifts = JSON.stringify(giftsFromCart)
73
+ const items = JSON.stringify(itemsFromCart)
69
74
 
70
75
  const sendViewCartEvent = useCallback(() => {
71
76
  import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
@@ -74,7 +79,7 @@ function useViewCartEvent() {
74
79
  params: {
75
80
  currency: code as CurrencyCode,
76
81
  value: total,
77
- items: items.concat(gifts).map((item) => ({
82
+ items: itemsFromCart.concat(giftsFromCart).map((item) => ({
78
83
  item_id: item.itemOffered.isVariantOf.productGroupID,
79
84
  item_name: item.itemOffered.isVariantOf.name,
80
85
  item_brand: item.itemOffered.brand.name,
@@ -2,6 +2,9 @@ import { isFastStoreError, stringifyCacheControl } from '@faststore/api'
2
2
  import type { NextApiHandler, NextApiRequest } from 'next'
3
3
 
4
4
  import { execute } from '../../server'
5
+ import discoveryConfig from 'discovery.config'
6
+
7
+ const ONE_MINUTE = 60
5
8
 
6
9
  /**
7
10
  * This function replaces the setCookie domain so that we can use localhost in dev environment.
@@ -84,6 +87,23 @@ const handler: NextApiHandler = async (request, response) => {
84
87
  ? stringifyCacheControl(extensions.cacheControl)
85
88
  : 'no-cache, no-store'
86
89
 
90
+ if (
91
+ request.method === 'GET' &&
92
+ discoveryConfig?.experimental?.graphqlCacheControl?.maxAge
93
+ ) {
94
+ const maxAge = discoveryConfig.experimental.graphqlCacheControl.maxAge
95
+ const staleWhileRevalidate =
96
+ discoveryConfig?.experimental?.graphqlCacheControl
97
+ ?.staleWhileRevalidate ?? ONE_MINUTE
98
+
99
+ response.setHeader(
100
+ 'cache-control',
101
+ `public, s-maxage=${maxAge}, stale-while-revalidate=${staleWhileRevalidate}`
102
+ )
103
+ } else {
104
+ response.setHeader('cache-control', cacheControl)
105
+ }
106
+
87
107
  const setCookieValues = Array.from(extensions.cookies.values())
88
108
  if (setCookieValues.length > 0 && !hasErrors) {
89
109
  response.setHeader(
@@ -96,7 +116,6 @@ const handler: NextApiHandler = async (request, response) => {
96
116
  )
97
117
  }
98
118
 
99
- response.setHeader('cache-control', cacheControl)
100
119
  response.setHeader('content-type', 'application/json')
101
120
  response.send(JSON.stringify({ data, errors }))
102
121
  } catch (err) {
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1781],{1255:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return CartSidebar_CartSidebar}});var r=n(4424),a=n(7281),i=n.n(a),c=n(6652),l=n(3666),o=n(2614),s=n(4194),u=n(3088),d=n(1506),b=n.n(d),useCheckoutButton=()=>{var{isValidating:e,id:t}=(0,u.jD)();return{onClick:n=>{n.preventDefault();var r=window.location.host.includes(".vtex.app")||window.location.host.includes("localhost");!e&&(r?t&&(window.location.href="".concat(b().checkoutUrl,"?orderFormId=").concat(t)):window.location.href="".concat(b().checkoutUrl))},disabled:e,"data-testid":"checkout-button"}},h=n(4355),f=n(2262),p=n.n(f),m=n(1549);function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach(function(t){(0,r.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var j=i()(()=>Promise.all([n.e(2206),n.e(7498),n.e(4865),n.e(4600)]).then(n.bind(n,4865)).then(e=>e.Button),{ssr:!1,loadableGenerated:{webpack:()=>[null]}}),w=i()(()=>Promise.all([n.e(2206),n.e(7498),n.e(4865),n.e(4600)]).then(n.bind(n,4865)).then(e=>e.CartSidebarFooter),{ssr:!1,loadableGenerated:{webpack:()=>[null]}}),k=i()(()=>Promise.all([n.e(2206),n.e(7498),n.e(4865),n.e(4600)]).then(n.bind(n,4865)).then(e=>e.CartSidebarList),{ssr:!1,loadableGenerated:{webpack:()=>[null]}}),v=i()(()=>Promise.all([n.e(2206),n.e(7498),n.e(4865),n.e(4600)]).then(n.bind(n,4865)).then(e=>e.CartSidebar),{ssr:!1,loadableGenerated:{webpack:()=>[null]}}),x=i()(()=>n.e(1724).then(n.bind(n,1397)),{ssr:!1,loadableGenerated:{webpack:()=>[1397]}}),O=i()(()=>n.e(2985).then(n.bind(n,3255)),{ssr:!1,loadableGenerated:{webpack:()=>[3255]}}),y=i()(()=>n.e(549).then(n.bind(n,8467)),{ssr:!1,loadableGenerated:{webpack:()=>[8467]}}),_=i()(()=>n.e(2553).then(n.bind(n,9250)),{ssr:!1,loadableGenerated:{webpack:()=>[9250]}}),CartSidebar_CartSidebar=function(e){var{title:t,alert:{icon:{icon:r,alt:a},text:i},checkoutButton:{label:d,loadingLabel:b,icon:{icon:f,alt:P}},quantitySelector:g,taxesConfiguration:C}=e,S=useCheckoutButton(),{items:D,gifts:G,totalItems:E,isValidating:F,subTotal:T,total:M,subTotalWithTaxes:U,totalWithTaxes:B}=(0,u.jD)({useUnitMultiplier:null==g?void 0:g.useUnitMultiplier}),{cart:I,closeCart:L}=(0,c.l)(),{fadeOut:K}=(0,l.b)(),{sendViewCartEvent:N}=function(){var{currency:{code:e}}=(0,h.kP)(),{items:t,gifts:r,total:a}=(0,u.jD)(),i=(0,s.useCallback)(()=>{n.e(7195).then(n.bind(n,1153)).then(n=>{var{sendAnalyticsEvent:i}=n;return i({name:"view_cart",params:{currency:e,value:a,items:t.concat(r).map(t=>({item_id:t.itemOffered.isVariantOf.productGroupID,item_name:t.itemOffered.isVariantOf.name,item_brand:t.itemOffered.brand.name,item_variant:t.itemOffered.sku,quantity:t.quantity,price:t.price,discount:t.listPrice-t.price,currency:e,item_variant_name:t.itemOffered.name,product_reference_id:t.itemOffered.gtin}))}})})},[e,r,t,a]);return(0,s.useMemo)(()=>({sendViewCartEvent:i}),[i])}(),W=(0,s.useMemo)(()=>0===D.length,[D]);return(0,s.useEffect)(()=>{I&&N()},[I,N]),(0,m.jsx)(m.Fragment,{children:I&&(0,m.jsx)(v,{overlayProps:{className:"section ".concat(p().section," section-cart-sidebar")},title:t,totalItems:E,alertIcon:(0,m.jsx)(o.Z,{name:r,"aria-label":a}),alertText:i,onClose:K,children:W?(0,m.jsx)(x,{onDismiss:L}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(k,{children:[D.map(e=>{var t;return(0,m.jsx)("li",{children:(0,m.jsx)(y,{item:e,taxesConfiguration:C,useUnitMultiplier:null!==(t=null==g?void 0:g.useUnitMultiplier)&&void 0!==t&&t})},e.id)}),G.length>0&&(0,m.jsx)(m.Fragment,{children:G.map(e=>(0,m.jsx)("li",{children:(0,m.jsx)(O,{item:e})},e.id))})]}),(0,m.jsx)(w,{children:(0,m.jsx)(_,{subTotal:null!=C&&C.usePriceWithTaxes?U:T,total:null!=C&&C.usePriceWithTaxes?B:M,includeTaxes:null==C?void 0:C.usePriceWithTaxes,includeTaxesLabel:null==C?void 0:C.taxesLabel,numberOfItems:E,checkoutButton:(0,m.jsx)(j,_objectSpread(_objectSpread({variant:"primary",icon:!F&&(0,m.jsx)(o.Z,{name:f,"aria-label":P,width:18,height:18}),iconPosition:"right"},S),{},{children:F?b:d}))})})]})})})}},2262:function(e){e.exports={section:"section_section__yzDFp"}},3666:function(e,t,n){"use strict";n.d(t,{b:function(){return useFadeEffect}});var r=n(4194);let useFadeEffect=()=>{let[e,t]=(0,r.useState)("out"),n=(0,r.useCallback)(()=>t("out"),[]),a=(0,r.useCallback)(()=>t("in"),[]);return(0,r.useEffect)(()=>(a(),()=>{n()}),[a,n]),{fade:e,fadeIn:a,fadeOut:n}}}}]);