@faststore/core 3.1.4 → 3.2.0

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 (43) 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/eslint/.cache_1gneedd +1 -1
  6. package/.next/cache/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/server-production/0.pack +0 -0
  9. package/.next/cache/webpack/server-production/index.pack +0 -0
  10. package/.next/next-minimal-server.js.nft.json +1 -1
  11. package/.next/next-server.js.nft.json +1 -1
  12. package/.next/prerender-manifest.js +1 -1
  13. package/.next/prerender-manifest.json +1 -1
  14. package/.next/react-loadable-manifest.json +1 -1
  15. package/.next/routes-manifest.json +1 -1
  16. package/.next/server/chunks/371.js +1 -1
  17. package/.next/server/chunks/5430.js +1 -1
  18. package/.next/server/middleware-build-manifest.js +1 -1
  19. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  20. package/.next/server/pages/[...slug].js +1 -1
  21. package/.next/server/pages/en-US/404.html +1 -1
  22. package/.next/server/pages/en-US/500.html +1 -1
  23. package/.next/server/pages/en-US/account.html +1 -1
  24. package/.next/server/pages/en-US/checkout.html +1 -1
  25. package/.next/server/pages/en-US/login.html +1 -1
  26. package/.next/server/pages/en-US/s.html +1 -1
  27. package/.next/server/pages/en-US.html +1 -1
  28. package/.next/server/pages-manifest.json +1 -1
  29. package/.next/static/chunks/{1153.7f616071da309cf5.js → 1153.d7522522b6c917ed.js} +1 -1
  30. package/.next/static/chunks/pages/{_app-15d247b2153b1dc4.js → _app-7d970aad41a57338.js} +1 -1
  31. package/.next/static/chunks/{webpack-fcd6fda2fae47824.js → webpack-dbe55f259a50963c.js} +1 -1
  32. package/.next/trace +98 -97
  33. package/.turbo/turbo-build.log +4 -4
  34. package/.turbo/turbo-lint.log +1 -1
  35. package/.turbo/turbo-test.log +5 -5
  36. package/CHANGELOG.md +6 -0
  37. package/discovery.config.default.js +1 -0
  38. package/package.json +2 -2
  39. package/src/customizations/src/redirects/index.ts +12 -0
  40. package/src/pages/[...slug].tsx +11 -0
  41. package/src/sdk/redirects/index.ts +49 -0
  42. /package/.next/static/{PMZY7SK3rlasP5cBTu_aR → pAHxcj00oZn6QVPqQTt22}/_buildManifest.js +0 -0
  43. /package/.next/static/{PMZY7SK3rlasP5cBTu_aR → pAHxcj00oZn6QVPqQTt22}/_ssgManifest.js +0 -0
@@ -38,8 +38,8 @@ https://nextjs.org/telemetry
38
38
  Collecting page data ...
39
39
  Generating static pages (0/7) ...
40
40
 
41
41
  Generating static pages (1/7)
42
- 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.
43
42
 
44
43
  Generating static pages (3/7)
44
+ 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.
45
45
 
46
46
  Generating static pages (5/7)
47
47
 
48
48
  ✓ Generating static pages (7/7)
49
49
  Finalizing page optimization ...
@@ -67,12 +67,12 @@ Route (pages) Size First Load JS
67
67
  + First Load JS shared by all 94.7 kB
68
68
  ├ chunks/framework-12a146e94cfcf7c4.js 45.4 kB
69
69
  ├ chunks/main-209ac4974b020af1.js 33.1 kB
70
- ├ chunks/pages/_app-15d247b2153b1dc4.js 9.84 kB
71
- ├ chunks/webpack-fcd6fda2fae47824.js 3.39 kB
70
+ ├ chunks/pages/_app-7d970aad41a57338.js 9.84 kB
71
+ ├ chunks/webpack-dbe55f259a50963c.js 3.39 kB
72
72
  └ css/ee0556daedda6306.css 3.07 kB
73
73
 
74
74
  λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
75
75
  ○ (Static) automatically rendered as static HTML (uses no initial props)
76
76
  ● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)
77
77
 
78
- Done in 70.03s.
78
+ Done in 72.42s.
@@ -1,4 +1,4 @@
1
1
  yarn run v1.22.22
2
2
  $ next lint
3
3
  ✔ No ESLint warnings or errors
4
- Done in 5.93s.
4
+ Done in 6.13s.
@@ -1,12 +1,12 @@
1
1
  yarn run v1.22.22
2
2
  $ jest
3
- PASS test/utils/multipleTemplates.test.ts (35.806 s)
4
- PASS test/server/cms/index.test.ts (36.749 s)
5
- PASS test/server/index.test.ts (39.788 s)
3
+ PASS test/utils/multipleTemplates.test.ts (35.969 s)
4
+ PASS test/server/cms/index.test.ts (36.256 s)
5
+ PASS test/server/index.test.ts (39.998 s)
6
6
 
7
7
  Test Suites: 3 passed, 3 total
8
8
  Tests: 19 passed, 19 total
9
9
  Snapshots: 0 total
10
- Time: 40.944 s
10
+ Time: 41.213 s
11
11
  Ran all test suites.
12
- Done in 43.19s.
12
+ Done in 42.94s.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
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.2.0](https://github.com/vtex/faststore/compare/v3.1.4...v3.2.0) (2024-12-16)
7
+
8
+ ### Features
9
+
10
+ - add new redirects feature ([#2583](https://github.com/vtex/faststore/issues/2583)) ([4624a5d](https://github.com/vtex/faststore/commit/4624a5d101fccc40788c362ab744f250386a8d4d))
11
+
6
12
  ## [3.1.4](https://github.com/vtex/faststore/compare/v3.1.3...v3.1.4) (2024-12-16)
7
13
 
8
14
  **Note:** Version bump only for package @faststore/core
@@ -101,5 +101,6 @@ module.exports = {
101
101
  enableCypressExtension: false,
102
102
  noRobots: false,
103
103
  preact: false,
104
+ enableRedirects: false,
104
105
  },
105
106
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "3.1.4",
3
+ "version": "3.2.0",
4
4
  "license": "MIT",
5
5
  "repository": "vtex/faststore",
6
6
  "browserslist": "supports es6-module and not dead",
@@ -128,5 +128,5 @@
128
128
  "node": "18.19.0",
129
129
  "yarn": "1.19.1"
130
130
  },
131
- "gitHead": "f3ffdf2b5ac6b7fb3687bfa773d8cb081a954a17"
131
+ "gitHead": "435ed73e9db93c23324d1cbc070a3f6bec9cac14"
132
132
  }
@@ -0,0 +1,12 @@
1
+ interface MatcherArgs {
2
+ pathname: string
3
+ }
4
+
5
+ interface MatcherReturn {
6
+ destination: string
7
+ permanent?: boolean
8
+ }
9
+
10
+ export function matcher(_: MatcherArgs): MatcherReturn | null {
11
+ return null
12
+ }
@@ -22,6 +22,7 @@ import {
22
22
  import ProductListingPage, {
23
23
  ProductListingPageProps,
24
24
  } from 'src/components/templates/ProductListingPage'
25
+ import { getRedirect } from 'src/sdk/redirects'
25
26
  import { PageContentType } from 'src/server/cms'
26
27
  import { getPLP, PLPContentType } from 'src/server/cms/plp'
27
28
  import { getDynamicContent } from 'src/utils/dynamicContent'
@@ -140,6 +141,16 @@ export const getStaticProps: GetStaticProps<
140
141
  const notFound = errors.find(isNotFoundError)
141
142
 
142
143
  if (notFound) {
144
+ if (storeConfig.experimental.enableRedirects) {
145
+ const redirect = await getRedirect({ pathname: `/${slug}` })
146
+ if (redirect) {
147
+ return {
148
+ redirect,
149
+ revalidate: 60 * 5, // 5 minutes
150
+ }
151
+ }
152
+ }
153
+
143
154
  return {
144
155
  notFound: true,
145
156
  }
@@ -0,0 +1,49 @@
1
+ import storeConfig from 'discovery.config'
2
+ import { matcher } from 'src/customizations/src/redirects'
3
+
4
+ type GetRedirectArgs = {
5
+ pathname: string
6
+ }
7
+
8
+ type GetRedirectReturn = {
9
+ destination: string
10
+ permanent: boolean
11
+ }
12
+
13
+ type RewriterResponse = {
14
+ location: string
15
+ status: number
16
+ }
17
+
18
+ const PERMANENT_STATUS = 308
19
+
20
+ export async function getRedirect({
21
+ pathname,
22
+ }: GetRedirectArgs): Promise<GetRedirectReturn> {
23
+ try {
24
+ const redirectMatch = matcher({ pathname })
25
+ if (redirectMatch) {
26
+ return {
27
+ destination: redirectMatch.destination,
28
+ permanent: redirectMatch.permanent ?? true,
29
+ }
30
+ }
31
+
32
+ const response = await fetch(
33
+ `https://${storeConfig.api.storeId}.myvtex.com/_v/public/redirect-evaluate${pathname}`
34
+ )
35
+ const rewriterData = (await response.json()) as RewriterResponse
36
+
37
+ if (rewriterData.location) {
38
+ return {
39
+ destination: rewriterData.location,
40
+ permanent: rewriterData.status === PERMANENT_STATUS,
41
+ }
42
+ }
43
+ return null
44
+ } catch (err) {
45
+ // TODO: handle error logs
46
+ console.error(err)
47
+ return null
48
+ }
49
+ }