diff --git a/examples/e2e/app-router/app/methods/get/dynamic-segments/[slug]/route.ts b/examples/e2e/app-router/app/methods/get/dynamic-segments/[slug]/route.ts new file mode 100644 index 00000000..d0d8d5a2 --- /dev/null +++ b/examples/e2e/app-router/app/methods/get/dynamic-segments/[slug]/route.ts @@ -0,0 +1,4 @@ +export async function GET(request: Request, { params }: { params: Promise<{ slug: string }> }) { + const { slug } = await params; + return Response.json({ slug }); +} diff --git a/examples/e2e/app-router/app/methods/get/query/route.ts b/examples/e2e/app-router/app/methods/get/query/route.ts new file mode 100644 index 00000000..6e9292be --- /dev/null +++ b/examples/e2e/app-router/app/methods/get/query/route.ts @@ -0,0 +1,10 @@ +import type { NextRequest } from "next/server"; + +export function GET(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const query = searchParams.get("query"); + if (query === "OpenNext is awesome!") { + return Response.json({ query }); + } + return new Response("Internal Server Error", { status: 500 }); +} diff --git a/examples/e2e/app-router/app/methods/get/redirect/route.ts b/examples/e2e/app-router/app/methods/get/redirect/route.ts new file mode 100644 index 00000000..3781f337 --- /dev/null +++ b/examples/e2e/app-router/app/methods/get/redirect/route.ts @@ -0,0 +1,5 @@ +import { redirect } from "next/navigation"; + +export async function GET(request: Request) { + redirect("https://nextjs.org/"); +} diff --git a/examples/e2e/app-router/app/methods/get/revalidate/route.ts b/examples/e2e/app-router/app/methods/get/revalidate/route.ts new file mode 100644 index 00000000..833cf90a --- /dev/null +++ b/examples/e2e/app-router/app/methods/get/revalidate/route.ts @@ -0,0 +1,10 @@ +export const revalidate = 5; + +async function getTime() { + return new Date().toISOString(); +} + +export async function GET() { + const time = await getTime(); + return Response.json({ time }); +} diff --git a/examples/e2e/app-router/app/methods/get/static/route.ts b/examples/e2e/app-router/app/methods/get/static/route.ts new file mode 100644 index 00000000..b3bfa223 --- /dev/null +++ b/examples/e2e/app-router/app/methods/get/static/route.ts @@ -0,0 +1,10 @@ +export const dynamic = "force-static"; + +async function getTime() { + return new Date().toISOString(); +} + +export async function GET() { + const time = await getTime(); + return Response.json({ time }); +} diff --git a/examples/e2e/app-router/app/methods/post/cookies/route.ts b/examples/e2e/app-router/app/methods/post/cookies/route.ts new file mode 100644 index 00000000..7e104808 --- /dev/null +++ b/examples/e2e/app-router/app/methods/post/cookies/route.ts @@ -0,0 +1,19 @@ +import { cookies } from "next/headers"; + +export async function POST(request: Request) { + const formData = await request.formData(); + const username = formData.get("username"); + const password = formData.get("password"); + if (username === "hakuna" && password === "matata") { + (await cookies()).set("auth_session", "SUPER_SECRET_SESSION_ID_1234"); + return Response.json( + { + message: "ok", + }, + { + status: 202, + } + ); + } + return Response.json({ message: "you must login" }, { status: 401 }); +} diff --git a/examples/e2e/app-router/app/methods/post/formdata/route.ts b/examples/e2e/app-router/app/methods/post/formdata/route.ts new file mode 100644 index 00000000..8240bcc4 --- /dev/null +++ b/examples/e2e/app-router/app/methods/post/formdata/route.ts @@ -0,0 +1,16 @@ +export async function POST(request: Request) { + const formData = await request.formData(); + const name = formData.get("name"); + const email = formData.get("email"); + if (name === "OpenNext [] () %&#!%$#" && email === "opennext@opennext.com") { + return Response.json( + { + message: "ok", + }, + { + status: 202, + } + ); + } + return Response.json({ message: "forbidden" }, { status: 403 }); +} diff --git a/examples/e2e/app-router/app/methods/route.ts b/examples/e2e/app-router/app/methods/route.ts new file mode 100644 index 00000000..bf7649e2 --- /dev/null +++ b/examples/e2e/app-router/app/methods/route.ts @@ -0,0 +1,76 @@ +import type { NextRequest } from "next/server"; + +export async function GET() { + return Response.json({ + message: "OpenNext is awesome! :) :] :> :D", + }); +} + +export async function POST(request: Request) { + const text = await request.text(); + if (text === "OpenNext is awesome! :] :) :> :D") { + return Response.json( + { + message: "ok", + }, + { + status: 202, + } + ); + } + return Response.json({ message: "forbidden" }, { status: 403 }); +} + +export async function PUT(request: Request) { + const res = (await request.json()) as { + message: string; + }; + if (res.message === "OpenNext PUT") { + return Response.json({ message: "ok" }, { status: 201 }); + } + return Response.json({ message: "error" }, { status: 500 }); +} + +export async function PATCH(request: Request) { + const res = (await request.json()) as { + message: string; + }; + if (res.message === "OpenNext PATCH") { + return Response.json( + { message: "ok", modified: true, timestamp: new Date().toISOString() }, + { status: 202 } + ); + } + return Response.json({ message: "error" }, { status: 500 }); +} + +export async function DELETE(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const command = searchParams.get("command"); + if (command === "rm -rf / --no-preserve-root") { + return new Response(null, { status: 204 }); + } + return Response.json({ message: "error" }, { status: 500 }); +} + +export async function HEAD() { + return new Response("hello", { + status: 200, + headers: { + "content-type": "text/html; charset=utf-8", + // Once deployed to AWS this will always be 0 + // "content-length": "1234567", + "special-header": "OpenNext is the best :) :] :> :D", + }, + }); +} + +export async function OPTIONS() { + return new Response(null, { + status: 204, + headers: { + Allow: "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, LOVE", + Special: "OpenNext is the best :) :] :> :D", + }, + }); +} diff --git a/examples/e2e/app-router/e2e/methods.test.ts b/examples/e2e/app-router/e2e/methods.test.ts new file mode 100644 index 00000000..43387be2 --- /dev/null +++ b/examples/e2e/app-router/e2e/methods.test.ts @@ -0,0 +1,170 @@ +import { expect, test } from "@playwright/test"; + +test.describe("all supported methods should work in route handlers", () => { + test("GET", async ({ request }) => { + const getRes = await request.get("/methods"); + const getData = await getRes.json(); + expect(getRes.status()).toEqual(200); + expect(getData.message).toEqual("OpenNext is awesome! :) :] :> :D"); + }); + + test("POST", async ({ request }) => { + const postRes = await request.post("/methods", { + headers: { + "Content-Type": "text/plain", + }, + data: "OpenNext is awesome! :] :) :> :D", + }); + expect(postRes.status()).toBe(202); + const postData = await postRes.json(); + expect(postData.message).toBe("ok"); + const errorPostRes = await request.post("/methods", { + headers: { + "Content-Type": "text/plain", + }, + data: "OpenNext is not awesome! :C", + }); + expect(errorPostRes.status()).toBe(403); + const errorData = await errorPostRes.json(); + expect(errorData.message).toBe("forbidden"); + }); + + test("PUT", async ({ request }) => { + const putRes = await request.put("/methods", { + data: { + message: "OpenNext PUT", + }, + }); + expect(putRes.status()).toEqual(201); + const putData = await putRes.json(); + expect(putData.message).toEqual("ok"); + }); + + test("PATCH", async ({ request }) => { + const timestampBefore = new Date(); + const patchRes = await request.patch("/methods", { + data: { message: "OpenNext PATCH" }, + }); + expect(patchRes.status()).toEqual(202); + const patchData = await patchRes.json(); + expect(patchData.message).toEqual("ok"); + expect(patchData.modified).toEqual(true); + expect(Date.parse(patchData.timestamp)).toBeGreaterThan(timestampBefore.getTime()); + }); + + test("DELETE", async ({ request }) => { + const deleteRes = await request.delete("/methods", { + params: { + command: "rm -rf / --no-preserve-root", + }, + }); + expect(deleteRes.status()).toEqual(204); + }); + + test("HEAD", async ({ request }) => { + const headRes = await request.head("/methods"); + expect(headRes.status()).toEqual(200); + const headers = headRes.headers(); + expect(headers["content-type"]).toEqual("text/html; charset=utf-8"); + // expect(headers["content-length"]).toEqual("1234567"); + expect(headers["special-header"]).toEqual("OpenNext is the best :) :] :> :D"); + }); + + test("OPTIONS", async ({ request }) => { + const optionsRes = await request.fetch("/methods", { + method: "OPTIONS", + }); + expect(optionsRes.status()).toEqual(204); + const headers = optionsRes.headers(); + expect(headers.allow).toBe("GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, LOVE"); + expect(headers.special).toBe("OpenNext is the best :) :] :> :D"); + }); +}); + +test("formData should work in POST route handler", async ({ request }) => { + const formData = new FormData(); + formData.append("name", "OpenNext [] () %&#!%$#"); + formData.append("email", "opennext@opennext.com"); + const postRes = await request.post("/methods/post/formdata", { + form: formData, + }); + expect(postRes.status()).toBe(202); + const postData = await postRes.json(); + expect(postData.message).toBe("ok"); +}); + +test("revalidate should work in GET route handler", async ({ request, page }) => { + let time = Date.parse((await request.get("/methods/get/revalidate").then((res) => res.json())).time); + let newTime: number; + let tempTime = time; + do { + await page.waitForTimeout(1000); + time = tempTime; + const newTimeRes = await request.get("/methods/get/revalidate"); + newTime = Date.parse((await newTimeRes.json()).time); + tempTime = newTime; + } while (time !== newTime); + const midTime = Date.parse((await request.get("/methods/get/revalidate").then((res) => res.json())).time); + + await page.waitForTimeout(1000); + // Expect that the time is still stale + expect(midTime).toEqual(newTime); + + // Wait 5 + 1 seconds for ISR to regenerate time + await page.waitForTimeout(6000); + let finalTime = newTime; + do { + await page.waitForTimeout(2000); + finalTime = Date.parse((await request.get("/methods/get/revalidate").then((res) => res.json())).time); + } while (newTime === finalTime); + + expect(newTime).not.toEqual(finalTime); +}); + +test("should cache a static GET route", async ({ request }) => { + const res = await request.get("/methods/get/static"); + expect(res.headers()["cache-control"]).toContain("s-maxage=31536000"); +}); + +test("should be able to set cookies in route handler", async ({ request }) => { + const postRes = await request.post("/methods/post/cookies", { + form: { + username: "hakuna", + password: "matata", + }, + }); + expect(postRes.status()).toBe(202); + const postData = await postRes.json(); + expect(postData.message).toBe("ok"); + const cookies = postRes.headers()["set-cookie"]; + expect(cookies).toContain("auth_session=SUPER_SECRET_SESSION_ID_1234"); +}); + +test("should be able to redirect in route handler", async ({ request }) => { + const redirectRes = await request.get("/methods/get/redirect", { + // Disable auto-redirect to check initial response + maxRedirects: 0, + }); + expect(redirectRes.status()).toBe(307); + expect(redirectRes.headers().location).toBe("https://nextjs.org/"); + + // Check if the redirect works + const followedRes = await request.get("/methods/get/redirect"); + expect(followedRes.url()).toBe("https://nextjs.org/"); +}); + +test("dynamic segments should work in route handlers", async ({ request }) => { + const res = await request.get("/methods/get/dynamic-segments/this-is-a-slug"); + const data = await res.json(); + expect(data.slug).toBe("this-is-a-slug"); +}); + +test("query parameters should work in route handlers", async ({ request }) => { + const res = await request.get("/methods/get/query", { + params: { + query: "OpenNext is awesome!", + }, + }); + const data = await res.json(); + expect(data.query).toBe("OpenNext is awesome!"); +}); diff --git a/package.json b/package.json index 8d02426b..26dea618 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "devDependencies": { "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.9", - "@playwright/test": "1.47.0", + "@playwright/test": "catalog:", "pkg-pr-new": "^0.0.29", "prettier": "3.3.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a578a0b2..77b00c6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ catalogs: specifier: ^9.11.1 version: 9.11.1 '@playwright/test': - specifier: 1.47.0 - version: 1.47.0 + specifier: ^1.51.1 + version: 1.51.1 '@tsconfig/strictest': specifier: ^2.0.5 version: 2.0.5 @@ -124,8 +124,8 @@ importers: specifier: ^2.27.9 version: 2.27.9 '@playwright/test': - specifier: 1.47.0 - version: 1.47.0 + specifier: 'catalog:' + version: 1.51.1 pkg-pr-new: specifier: ^0.0.29 version: 0.0.29 @@ -152,7 +152,7 @@ importers: dependencies: next: specifier: 15.0.4 - version: 15.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 15.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -165,7 +165,7 @@ importers: version: link:../../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: ^20 version: 20.17.6 @@ -237,10 +237,10 @@ importers: version: 5.0.9 next: specifier: 15.1.0 - version: 15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next-auth: specifier: ^4.24.11 - version: 4.24.11(next@15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 4.24.11(next@15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next-themes: specifier: ^0.4.4 version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -283,7 +283,7 @@ importers: version: link:../../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/better-sqlite3': specifier: ^7.6.12 version: 7.6.12 @@ -334,7 +334,7 @@ importers: version: 3.741.0 next: specifier: 15.1.3 - version: 15.1.3(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.1.3(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -350,7 +350,7 @@ importers: version: link:../../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: ^22.10.2 version: 22.12.0 @@ -383,7 +383,7 @@ importers: dependencies: next: specifier: 'catalog:' - version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: 'catalog:' version: 18.3.1 @@ -396,7 +396,7 @@ importers: version: link:../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: 'catalog:' version: 22.2.0 @@ -435,7 +435,7 @@ importers: version: link:../../../packages/cloudflare next: specifier: catalog:e2e - version: 15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: catalog:e2e version: 19.0.0 @@ -445,7 +445,7 @@ importers: devDependencies: '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: catalog:e2e version: 20.17.6 @@ -481,7 +481,7 @@ importers: version: link:../../../packages/cloudflare next: specifier: catalog:e2e - version: 15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: catalog:e2e version: 19.0.0 @@ -491,7 +491,7 @@ importers: devDependencies: '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: catalog:e2e version: 20.17.6 @@ -527,7 +527,7 @@ importers: version: link:../../../packages/cloudflare next: specifier: catalog:e2e - version: 15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: catalog:e2e version: 19.0.0 @@ -537,7 +537,7 @@ importers: devDependencies: '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: catalog:e2e version: 20.17.6 @@ -567,7 +567,7 @@ importers: dependencies: next: specifier: catalog:e2e - version: 15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: catalog:e2e version: 19.0.0 @@ -586,10 +586,10 @@ importers: dependencies: '@clerk/nextjs': specifier: 6.9.6 - version: 6.9.6(next@14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.9.6(next@14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: specifier: 'catalog:' - version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: 'catalog:' version: 18.3.1 @@ -602,7 +602,7 @@ importers: version: link:../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: 'catalog:' version: 22.2.0 @@ -638,10 +638,10 @@ importers: version: 2.0.0-alpha.8 geist: specifier: 1.3.1 - version: 1.3.1(next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713)) + version: 1.3.1(next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713)) next: specifier: 15.0.0-canary.67 - version: 15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713) + version: 15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713) react: specifier: 19.0.0-rc-8b08e99e-20240713 version: 19.0.0-rc-8b08e99e-20240713 @@ -687,7 +687,7 @@ importers: dependencies: next: specifier: 15.1.7 - version: 15.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -700,7 +700,7 @@ importers: version: link:../../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: 'catalog:' version: 22.2.0 @@ -721,7 +721,7 @@ importers: dependencies: next: specifier: 'catalog:' - version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: 'catalog:' version: 18.3.1 @@ -734,7 +734,7 @@ importers: version: link:../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: 'catalog:' version: 22.2.0 @@ -746,7 +746,7 @@ importers: dependencies: next: specifier: ^15.1.7 - version: 15.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -759,7 +759,7 @@ importers: version: link:../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: 'catalog:' version: 22.2.0 @@ -771,7 +771,7 @@ importers: dependencies: next: specifier: 15.1.7 - version: 15.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -784,7 +784,7 @@ importers: version: link:../../packages/cloudflare '@playwright/test': specifier: 'catalog:' - version: 1.47.0 + version: 1.51.1 '@types/node': specifier: 'catalog:' version: 22.2.0 @@ -814,7 +814,7 @@ importers: version: 4.0.3 next: specifier: 'catalog:' - version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: 'catalog:' version: 18.3.1 @@ -869,10 +869,10 @@ importers: version: 2.1.1 geist: specifier: ^1.3.1 - version: 1.3.1(next@15.0.0-canary.113(@opentelemetry/api@1.9.0)(@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: 1.3.1(next@15.0.0-canary.113(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730)) next: specifier: 15.0.0-canary.113 - version: 15.0.0-canary.113(@opentelemetry/api@1.9.0)(@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: 15.0.0-canary.113(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730) react: specifier: 19.0.0-rc-3208e73e-20240730 version: 19.0.0-rc-3208e73e-20240730 @@ -985,7 +985,7 @@ importers: version: 5.4.1 next: specifier: 'catalog:' - version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rimraf: specifier: 'catalog:' version: 6.0.1 @@ -3859,8 +3859,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.47.0': - resolution: {integrity: sha512-SgAdlSwYVpToI4e/IH19IHHWvoijAYH5hu2MWSXptRypLSnzj51PcGD+rsOXFayde4P9ZLi+loXVwArg6IUkCA==} + '@playwright/test@1.51.1': + resolution: {integrity: sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==} engines: {node: '>=18'} hasBin: true @@ -8158,13 +8158,13 @@ packages: pkg-types@1.3.0: resolution: {integrity: sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==} - playwright-core@1.47.0: - resolution: {integrity: sha512-1DyHT8OqkcfCkYUD9zzUTfg7EfTd+6a8MkD/NWOvjo0u/SCNd5YmY/lJwFvUZOxJbWNds+ei7ic2+R/cRz/PDg==} + playwright-core@1.51.1: + resolution: {integrity: sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==} engines: {node: '>=18'} hasBin: true - playwright@1.47.0: - resolution: {integrity: sha512-jOWiRq2pdNAX/mwLiwFYnPHpEZ4rM+fRSQpRHwEwZlP2PUANvL3+aJOF/bvISMhFD30rqMxUB4RJx9aQbfh4Ww==} + playwright@1.51.1: + resolution: {integrity: sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==} engines: {node: '>=18'} hasBin: true @@ -11309,14 +11309,14 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tslib: 2.4.1 - '@clerk/nextjs@6.9.6(next@14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/nextjs@6.9.6(next@14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@clerk/backend': 1.21.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@clerk/clerk-react': 5.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@clerk/shared': 2.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@clerk/types': 4.40.0 crypto-js: 4.2.0 - next: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) server-only: 0.0.1 @@ -13106,9 +13106,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.47.0': + '@playwright/test@1.51.1': dependencies: - playwright: 1.47.0 + playwright: 1.51.1 '@protobufjs/aspromise@1.1.2': {} @@ -16180,7 +16180,7 @@ snapshots: 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.7.3))(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.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(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 @@ -16199,7 +16199,7 @@ snapshots: 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.7.3))(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.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1))(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 @@ -16218,7 +16218,7 @@ snapshots: debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 9.11.1(jiti@1.21.6) - eslint-module-utils: 2.11.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-import-resolver-typescript@3.6.3(@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-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)) + eslint-module-utils: 2.11.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-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16237,7 +16237,7 @@ snapshots: debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 9.19.0(jiti@1.21.6) - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.0 is-bun-module: 1.2.1 @@ -16250,18 +16250,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - 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(@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@8.57.1): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@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.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.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(@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.31.0)(eslint@8.57.1))(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: @@ -16272,7 +16261,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.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-import-resolver-typescript@3.6.3(@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-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6)): + eslint-module-utils@2.11.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-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16283,7 +16272,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16294,7 +16283,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.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(@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.31.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.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: @@ -16305,7 +16294,7 @@ snapshots: 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.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@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-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)))(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-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16316,7 +16305,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: @@ -16338,7 +16327,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.7.3))(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.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(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 @@ -16366,7 +16355,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.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(@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.31.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.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 @@ -16395,7 +16384,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.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@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-plugin-import@2.31.0)(eslint@9.11.1(jiti@1.21.6)))(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-import-resolver-typescript@3.6.3)(eslint@9.11.1(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16424,7 +16413,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.19.0(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.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.6)))(eslint@9.19.0(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.19.0(jiti@1.21.6))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.19.0(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -17145,13 +17134,13 @@ snapshots: - encoding - supports-color - geist@1.3.1(next@15.0.0-canary.113(@opentelemetry/api@1.9.0)(@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)): + geist@1.3.1(next@15.0.0-canary.113(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730)): dependencies: - next: 15.0.0-canary.113(@opentelemetry/api@1.9.0)(@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: 15.0.0-canary.113(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730) - geist@1.3.1(next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713)): + geist@1.3.1(next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713)): dependencies: - next: 15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713) + next: 15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713) generic-pool@3.4.2: {} @@ -18347,13 +18336,13 @@ snapshots: negotiator@1.0.0: {} - next-auth@4.24.11(next@15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next-auth@4.24.11(next@15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.25.7 '@panva/hkdf': 1.2.1 cookie: 0.7.1 jose: 4.15.9 - next: 15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + next: 15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) oauth: 0.9.15 openid-client: 5.7.1 preact: 10.25.4 @@ -18367,7 +18356,7 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - next@14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 14.2.24 '@swc/helpers': 0.5.5 @@ -18389,12 +18378,12 @@ snapshots: '@next/swc-win32-ia32-msvc': 14.2.24 '@next/swc-win32-x64-msvc': 14.2.24 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next@14.2.24(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@next/env': 14.2.24 '@swc/helpers': 0.5.5 @@ -18416,12 +18405,12 @@ snapshots: '@next/swc-win32-ia32-msvc': 14.2.24 '@next/swc-win32-x64-msvc': 14.2.24 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.0.0-canary.113(@opentelemetry/api@1.9.0)(@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@15.0.0-canary.113(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730): dependencies: '@next/env': 15.0.0-canary.113 '@swc/counter': 0.1.3 @@ -18444,13 +18433,13 @@ snapshots: '@next/swc-win32-ia32-msvc': 15.0.0-canary.113 '@next/swc-win32-x64-msvc': 15.0.0-canary.113 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713): + next@15.0.0-canary.67(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0-rc-8b08e99e-20240713(react@19.0.0-rc-8b08e99e-20240713))(react@19.0.0-rc-8b08e99e-20240713): dependencies: '@next/env': 15.0.0-canary.67 '@swc/helpers': 0.5.11 @@ -18472,13 +18461,13 @@ snapshots: '@next/swc-win32-ia32-msvc': 15.0.0-canary.67 '@next/swc-win32-x64-msvc': 15.0.0-canary.67 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@15.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 15.0.4 '@swc/counter': 0.1.3 @@ -18499,13 +18488,13 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.0.4 '@next/swc-win32-x64-msvc': 15.0.4 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next@15.1.0(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@next/env': 15.1.0 '@swc/counter': 0.1.3 @@ -18526,13 +18515,13 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.1.0 '@next/swc-win32-x64-msvc': 15.1.0 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.1.3(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next@15.1.3(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@next/env': 15.1.3 '@swc/counter': 0.1.3 @@ -18553,13 +18542,13 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.1.3 '@next/swc-win32-x64-msvc': 15.1.3 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next@15.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@next/env': 15.1.7 '@swc/counter': 0.1.3 @@ -18580,13 +18569,13 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.1.7 '@next/swc-win32-x64-msvc': 15.1.7 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.47.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next@15.2.2(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@next/env': 15.2.2 '@swc/counter': 0.1.3 @@ -18607,7 +18596,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.2.2 '@next/swc-win32-x64-msvc': 15.2.2 '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.47.0 + '@playwright/test': 1.51.1 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' @@ -18939,11 +18928,11 @@ snapshots: mlly: 1.7.4 pathe: 1.1.2 - playwright-core@1.47.0: {} + playwright-core@1.51.1: {} - playwright@1.47.0: + playwright@1.51.1: dependencies: - playwright-core: 1.47.0 + playwright-core: 1.51.1 optionalDependencies: fsevents: 2.3.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c03004c4..3a5c3526 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,7 +11,7 @@ catalog: "@cloudflare/workers-types": ^4.20250224.0 "@dotenvx/dotenvx": 1.31.0 "@eslint/js": ^9.11.1 - "@playwright/test": 1.47.0 + "@playwright/test": ^1.51.1 "@tsconfig/strictest": ^2.0.5 "@types/mock-fs": ^4.13.4 "@types/node": ^22.2.0