From d97f0d7a5faf291b0ed755503a880afe49923cfc Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Wed, 15 Jan 2025 13:53:42 +0100 Subject: [PATCH] test(e2e): add the app-router fixup! lockfile fixup! disable app-router build for now --- .gitignore | 2 +- examples/app-router/.gitignore | 36 ++ examples/app-router/CHANGELOG.md | 29 + examples/app-router/README.md | 3 + .../albums/@modal/(.)[album]/[song]/page.tsx | 29 + .../app/albums/@modal/(.)[album]/page.tsx | 11 + .../app-router/app/albums/@modal/default.tsx | 3 + .../app/albums/[album]/[song]/page.tsx | 25 + .../app-router/app/albums/[album]/page.tsx | 3 + examples/app-router/app/albums/layout.tsx | 10 + examples/app-router/app/albums/page.tsx | 13 + .../app/api/after/revalidate/route.ts | 16 + .../app-router/app/api/after/ssg/route.ts | 12 + examples/app-router/app/api/client/route.ts | 7 + examples/app-router/app/api/host/route.ts | 7 + examples/app-router/app/api/isr/route.ts | 27 + examples/app-router/app/api/og/route.tsx | 72 +++ examples/app-router/app/api/page.tsx | 40 ++ .../app/api/revalidate-path/route.ts | 9 + .../app/api/revalidate-tag/route.ts | 9 + examples/app-router/app/api/sse/route.ts | 52 ++ .../app-router/app/config-redirect/page.tsx | 8 + examples/app-router/app/globals.css | 23 + examples/app-router/app/headers/page.tsx | 11 + .../app/image-optimization/page.tsx | 14 + examples/app-router/app/isr/page.tsx | 9 + examples/app-router/app/layout.tsx | 19 + .../app-router/app/og/opengraph-image.tsx | 38 ++ examples/app-router/app/og/page.tsx | 3 + examples/app-router/app/page.tsx | 49 ++ .../app/parallel/@a/a-page/page.tsx | 3 + examples/app-router/app/parallel/@a/page.tsx | 10 + .../app/parallel/@b/b-page/page.tsx | 3 + examples/app-router/app/parallel/@b/page.tsx | 11 + examples/app-router/app/parallel/layout.tsx | 42 ++ examples/app-router/app/parallel/page.tsx | 3 + .../app/redirect-destination/page.tsx | 3 + .../app-router/app/revalidate-path/page.tsx | 19 + .../app-router/app/revalidate-tag/layout.tsx | 15 + .../app/revalidate-tag/nested/page.tsx | 3 + .../app-router/app/revalidate-tag/page.tsx | 8 + .../app/rewrite-destination/page.tsx | 3 + examples/app-router/app/search-query/page.tsx | 25 + .../app-router/app/server-actions/client.tsx | 26 + .../app-router/app/server-actions/page.tsx | 10 + examples/app-router/app/sse/page.tsx | 36 ++ examples/app-router/app/ssr/layout.tsx | 12 + examples/app-router/app/ssr/loading.tsx | 3 + examples/app-router/app/ssr/page.tsx | 25 + examples/app-router/middleware.ts | 71 +++ examples/app-router/next.config.ts | 76 +++ examples/app-router/open-next.config.ts | 25 + examples/app-router/package.json | 32 ++ examples/app-router/postcss.config.js | 6 + examples/app-router/public/favicon.ico | Bin 0 -> 4286 bytes .../public/static/corporate_holiday_card.jpg | Bin 0 -> 120302 bytes examples/app-router/public/static/frank.webp | Bin 0 -> 8830 bytes examples/app-router/sst-env.d.ts | 1 + examples/app-router/tailwind.config.ts | 15 + examples/app-router/tsconfig.json | 29 + examples/app-router/wrangler.json | 10 + examples/shared/api/index.ts | 37 ++ examples/shared/api/songs.json | 36 ++ examples/shared/components/Album/Album.tsx | 17 + examples/shared/components/Album/Song.tsx | 23 + examples/shared/components/Album/index.tsx | 21 + examples/shared/components/Filler/index.tsx | 13 + examples/shared/components/Modal/index.tsx | 51 ++ examples/shared/components/Nav/index.tsx | 27 + examples/shared/package.json | 19 + examples/shared/sst-env.d.ts | 1 + examples/shared/tsconfig.json | 32 ++ pnpm-lock.yaml | 524 ++++++++++++++---- pnpm-workspace.yaml | 61 +- 74 files changed, 1856 insertions(+), 120 deletions(-) create mode 100644 examples/app-router/.gitignore create mode 100644 examples/app-router/CHANGELOG.md create mode 100644 examples/app-router/README.md create mode 100644 examples/app-router/app/albums/@modal/(.)[album]/[song]/page.tsx create mode 100644 examples/app-router/app/albums/@modal/(.)[album]/page.tsx create mode 100644 examples/app-router/app/albums/@modal/default.tsx create mode 100644 examples/app-router/app/albums/[album]/[song]/page.tsx create mode 100644 examples/app-router/app/albums/[album]/page.tsx create mode 100644 examples/app-router/app/albums/layout.tsx create mode 100644 examples/app-router/app/albums/page.tsx create mode 100644 examples/app-router/app/api/after/revalidate/route.ts create mode 100644 examples/app-router/app/api/after/ssg/route.ts create mode 100644 examples/app-router/app/api/client/route.ts create mode 100644 examples/app-router/app/api/host/route.ts create mode 100644 examples/app-router/app/api/isr/route.ts create mode 100644 examples/app-router/app/api/og/route.tsx create mode 100644 examples/app-router/app/api/page.tsx create mode 100644 examples/app-router/app/api/revalidate-path/route.ts create mode 100644 examples/app-router/app/api/revalidate-tag/route.ts create mode 100644 examples/app-router/app/api/sse/route.ts create mode 100644 examples/app-router/app/config-redirect/page.tsx create mode 100644 examples/app-router/app/globals.css create mode 100644 examples/app-router/app/headers/page.tsx create mode 100644 examples/app-router/app/image-optimization/page.tsx create mode 100644 examples/app-router/app/isr/page.tsx create mode 100644 examples/app-router/app/layout.tsx create mode 100644 examples/app-router/app/og/opengraph-image.tsx create mode 100644 examples/app-router/app/og/page.tsx create mode 100644 examples/app-router/app/page.tsx create mode 100644 examples/app-router/app/parallel/@a/a-page/page.tsx create mode 100644 examples/app-router/app/parallel/@a/page.tsx create mode 100644 examples/app-router/app/parallel/@b/b-page/page.tsx create mode 100644 examples/app-router/app/parallel/@b/page.tsx create mode 100644 examples/app-router/app/parallel/layout.tsx create mode 100644 examples/app-router/app/parallel/page.tsx create mode 100644 examples/app-router/app/redirect-destination/page.tsx create mode 100644 examples/app-router/app/revalidate-path/page.tsx create mode 100644 examples/app-router/app/revalidate-tag/layout.tsx create mode 100644 examples/app-router/app/revalidate-tag/nested/page.tsx create mode 100644 examples/app-router/app/revalidate-tag/page.tsx create mode 100644 examples/app-router/app/rewrite-destination/page.tsx create mode 100644 examples/app-router/app/search-query/page.tsx create mode 100644 examples/app-router/app/server-actions/client.tsx create mode 100644 examples/app-router/app/server-actions/page.tsx create mode 100644 examples/app-router/app/sse/page.tsx create mode 100644 examples/app-router/app/ssr/layout.tsx create mode 100644 examples/app-router/app/ssr/loading.tsx create mode 100644 examples/app-router/app/ssr/page.tsx create mode 100644 examples/app-router/middleware.ts create mode 100644 examples/app-router/next.config.ts create mode 100644 examples/app-router/open-next.config.ts create mode 100644 examples/app-router/package.json create mode 100644 examples/app-router/postcss.config.js create mode 100644 examples/app-router/public/favicon.ico create mode 100644 examples/app-router/public/static/corporate_holiday_card.jpg create mode 100644 examples/app-router/public/static/frank.webp create mode 100644 examples/app-router/sst-env.d.ts create mode 100644 examples/app-router/tailwind.config.ts create mode 100644 examples/app-router/tsconfig.json create mode 100644 examples/app-router/wrangler.json create mode 100644 examples/shared/api/index.ts create mode 100644 examples/shared/api/songs.json create mode 100644 examples/shared/components/Album/Album.tsx create mode 100644 examples/shared/components/Album/Song.tsx create mode 100644 examples/shared/components/Album/index.tsx create mode 100644 examples/shared/components/Filler/index.tsx create mode 100644 examples/shared/components/Modal/index.tsx create mode 100644 examples/shared/components/Nav/index.tsx create mode 100644 examples/shared/package.json create mode 100644 examples/shared/sst-env.d.ts create mode 100644 examples/shared/tsconfig.json diff --git a/.gitignore b/.gitignore index ae197018..e0efbe5f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ node_modules .DS_Store output -.worker-next .open-next .wrangler +.turbo dist \ No newline at end of file diff --git a/examples/app-router/.gitignore b/examples/app-router/.gitignore new file mode 100644 index 00000000..61cbd98f --- /dev/null +++ b/examples/app-router/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +.open-next +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/app-router/CHANGELOG.md b/examples/app-router/CHANGELOG.md new file mode 100644 index 00000000..bc4243e0 --- /dev/null +++ b/examples/app-router/CHANGELOG.md @@ -0,0 +1,29 @@ +# app-router + +## 0.1.4 + +### Patch Changes + +- Updated dependencies [[`9595714ac23e5f131b879d04d5cfb2a5d11bdbdd`](https://github.com/opennextjs/opennextjs-aws/commit/9595714ac23e5f131b879d04d5cfb2a5d11bdbdd), [`4e88b47935523de1d15da067b56105bd6be91e47`](https://github.com/opennextjs/opennextjs-aws/commit/4e88b47935523de1d15da067b56105bd6be91e47), [`7140ca56e1e88d7a7cae327eceb3ef8c2fde2a1e`](https://github.com/opennextjs/opennextjs-aws/commit/7140ca56e1e88d7a7cae327eceb3ef8c2fde2a1e)]: + - @opennextjs/aws@3.3.1 + +## 0.1.3 + +### Patch Changes + +- Updated dependencies [[`4d328e3fc306b878e9497986baa65bfd1d4de66a`](https://github.com/opennextjs/opennextjs-aws/commit/4d328e3fc306b878e9497986baa65bfd1d4de66a), [`2b2a48b70ae95b5e600ac2e4b7f2df8702c5c26e`](https://github.com/opennextjs/opennextjs-aws/commit/2b2a48b70ae95b5e600ac2e4b7f2df8702c5c26e), [`f685ddea8f8a5c82591dc02713aff7138f2d9896`](https://github.com/opennextjs/opennextjs-aws/commit/f685ddea8f8a5c82591dc02713aff7138f2d9896), [`ef1fe48d570863266c271e5dedaf02b943849ded`](https://github.com/opennextjs/opennextjs-aws/commit/ef1fe48d570863266c271e5dedaf02b943849ded), [`8ab921f8b5bd40c7ba109ccef3e59a6c24283fb2`](https://github.com/opennextjs/opennextjs-aws/commit/8ab921f8b5bd40c7ba109ccef3e59a6c24283fb2), [`2202f36ce0f87357b249bd127cdd5e84d6deffd3`](https://github.com/opennextjs/opennextjs-aws/commit/2202f36ce0f87357b249bd127cdd5e84d6deffd3), [`44392ba82990d43e16a614113d9e7d8e257e5bdd`](https://github.com/opennextjs/opennextjs-aws/commit/44392ba82990d43e16a614113d9e7d8e257e5bdd), [`4dea7ea2f5ffd1848e51502c88d2efcc1896bb8c`](https://github.com/opennextjs/opennextjs-aws/commit/4dea7ea2f5ffd1848e51502c88d2efcc1896bb8c), [`0ac604e5867497cc93fb677b5ebc28ef87e057f8`](https://github.com/opennextjs/opennextjs-aws/commit/0ac604e5867497cc93fb677b5ebc28ef87e057f8), [`1ece6b479bb4e0309892ffbd1200870821a410c4`](https://github.com/opennextjs/opennextjs-aws/commit/1ece6b479bb4e0309892ffbd1200870821a410c4), [`697681bf9ce25212ce4e2e94d886ca425428280d`](https://github.com/opennextjs/opennextjs-aws/commit/697681bf9ce25212ce4e2e94d886ca425428280d)]: + - @opennextjs/aws@3.3.0 + +## 0.1.2 + +### Patch Changes + +- Updated dependencies [[`6f798debb575b157acb2f5068658f95ace0fae50`](https://github.com/opennextjs/opennextjs-aws/commit/6f798debb575b157acb2f5068658f95ace0fae50), [`fe600ac6f5e513376cf233a5d2ce68affaa3aa5a`](https://github.com/opennextjs/opennextjs-aws/commit/fe600ac6f5e513376cf233a5d2ce68affaa3aa5a), [`5f0cbc8feac9eec728c27bb3b7ff5c3f3bc26716`](https://github.com/opennextjs/opennextjs-aws/commit/5f0cbc8feac9eec728c27bb3b7ff5c3f3bc26716), [`8b51108d9aee7e5ed3027c1ceda99091b579951d`](https://github.com/opennextjs/opennextjs-aws/commit/8b51108d9aee7e5ed3027c1ceda99091b579951d), [`b999c4e9a38499680bed77ddeb94b62a3301c0fa`](https://github.com/opennextjs/opennextjs-aws/commit/b999c4e9a38499680bed77ddeb94b62a3301c0fa), [`ba84259d2e35e79a562a7e3f055e350a03c9d651`](https://github.com/opennextjs/opennextjs-aws/commit/ba84259d2e35e79a562a7e3f055e350a03c9d651)]: + - @opennextjs/aws@3.2.2 + +## 0.1.1 + +### Patch Changes + +- Updated dependencies [[`cf33973f3fbab73e77898fdd072a00a1f037257a`](https://github.com/opennextjs/opennextjs-aws/commit/cf33973f3fbab73e77898fdd072a00a1f037257a), [`77d87e7a870fad6afad022bf75aca18c8656c268`](https://github.com/opennextjs/opennextjs-aws/commit/77d87e7a870fad6afad022bf75aca18c8656c268), [`a43b82b4cb68889371ac8260aefef9e04eefb037`](https://github.com/opennextjs/opennextjs-aws/commit/a43b82b4cb68889371ac8260aefef9e04eefb037), [`bfa1a8c4056bd691fb57617dd6287693e51071b4`](https://github.com/opennextjs/opennextjs-aws/commit/bfa1a8c4056bd691fb57617dd6287693e51071b4), [`5839217411012d1df2874d299daa977ba3701c2c`](https://github.com/opennextjs/opennextjs-aws/commit/5839217411012d1df2874d299daa977ba3701c2c), [`dfc174d88b7bcc54eede09c98d9443dd84b93fd8`](https://github.com/opennextjs/opennextjs-aws/commit/dfc174d88b7bcc54eede09c98d9443dd84b93fd8)]: + - @opennextjs/aws@3.2.1 diff --git a/examples/app-router/README.md b/examples/app-router/README.md new file mode 100644 index 00000000..f4b9da05 --- /dev/null +++ b/examples/app-router/README.md @@ -0,0 +1,3 @@ +# App Router + +This project uses the App Router exclusively... diff --git a/examples/app-router/app/albums/@modal/(.)[album]/[song]/page.tsx b/examples/app-router/app/albums/@modal/(.)[album]/[song]/page.tsx new file mode 100644 index 00000000..f83f84b4 --- /dev/null +++ b/examples/app-router/app/albums/@modal/(.)[album]/[song]/page.tsx @@ -0,0 +1,29 @@ +import { getSong } from "@example/shared/api"; +import Modal from "@example/shared/components/Modal"; + +type Props = { + params: Promise<{ + album: string; + song: string; + }>; +}; +export default async function SongPage(props: Props) { + const params = await props.params; + const song = await getSong(params.album, params.song); + return ( + +

Modal

+ Album: {decodeURIComponent(params.album)} +
+ {/*
+
+ ); +} diff --git a/examples/app-router/app/albums/@modal/(.)[album]/page.tsx b/examples/app-router/app/albums/@modal/(.)[album]/page.tsx new file mode 100644 index 00000000..463c0c96 --- /dev/null +++ b/examples/app-router/app/albums/@modal/(.)[album]/page.tsx @@ -0,0 +1,11 @@ +import Modal from "@example/shared/components/Modal"; + +type Props = { + params: Promise<{ + artist: string; + }>; +}; +export default async function ArtistPage(props: Props) { + const params = await props.params; + return Artists {params.artist}; +} diff --git a/examples/app-router/app/albums/@modal/default.tsx b/examples/app-router/app/albums/@modal/default.tsx new file mode 100644 index 00000000..6ddf1b76 --- /dev/null +++ b/examples/app-router/app/albums/@modal/default.tsx @@ -0,0 +1,3 @@ +export default function Default() { + return null; +} diff --git a/examples/app-router/app/albums/[album]/[song]/page.tsx b/examples/app-router/app/albums/[album]/[song]/page.tsx new file mode 100644 index 00000000..87e15694 --- /dev/null +++ b/examples/app-router/app/albums/[album]/[song]/page.tsx @@ -0,0 +1,25 @@ +import { getSong } from "@example/shared/api"; + +type Props = { + params: Promise<{ + album: string; + song: string; + }>; +}; +export default async function Song(props: Props) { + const params = await props.params; + const song = await getSong(params.album, params.song); + + return ( +
+

Not Modal

+ {decodeURIComponent(params.album)} + +
+ ); +} diff --git a/examples/app-router/app/albums/[album]/page.tsx b/examples/app-router/app/albums/[album]/page.tsx new file mode 100644 index 00000000..8d3a5537 --- /dev/null +++ b/examples/app-router/app/albums/[album]/page.tsx @@ -0,0 +1,3 @@ +export default function ArtistPage() { + return
Artist
; +} diff --git a/examples/app-router/app/albums/layout.tsx b/examples/app-router/app/albums/layout.tsx new file mode 100644 index 00000000..0de9cfdc --- /dev/null +++ b/examples/app-router/app/albums/layout.tsx @@ -0,0 +1,10 @@ +import type { ReactNode } from "react"; + +export default function Layout({ children, modal }: { children: ReactNode; modal: ReactNode }) { + return ( +
+ {children} + {modal} +
+ ); +} diff --git a/examples/app-router/app/albums/page.tsx b/examples/app-router/app/albums/page.tsx new file mode 100644 index 00000000..6471009b --- /dev/null +++ b/examples/app-router/app/albums/page.tsx @@ -0,0 +1,13 @@ +import { getAlbums } from "@example/shared/api"; +import Album from "@example/shared/components/Album"; + +export default async function AlbumPage() { + const albums = await getAlbums(); + return ( +
+ {albums.map((album) => ( + + ))} +
+ ); +} diff --git a/examples/app-router/app/api/after/revalidate/route.ts b/examples/app-router/app/api/after/revalidate/route.ts new file mode 100644 index 00000000..2bc059fc --- /dev/null +++ b/examples/app-router/app/api/after/revalidate/route.ts @@ -0,0 +1,16 @@ +import { revalidateTag } from "next/cache"; +import { NextResponse, after } from "next/server"; + +export function POST() { + after( + () => + new Promise((resolve) => + setTimeout(() => { + revalidateTag("date"); + resolve(); + }, 5000) + ) + ); + + return NextResponse.json({ success: true }); +} diff --git a/examples/app-router/app/api/after/ssg/route.ts b/examples/app-router/app/api/after/ssg/route.ts new file mode 100644 index 00000000..2acf353f --- /dev/null +++ b/examples/app-router/app/api/after/ssg/route.ts @@ -0,0 +1,12 @@ +import { unstable_cache } from "next/cache"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-static"; + +export async function GET() { + const dateFn = unstable_cache(() => new Date().toISOString(), ["date"], { + tags: ["date"], + }); + const date = await dateFn(); + return NextResponse.json({ date }); +} diff --git a/examples/app-router/app/api/client/route.ts b/examples/app-router/app/api/client/route.ts new file mode 100644 index 00000000..e9c204ba --- /dev/null +++ b/examples/app-router/app/api/client/route.ts @@ -0,0 +1,7 @@ +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + return NextResponse.json({ + hello: "client", + }); +} diff --git a/examples/app-router/app/api/host/route.ts b/examples/app-router/app/api/host/route.ts new file mode 100644 index 00000000..16630b34 --- /dev/null +++ b/examples/app-router/app/api/host/route.ts @@ -0,0 +1,7 @@ +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + return NextResponse.json({ + url: request.url, + }); +} diff --git a/examples/app-router/app/api/isr/route.ts b/examples/app-router/app/api/isr/route.ts new file mode 100644 index 00000000..1fc3e43d --- /dev/null +++ b/examples/app-router/app/api/isr/route.ts @@ -0,0 +1,27 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import type { NextRequest } from "next/server"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +// This endpoint simulates an on demand revalidation request +export async function GET(request: NextRequest) { + const cwd = process.cwd(); + const prerenderManifest = await fs.readFile(path.join(cwd, ".next/prerender-manifest.json"), "utf-8"); + const manifest = JSON.parse(prerenderManifest); + const previewId = manifest.preview.previewModeId; + + const result = await fetch(`https://${request.headers.get("host")}/isr`, { + headers: { "x-prerender-revalidate": previewId }, + method: "HEAD", + }); + + return NextResponse.json({ + status: 200, + body: { + result: result.ok, + cacheControl: result.headers.get("cache-control"), + }, + }); +} diff --git a/examples/app-router/app/api/og/route.tsx b/examples/app-router/app/api/og/route.tsx new file mode 100644 index 00000000..b2263de5 --- /dev/null +++ b/examples/app-router/app/api/og/route.tsx @@ -0,0 +1,72 @@ +import { ImageResponse } from "next/og"; +// App router includes @vercel/og. +// No need to install it. +// ?title= + +export async function GET(request: Request) { + try { + const { searchParams } = new URL(request.url); + + // ?title=<title> + const hasTitle = searchParams.has("title"); + const title = hasTitle ? searchParams.get("title")?.slice(0, 100) : "My default title"; + + return new ImageResponse( + ( + <div + style={{ + backgroundColor: "black", + backgroundSize: "150px 150px", + height: "100%", + width: "100%", + display: "flex", + textAlign: "center", + alignItems: "center", + justifyContent: "center", + flexDirection: "column", + flexWrap: "nowrap", + }} + > + <div + style={{ + display: "flex", + alignItems: "center", + justifyContent: "center", + justifyItems: "center", + }} + > + <img + alt="Vercel" + height={200} + src="data:image/svg+xml,%3Csvg width='116' height='100' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M57.5 0L115 100H0L57.5 0z' /%3E%3C/svg%3E" + style={{ margin: "0 30px" }} + width={232} + /> + </div> + <div + style={{ + fontSize: 60, + fontStyle: "normal", + letterSpacing: "-0.025em", + color: "white", + marginTop: 30, + padding: "0 120px", + lineHeight: 1.4, + whiteSpace: "pre-wrap", + }} + > + {title} + </div> + </div> + ), + { + width: 1200, + height: 630, + } + ); + } catch (e: any) { + return new Response("Failed to generate the image", { + status: 500, + }); + } +} diff --git a/examples/app-router/app/api/page.tsx b/examples/app-router/app/api/page.tsx new file mode 100644 index 00000000..0771ac5a --- /dev/null +++ b/examples/app-router/app/api/page.tsx @@ -0,0 +1,40 @@ +"use client"; + +import { useCallback, useState } from "react"; + +/** + * Make /api/hello call exclusively on the client + * - we already know SSR can fetch itself w/o issues + */ +export default function Page() { + const [data, setData] = useState(); + + const onClientClick = useCallback(async () => { + const { protocol, host } = window.location; + const url = `${protocol}//${host}`; + const r = await fetch(`${url}/api/client`); + const d = await r.json(); + setData(d); + }, []); + + const onMiddlewareClick = useCallback(async () => { + const { protocol, host } = window.location; + const url = `${protocol}//${host}`; + const r = await fetch(`${url}/api/middleware`); + const d = await r.json(); + setData(d); + }, []); + + return ( + <div> + <div>API: {data ? JSON.stringify(data, null, 2) : "N/A"}</div> + + <button className="border p-2" onClick={onClientClick}> + Call /api/client + </button> + <button className="border p-2" onClick={onMiddlewareClick}> + Call /api/middleware + </button> + </div> + ); +} diff --git a/examples/app-router/app/api/revalidate-path/route.ts b/examples/app-router/app/api/revalidate-path/route.ts new file mode 100644 index 00000000..625d5a65 --- /dev/null +++ b/examples/app-router/app/api/revalidate-path/route.ts @@ -0,0 +1,9 @@ +import { revalidatePath } from "next/cache"; + +export const dynamic = "force-dynamic"; + +export async function GET() { + revalidatePath("/revalidate-path"); + + return new Response("ok"); +} diff --git a/examples/app-router/app/api/revalidate-tag/route.ts b/examples/app-router/app/api/revalidate-tag/route.ts new file mode 100644 index 00000000..e0346d42 --- /dev/null +++ b/examples/app-router/app/api/revalidate-tag/route.ts @@ -0,0 +1,9 @@ +import { revalidateTag } from "next/cache"; + +export const dynamic = "force-dynamic"; + +export async function GET() { + revalidateTag("revalidate"); + + return new Response("ok"); +} diff --git a/examples/app-router/app/api/sse/route.ts b/examples/app-router/app/api/sse/route.ts new file mode 100644 index 00000000..645b24f5 --- /dev/null +++ b/examples/app-router/app/api/sse/route.ts @@ -0,0 +1,52 @@ +import type { NextRequest } from "next/server"; + +function wait(ms: number) { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); +} + +export const dynamic = "force-dynamic"; + +export async function GET(request: NextRequest) { + const resStream = new TransformStream(); + const writer = resStream.writable.getWriter(); + + const res = new Response(resStream.readable, { + headers: { + "Content-Type": "text/event-stream", + Connection: "keep-alive", + "Cache-Control": "no-cache, no-transform", + }, + }); + + setTimeout(async () => { + await writer.write( + `data: ${JSON.stringify({ + message: "open", + time: new Date().toISOString(), + })}\n\n` + ); + for (let i = 1; i <= 4; i++) { + await wait(2000); + await writer.write( + `data: ${JSON.stringify({ + message: `hello:${i}`, + time: new Date().toISOString(), + })}\n\n` + ); + } + + await wait(2000); // Wait for 4 seconds + await writer.write( + `data: ${JSON.stringify({ + message: "close", + time: new Date().toISOString(), + })}\n\n` + ); + await wait(5000); + await writer.close(); + }, 100); + + return res; +} diff --git a/examples/app-router/app/config-redirect/page.tsx b/examples/app-router/app/config-redirect/page.tsx new file mode 100644 index 00000000..6e51d3d5 --- /dev/null +++ b/examples/app-router/app/config-redirect/page.tsx @@ -0,0 +1,8 @@ +export default function RedirectDestination() { + return ( + <div> + <h1>I was redirected from next.config.js</h1> + <p>/next-config-redirect => /config-redirect</p> + </div> + ); +} diff --git a/examples/app-router/app/globals.css b/examples/app-router/app/globals.css new file mode 100644 index 00000000..e0936eda --- /dev/null +++ b/examples/app-router/app/globals.css @@ -0,0 +1,23 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } +} + +body { + color: rgb(var(--foreground-rgb)); + background: linear-gradient(to bottom, transparent, rgb(var(--background-end-rgb))) + rgb(var(--background-start-rgb)); +} diff --git a/examples/app-router/app/headers/page.tsx b/examples/app-router/app/headers/page.tsx new file mode 100644 index 00000000..643a5b8c --- /dev/null +++ b/examples/app-router/app/headers/page.tsx @@ -0,0 +1,11 @@ +import { headers } from "next/headers"; + +export default async function Headers() { + const middlewareHeader = (await headers()).get("request-header"); + return ( + <div> + <h1>Headers</h1> + <div>{middlewareHeader}</div> + </div> + ); +} diff --git a/examples/app-router/app/image-optimization/page.tsx b/examples/app-router/app/image-optimization/page.tsx new file mode 100644 index 00000000..05e17139 --- /dev/null +++ b/examples/app-router/app/image-optimization/page.tsx @@ -0,0 +1,14 @@ +import Image from "next/image"; + +export default function ImageOptimization() { + return ( + <div> + <Image + src="https://opennext.js.org/architecture.png" + alt="Open Next architecture" + width={300} + height={300} + /> + </div> + ); +} diff --git a/examples/app-router/app/isr/page.tsx b/examples/app-router/app/isr/page.tsx new file mode 100644 index 00000000..3eadac36 --- /dev/null +++ b/examples/app-router/app/isr/page.tsx @@ -0,0 +1,9 @@ +async function getTime() { + return new Date().toISOString(); +} + +export const revalidate = 10; +export default async function ISR() { + const time = getTime(); + return <div>Time: {time}</div>; +} diff --git a/examples/app-router/app/layout.tsx b/examples/app-router/app/layout.tsx new file mode 100644 index 00000000..d06375b3 --- /dev/null +++ b/examples/app-router/app/layout.tsx @@ -0,0 +1,19 @@ +import "./globals.css"; + +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; + +const inter = Inter({ subsets: ["latin"] }); + +export const metadata: Metadata = { + title: "Nextjs App Router", + description: "Generated by create next app", +}; + +export default function RootLayout({ children }: { children: React.ReactNode }) { + return ( + <html lang="en"> + <body className={inter.className}>{children}</body> + </html> + ); +} diff --git a/examples/app-router/app/og/opengraph-image.tsx b/examples/app-router/app/og/opengraph-image.tsx new file mode 100644 index 00000000..7539eb4d --- /dev/null +++ b/examples/app-router/app/og/opengraph-image.tsx @@ -0,0 +1,38 @@ +import { ImageResponse } from "next/og"; + +// Image metadata +export const alt = "OpenNext"; +export const size = { + width: 1200, + height: 630, +}; + +export const contentType = "image/png"; + +// Image generation +export default async function Image() { + return new ImageResponse( + ( + // ImageResponse JSX element + <div + style={{ + fontSize: 128, + background: "white", + width: "100%", + height: "100%", + display: "flex", + alignItems: "center", + justifyContent: "center", + }} + > + OpenNext + </div> + ), + // ImageResponse options + { + // For convenience, we can re-use the exported opengraph-image + // size config to also set the ImageResponse's width and height. + ...size, + } + ); +} diff --git a/examples/app-router/app/og/page.tsx b/examples/app-router/app/og/page.tsx new file mode 100644 index 00000000..0b98f2d6 --- /dev/null +++ b/examples/app-router/app/og/page.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return <div></div>; +} diff --git a/examples/app-router/app/page.tsx b/examples/app-router/app/page.tsx new file mode 100644 index 00000000..7480a490 --- /dev/null +++ b/examples/app-router/app/page.tsx @@ -0,0 +1,49 @@ +import Nav from "@example/shared/components/Nav"; + +export default function Home() { + return ( + <> + <h1>Nextjs App Router</h1> + + <main className="grid grid-cols-2 gap-4 p-10 [&>a]:border"> + <Nav href={"/albums"} title="Albums"> + Modal and interception of the greatest hits + </Nav> + <Nav href={"/rewrite"} title="Rewrite"> + Middleware Rewrite of a page. /rewrite should rewrite the contents of /rewrite-destination + </Nav> + <Nav href={"/redirect"} title="Redirect"> + Middleware Rewrite of a page. /redirect should redirect page to /redirect-destination + </Nav> + <Nav href={"/server-actions"} title="Server Actions"> + Client component imports a 'use server' server action and calls it directly without setting up any + api endpoints + </Nav> + <Nav href={"/isr"} title="ISR"> + Incremental Static Regeneration revalidates every 10 seconds with a new timestamp + </Nav> + <Nav href={"/ssr"} title="SSR"> + Server Side Render should generate a new timestamp on each load. Streaming support for loading... + </Nav> + <Nav href={"/api"} title="API"> + Calls an API endpoint defined in app/api/hello/route and middleware + </Nav> + <Nav href={"/parallel"} title="Parallel"> + Parallel routing + </Nav> + <Nav href={"/headers"} title="Headers"> + Headers from middleware should be available via headers() + </Nav> + <Nav href={"/search-query"} title="Search Query"> + Search Query Params should be available in middleware + </Nav> + <Nav href={"/sse"} title="Server Sent Events"> + Server Sent Events via Streaming + </Nav> + <Nav href={"/image-optimization"} title="Image Optimization"> + Image Optimization with next/image + </Nav> + </main> + </> + ); +} diff --git a/examples/app-router/app/parallel/@a/a-page/page.tsx b/examples/app-router/app/parallel/@a/a-page/page.tsx new file mode 100644 index 00000000..8108d277 --- /dev/null +++ b/examples/app-router/app/parallel/@a/a-page/page.tsx @@ -0,0 +1,3 @@ +export default function APage() { + return <div>A Page</div>; +} diff --git a/examples/app-router/app/parallel/@a/page.tsx b/examples/app-router/app/parallel/@a/page.tsx new file mode 100644 index 00000000..5e7ee146 --- /dev/null +++ b/examples/app-router/app/parallel/@a/page.tsx @@ -0,0 +1,10 @@ +import Link from "next/link"; + +export default function A() { + return ( + <div className="border p-4"> + <h1>Parallel Route A</h1> + <Link href="/parallel/a-page">Go to a-page</Link> + </div> + ); +} diff --git a/examples/app-router/app/parallel/@b/b-page/page.tsx b/examples/app-router/app/parallel/@b/b-page/page.tsx new file mode 100644 index 00000000..1750356e --- /dev/null +++ b/examples/app-router/app/parallel/@b/b-page/page.tsx @@ -0,0 +1,3 @@ +export default function BPage() { + return <div>B Page</div>; +} diff --git a/examples/app-router/app/parallel/@b/page.tsx b/examples/app-router/app/parallel/@b/page.tsx new file mode 100644 index 00000000..b217f84e --- /dev/null +++ b/examples/app-router/app/parallel/@b/page.tsx @@ -0,0 +1,11 @@ +import Link from "next/link"; + +export default function B() { + return ( + <div className="border p-4"> + <h1>Parallel Route B</h1> + + <Link href="/parallel/b-page">Go to b-page</Link> + </div> + ); +} diff --git a/examples/app-router/app/parallel/layout.tsx b/examples/app-router/app/parallel/layout.tsx new file mode 100644 index 00000000..5925ac09 --- /dev/null +++ b/examples/app-router/app/parallel/layout.tsx @@ -0,0 +1,42 @@ +"use client"; +import { useState } from "react"; + +import type { ReactNode } from "react"; + +export default function Layout({ a, b, children }: { children: ReactNode; a: ReactNode; b: ReactNode }) { + const [routeA, setRouteA] = useState(false); + const [routeB, setRouteB] = useState(false); + + return ( + <div> + <div className="flex flex-col mb-10"> + <label htmlFor="a"> + Enable A + <input + name="a" + type="checkbox" + checked={routeA} + onChange={(e) => { + setRouteA(e.target.checked); + }} + /> + </label> + <label htmlFor="b"> + Enable B + <input + name="b" + type="checkbox" + checked={routeB} + onChange={(e) => { + setRouteB(e.target.checked); + }} + /> + </label> + </div> + + {routeA && a} + {routeB && b} + {/* {children} */} + </div> + ); +} diff --git a/examples/app-router/app/parallel/page.tsx b/examples/app-router/app/parallel/page.tsx new file mode 100644 index 00000000..67e08591 --- /dev/null +++ b/examples/app-router/app/parallel/page.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return null; +} diff --git a/examples/app-router/app/redirect-destination/page.tsx b/examples/app-router/app/redirect-destination/page.tsx new file mode 100644 index 00000000..1fe01ac3 --- /dev/null +++ b/examples/app-router/app/redirect-destination/page.tsx @@ -0,0 +1,3 @@ +export default function RedirectDestination() { + return <div>Redirect Destination</div>; +} diff --git a/examples/app-router/app/revalidate-path/page.tsx b/examples/app-router/app/revalidate-path/page.tsx new file mode 100644 index 00000000..8a1f9de4 --- /dev/null +++ b/examples/app-router/app/revalidate-path/page.tsx @@ -0,0 +1,19 @@ +export default async function Page() { + const responseSST = await fetch("https://sst.dev", { + next: { + tags: ["path"], + }, + }); + // This one doesn't have a tag + const responseOpenNext = await fetch("https://opennext.js.org"); + const reqIdSst = responseSST.headers.get("x-amz-cf-id"); + const dateInOpenNext = responseOpenNext.headers.get("date"); + return ( + <div> + <h1>Request id from SST</h1> + <p>RequestID: {reqIdSst}</p> + <h1>Date from from OpenNext</h1> + <p>Date: {dateInOpenNext}</p> + </div> + ); +} diff --git a/examples/app-router/app/revalidate-tag/layout.tsx b/examples/app-router/app/revalidate-tag/layout.tsx new file mode 100644 index 00000000..8c309316 --- /dev/null +++ b/examples/app-router/app/revalidate-tag/layout.tsx @@ -0,0 +1,15 @@ +import { unstable_cache } from "next/cache"; +import type { ReactNode } from "react"; + +export default async function Layout({ children }: { children: ReactNode }) { + const fakeFetch = unstable_cache(async () => new Date().getTime(), ["fakeFetch"], { + tags: ["revalidate"], + }); + const fetchedDate = await fakeFetch(); + return ( + <div> + <div>Fetched time: {new Date(fetchedDate).toISOString()}</div> + {children} + </div> + ); +} diff --git a/examples/app-router/app/revalidate-tag/nested/page.tsx b/examples/app-router/app/revalidate-tag/nested/page.tsx new file mode 100644 index 00000000..8436502b --- /dev/null +++ b/examples/app-router/app/revalidate-tag/nested/page.tsx @@ -0,0 +1,3 @@ +export default async function Nested() { + return <div>Nested</div>; +} diff --git a/examples/app-router/app/revalidate-tag/page.tsx b/examples/app-router/app/revalidate-tag/page.tsx new file mode 100644 index 00000000..c07794e7 --- /dev/null +++ b/examples/app-router/app/revalidate-tag/page.tsx @@ -0,0 +1,8 @@ +async function getTime() { + return new Date().toISOString(); +} + +export default async function ISR() { + const time = getTime(); + return <div>Time: {time}</div>; +} diff --git a/examples/app-router/app/rewrite-destination/page.tsx b/examples/app-router/app/rewrite-destination/page.tsx new file mode 100644 index 00000000..c7ea97c3 --- /dev/null +++ b/examples/app-router/app/rewrite-destination/page.tsx @@ -0,0 +1,3 @@ +export default function RewriteDestination() { + return <div>Rewritten Destination</div>; +} diff --git a/examples/app-router/app/search-query/page.tsx b/examples/app-router/app/search-query/page.tsx new file mode 100644 index 00000000..922f018d --- /dev/null +++ b/examples/app-router/app/search-query/page.tsx @@ -0,0 +1,25 @@ +import { headers } from "next/headers"; + +export default async function SearchQuery(props: { + searchParams: Promise<Record<string, string | string[]>>; +}) { + const propsSearchParams = await props.searchParams; + const mwSearchParams = (await headers()).get("search-params"); + const multiValueParams = propsSearchParams.multi; + const multiValueArray = Array.isArray(multiValueParams) ? multiValueParams : [multiValueParams]; + return ( + <> + <h1>Search Query</h1> + <div>Search Params via Props: {propsSearchParams.searchParams}</div> + <div>Search Params via Middleware: {mwSearchParams}</div> + {multiValueParams && ( + <> + <div>Multi-value Params (key: multi): {multiValueArray.length}</div> + {multiValueArray.map((value) => ( + <div>{value}</div> + ))} + </> + )} + </> + ); +} diff --git a/examples/app-router/app/server-actions/client.tsx b/examples/app-router/app/server-actions/client.tsx new file mode 100644 index 00000000..8f3bbda3 --- /dev/null +++ b/examples/app-router/app/server-actions/client.tsx @@ -0,0 +1,26 @@ +"use client"; +import { useCallback, useState, useTransition } from "react"; + +import type { Song as SongType } from "@example/shared/api"; +import { getSong } from "@example/shared/api"; +import Song from "@example/shared/components/Album/Song"; + +export default function Client() { + const [isPending, startTransition] = useTransition(); + const [song, setSong] = useState<SongType>(); + + const onClick = useCallback(() => { + startTransition(async () => { + const song = await getSong("Hold Me In Your Arms", "I'm never gonna give you up"); + setSong(song); + }); + }, []); + + return ( + <div> + <button onClick={onClick}>Fire Server Actions</button> + {isPending && <div>☎️ing Server Actions...</div>} + {song && <Song song={song} play />} + </div> + ); +} diff --git a/examples/app-router/app/server-actions/page.tsx b/examples/app-router/app/server-actions/page.tsx new file mode 100644 index 00000000..f15c66fc --- /dev/null +++ b/examples/app-router/app/server-actions/page.tsx @@ -0,0 +1,10 @@ +import Client from "./client"; + +export default function Page() { + return ( + <div> + <h1>Server Actions</h1> + <Client /> + </div> + ); +} diff --git a/examples/app-router/app/sse/page.tsx b/examples/app-router/app/sse/page.tsx new file mode 100644 index 00000000..76e5582c --- /dev/null +++ b/examples/app-router/app/sse/page.tsx @@ -0,0 +1,36 @@ +"use client"; + +import { useEffect, useState } from "react"; + +export default function SSE() { + const [events, setEvents] = useState<any[]>([]); + + useEffect(() => { + const e = new EventSource("/api/sse"); + + e.onmessage = (msg) => { + console.log(msg); + try { + const data = JSON.parse(msg.data); + if (data.message === "close") { + e.close(); + console.log("closing"); + } + setEvents((prev) => prev.concat(data)); + } catch (err) { + console.log("failed to parse: ", err, msg); + } + }; + }, []); + + return ( + <> + <h1>Server Sent Event</h1> + {events.map((e, i) => ( + <div key={i}> + Message {i}: {JSON.stringify(e)} + </div> + ))} + </> + ); +} diff --git a/examples/app-router/app/ssr/layout.tsx b/examples/app-router/app/ssr/layout.tsx new file mode 100644 index 00000000..181825b1 --- /dev/null +++ b/examples/app-router/app/ssr/layout.tsx @@ -0,0 +1,12 @@ +import type { PropsWithChildren } from "react"; + +export default function Layout({ children }: PropsWithChildren) { + return ( + <div> + <h1>SSR</h1> + {/* 16 kb seems necessary here to prevent any buffering*/} + {/* <Filler size={16} /> */} + {children} + </div> + ); +} diff --git a/examples/app-router/app/ssr/loading.tsx b/examples/app-router/app/ssr/loading.tsx new file mode 100644 index 00000000..fc80ef06 --- /dev/null +++ b/examples/app-router/app/ssr/loading.tsx @@ -0,0 +1,3 @@ +export default function Loading() { + return <div>Loading...</div>; +} diff --git a/examples/app-router/app/ssr/page.tsx b/examples/app-router/app/ssr/page.tsx new file mode 100644 index 00000000..563c4483 --- /dev/null +++ b/examples/app-router/app/ssr/page.tsx @@ -0,0 +1,25 @@ +import { headers } from "next/headers"; + +async function getTime() { + const res = await new Promise<string>((resolve) => { + setTimeout(() => { + resolve(new Date().toISOString()); + }, 1500); + }); + return res; +} + +export default async function SSR() { + const time = await getTime(); + const headerList = await headers(); + const responseOpenNext = await fetch("https://opennext.js.org", { + cache: "force-cache", + }); + return ( + <div> + <h1>Time: {time}</h1> + <div> {headerList.get("host")}</div> + <p>Cached fetch: {responseOpenNext.headers.get("date")}</p> + </div> + ); +} diff --git a/examples/app-router/middleware.ts b/examples/app-router/middleware.ts new file mode 100644 index 00000000..923fcaee --- /dev/null +++ b/examples/app-router/middleware.ts @@ -0,0 +1,71 @@ +import type { NextRequest } from "next/server"; +import { NextResponse } from "next/server"; + +export function middleware(request: NextRequest) { + const path = request.nextUrl.pathname; //new URL(request.url).pathname; + + const host = request.headers.get("host"); + const protocol = host?.startsWith("localhost") ? "http" : "https"; + if (path === "/redirect") { + const u = new URL("/redirect-destination", `${protocol}://${host}`); + return NextResponse.redirect(u, { + headers: { "set-cookie": "test=success" }, + }); + } + if (path === "/rewrite") { + const u = new URL("/rewrite-destination", `${protocol}://${host}`); + return NextResponse.rewrite(u); + } + if (path === "/api/middleware") { + return new NextResponse(JSON.stringify({ hello: "middleware" }), { + status: 200, + headers: { + "content-type": "application/json", + }, + }); + } + const requestHeaders = new Headers(); + // Setting the Request Headers, this should be available in RSC + requestHeaders.set("request-header", "request-header"); + requestHeaders.set("search-params", `mw/${request.nextUrl.searchParams.get("searchParams") || ""}`); + const responseHeaders = new Headers(); + // Response headers should show up in the client's response headers + responseHeaders.set("response-header", "response-header"); + + // Set the cache control header with custom swr + // For: isr.test.ts + if (path === "/isr" && !request.headers.get("x-prerender-revalidate")) { + responseHeaders.set("cache-control", "max-age=10, stale-while-revalidate=999"); + } + + // It is so that cloudfront doesn't cache the response + if ( + path.startsWith("/revalidate-tag") || + path.startsWith("/revalidate-path") || + path.startsWith("/api/after/ssg") + ) { + responseHeaders.set("cache-control", "private, no-cache, no-store, max-age=0, must-revalidate"); + } + + const r = NextResponse.next({ + headers: responseHeaders, + request: { + headers: requestHeaders, + }, + }); + + // Set cookies in middleware + // For: middleware.cookies.test.ts + r.cookies.set("from", "middleware", { + expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 365), + }); + r.cookies.set("with", "love", { + expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 365), + }); + + return r; +} + +export const config = { + matcher: ["/((?!_next|favicon.ico|match|static|fonts|api/auth|og).*)"], +}; diff --git a/examples/app-router/next.config.ts b/examples/app-router/next.config.ts new file mode 100644 index 00000000..8a85d80a --- /dev/null +++ b/examples/app-router/next.config.ts @@ -0,0 +1,76 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + poweredByHeader: false, + cleanDistDir: true, + transpilePackages: ["@example/shared"], + output: "standalone", + // outputFileTracingRoot: "../sst", + eslint: { + ignoreDuringBuilds: true, + }, + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "opennext.js.org", + }, + ], + }, + redirects: async () => { + return [ + { + source: "/next-config-redirect-missing", + destination: "/config-redirect?missing=true", + permanent: true, + missing: [{ type: "cookie", key: "missing-cookie" }], + }, + { + source: "/next-config-redirect-not-missing", + destination: "/config-redirect?missing=true", + permanent: true, + missing: [{ type: "cookie", key: "from" }], // middleware sets this cookie + }, + { + source: "/next-config-redirect-has", + destination: "/config-redirect?has=true", + permanent: true, + has: [{ type: "cookie", key: "from" }], + }, + { + source: "/next-config-redirect-has-with-value", + destination: "/config-redirect?hasWithValue=true", + permanent: true, + has: [{ type: "cookie", key: "from", value: "middleware" }], + }, + { + source: "/next-config-redirect-has-with-bad-value", + destination: "/config-redirect?hasWithBadValue=true", + permanent: true, + has: [{ type: "cookie", key: "from", value: "wrongvalue" }], + }, + { + source: "/next-config-redirect-without-locale-support", + destination: "https://opennext.js.org/", + permanent: false, + basePath: false, + locale: false, + }, + ]; + }, + async headers() { + return [ + { + source: "/(.*)", + headers: [ + { + key: "e2e-headers", + value: "next.config.js", + }, + ], + }, + ]; + }, +}; + +export default nextConfig; diff --git a/examples/app-router/open-next.config.ts b/examples/app-router/open-next.config.ts new file mode 100644 index 00000000..0f7794ff --- /dev/null +++ b/examples/app-router/open-next.config.ts @@ -0,0 +1,25 @@ +import type { OpenNextConfig } from "@opennextjs/aws/types/open-next"; + +const config: OpenNextConfig = { + default: { + override: { + wrapper: "cloudflare-node", + converter: "edge", + // Unused implementation + incrementalCache: "dummy", + tagCache: "dummy", + queue: "dummy", + }, + }, + + middleware: { + external: true, + override: { + wrapper: "cloudflare-edge", + converter: "edge", + proxyExternalRequest: "fetch", + }, + }, +}; + +export default config; diff --git a/examples/app-router/package.json b/examples/app-router/package.json new file mode 100644 index 00000000..68eedd7a --- /dev/null +++ b/examples/app-router/package.json @@ -0,0 +1,32 @@ +{ + "name": "app-router", + "version": "0.1.4", + "private": true, + "scripts": { + "openbuild": "node ../../packages/open-next/dist/index.js build --streaming --build-command \"npx turbo build\"", + "dev": "next dev --turbopack --port 3001", + "build": "next build", + "start": "next start --port 3001", + "lint": "next lint", + "clean": "rm -rf .turbo node_modules .next .open-next", + "build:worker-tofix": "pnpm opennextjs-cloudflare", + "dev:worker": "wrangler dev --port 8770 --inspector-port 9330", + "preview": "pnpm build:worker && pnpm dev:worker" + }, + "dependencies": { + "@opennextjs/cloudflare": "workspace:*", + "@example/shared": "workspace:*", + "next": "catalog:e2e", + "react": "catalog:e2e", + "react-dom": "catalog:e2e" + }, + "devDependencies": { + "@types/node": "catalog:e2e", + "@types/react": "catalog:e2e", + "@types/react-dom": "catalog:e2e", + "autoprefixer": "catalog:e2e", + "postcss": "catalog:e2e", + "tailwindcss": "catalog:e2e", + "typescript": "catalog:default" + } +} diff --git a/examples/app-router/postcss.config.js b/examples/app-router/postcss.config.js new file mode 100644 index 00000000..12a703d9 --- /dev/null +++ b/examples/app-router/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/examples/app-router/public/favicon.ico b/examples/app-router/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4ba005f2c893d9bdce751162e8be142627758eb4 GIT binary patch literal 4286 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 literal 0 HcmV?d00001 diff --git a/examples/app-router/public/static/corporate_holiday_card.jpg b/examples/app-router/public/static/corporate_holiday_card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0df96ae239c2f5f46bcf9080a2273379254eaf1a GIT binary patch literal 120302 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 literal 0 HcmV?d00001 diff --git a/examples/app-router/public/static/frank.webp b/examples/app-router/public/static/frank.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2cc67f0ebd9741dc6e036af19726d3a6b84423e GIT binary patch literal 8830 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 AR{#J2 literal 0 HcmV?d00001 diff --git a/examples/app-router/sst-env.d.ts b/examples/app-router/sst-env.d.ts new file mode 100644 index 00000000..59d33569 --- /dev/null +++ b/examples/app-router/sst-env.d.ts @@ -0,0 +1 @@ +/// <reference path="../example_sst/.sst/types/index.ts" /> diff --git a/examples/app-router/tailwind.config.ts b/examples/app-router/tailwind.config.ts new file mode 100644 index 00000000..edaaef36 --- /dev/null +++ b/examples/app-router/tailwind.config.ts @@ -0,0 +1,15 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: ["./app/**/*.{js,ts,jsx,tsx,mdx}", "../../examples/shared/**/*.{jsx,tsx}"], + theme: { + extend: { + backgroundImage: { + "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", + "gradient-conic": "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", + }, + }, + }, + plugins: [], +}; +export default config; diff --git a/examples/app-router/tsconfig.json b/examples/app-router/tsconfig.json new file mode 100644 index 00000000..9e539bbd --- /dev/null +++ b/examples/app-router/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"], + "@example/shared": ["../shared"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules", "open-next.config.ts"] +} diff --git a/examples/app-router/wrangler.json b/examples/app-router/wrangler.json new file mode 100644 index 00000000..c0492f6d --- /dev/null +++ b/examples/app-router/wrangler.json @@ -0,0 +1,10 @@ +{ + "main": ".open-next/worker.js", + "name": "app-router", + "compatibility_date": "2024-12-30", + "compatibility_flags": ["nodejs_compat"], + "assets": { + "directory": ".open-next/assets", + "binding": "ASSETS" + } +} diff --git a/examples/shared/api/index.ts b/examples/shared/api/index.ts new file mode 100644 index 00000000..f6f6d6d8 --- /dev/null +++ b/examples/shared/api/index.ts @@ -0,0 +1,37 @@ +"use server"; +import data from "./songs.json"; + +export type Song = (typeof data.songs)[0]; +export type Album = { album: string; artist: string; songs: Song[] }; +const albumsMap: { [key: string]: Song[] } = {}; + +const albums: Album[] = []; +data.songs.forEach((s) => { + if (!albumsMap[s.album]) { + albumsMap[s.album] = [s]; + } else { + albumsMap[s.album].push(s); + } +}); + +Object.entries(albumsMap).forEach(([key, album]) => { + albums.push({ + album: album[0].album, + artist: album[0].artist, + songs: album, + }); +}); + +export async function getAlbums() { + return albums; +} + +export async function getSongs() { + return data.songs; +} + +export async function getSong(album: string, title: string) { + return data.songs.find( + (song) => song.album === decodeURIComponent(album) && song.title === decodeURIComponent(title) + ); +} diff --git a/examples/shared/api/songs.json b/examples/shared/api/songs.json new file mode 100644 index 00000000..2f277a73 --- /dev/null +++ b/examples/shared/api/songs.json @@ -0,0 +1,36 @@ +{ + "songs": [ + { + "rank": 1, + "title": "I'm never gonna give you up", + "artist": "Rick Astley", + "album": "Hold Me In Your Arms", + "year": "1965", + "videoId": "dQw4w9WgXcQ" + }, + { + "rank": 2, + "title": "My Wang", + "artist": "Frank Wangnatra", + "album": "@franjiewang", + "year": "2023", + "videoId": "qQzdAsjWGPg" + }, + { + "rank": 3, + "title": "Excuse me miSST", + "artist": "Jay-Air", + "album": "@Jayair", + "year": "2023", + "videoId": "tnDh0JhmaFw" + }, + { + "rank": 4, + "title": "I don't want another CONSOLE-RRY", + "artist": "Dax", + "album": "@thxdr", + "year": "2023", + "videoId": "4JI70_9acgE" + } + ] +} diff --git a/examples/shared/components/Album/Album.tsx b/examples/shared/components/Album/Album.tsx new file mode 100644 index 00000000..b5eac0a1 --- /dev/null +++ b/examples/shared/components/Album/Album.tsx @@ -0,0 +1,17 @@ +import type { Album } from "../../api/index"; +import Song from "./Song"; + +type Props = { + album: Album; +}; +export default function Album({ album }: Props) { + return ( + <div className="border p-2 my-4 mx-2"> + <div>Album: {album.album}</div> + <div>Artist: {album.artist}</div> + {album.songs.map((song) => ( + <Song song={song} /> + ))} + </div> + ); +} diff --git a/examples/shared/components/Album/Song.tsx b/examples/shared/components/Album/Song.tsx new file mode 100644 index 00000000..0cc93e77 --- /dev/null +++ b/examples/shared/components/Album/Song.tsx @@ -0,0 +1,23 @@ +import type { Song } from "../../api/index"; + +type Props = { + song: Song; + play?: boolean; +}; +export default function Song({ song, play }: Props) { + return ( + <div className="border p-1 hover:bg-green-600"> + <div>Song: {song.title}</div> + <div>Year: {song.year}</div> + {play && ( + <iframe + width="560" + height="315" + title={song.title} + allowFullScreen + src={`https://youtube.com/embed/${song?.videoId}?autoplay=1`} + ></iframe> + )} + </div> + ); +} diff --git a/examples/shared/components/Album/index.tsx b/examples/shared/components/Album/index.tsx new file mode 100644 index 00000000..633e3cdc --- /dev/null +++ b/examples/shared/components/Album/index.tsx @@ -0,0 +1,21 @@ +import Link from "next/link"; + +import type { Album } from "../../api/index"; +import Song from "./Song"; + +type Props = { + album: Album; +}; +export default function Album({ album }: Props) { + return ( + <div className="border p-2 my-4 mx-2"> + <div>Album: {album.album}</div> + <div>Artist: {album.artist}</div> + {album.songs.map((song) => ( + <Link href={`/albums/${encodeURIComponent(album.album)}/${song.title}`}> + <Song song={song} /> + </Link> + ))} + </div> + ); +} diff --git a/examples/shared/components/Filler/index.tsx b/examples/shared/components/Filler/index.tsx new file mode 100644 index 00000000..60426aeb --- /dev/null +++ b/examples/shared/components/Filler/index.tsx @@ -0,0 +1,13 @@ +interface FillerProps { + // Size in kb of the filler + size: number; +} + +//This component is there to demonstrate how you could bypass streaming buffering in aws lambda. +//Hopefully, this will be fixed in the future and this component will be removed. +// https://github.com/aws/aws-lambda-nodejs-runtime-interface-client/issues/94 +export default function Filler({ size }: FillerProps) { + const str = "a".repeat(size * 1024); + const byteSize = new TextEncoder().encode(str).length; + return <script type="application/json">{JSON.stringify({ filler: str, byteSize })}</script>; +} diff --git a/examples/shared/components/Modal/index.tsx b/examples/shared/components/Modal/index.tsx new file mode 100644 index 00000000..e522e273 --- /dev/null +++ b/examples/shared/components/Modal/index.tsx @@ -0,0 +1,51 @@ +"use client"; +import { useCallback, useEffect, useRef } from "react"; + +import { useRouter } from "next/navigation"; +import type { MouseEventHandler } from "react"; + +export default function Modal({ children }: { children: React.ReactNode }) { + const overlay = useRef(null); + const wrapper = useRef(null); + const router = useRouter(); + + const onDismiss = useCallback(() => { + router.back(); + }, [router]); + + const onClick: MouseEventHandler = useCallback( + (e) => { + if (onDismiss && (e.target === overlay.current || e.target === wrapper.current)) { + onDismiss(); + } + }, + [onDismiss, overlay, wrapper] + ); + + const onKeyDown = useCallback( + (e: KeyboardEvent) => { + if (e.key === "Escape") onDismiss(); + }, + [onDismiss] + ); + + useEffect(() => { + document.addEventListener("keydown", onKeyDown); + return () => document.removeEventListener("keydown", onKeyDown); + }, [onKeyDown]); + + return ( + <div + ref={overlay} + className="fixed z-10 left-0 right-0 top-0 bottom-0 mx-auto bg-black/80" + onClick={onClick} + > + <div + ref={wrapper} + className="absolute top-32 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full sm:w-10/12 md:w-8/12 lg:w-1/2 p-6" + > + {children} + </div> + </div> + ); +} diff --git a/examples/shared/components/Nav/index.tsx b/examples/shared/components/Nav/index.tsx new file mode 100644 index 00000000..14ae126c --- /dev/null +++ b/examples/shared/components/Nav/index.tsx @@ -0,0 +1,27 @@ +"use client"; +import Link from "next/link"; +import type { PropsWithChildren } from "react"; + +type Props = PropsWithChildren & { + href: string; + title: string; + icon?: string; +}; +export default function Nav(p: Props) { + const { children, href, title, icon = "/static/frank.webp" } = p; + return ( + <Link href={href} className="flex flex-col group border p-2 rounded-sm border-orange-500"> + <div className="flex items-center relative"> + <div>{title}</div> + <div> + <img + width={32} + className="absolute -top-2 group-hover:rotate-12 group-hover:ml-10 group-hover:scale-125 transition-all" + src={icon} + /> + </div> + </div> + <div>{children}</div> + </Link> + ); +} diff --git a/examples/shared/package.json b/examples/shared/package.json new file mode 100644 index 00000000..7ddd96bf --- /dev/null +++ b/examples/shared/package.json @@ -0,0 +1,19 @@ +{ + "name": "@example/shared", + "version": "0.0.0", + "private": true, + "scripts": { + "clean": "rm -rf .turbo && rm -rf node_modules" + }, + "dependencies": { + "react": "catalog:e2e", + "react-dom": "catalog:e2e" + }, + "devDependencies": { + "@types/react": "catalog:e2e", + "@types/react-dom": "catalog:e2e" + }, + "peerDependencies": { + "next": "catalog:e2e" + } +} diff --git a/examples/shared/sst-env.d.ts b/examples/shared/sst-env.d.ts new file mode 100644 index 00000000..59d33569 --- /dev/null +++ b/examples/shared/sst-env.d.ts @@ -0,0 +1 @@ +/// <reference path="../example_sst/.sst/types/index.ts" /> diff --git a/examples/shared/tsconfig.json b/examples/shared/tsconfig.json new file mode 100644 index 00000000..aa168247 --- /dev/null +++ b/examples/shared/tsconfig.json @@ -0,0 +1,32 @@ +{ + "include": ["."], + "exclude": ["dist", "build", "node_modules"], + "compilerOptions": { + "composite": false, + "declaration": false, + "declarationMap": false, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "inlineSources": false, + "isolatedModules": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "moduleResolution": "NodeNext", + "noUnusedLocals": true, + "noUnusedParameters": true, + "preserveWatchOutput": true, + "skipLibCheck": true, + "strict": true, + "removeComments": true, + "resolveJsonModule": true, + "sourceMap": true, + "baseUrl": ".", + "jsx": "react-jsx", + "lib": ["ES2022", "DOM"], + "module": "NodeNext", + "target": "ESNext", + "paths": { + "~/*": ["./*"] + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fdb1b7b9..27e3fec7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,8 +76,8 @@ catalogs: specifier: ^4.19.2 version: 4.19.2 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.7.3 + version: 5.7.3 typescript-eslint: specifier: ^8.7.0 version: 8.7.0 @@ -87,6 +87,34 @@ catalogs: wrangler: specifier: ^3.101.0 version: 3.101.0 + e2e: + '@types/node': + specifier: 20.17.6 + version: 20.17.6 + '@types/react': + specifier: 19.0.0 + version: 19.0.0 + '@types/react-dom': + specifier: 19.0.0 + version: 19.0.0 + autoprefixer: + specifier: 10.4.15 + version: 10.4.15 + next: + specifier: 15.1.0 + version: 15.1.0 + postcss: + specifier: 8.4.27 + version: 8.4.27 + react: + specifier: 19.0.0 + version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0 + tailwindcss: + specifier: 3.3.3 + version: 3.3.3 importers: @@ -145,6 +173,46 @@ importers: specifier: 'catalog:' version: 3.101.0(@cloudflare/workers-types@4.20250109.0) + examples/app-router: + dependencies: + '@example/shared': + specifier: workspace:* + version: link:../shared + '@opennextjs/cloudflare': + specifier: workspace:* + version: link:../../packages/cloudflare + next: + specifier: catalog:e2e + version: 15.1.0(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: + specifier: catalog:e2e + version: 19.0.0 + react-dom: + specifier: catalog:e2e + version: 19.0.0(react@19.0.0) + devDependencies: + '@types/node': + specifier: catalog:e2e + version: 20.17.6 + '@types/react': + specifier: catalog:e2e + version: 19.0.0 + '@types/react-dom': + specifier: catalog:e2e + version: 19.0.0 + autoprefixer: + specifier: catalog:e2e + version: 10.4.15(postcss@8.4.27) + postcss: + specifier: catalog:e2e + version: 8.4.27 + tailwindcss: + specifier: catalog:e2e + version: 3.3.3 + typescript: + specifier: catalog:default + version: 5.7.3 + examples/create-next-app: dependencies: next: @@ -177,7 +245,7 @@ importers: version: 8.57.1 eslint-config-next: specifier: 14.2.14 - version: 14.2.14(eslint@8.57.1)(typescript@5.5.4) + version: 14.2.14(eslint@8.57.1)(typescript@5.7.3) postcss: specifier: ^8 version: 8.4.31 @@ -186,7 +254,7 @@ importers: version: 3.4.11 typescript: specifier: 'catalog:' - version: 5.5.4 + version: 5.7.3 wrangler: specifier: 'catalog:' version: 3.101.0(@cloudflare/workers-types@4.20250109.0) @@ -226,11 +294,30 @@ importers: version: 9.11.1(jiti@1.21.6) typescript: specifier: 'catalog:' - version: 5.5.4 + version: 5.7.3 wrangler: specifier: 'catalog:' version: 3.101.0(@cloudflare/workers-types@4.20250109.0) + examples/shared: + dependencies: + next: + specifier: catalog:e2e + version: 15.1.0(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: + specifier: catalog:e2e + version: 19.0.0 + react-dom: + specifier: catalog:e2e + version: 19.0.0(react@19.0.0) + devDependencies: + '@types/react': + specifier: catalog:e2e + version: 19.0.0 + '@types/react-dom': + specifier: catalog:e2e + version: 19.0.0 + examples/vercel-blog-starter: dependencies: classnames: @@ -281,7 +368,7 @@ importers: version: 3.4.11 typescript: specifier: 'catalog:' - version: 5.5.4 + version: 5.7.3 wrangler: specifier: 'catalog:' version: 3.101.0(@cloudflare/workers-types@4.20250109.0) @@ -348,7 +435,7 @@ importers: version: 3.4.11 typescript: specifier: 'catalog:' - version: 5.5.4 + version: 5.7.3 wrangler: specifier: 'catalog:' version: 3.101.0(@cloudflare/workers-types@4.20250109.0) @@ -397,7 +484,7 @@ importers: version: 9.11.1(jiti@1.21.6) eslint-plugin-import: specifier: 'catalog:' - version: 2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6)) + version: 2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)) eslint-plugin-simple-import-sort: specifier: 'catalog:' version: 12.1.1(eslint@9.11.1(jiti@1.21.6)) @@ -412,16 +499,16 @@ importers: version: 5.4.1 next: specifier: 'catalog:' - version: 14.2.11(@playwright/test@1.47.0)(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730) + version: 14.2.11(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rimraf: specifier: 'catalog:' version: 6.0.1 typescript: specifier: 'catalog:' - version: 5.5.4 + version: 5.7.3 typescript-eslint: specifier: 'catalog:' - version: 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + version: 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) vitest: specifier: 'catalog:' version: 2.1.1(@types/node@22.2.0)(terser@5.16.9) @@ -1787,6 +1874,9 @@ packages: '@next/env@15.0.0-canary.113': resolution: {integrity: sha512-hiD7ux+YPCUJi3up0dHnROYBYg/AuPErOcBBzjCkKQ1q4ufuUNBQms4oDeOiHG9+Qga8mN5+k2L5qm7rNhzU4g==} + '@next/env@15.1.0': + resolution: {integrity: sha512-UcCO481cROsqJuszPPXJnb7GGuLq617ve4xuAyyNG4VSSocJNtMU5Fsx+Lp6mlN8c7W58aZLc5y6D/2xNmaK+w==} + '@next/eslint-plugin-next@14.2.14': resolution: {integrity: sha512-kV+OsZ56xhj0rnTn6HegyTGkoa16Mxjrpk7pjWumyB2P8JVQb8S9qtkjy/ye0GnTr4JWtWG4x/2qN40lKZ3iVQ==} @@ -1802,6 +1892,12 @@ packages: cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@15.1.0': + resolution: {integrity: sha512-ZU8d7xxpX14uIaFC3nsr4L++5ZS/AkWDm1PzPO6gD9xWhFkOj2hzSbSIxoncsnlJXB1CbLOfGVN4Zk9tg83PUw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-x64@14.2.11': resolution: {integrity: sha512-lnB0zYCld4yE0IX3ANrVMmtAbziBb7MYekcmR6iE9bujmgERl6+FK+b0MBq0pl304lYe7zO4yxJus9H/Af8jbg==} engines: {node: '>= 10'} @@ -1814,6 +1910,12 @@ packages: cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@15.1.0': + resolution: {integrity: sha512-DQ3RiUoW2XC9FcSM4ffpfndq1EsLV0fj0/UY33i7eklW5akPUCo6OX2qkcLXZ3jyPdo4sf2flwAED3AAq3Om2Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-linux-arm64-gnu@14.2.11': resolution: {integrity: sha512-Ulo9TZVocYmUAtzvZ7FfldtwUoQY0+9z3BiXZCLSUwU2bp7GqHA7/bqrfsArDlUb2xeGwn3ZuBbKtNK8TR0A8w==} engines: {node: '>= 10'} @@ -1826,6 +1928,12 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@15.1.0': + resolution: {integrity: sha512-M+vhTovRS2F//LMx9KtxbkWk627l5Q7AqXWWWrfIzNIaUFiz2/NkOFkxCFyNyGACi5YbA8aekzCLtbDyfF/v5Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@14.2.11': resolution: {integrity: sha512-fH377DnKGyUnkWlmUpFF1T90m0dADBfK11dF8sOQkiELF9M+YwDRCGe8ZyDzvQcUd20Rr5U7vpZRrAxKwd3Rzg==} engines: {node: '>= 10'} @@ -1838,6 +1946,12 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@15.1.0': + resolution: {integrity: sha512-Qn6vOuwaTCx3pNwygpSGtdIu0TfS1KiaYLYXLH5zq1scoTXdwYfdZtwvJTpB1WrLgiQE2Ne2kt8MZok3HlFqmg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-x64-gnu@14.2.11': resolution: {integrity: sha512-a0TH4ZZp4NS0LgXP/488kgvWelNpwfgGTUCDXVhPGH6pInb7yIYNgM4kmNWOxBFt+TIuOH6Pi9NnGG4XWFUyXQ==} engines: {node: '>= 10'} @@ -1850,6 +1964,12 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@15.1.0': + resolution: {integrity: sha512-yeNh9ofMqzOZ5yTOk+2rwncBzucc6a1lyqtg8xZv0rH5znyjxHOWsoUtSq4cUTeeBIiXXX51QOOe+VoCjdXJRw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@14.2.11': resolution: {integrity: sha512-DYYZcO4Uir2gZxA4D2JcOAKVs8ZxbOFYPpXSVIgeoQbREbeEHxysVsg3nY4FrQy51e5opxt5mOHl/LzIyZBoKA==} engines: {node: '>= 10'} @@ -1862,6 +1982,12 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@15.1.0': + resolution: {integrity: sha512-t9IfNkHQs/uKgPoyEtU912MG6a1j7Had37cSUyLTKx9MnUpjj+ZDKw9OyqTI9OwIIv0wmkr1pkZy+3T5pxhJPg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-win32-arm64-msvc@14.2.11': resolution: {integrity: sha512-PwqHeKG3/kKfPpM6of1B9UJ+Er6ySUy59PeFu0Un0LBzJTRKKAg2V6J60Yqzp99m55mLa+YTbU6xj61ImTv9mg==} engines: {node: '>= 10'} @@ -1874,6 +2000,12 @@ packages: cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@15.1.0': + resolution: {integrity: sha512-WEAoHyG14t5sTavZa1c6BnOIEukll9iqFRTavqRVPfYmfegOAd5MaZfXgOGG6kGo1RduyGdTHD4+YZQSdsNZXg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-ia32-msvc@14.2.11': resolution: {integrity: sha512-0U7PWMnOYIvM74GY6rbH6w7v+vNPDVH1gUhlwHpfInJnNe5LkmUZqhp7FNWeNa5wbVgRcRi1F1cyxp4dmeLLvA==} engines: {node: '>= 10'} @@ -1898,6 +2030,12 @@ packages: cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@15.1.0': + resolution: {integrity: sha512-J1YdKuJv9xcixzXR24Dv+4SaDKc2jj31IVUEMdO5xJivMTXuE6MAdIi4qPjSymHuFG8O5wbfWKnhJUcHHpj5CA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@noble/ciphers@1.1.3': resolution: {integrity: sha512-Ygv6WnWJHLLiW4fnNDC1z+i13bud+enXOFRBlpxI+NJliPWx5wdR+oWlTjLuBPTqjUjtHXtjkU6w3kuuH6upZA==} engines: {node: ^14.21.3 || >=16} @@ -2665,6 +2803,9 @@ packages: '@swc/helpers@0.5.12': resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} @@ -2729,6 +2870,9 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@20.17.6': + resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} + '@types/node@22.2.0': resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} @@ -2741,9 +2885,15 @@ packages: '@types/react-dom@18.3.0': resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + '@types/react-dom@19.0.0': + resolution: {integrity: sha512-1KfiQKsH1o00p9m5ag12axHQSb3FOU9H20UTrujVSkNhuCrRHiQWFqgEnTNK5ZNfnzZv8UWrnXVqCmCF9fgY3w==} + '@types/react@18.3.3': resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@types/react@19.0.0': + resolution: {integrity: sha512-MY3oPudxvMYyesqs/kW1Bh8y9VqSmf+tzqw3ae8a9DZW68pUe3zAdHeI1jc6iAysuRdACnVknHP8AhwD4/dxtg==} + '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -2961,6 +3111,13 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + autoprefixer@10.4.15: + resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} @@ -4610,6 +4767,27 @@ packages: sass: optional: true + next@15.1.0: + resolution: {integrity: sha512-QKhzt6Y8rgLNlj30izdMbxAwjHMFANnLwDwZ+WQh5sMhyt4lEBqDK9QpvWHtIM4rINKPoJ8aiRZKg5ULSybVHw==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -4906,6 +5084,10 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.4.27: + resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -5039,6 +5221,11 @@ packages: peerDependencies: react: ^18.3.1 + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} + peerDependencies: + react: ^19.0.0 + react-dom@19.0.0-rc-3208e73e-20240730: resolution: {integrity: sha512-jspKji5vQTTlFY7zFGh0VB+rZV+5FweCQkYxtLoPZvc5ZH6vEf1n8d+4h9YqNqF8nnhFkcHO8XLtKTtTyVGSXA==} peerDependencies: @@ -5051,6 +5238,10 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + react@19.0.0-rc-3208e73e-20240730: resolution: {integrity: sha512-4TmFOcgSfwM8w18vXLnEt8tb3ilO9a0GRJA9zQSYjZ5ie6g/zkxagRvZvZbEmhaNgDSF/PKmEdWmfBtlUBcjkA==} engines: {node: '>=0.10.0'} @@ -5185,6 +5376,9 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + scheduler@0.25.0-rc-3208e73e-20240730: resolution: {integrity: sha512-eCGy6Bm6PX2JB7dLumQuEYwmXku9HweMfdXCQQ2ZaRG3kwxK76RWFr7CsW/LHju8fiDSiJajl0Iq62uoaH9VLQ==} @@ -5480,6 +5674,11 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tailwindcss@3.3.3: + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} + engines: {node: '>=14.0.0'} + hasBin: true + tailwindcss@3.4.11: resolution: {integrity: sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==} engines: {node: '>=14.0.0'} @@ -5572,6 +5771,9 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@4.19.2: resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} engines: {node: '>=18.0.0'} @@ -5634,8 +5836,8 @@ packages: typescript: optional: true - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} hasBin: true @@ -5648,6 +5850,9 @@ packages: undici-types@6.13.0: resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici@5.28.4: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} @@ -8035,6 +8240,8 @@ snapshots: '@next/env@15.0.0-canary.113': {} + '@next/env@15.1.0': {} + '@next/eslint-plugin-next@14.2.14': dependencies: glob: 10.3.10 @@ -8045,42 +8252,63 @@ snapshots: '@next/swc-darwin-arm64@15.0.0-canary.113': optional: true + '@next/swc-darwin-arm64@15.1.0': + optional: true + '@next/swc-darwin-x64@14.2.11': optional: true '@next/swc-darwin-x64@15.0.0-canary.113': optional: true + '@next/swc-darwin-x64@15.1.0': + optional: true + '@next/swc-linux-arm64-gnu@14.2.11': optional: true '@next/swc-linux-arm64-gnu@15.0.0-canary.113': optional: true + '@next/swc-linux-arm64-gnu@15.1.0': + optional: true + '@next/swc-linux-arm64-musl@14.2.11': optional: true '@next/swc-linux-arm64-musl@15.0.0-canary.113': optional: true + '@next/swc-linux-arm64-musl@15.1.0': + optional: true + '@next/swc-linux-x64-gnu@14.2.11': optional: true '@next/swc-linux-x64-gnu@15.0.0-canary.113': optional: true + '@next/swc-linux-x64-gnu@15.1.0': + optional: true + '@next/swc-linux-x64-musl@14.2.11': optional: true '@next/swc-linux-x64-musl@15.0.0-canary.113': optional: true + '@next/swc-linux-x64-musl@15.1.0': + optional: true + '@next/swc-win32-arm64-msvc@14.2.11': optional: true '@next/swc-win32-arm64-msvc@15.0.0-canary.113': optional: true + '@next/swc-win32-arm64-msvc@15.1.0': + optional: true + '@next/swc-win32-ia32-msvc@14.2.11': optional: true @@ -8093,6 +8321,9 @@ snapshots: '@next/swc-win32-x64-msvc@15.0.0-canary.113': optional: true + '@next/swc-win32-x64-msvc@15.1.0': + optional: true + '@noble/ciphers@1.1.3': {} '@noble/curves@1.7.0': @@ -9187,6 +9418,10 @@ snapshots: dependencies: tslib: 2.6.3 + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 @@ -9255,6 +9490,10 @@ snapshots: '@types/node@12.20.55': {} + '@types/node@20.17.6': + dependencies: + undici-types: 6.19.8 + '@types/node@22.2.0': dependencies: undici-types: 6.13.0 @@ -9267,76 +9506,84 @@ snapshots: dependencies: '@types/react': 18.3.3 + '@types/react-dom@19.0.0': + dependencies: + '@types/react': 19.0.0 + '@types/react@18.3.3': dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 + '@types/react@19.0.0': + dependencies: + csstype: 3.1.3 + '@types/resolve@1.20.6': {} '@types/unist@3.0.3': {} '@types/uuid@9.0.8': {} - '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.7.0 - '@typescript-eslint/type-utils': 8.7.0(eslint@8.57.1)(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.7.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/utils': 8.7.0(eslint@8.57.1)(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.7.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.7.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.7.0 - '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) + '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.7.0 eslint: 9.11.1(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.7.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4)': + '@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@typescript-eslint/scope-manager': 8.7.0 '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.7.0 debug: 4.3.6 eslint: 8.57.1 optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3)': dependencies: '@typescript-eslint/scope-manager': 8.7.0 '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.7.0 debug: 4.3.6 eslint: 9.11.1(jiti@1.21.6) optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -9345,33 +9592,33 @@ snapshots: '@typescript-eslint/types': 8.7.0 '@typescript-eslint/visitor-keys': 8.7.0 - '@typescript-eslint/type-utils@8.7.0(eslint@8.57.1)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.7.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.7.0(eslint@8.57.1)(typescript@5.7.3) debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.7.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - eslint - supports-color - '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.7.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - eslint - supports-color '@typescript-eslint/types@8.7.0': {} - '@typescript-eslint/typescript-estree@8.7.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.7.0(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 8.7.0 '@typescript-eslint/visitor-keys': 8.7.0 @@ -9380,29 +9627,29 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.7.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.7.0(eslint@8.57.1)(typescript@5.5.4)': + '@typescript-eslint/utils@8.7.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) '@typescript-eslint/scope-manager': 8.7.0 '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.7.3) eslint: 8.57.1 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.7.0 '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.7.3) eslint: 9.11.1(jiti@1.21.6) transitivePeerDependencies: - supports-color @@ -9595,6 +9842,16 @@ snapshots: ast-types-flow@0.0.8: {} + autoprefixer@10.4.15(postcss@8.4.27): + dependencies: + browserslist: 4.24.0 + caniuse-lite: 1.0.30001664 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.0 + postcss: 8.4.27 + postcss-value-parser: 4.2.0 + autoprefixer@10.4.20(postcss@8.4.47): dependencies: browserslist: 4.24.0 @@ -10229,21 +10486,21 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@14.2.14(eslint@8.57.1)(typescript@5.5.4): + eslint-config-next@14.2.14(eslint@8.57.1)(typescript@5.7.3): dependencies: '@next/eslint-plugin-next': 14.2.14 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) - '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) eslint-plugin-react: 7.36.1(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x @@ -10257,47 +10514,47 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) eslint: 9.11.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -10308,7 +10565,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -10319,13 +10576,13 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -10336,7 +10593,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.11.1(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -10348,7 +10605,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -11600,7 +11857,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@14.2.11(@playwright/test@1.47.0)(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730): + next@14.2.11(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@next/env': 14.2.11 '@swc/helpers': 0.5.5 @@ -11608,9 +11865,9 @@ snapshots: caniuse-lite: 1.0.30001664 graceful-fs: 4.2.11 postcss: 8.4.31 - react: 19.0.0-rc-3208e73e-20240730 - react-dom: 19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730) - styled-jsx: 5.1.1(react@19.0.0-rc-3208e73e-20240730) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + styled-jsx: 5.1.1(react@19.0.0) optionalDependencies: '@next/swc-darwin-arm64': 14.2.11 '@next/swc-darwin-x64': 14.2.11 @@ -11654,6 +11911,32 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@15.1.0(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@next/env': 15.1.0 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001664 + postcss: 8.4.31 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + styled-jsx: 5.1.6(react@19.0.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.1.0 + '@next/swc-darwin-x64': 15.1.0 + '@next/swc-linux-arm64-gnu': 15.1.0 + '@next/swc-linux-arm64-musl': 15.1.0 + '@next/swc-linux-x64-gnu': 15.1.0 + '@next/swc-linux-x64-musl': 15.1.0 + '@next/swc-win32-arm64-msvc': 15.1.0 + '@next/swc-win32-x64-msvc': 15.1.0 + '@playwright/test': 1.47.0 + sharp: 0.33.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -11894,28 +12177,28 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.4.31): + postcss-import@15.1.0(postcss@8.4.47): dependencies: - postcss: 8.4.31 + postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.31): + postcss-js@4.0.1(postcss@8.4.47): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.31 + postcss: 8.4.47 - postcss-load-config@4.0.2(postcss@8.4.31): + postcss-load-config@4.0.2(postcss@8.4.47): dependencies: lilconfig: 3.1.2 yaml: 2.5.1 optionalDependencies: - postcss: 8.4.31 + postcss: 8.4.47 - postcss-nested@6.2.0(postcss@8.4.31): + postcss-nested@6.2.0(postcss@8.4.47): dependencies: - postcss: 8.4.31 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.0.10: @@ -11930,6 +12213,12 @@ snapshots: postcss-value-parser@4.2.0: {} + postcss@8.4.27: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + postcss@8.4.31: dependencies: nanoid: 3.3.7 @@ -12011,6 +12300,11 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-dom@19.0.0(react@19.0.0): + dependencies: + react: 19.0.0 + scheduler: 0.25.0 + react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730): dependencies: react: 19.0.0-rc-3208e73e-20240730 @@ -12022,6 +12316,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + react@19.0.0: {} + react@19.0.0-rc-3208e73e-20240730: {} read-cache@1.0.0: @@ -12216,6 +12512,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.25.0: {} + scheduler@0.25.0-rc-3208e73e-20240730: {} section-matter@1.0.0: @@ -12510,10 +12808,15 @@ snapshots: client-only: 0.0.1 react: 18.3.1 - styled-jsx@5.1.1(react@19.0.0-rc-3208e73e-20240730): + styled-jsx@5.1.1(react@19.0.0): dependencies: client-only: 0.0.1 - react: 19.0.0-rc-3208e73e-20240730 + react: 19.0.0 + + styled-jsx@5.1.6(react@19.0.0): + dependencies: + client-only: 0.0.1 + react: 19.0.0 styled-jsx@5.1.6(react@19.0.0-rc-3208e73e-20240730): dependencies: @@ -12548,6 +12851,33 @@ snapshots: tabbable@6.2.0: {} + tailwindcss@3.3.3: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.0 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + tailwindcss@3.4.11: dependencies: '@alloc/quick-lru': 5.2.0 @@ -12564,11 +12894,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.31 - postcss-import: 15.1.0(postcss@8.4.31) - postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.2(postcss@8.4.31) - postcss-nested: 6.2.0(postcss@8.4.31) + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 @@ -12625,9 +12955,9 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.5.4): + ts-api-utils@1.3.0(typescript@5.7.3): dependencies: - typescript: 5.5.4 + typescript: 5.7.3 ts-interface-checker@0.1.13: {} @@ -12649,6 +12979,8 @@ snapshots: tslib@2.6.3: {} + tslib@2.8.1: {} + tsx@4.19.2: dependencies: esbuild: 0.23.1 @@ -12713,18 +13045,18 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript-eslint@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4): + typescript-eslint@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3))(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) + '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) + '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.7.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.7.3 transitivePeerDependencies: - eslint - supports-color - typescript@5.5.4: {} + typescript@5.7.3: {} ufo@1.5.4: {} @@ -12737,6 +13069,8 @@ snapshots: undici-types@6.13.0: {} + undici-types@6.19.8: {} + undici@5.28.4: dependencies: '@fastify/busboy': 2.1.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a42304d3..771f2920 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,35 +1,48 @@ packages: - - "packages/*" - - "examples/*" - - "benchmarking" + - packages/* + - examples/* + - benchmarking catalog: "@cloudflare/workers-types": ^4.20241230.0 "@dotenvx/dotenvx": 1.31.0 "@eslint/js": ^9.11.1 "@playwright/test": 1.47.0 - "@tsconfig/strictest": "^2.0.5" + "@tsconfig/strictest": ^2.0.5 "@types/mock-fs": ^4.13.4 "@types/node": ^22.2.0 "@types/react-dom": ^18 "@types/react": ^18 - "esbuild": ^0.23.0 - "eslint-plugin-import": "^2.31.0" - "eslint-plugin-simple-import-sort": "^12.1.1" - "eslint-plugin-unicorn": ^55.0.0 - "eslint": ^9.11.1 - "glob": ^11.0.0 - "globals": ^15.9.0 - "mock-fs": ^5.4.1 - "next": 14.2.11 - "package-manager-detector": ^0.2.0 - "react-dom": ^18 - "react": ^18 - "rimraf": "^6.0.1" - "ts-morph": ^23.0.0 - "tsup": ^8.2.4 - "tsx": ^4.19.2 - "typescript-eslint": ^8.7.0 - "typescript": ^5.5.4 - "vitest": ^2.1.1 - "wrangler": ^3.101.0 + esbuild: ^0.23.0 + eslint-plugin-import: ^2.31.0 + eslint-plugin-simple-import-sort: ^12.1.1 + eslint-plugin-unicorn: ^55.0.0 + eslint: ^9.11.1 + glob: ^11.0.0 + globals: ^15.9.0 + mock-fs: ^5.4.1 + next: 14.2.11 + package-manager-detector: ^0.2.0 + react-dom: ^18 + react: ^18 + rimraf: ^6.0.1 + ts-morph: ^23.0.0 + tsup: ^8.2.4 + tsx: ^4.19.2 + typescript-eslint: ^8.7.0 + typescript: ^5.7.3 + vitest: ^2.1.1 + wrangler: ^3.101.0 + +# e2e tests +catalogs: + e2e: + "@types/node": 20.17.6 + "@types/react-dom": 19.0.0 + "@types/react": 19.0.0 + autoprefixer: 10.4.15 + next: 15.1.0 + postcss: 8.4.27 + react-dom: 19.0.0 + react: 19.0.0 + tailwindcss: 3.3.3