From 90755e74b19189c58679a2c90a2e5f339994b076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Fri, 1 Nov 2024 01:15:28 +0100 Subject: [PATCH 01/35] docs: Update credentials.mdx Fixes https://github.com/nextauthjs/next-auth/issues/12157 --- .../authentication/credentials.mdx | 67 ++++++++++--------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/docs/pages/getting-started/authentication/credentials.mdx b/docs/pages/getting-started/authentication/credentials.mdx index dec604d2ae..526cea9e37 100644 --- a/docs/pages/getting-started/authentication/credentials.mdx +++ b/docs/pages/getting-started/authentication/credentials.mdx @@ -7,7 +7,29 @@ import { Code } from "@/components/Code" # Credentials -To setup Auth.js with external authentication mechanisms or simply use username and password, we need to use the `Credentials` provider. This provider is designed to forward any credentials inserted into the login form (i.e. username/password) to your authentication service via the `authorize` callback on the provider configuration. +To setup Auth.js with any external authentication mechanisms or use a traditional username/email and password flow, we can use the `Credentials` provider. This provider is designed to forward any credentials inserted into the login form (i.e. username/password, but not limited to) to your authentication service. + + + The industry has come a long way since usernames and passwords + as the go-to mechanism for authenticating and authorizing users to + web applications. Therefore, if possible, we recommend a more modern and + secure authentication mechanism such as any of the [OAuth + providers](/getting-started/authentication/oauth), [Email Magic + Links](/getting-started/authentication/email), or [WebAuthn + (Passkeys)](/getting-started/authentication/webauthn) options instead. + + However, we also want to be flexible and support anything + you deem appropriate for your application and use case, + so there are no plans to remove this provider. + + + + + By default, the Credentials provider does not persist data in the database. + However, you can still create and save any data in your database, + you just have to provide the necessary logic, eg. to encrypt passwords, + add rate-limiting, add password reset functionality, etc. + @@ -44,8 +66,8 @@ export const { handlers, signIn, signOut, auth } = NextAuth({ if (!user) { // No user found, so this is their first attempt to login - // meaning this is also the place you could do registration - throw new Error("User not found.") + // Optionally, this is also the place you could do a user registration + throw new Error("Invalid credentials.") } // return user object with their profile data @@ -110,7 +132,9 @@ export const { signIn, signOut, handle } = SvelteKitAuth({ user = await getUserFromDb(credentials.email, pwHash) if (!user) { - throw new Error("User not found.") + // No user found, so this is their first attempt to login + // Optionally, this is also the place you could do a user registration + throw new Error("Invalid credentials.") } // return JSON object with the user data @@ -161,8 +185,8 @@ app.use( if (!user) { // No user found, so this is their first attempt to login - // meaning this is also the place you could do registration - throw new Error("User not found.") + // Optionally, this is also the place you could do a user registration + throw new Error("Invalid credentials.") } // return user object with the their profile data @@ -305,15 +329,15 @@ export default component$(() => { -## Verifying Data with Zod +## Validating credentials -To improve the security of your `Credentials` provider use, we can leverage a run-time schema validation library like [Zod](https://zod.dev) to validate that the inputs match what we expect. +Always validate the credentials server-side, i.e. by leveraging a schema validation library like [Zod](https://zod.dev). ```bash npm2yarn npm install zod ``` -Next, we'll setup the schema and parsing in our `auth.ts` configuration file, using the `authorize` callback on the `Credentials` provider. +Next, we'll set up the schema and parsing in our `auth.ts` configuration file, using the `authorize` callback on the `Credentials` provider. @@ -363,7 +387,7 @@ export const { handlers, auth } = NextAuth({ user = await getUserFromDb(email, pwHash) if (!user) { - throw new Error("User not found.") + throw new Error("Invalid credentials.") } // return JSON object with the user data @@ -470,7 +494,7 @@ export const { handle } = SvelteKitAuth({ user = await getUserFromDb(email, pwHash) if (!user) { - throw new Error("User not found.") + throw new Error("Invalid credentials.") } // return JSON object with the user data @@ -489,24 +513,3 @@ export const { handle } = SvelteKitAuth({ - - - The industry has come a long way since usernames and passwords were first - introduced as the go-to mechanism for authenticating and authorizing users to - web applications. Therefore, if possible, we recommend a more modern and - secure authentication mechanism such as any of the [OAuth - providers](/getting-started/authentication/oauth), [Email Magic - Links](/getting-started/authentication/email), or [WebAuthn - (Passkeys)](/getting-started/authentication/webauthn) options instead of - username / password. - -However, we also want to be flexible and support anything -you deem appropriate for your application and use-case. - - - - - The Credentials provider only supports the JWT session strategy. You can still - create and save a database session and reference it from the JWT via an id, - but you'll need to provide that logic yourself. - From 16a638bdbad28e12903f64193a9fe04d7a80a877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Merlin=20F=C3=B6rster?= Date: Fri, 1 Nov 2024 01:21:16 +0100 Subject: [PATCH 02/35] docs: JSON.stringify session (#12162) --- docs/pages/guides/edge-compatibility.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/guides/edge-compatibility.mdx b/docs/pages/guides/edge-compatibility.mdx index f2e489bfd5..4ae65343cb 100644 --- a/docs/pages/guides/edge-compatibility.mdx +++ b/docs/pages/guides/edge-compatibility.mdx @@ -108,7 +108,7 @@ export default async function Page() { return (
-
{session}
+
{JSON.stringify(session, null, 2)}
) } From 6cbd6a59ac6d134041bf004883fdb86838c6b1ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwena=C3=ABl=20Gallon?= Date: Fri, 1 Nov 2024 01:22:37 +0100 Subject: [PATCH 03/35] fix(nextjs): Update params type with Promise as expected in Next.js 15 (#12114) --- packages/next-auth/src/lib/types.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/next-auth/src/lib/types.ts b/packages/next-auth/src/lib/types.ts index 5617581780..e934a7a9e1 100644 --- a/packages/next-auth/src/lib/types.ts +++ b/packages/next-auth/src/lib/types.ts @@ -1,12 +1,13 @@ // @ts-expect-error Next.js does not yet correctly use the `package.json#exports` field import type { NextRequest } from "next/server" +import type { Awaitable } from "@auth/core/types" /** * AppRouteHandlerFnContext is the context that is passed to the handler as the * second argument. */ export type AppRouteHandlerFnContext = { - params?: Record + params: Awaitable> } /** * Handler function for app routes. If a non-Response value is returned, an error From 8034cfe7b27e1d8af3fa9788793cbc5688b570e9 Mon Sep 17 00:00:00 2001 From: Oleg Motenko Date: Fri, 1 Nov 2024 02:23:14 +0200 Subject: [PATCH 04/35] fix(providers): dropbox authorization params should contain token_access_type (#12161) --- packages/core/src/providers/dropbox.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/providers/dropbox.ts b/packages/core/src/providers/dropbox.ts index eb6fe77e9c..cd2ee0b36c 100644 --- a/packages/core/src/providers/dropbox.ts +++ b/packages/core/src/providers/dropbox.ts @@ -72,7 +72,7 @@ export default function Dropbox( authorization: { url: "https://www.dropbox.com/oauth2/authorize", params: { - access_type: "offline", + token_access_type: "offline", scope: "account_info.read", }, }, From ebe5d05030f60101459616a1cec7e0f9da78c33c Mon Sep 17 00:00:00 2001 From: w9 Date: Thu, 31 Oct 2024 19:32:13 -0500 Subject: [PATCH 05/35] fix(ts) mark `account` as optional in callbacks (#12017) --- packages/core/src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 33b5cdd14b..41380ef0ca 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -324,7 +324,7 @@ export interface AuthConfig { */ signIn?: (params: { user: User | AdapterUser - account: Account | null + account?: Account | null /** * If OAuth provider is used, it contains the full * OAuth profile returned by your provider. @@ -452,7 +452,7 @@ export interface AuthConfig { * Also includes {@link TokenSet} * @note available when `trigger` is `"signIn"` or `"signUp"` */ - account: Account | null + account?: Account | null /** * The OAuth profile returned from your provider. * (In case of OIDC it will be the decoded ID Token or /userinfo response) @@ -497,7 +497,7 @@ export interface AuthConfig { */ signIn?: (message: { user: User - account: Account | null + account?: Account | null profile?: Profile isNewUser?: boolean }) => Awaitable From c5a70d383bb97b39f8edbbaf69c4c7620246e9a4 Mon Sep 17 00:00:00 2001 From: Nico Domino Date: Sat, 2 Nov 2024 15:31:24 +0100 Subject: [PATCH 06/35] chore(sponsors): add sent.dm (#12171) --- README.md | 11 +++++++++-- docs/pages/sponsors.mdx | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c088ae7d9a..4a8005f3a1 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,15 @@ We have an [OpenCollective](https://opencollective.com/nextauth) for companies a
Encore
💵 + + + Sent.dm Logo +
+
Sent.dm
+ 💵 + + + Arcjet Logo @@ -173,8 +182,6 @@ We have an [OpenCollective](https://opencollective.com/nextauth) for companies a
Arcjet
💵 - -
Route4Me Logo diff --git a/docs/pages/sponsors.mdx b/docs/pages/sponsors.mdx index 83bb46ac21..4d8e0f4f4b 100644 --- a/docs/pages/sponsors.mdx +++ b/docs/pages/sponsors.mdx @@ -145,6 +145,11 @@ It would not be possible without the generous support of our sponsors. "https://avatars.githubusercontent.com/u/77690634?v=4", "Neon", ], + [ + "https://sent.dm", + "https://avatars.githubusercontent.com/u/153308555?v=4", + "Sent.dm", + ], ].map(([href, src, name]) => ( Date: Mon, 4 Nov 2024 10:30:54 +0100 Subject: [PATCH 07/35] chore: fix formatting --- .../getting-started/authentication/credentials.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/pages/getting-started/authentication/credentials.mdx b/docs/pages/getting-started/authentication/credentials.mdx index 526cea9e37..e7af253de6 100644 --- a/docs/pages/getting-started/authentication/credentials.mdx +++ b/docs/pages/getting-started/authentication/credentials.mdx @@ -18,17 +18,17 @@ To setup Auth.js with any external authentication mechanisms or use a traditiona Links](/getting-started/authentication/email), or [WebAuthn (Passkeys)](/getting-started/authentication/webauthn) options instead. - However, we also want to be flexible and support anything - you deem appropriate for your application and use case, - so there are no plans to remove this provider. +However, we also want to be flexible and support anything +you deem appropriate for your application and use case, +so there are no plans to remove this provider. By default, the Credentials provider does not persist data in the database. - However, you can still create and save any data in your database, - you just have to provide the necessary logic, eg. to encrypt passwords, - add rate-limiting, add password reset functionality, etc. + However, you can still create and save any data in your database, you just + have to provide the necessary logic, eg. to encrypt passwords, add + rate-limiting, add password reset functionality, etc. From 39250e329701cab10d7da8d4eec1b09b5844ac0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Mon, 4 Nov 2024 10:31:57 +0100 Subject: [PATCH 08/35] fix(core): use correct import for the `cookie` package (#12177) * Update jwt.ts * replace the rest --- packages/core/src/jwt.ts | 5 ++-- packages/core/src/lib/utils/cookie.ts | 3 ++- packages/core/src/lib/utils/web.ts | 6 +++-- packages/core/test/actions/session.test.ts | 30 ++++++++++------------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/core/src/jwt.ts b/packages/core/src/jwt.ts index a7420d1918..22b9bbd11a 100644 --- a/packages/core/src/jwt.ts +++ b/packages/core/src/jwt.ts @@ -42,8 +42,9 @@ import { defaultCookies, SessionStore } from "./lib/utils/cookie.js" import { Awaitable } from "./types.js" import type { LoggerInstance } from "./lib/utils/logger.js" import { MissingSecret } from "./errors.js" -import { parse } from "cookie" +import * as cookie from "cookie" +const { parse: parseCookie } = cookie const DEFAULT_MAX_AGE = 30 * 24 * 60 * 60 // 30 days const now = () => (Date.now() / 1000) | 0 @@ -161,7 +162,7 @@ export async function getToken( const sessionStore = new SessionStore( { name: cookieName, options: { secure: secureCookie } }, - parse(headers.get("cookie") ?? ""), + parseCookie(headers.get("cookie") ?? ""), logger ) diff --git a/packages/core/src/lib/utils/cookie.ts b/packages/core/src/lib/utils/cookie.ts index 5ef7b7a831..f129a00c45 100644 --- a/packages/core/src/lib/utils/cookie.ts +++ b/packages/core/src/lib/utils/cookie.ts @@ -7,7 +7,8 @@ import type { // Uncomment to recalculate the estimated size // of an empty session cookie -// import { serialize } from "cookie" +// import * as cookie from "cookie" +// const { serialize } = cookie // console.log( // "Cookie estimated to be ", // serialize(`__Secure.authjs.session-token.0`, "", { diff --git a/packages/core/src/lib/utils/web.ts b/packages/core/src/lib/utils/web.ts index e3a4bfd748..047749016b 100644 --- a/packages/core/src/lib/utils/web.ts +++ b/packages/core/src/lib/utils/web.ts @@ -1,4 +1,4 @@ -import { parse as parseCookie, serialize } from "cookie" +import * as cookie from "cookie" import { UnknownAction } from "../../errors.js" import { setLogger } from "./logger.js" @@ -10,6 +10,8 @@ import type { import { isAuthAction } from "./actions.js" import type { AuthConfig } from "../../index.js" +const { parse: parseCookie, serialize: serializeCookie } = cookie + async function getBody(req: Request): Promise | undefined> { if (!("body" in req) || !req.body || req.method !== "POST") return @@ -74,7 +76,7 @@ export function toResponse(res: ResponseInternal): Response { res.cookies?.forEach((cookie) => { const { name, value, options } = cookie - const cookieHeader = serialize(name, value, options) + const cookieHeader = serializeCookie(name, value, options) if (headers.has("Set-Cookie")) headers.append("Set-Cookie", cookieHeader) else headers.set("Set-Cookie", cookieHeader) }) diff --git a/packages/core/test/actions/session.test.ts b/packages/core/test/actions/session.test.ts index 963a839e7f..43a80b254a 100644 --- a/packages/core/test/actions/session.test.ts +++ b/packages/core/test/actions/session.test.ts @@ -1,9 +1,9 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" -import { parse } from "cookie" +import * as cookie from "cookie" import { MemoryAdapter, initMemory } from "../memory-adapter.js" import { randomString } from "../../src/lib/utils/web.js" -import { AdapterUser } from "../../adapters.js" +import type { AdapterUser } from "../../src/adapters.js" import { decode, encode } from "../../src/jwt.js" import { callbacks, @@ -16,6 +16,8 @@ import { SESSION_COOKIE_NAME, } from "../utils.js" +const { parse: parseCookie } = cookie + describe("assert GET session action", () => { beforeEach(() => { vi.resetAllMocks() @@ -61,11 +63,9 @@ describe("assert GET session action", () => { }) const actualBodySession = await response.json() - let cookies = response.headers - .getSetCookie() - .reduce>((acc, cookie) => { - return { ...acc, ...parse(cookie) } - }, {}) + let cookies = response.headers.getSetCookie().reduce((acc, cookie) => { + return { ...acc, ...parseCookie(cookie) } + }, {}) const sessionToken = cookies[SESSION_COOKIE_NAME] const actualToken = await decode({ salt: SESSION_COOKIE_NAME, @@ -176,11 +176,9 @@ describe("assert GET session action", () => { const actualBodySession = await response.json() - let cookies = response.headers - .getSetCookie() - .reduce>((acc, cookie) => { - return { ...acc, ...parse(cookie) } - }, {}) + let cookies = response.headers.getSetCookie().reduce((acc, cookie) => { + return { ...acc, ...parseCookie(cookie) } + }, {}) const actualSessionToken = cookies[SESSION_COOKIE_NAME] expect(memory.users.get(expectedUserId)).toEqual(expectedUser) @@ -248,11 +246,9 @@ describe("assert GET session action", () => { const actualBodySession = await response.json() - let cookies = response.headers - .getSetCookie() - .reduce>((acc, cookie) => { - return { ...acc, ...parse(cookie) } - }, {}) + let cookies = response.headers.getSetCookie().reduce((acc, cookie) => { + return { ...acc, ...parseCookie(cookie) } + }, {}) const actualSessionToken = cookies[SESSION_COOKIE_NAME] expect(memory.users.get(expectedUserId)).toEqual(expectedUser) From 39b7d9a415c4f411448a00b40ed508633c6dd2a9 Mon Sep 17 00:00:00 2001 From: Thomas V Date: Mon, 4 Nov 2024 10:33:46 +0100 Subject: [PATCH 09/35] fix(providers): Ease authorization and scope override for Discord provider (#12173) Ease authorization and scope override for Discord provider --- packages/core/src/providers/discord.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/src/providers/discord.ts b/packages/core/src/providers/discord.ts index f5bbd1f034..c2a16b0105 100644 --- a/packages/core/src/providers/discord.ts +++ b/packages/core/src/providers/discord.ts @@ -146,8 +146,10 @@ export default function Discord

( id: "discord", name: "Discord", type: "oauth", - authorization: - "https://discord.com/api/oauth2/authorize?scope=identify+email", + authorization: { + url: "https://discord.com/api/oauth2/authorize", + params: { scope: "identify email"}, + }, token: "https://discord.com/api/oauth2/token", userinfo: "https://discord.com/api/users/@me", profile(profile) { From 2e78fa2cc193e10d2e95a4a31baf02388c5d5989 Mon Sep 17 00:00:00 2001 From: Dewin Umana Date: Mon, 4 Nov 2024 03:36:18 -0600 Subject: [PATCH 10/35] fix(providers): update TikTok provider configuration with custom Fetch (#12168) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(tiktok): Update TikTok provider configuration - Added custom fetch * fix format --------- Co-authored-by: Balázs Orbán --- packages/core/src/providers/tiktok.ts | 144 +++++++++++++++++--------- 1 file changed, 97 insertions(+), 47 deletions(-) diff --git a/packages/core/src/providers/tiktok.ts b/packages/core/src/providers/tiktok.ts index 73f29c24d0..bb60110b13 100644 --- a/packages/core/src/providers/tiktok.ts +++ b/packages/core/src/providers/tiktok.ts @@ -8,13 +8,13 @@ * * @module providers/tiktok */ -import { TokenSet } from "../types.js" +import { customFetch } from "../lib/symbols.js" import type { OAuthConfig, OAuthUserConfig } from "./index.js" /** * [More info](https://developers.tiktok.com/doc/tiktok-api-v2-get-user-info/) */ -export interface TiktokProfile extends Record { +export interface TiktokProfile { data: { user: { /** @@ -137,6 +137,8 @@ export interface TiktokProfile extends Record { * ``` * * #### Configuration + * You can omit the client and secret if you have set the `AUTH_TIKTOK_ID` and `AUTH_TIKTOK_SECRET` environment variables. + * Remeber that the AUTH_TIKTOK_ID is the Client Key in the TikTok Application *```ts * import { Auth } from "@auth/core" * import TikTok from "@auth/core/providers/tiktok" @@ -144,7 +146,7 @@ export interface TiktokProfile extends Record { * const request = new Request(origin) * const response = await Auth(request, { * providers: [ - * TikTok({ clientId: TIKTOK_CLIENT_KEY, clientSecret: TIKTOK_CLIENT_SECRET }), + * TikTok({ clientId: AUTH_TIKTOK_ID, clientSecret: AUTH_TIKTOK_SECRET }), * ], * }) * ``` @@ -153,6 +155,7 @@ export interface TiktokProfile extends Record { * - [TikTok app console](https://developers.tiktok.com/) * - [TikTok login kit documentation](https://developers.tiktok.com/doc/login-kit-web/) * - [Avaliable Scopes](https://developers.tiktok.com/doc/tiktok-api-scopes/) + * - [Sandbox for testing](https://developers.tiktok.com/blog/introducing-sandbox) * * * ### Notes @@ -160,6 +163,7 @@ export interface TiktokProfile extends Record { * :::tip * * Production applications cannot use localhost URLs to sign in with TikTok. You need add the domain and Callback/Redirect url's to your TikTok app and have them review and approved by the TikTok Team. + * If you need to test your implementation, you can use the sandbox feature and ngrok for testing in localhost. * * ::: * @@ -171,7 +175,7 @@ export interface TiktokProfile extends Record { * * :::tip * - * Client_ID will be the Client Key in the TikTok Application + * AUTH_TIKTOK_ID will be the Client Key in the TikTok Application * * ::: * @@ -183,6 +187,64 @@ export interface TiktokProfile extends Record { * The TikTok provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/tiktok.ts). * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers). * + * If You Need to Customize the TikTok Provider, You Can Use the Following Configuration as a custom provider + * + * ```ts + * { + * async [customFetch](...args) { + * const url = new URL(args[0] instanceof Request ? args[0].url : args[0]); + * if (url.pathname.endsWith("/token/")) { + * const [url, request] = args; + * const customHeaders = { + * ...request?.headers, + * "content-type": "application/x-www-form-urlencoded", + * }; + * + * const customBody = new URLSearchParams(request?.body as string); + * customBody.append("client_key", process.env.AUTH_TIKTOK_ID!); + * + * const response = await fetch(url, { + * ...request, + * headers: customHeaders, + * body: customBody.toString(), + * }); + * const json = await response.json(); + * return Response.json({ ...json }); + * } + * return fetch(...args); + * }, + * + * id: "tiktok", + * name: "TikTok", + * type: "oauth", + * client: { + * token_endpoint_auth_method: "client_secret_post", + * }, + * + * authorization: { + * url: "https://www.tiktok.com/v2/auth/authorize", + * params: { + * client_key: options.clientId, + * scope: "user.info.profile", //Add scopes you need eg(user.info.profile,user.info.stats,video.list) + * }, + * }, + * + * token: "https://open.tiktokapis.com/v2/oauth/token/", + * + * userinfo: "https://open.tiktokapis.com/v2/user/info/?fields=open_id,avatar_url,display_name,username", //Add fields you need eg(open_id,avatar_url,display_name,username) + * + * profile(profile) { + * return { + * id: profile.data.user.open_id, + * name: profile.data.user.display_name, + * image: profile.data.user.avatar_url, + * email: profile.data.user.email || profile.data.user.username || null, + * }; + * }, + * } + * + * ``` + * * ::: * * :::info **Disclaimer** @@ -195,62 +257,50 @@ export interface TiktokProfile extends Record { * * ::: */ -export default function TikTok

( - options: OAuthUserConfig

-): OAuthConfig

{ +export default function TikTok( + options: OAuthUserConfig +): OAuthConfig { return { + async [customFetch](...args) { + const url = new URL(args[0] instanceof Request ? args[0].url : args[0]) + if (url.pathname.endsWith("/token/")) { + const [url, request] = args + + const customHeaders = { + ...request?.headers, + "content-type": "application/x-www-form-urlencoded", + } + + const customBody = new URLSearchParams(request?.body as string) + customBody.append("client_key", options.clientId!) + const response = await fetch(url, { + ...request, + headers: customHeaders, + body: customBody.toString(), + }) + const json = await response.json() + return Response.json({ ...json }) + } + return fetch(...args) + }, id: "tiktok", name: "TikTok", type: "oauth", + client: { + token_endpoint_auth_method: "client_secret_post", + }, authorization: { url: "https://www.tiktok.com/v2/auth/authorize", params: { client_key: options.clientId, scope: "user.info.profile", - response_type: "code", }, }, - token: { - url: "https://open.tiktokapis.com/v2/oauth/token/", - async request({ params, provider }) { - const res = await fetch(provider.token?.url as unknown as string, { - method: "POST", - headers: { - "Cache-Control": "no-cache", - "Content-Type": "application/x-www-form-urlencoded", - }, - body: new URLSearchParams({ - client_key: provider.clientId!, - client_secret: provider.clientSecret!, - code: params.code!, - grant_type: "authorization_code", - redirect_uri: provider.callbackUrl!, - }), - }).then((res) => res.json()) + token: "https://open.tiktokapis.com/v2/oauth/token/", + userinfo: + "https://open.tiktokapis.com/v2/user/info/?fields=open_id,avatar_url,display_name,username", - const tokens: TokenSet = { - access_token: res.access_token, - expires_at: res.expires_in, - refresh_token: res.refresh_token, - scope: res.scope, - id_token: res.open_id, - token_type: res.token_type, - session_state: res.open_id, - } - return { - tokens, - } - }, - }, - userinfo: { - url: "https://open.tiktokapis.com/v2/user/info/?fields=open_id,avatar_url,display_name,username", - async request({ tokens, provider }) { - return await fetch(provider.userinfo?.url as URL, { - headers: { Authorization: `Bearer ${tokens.access_token}` }, - }).then(async (res) => await res.json()) - }, - }, profile(profile) { return { id: profile.data.user.open_id, From d6d8d4f140c0ff080a869ebf4ccce0e8308cfdc9 Mon Sep 17 00:00:00 2001 From: larryonward Date: Mon, 4 Nov 2024 03:42:46 -0600 Subject: [PATCH 11/35] fix(core): carry-over request params for custom verifyRequest page (#12166) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(core): carry-over request params for custom verifyRequest page * removed commented out code * Update index.ts --------- Co-authored-by: Balázs Orbán --- packages/core/src/lib/pages/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/src/lib/pages/index.ts b/packages/core/src/lib/pages/index.ts index 0e83e203fb..2c91513a3f 100644 --- a/packages/core/src/lib/pages/index.ts +++ b/packages/core/src/lib/pages/index.ts @@ -144,7 +144,10 @@ export default function renderPage(params: RenderPageParams) { }, verifyRequest(props?: any) { if (pages?.verifyRequest) - return { redirect: pages.verifyRequest, cookies } + return { + redirect: `${pages.verifyRequest}${url?.search ?? ""}`, + cookies, + } return send({ cookies, theme, From 7f5382bd629b47c6377019ef628529c32708cf43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Mon, 4 Nov 2024 10:46:58 +0100 Subject: [PATCH 12/35] chore: fix lint --- packages/core/src/providers/discord.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/providers/discord.ts b/packages/core/src/providers/discord.ts index c2a16b0105..da5c61d62b 100644 --- a/packages/core/src/providers/discord.ts +++ b/packages/core/src/providers/discord.ts @@ -148,7 +148,7 @@ export default function Discord

( type: "oauth", authorization: { url: "https://discord.com/api/oauth2/authorize", - params: { scope: "identify email"}, + params: { scope: "identify email" }, }, token: "https://discord.com/api/oauth2/token", userinfo: "https://discord.com/api/users/@me", From d6e68e40fc094f03811d66070a3a94901956eae8 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 4 Nov 2024 11:10:23 +0000 Subject: [PATCH 13/35] chore(release): bump package version(s) [skip ci] --- packages/adapter-azure-tables/package.json | 2 +- packages/adapter-d1/package.json | 2 +- packages/adapter-dgraph/package.json | 2 +- packages/adapter-drizzle/package.json | 2 +- packages/adapter-dynamodb/package.json | 2 +- packages/adapter-edgedb/package.json | 2 +- packages/adapter-fauna/package.json | 2 +- packages/adapter-firebase/package.json | 2 +- packages/adapter-hasura/package.json | 2 +- packages/adapter-kysely/package.json | 2 +- packages/adapter-mikro-orm/package.json | 2 +- packages/adapter-mongodb/package.json | 2 +- packages/adapter-neo4j/package.json | 2 +- packages/adapter-pg/package.json | 2 +- packages/adapter-pouchdb/package.json | 2 +- packages/adapter-prisma/package.json | 2 +- packages/adapter-sequelize/package.json | 2 +- packages/adapter-supabase/package.json | 2 +- packages/adapter-surrealdb/package.json | 2 +- packages/adapter-typeorm/package.json | 2 +- packages/adapter-unstorage/package.json | 2 +- packages/adapter-upstash-redis/package.json | 2 +- packages/adapter-xata/package.json | 2 +- packages/core/package.json | 2 +- packages/frameworks-express/package.json | 2 +- packages/frameworks-qwik/package.json | 2 +- packages/frameworks-solid-start/package.json | 2 +- packages/frameworks-sveltekit/package.json | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/packages/adapter-azure-tables/package.json b/packages/adapter-azure-tables/package.json index f244666ccd..0978080541 100644 --- a/packages/adapter-azure-tables/package.json +++ b/packages/adapter-azure-tables/package.json @@ -1,6 +1,6 @@ { "name": "@auth/azure-tables-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "Azure Tables Storage adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-d1/package.json b/packages/adapter-d1/package.json index aa57cafc17..b8232801d9 100644 --- a/packages/adapter-d1/package.json +++ b/packages/adapter-d1/package.json @@ -1,6 +1,6 @@ { "name": "@auth/d1-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "A Cloudflare D1 adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-dgraph/package.json b/packages/adapter-dgraph/package.json index bf218d7c57..e016f8df93 100644 --- a/packages/adapter-dgraph/package.json +++ b/packages/adapter-dgraph/package.json @@ -1,6 +1,6 @@ { "name": "@auth/dgraph-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "Dgraph adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-drizzle/package.json b/packages/adapter-drizzle/package.json index 20d7c98721..8c161b9f78 100644 --- a/packages/adapter-drizzle/package.json +++ b/packages/adapter-drizzle/package.json @@ -1,6 +1,6 @@ { "name": "@auth/drizzle-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "Drizzle adapter for Auth.js.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-dynamodb/package.json b/packages/adapter-dynamodb/package.json index 6e5d01dcce..d99012c379 100644 --- a/packages/adapter-dynamodb/package.json +++ b/packages/adapter-dynamodb/package.json @@ -1,7 +1,7 @@ { "name": "@auth/dynamodb-adapter", "repository": "https://github.com/nextauthjs/next-auth", - "version": "2.7.2", + "version": "2.7.3", "description": "AWS DynamoDB adapter for next-auth.", "keywords": [ "next-auth", diff --git a/packages/adapter-edgedb/package.json b/packages/adapter-edgedb/package.json index 7310d0c933..43d02bbe33 100644 --- a/packages/adapter-edgedb/package.json +++ b/packages/adapter-edgedb/package.json @@ -1,6 +1,6 @@ { "name": "@auth/edgedb-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "EdgeDB adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-fauna/package.json b/packages/adapter-fauna/package.json index 36c22e7e9a..74b86324dd 100644 --- a/packages/adapter-fauna/package.json +++ b/packages/adapter-fauna/package.json @@ -1,6 +1,6 @@ { "name": "@auth/fauna-adapter", - "version": "3.7.2", + "version": "3.7.3", "description": "Fauna Adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-firebase/package.json b/packages/adapter-firebase/package.json index 402c94a032..6ab0288cbf 100644 --- a/packages/adapter-firebase/package.json +++ b/packages/adapter-firebase/package.json @@ -1,6 +1,6 @@ { "name": "@auth/firebase-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "Firebase adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-hasura/package.json b/packages/adapter-hasura/package.json index 9d4baa3738..2b4fd75ecc 100644 --- a/packages/adapter-hasura/package.json +++ b/packages/adapter-hasura/package.json @@ -1,6 +1,6 @@ { "name": "@auth/hasura-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "Hasura adapter for Auth.js.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-kysely/package.json b/packages/adapter-kysely/package.json index 212788d76f..02392dbede 100644 --- a/packages/adapter-kysely/package.json +++ b/packages/adapter-kysely/package.json @@ -1,6 +1,6 @@ { "name": "@auth/kysely-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "Kysely adapter for Auth.js", "homepage": "https://authjs.dev/reference/adapter/kysely", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-mikro-orm/package.json b/packages/adapter-mikro-orm/package.json index 6210441540..bfd52b67a5 100644 --- a/packages/adapter-mikro-orm/package.json +++ b/packages/adapter-mikro-orm/package.json @@ -1,6 +1,6 @@ { "name": "@auth/mikro-orm-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "MikroORM adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-mongodb/package.json b/packages/adapter-mongodb/package.json index d2ae4dca6d..2ce292e815 100644 --- a/packages/adapter-mongodb/package.json +++ b/packages/adapter-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@auth/mongodb-adapter", - "version": "3.7.2", + "version": "3.7.3", "description": "MongoDB adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-neo4j/package.json b/packages/adapter-neo4j/package.json index 4d7eb462d6..c810a248d0 100644 --- a/packages/adapter-neo4j/package.json +++ b/packages/adapter-neo4j/package.json @@ -1,6 +1,6 @@ { "name": "@auth/neo4j-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "neo4j adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-pg/package.json b/packages/adapter-pg/package.json index 865da839eb..d5a97c5c08 100644 --- a/packages/adapter-pg/package.json +++ b/packages/adapter-pg/package.json @@ -1,6 +1,6 @@ { "name": "@auth/pg-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "Postgres adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-pouchdb/package.json b/packages/adapter-pouchdb/package.json index 285c1ada7c..faf7db04e6 100644 --- a/packages/adapter-pouchdb/package.json +++ b/packages/adapter-pouchdb/package.json @@ -1,6 +1,6 @@ { "name": "@auth/pouchdb-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "PouchDB adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-prisma/package.json b/packages/adapter-prisma/package.json index 31fe253db5..d5261e9ff8 100644 --- a/packages/adapter-prisma/package.json +++ b/packages/adapter-prisma/package.json @@ -1,6 +1,6 @@ { "name": "@auth/prisma-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "Prisma adapter for Auth.js", "homepage": "https://authjs.dev/reference/adapter/prisma", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-sequelize/package.json b/packages/adapter-sequelize/package.json index aabd267deb..dd23e34883 100644 --- a/packages/adapter-sequelize/package.json +++ b/packages/adapter-sequelize/package.json @@ -1,6 +1,6 @@ { "name": "@auth/sequelize-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "Sequelize adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-supabase/package.json b/packages/adapter-supabase/package.json index 8d60cbfc37..5d3770242f 100644 --- a/packages/adapter-supabase/package.json +++ b/packages/adapter-supabase/package.json @@ -1,6 +1,6 @@ { "name": "@auth/supabase-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "Supabase adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-surrealdb/package.json b/packages/adapter-surrealdb/package.json index 9bc51493be..555fd329e0 100644 --- a/packages/adapter-surrealdb/package.json +++ b/packages/adapter-surrealdb/package.json @@ -1,6 +1,6 @@ { "name": "@auth/surrealdb-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "SurrealDB adapter for next-auth.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-typeorm/package.json b/packages/adapter-typeorm/package.json index a53247bc80..72cb87cde9 100644 --- a/packages/adapter-typeorm/package.json +++ b/packages/adapter-typeorm/package.json @@ -1,6 +1,6 @@ { "name": "@auth/typeorm-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "TypeORM adapter for Auth.js.", "homepage": "https://authjs.dev/reference/adapter/typeorm", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-unstorage/package.json b/packages/adapter-unstorage/package.json index 57d4093fa9..e0a85c6c0c 100644 --- a/packages/adapter-unstorage/package.json +++ b/packages/adapter-unstorage/package.json @@ -1,6 +1,6 @@ { "name": "@auth/unstorage-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "Unstorage adapter for Auth.js.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-upstash-redis/package.json b/packages/adapter-upstash-redis/package.json index 2111e0de0f..c9dc211734 100644 --- a/packages/adapter-upstash-redis/package.json +++ b/packages/adapter-upstash-redis/package.json @@ -1,6 +1,6 @@ { "name": "@auth/upstash-redis-adapter", - "version": "2.7.2", + "version": "2.7.3", "description": "Upstash adapter for Auth.js.", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/adapter-xata/package.json b/packages/adapter-xata/package.json index 66d3dbac44..486d6239d0 100644 --- a/packages/adapter-xata/package.json +++ b/packages/adapter-xata/package.json @@ -1,6 +1,6 @@ { "name": "@auth/xata-adapter", - "version": "1.7.2", + "version": "1.7.3", "description": "Xata adapter for Auth.js", "homepage": "https://authjs.dev", "repository": "https://github.com/nextauthjs/next-auth", diff --git a/packages/core/package.json b/packages/core/package.json index 21164374bd..219604c66a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@auth/core", - "version": "0.37.2", + "version": "0.37.3", "description": "Authentication for the Web.", "keywords": [ "authentication", diff --git a/packages/frameworks-express/package.json b/packages/frameworks-express/package.json index 733c01e410..233813cc96 100644 --- a/packages/frameworks-express/package.json +++ b/packages/frameworks-express/package.json @@ -1,7 +1,7 @@ { "name": "@auth/express", "description": "Authentication for Express.", - "version": "0.8.2", + "version": "0.8.3", "type": "module", "files": [ "*.js", diff --git a/packages/frameworks-qwik/package.json b/packages/frameworks-qwik/package.json index ba0d61117d..2ab8019be1 100644 --- a/packages/frameworks-qwik/package.json +++ b/packages/frameworks-qwik/package.json @@ -1,6 +1,6 @@ { "name": "@auth/qwik", - "version": "0.5.2", + "version": "0.5.3", "description": "Authentication for Qwik.", "license": "ISC", "author": "gioboa ", diff --git a/packages/frameworks-solid-start/package.json b/packages/frameworks-solid-start/package.json index 7a44e934b6..7adfc70e12 100644 --- a/packages/frameworks-solid-start/package.json +++ b/packages/frameworks-solid-start/package.json @@ -1,6 +1,6 @@ { "name": "@auth/solid-start", - "version": "0.15.2", + "version": "0.15.3", "description": "Authentication for SolidStart.", "license": "ISC", "author": "OrJDev ", diff --git a/packages/frameworks-sveltekit/package.json b/packages/frameworks-sveltekit/package.json index 552eb633bf..331a849bf3 100644 --- a/packages/frameworks-sveltekit/package.json +++ b/packages/frameworks-sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@auth/sveltekit", - "version": "1.7.2", + "version": "1.7.3", "description": "Authentication for SvelteKit.", "keywords": [ "authentication", From 06e2c9c5d4e6a687b63955919c297fbbf8019fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Tue, 5 Nov 2024 11:51:12 +0100 Subject: [PATCH 14/35] docs: handle nullable Session Fixes #12182 --- docs/pages/getting-started/session-management/get-session.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/getting-started/session-management/get-session.mdx b/docs/pages/getting-started/session-management/get-session.mdx index 392b08235a..85909f365f 100644 --- a/docs/pages/getting-started/session-management/get-session.mdx +++ b/docs/pages/getting-started/session-management/get-session.mdx @@ -14,7 +14,7 @@ import { auth } from "../auth" export default async function UserAvatar() { const session = await auth() - if (!session.user) return null + if (!session?.user) return null return (

From a1cf4069661fd290d9217d28bc008228a7544995 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:52:25 +0100 Subject: [PATCH 15/35] chore(deps): bump cookie from 0.6.0 to 1.0.1 (#12178) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 60 ++++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e0ebc5728..c044144cf6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -246,7 +246,7 @@ importers: version: 0.4.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@inkeep/widgets': specifier: ^0.2.289 - version: 0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + version: 0.2.289(@internationalized/date@3.5.2)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@next/third-parties': specifier: ^14.2.15 version: 14.2.15(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1) @@ -6413,7 +6413,7 @@ packages: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -6788,7 +6788,7 @@ packages: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} confbox@0.1.7: resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} @@ -7484,7 +7484,7 @@ packages: hasBin: true ee-first@1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} ejs@3.1.9: resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} @@ -8247,7 +8247,7 @@ packages: resolution: {integrity: sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==} github-from-package@0.0.0: - resolution: {integrity: sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=} + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -9347,10 +9347,12 @@ packages: libsql@0.3.18: resolution: {integrity: sha512-lvhKr7WV3NLWRbXkjn/MeKqXOAqWKU0PX9QYrvDh7fneukapj+iUQ4qgJASrQyxcCrEsClXCQiiK5W6OoYPAlA==} + cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] libsql@0.3.19: resolution: {integrity: sha512-Aj5cQ5uk/6fHdmeW0TiXK42FqUlwx7ytmMLPSaUQPin5HKKKuUPD62MAbN4OEweGBBI7q1BekoEN4gPUEL6MZA==} + cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] lil-fp@1.4.5: @@ -9529,7 +9531,7 @@ packages: resolution: {integrity: sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==} ltgt@2.2.1: - resolution: {integrity: sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=} + resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -9679,7 +9681,7 @@ packages: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} media-typer@0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} memdown@1.4.1: @@ -12555,7 +12557,7 @@ packages: engines: {node: '>=0.6'} token-stream@1.0.0: - resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=} + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} toposort-class@1.0.1: resolution: {integrity: sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==} @@ -13177,7 +13179,7 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} utils-merge@1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} uuid@10.0.0: @@ -13858,7 +13860,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.6)': + '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.2)': dependencies: '@zag-js/accordion': 0.20.0 '@zag-js/anatomy': 0.20.0 @@ -13869,7 +13871,7 @@ snapshots: '@zag-js/color-utils': 0.20.0 '@zag-js/combobox': 0.20.0 '@zag-js/date-picker': 0.20.0 - '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.6) + '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.2) '@zag-js/dialog': 0.20.0 '@zag-js/editable': 0.20.0 '@zag-js/hover-card': 0.20.0 @@ -13895,7 +13897,7 @@ snapshots: transitivePeerDependencies: - '@internationalized/date' - '@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@zag-js/accordion': 0.19.1 '@zag-js/anatomy': 0.19.1 @@ -13907,7 +13909,7 @@ snapshots: '@zag-js/combobox': 0.19.1 '@zag-js/core': 0.19.1 '@zag-js/date-picker': 0.19.1 - '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.6) + '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.2) '@zag-js/dialog': 0.19.1 '@zag-js/editable': 0.19.1 '@zag-js/hover-card': 0.19.1 @@ -16681,11 +16683,11 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@inkeep/preset': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@inkeep/styled-system': 0.0.44 '@pandacss/dev': 0.22.1(typescript@5.6.3) @@ -16697,9 +16699,9 @@ snapshots: - jsdom - typescript - '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)': + '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)': dependencies: - '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6) + '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) '@inkeep/shared': 0.0.25 '@pandacss/dev': 0.22.1(typescript@5.6.3) transitivePeerDependencies: @@ -16707,10 +16709,10 @@ snapshots: - jsdom - typescript - '@inkeep/preset@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)': + '@inkeep/preset@0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)': dependencies: - '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@pandacss/dev': 0.22.1(typescript@5.6.3) colorjs.io: 0.4.5 @@ -16725,14 +16727,14 @@ snapshots: '@inkeep/styled-system@0.0.46': {} - '@inkeep/widgets@0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@inkeep/widgets@0.2.289(@internationalized/date@3.5.2)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@apollo/client': 3.9.5(@types/react@18.2.78)(graphql-ws@5.14.3(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@inkeep/color-mode': 0.0.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@inkeep/preset': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@inkeep/styled-system': 0.0.46 '@types/lodash.isequal': 4.5.8 @@ -20061,9 +20063,9 @@ snapshots: dependencies: '@internationalized/date': 3.5.2 - '@zag-js/date-utils@0.19.1(@internationalized/date@3.5.6)': + '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.2)': dependencies: - '@internationalized/date': 3.5.6 + '@internationalized/date': 3.5.2 '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.6)': dependencies: From c650d0cc658303c86cc2539a7a7995d7bfd7d486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Thu, 7 Nov 2024 17:05:48 +0100 Subject: [PATCH 16/35] fix(core): filter unnecessary param before passing to session callback --- packages/core/src/adapters.ts | 1 + packages/core/src/index.ts | 24 +++++++++++++++--------- packages/core/src/lib/actions/session.ts | 5 +++-- packages/core/src/lib/init.ts | 5 ++++- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/packages/core/src/adapters.ts b/packages/core/src/adapters.ts index 43c4800870..41a2819ecc 100644 --- a/packages/core/src/adapters.ts +++ b/packages/core/src/adapters.ts @@ -215,6 +215,7 @@ export interface AdapterSession { * A randomly generated value that is used to look up the session in the database * when using `"database"` `AuthConfig.strategy` option. * This value is saved in a secure, HTTP-Only cookie on the client. + * @internal */ sessionToken: string /** Connects the active session to a user in the database */ diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 41380ef0ca..f14c5fbb0b 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -400,15 +400,21 @@ export interface AuthConfig { * ``` */ session?: ( - params: ({ - session: { user: AdapterUser } & AdapterSession - /** Available when {@link AuthConfig.session} is set to `strategy: "database"`. */ - user: AdapterUser - } & { - session: Session - /** Available when {@link AuthConfig.session} is set to `strategy: "jwt"` */ - token: JWT - }) & { + params: ( + | { + session: { user: AdapterUser } & Omit< + AdapterSession, + "sessionToken" + > + /** Available when {@link AuthConfig.session} is set to `strategy: "database"`. */ + user: AdapterUser + } + | { + session: Session + /** Available when {@link AuthConfig.session} is set to `strategy: "jwt"` */ + token: JWT + } + ) & { /** * Available when using {@link AuthConfig.session} `strategy: "database"` and an update is triggered for the session. * diff --git a/packages/core/src/lib/actions/session.ts b/packages/core/src/lib/actions/session.ts index 7ff6f7f357..b5af615bcf 100644 --- a/packages/core/src/lib/actions/session.ts +++ b/packages/core/src/lib/actions/session.ts @@ -100,7 +100,9 @@ export async function session( } if (userAndSession) { - const { user, session } = userAndSession + const { user, session: _session } = userAndSession + // We never really need to pass this to the user, so filtered off of the session object + const { sessionToken: _, ...session } = _session const sessionUpdateAge = options.session.updateAge // Calculate last updated date to throttle write updates to database @@ -125,7 +127,6 @@ export async function session( const sessionPayload = await callbacks.session({ // TODO: user already passed below, // remove from session object in https://github.com/nextauthjs/next-auth/pull/9702 - // @ts-expect-error session: { ...session, user }, user, newSession, diff --git a/packages/core/src/lib/init.ts b/packages/core/src/lib/init.ts index 9e8ca122f6..a8f59ad371 100644 --- a/packages/core/src/lib/init.ts +++ b/packages/core/src/lib/init.ts @@ -42,7 +42,10 @@ export const defaultCallbacks: InternalOptions["callbacks"] = { email: session.user?.email, image: session.user?.image, }, - expires: session.expires?.toISOString?.() ?? session.expires, + expires: + typeof session.expires === "string" + ? session.expires + : session.expires.toISOString(), } }, jwt({ token }) { From 4b01b466b1d65d36945c07f1ee1d4944b218113d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Thu, 7 Nov 2024 17:15:11 +0100 Subject: [PATCH 17/35] Revert "fix(core): filter unnecessary param before passing to session callback" This reverts commit c650d0cc658303c86cc2539a7a7995d7bfd7d486. --- packages/core/src/adapters.ts | 1 - packages/core/src/index.ts | 24 +++++++++--------------- packages/core/src/lib/actions/session.ts | 5 ++--- packages/core/src/lib/init.ts | 5 +---- 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/packages/core/src/adapters.ts b/packages/core/src/adapters.ts index 41a2819ecc..43c4800870 100644 --- a/packages/core/src/adapters.ts +++ b/packages/core/src/adapters.ts @@ -215,7 +215,6 @@ export interface AdapterSession { * A randomly generated value that is used to look up the session in the database * when using `"database"` `AuthConfig.strategy` option. * This value is saved in a secure, HTTP-Only cookie on the client. - * @internal */ sessionToken: string /** Connects the active session to a user in the database */ diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index f14c5fbb0b..41380ef0ca 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -400,21 +400,15 @@ export interface AuthConfig { * ``` */ session?: ( - params: ( - | { - session: { user: AdapterUser } & Omit< - AdapterSession, - "sessionToken" - > - /** Available when {@link AuthConfig.session} is set to `strategy: "database"`. */ - user: AdapterUser - } - | { - session: Session - /** Available when {@link AuthConfig.session} is set to `strategy: "jwt"` */ - token: JWT - } - ) & { + params: ({ + session: { user: AdapterUser } & AdapterSession + /** Available when {@link AuthConfig.session} is set to `strategy: "database"`. */ + user: AdapterUser + } & { + session: Session + /** Available when {@link AuthConfig.session} is set to `strategy: "jwt"` */ + token: JWT + }) & { /** * Available when using {@link AuthConfig.session} `strategy: "database"` and an update is triggered for the session. * diff --git a/packages/core/src/lib/actions/session.ts b/packages/core/src/lib/actions/session.ts index b5af615bcf..7ff6f7f357 100644 --- a/packages/core/src/lib/actions/session.ts +++ b/packages/core/src/lib/actions/session.ts @@ -100,9 +100,7 @@ export async function session( } if (userAndSession) { - const { user, session: _session } = userAndSession - // We never really need to pass this to the user, so filtered off of the session object - const { sessionToken: _, ...session } = _session + const { user, session } = userAndSession const sessionUpdateAge = options.session.updateAge // Calculate last updated date to throttle write updates to database @@ -127,6 +125,7 @@ export async function session( const sessionPayload = await callbacks.session({ // TODO: user already passed below, // remove from session object in https://github.com/nextauthjs/next-auth/pull/9702 + // @ts-expect-error session: { ...session, user }, user, newSession, diff --git a/packages/core/src/lib/init.ts b/packages/core/src/lib/init.ts index a8f59ad371..9e8ca122f6 100644 --- a/packages/core/src/lib/init.ts +++ b/packages/core/src/lib/init.ts @@ -42,10 +42,7 @@ export const defaultCallbacks: InternalOptions["callbacks"] = { email: session.user?.email, image: session.user?.image, }, - expires: - typeof session.expires === "string" - ? session.expires - : session.expires.toISOString(), + expires: session.expires?.toISOString?.() ?? session.expires, } }, jwt({ token }) { From a150f1e842fe44c068a9761c1f6e6d543c0f9d69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Sat, 16 Nov 2024 09:21:06 +0100 Subject: [PATCH 18/35] fix(core): vendor `cookie` until it has an ESM build (#12248) * fix(core): vendor `cookie` until it has an ESM build * change link --- packages/core/package.json | 1 - packages/core/src/jwt.ts | 2 +- packages/core/src/lib/utils/cookie.ts | 2 +- packages/core/src/lib/utils/web.ts | 2 +- packages/core/src/lib/vendored/cookie.ts | 383 +++++++++++++++++++++++ packages/core/src/types.ts | 2 +- pnpm-lock.yaml | 53 ++-- 7 files changed, 408 insertions(+), 37 deletions(-) create mode 100644 packages/core/src/lib/vendored/cookie.ts diff --git a/packages/core/package.json b/packages/core/package.json index 219604c66a..082a4ba0f1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -68,7 +68,6 @@ "license": "ISC", "dependencies": { "@panva/hkdf": "^1.2.1", - "cookie": "1.0.1", "jose": "^5.9.6", "oauth4webapi": "^3.1.1", "preact": "10.24.3", diff --git a/packages/core/src/jwt.ts b/packages/core/src/jwt.ts index 22b9bbd11a..fe93e12668 100644 --- a/packages/core/src/jwt.ts +++ b/packages/core/src/jwt.ts @@ -42,7 +42,7 @@ import { defaultCookies, SessionStore } from "./lib/utils/cookie.js" import { Awaitable } from "./types.js" import type { LoggerInstance } from "./lib/utils/logger.js" import { MissingSecret } from "./errors.js" -import * as cookie from "cookie" +import * as cookie from "./lib/vendored/cookie.js" const { parse: parseCookie } = cookie const DEFAULT_MAX_AGE = 30 * 24 * 60 * 60 // 30 days diff --git a/packages/core/src/lib/utils/cookie.ts b/packages/core/src/lib/utils/cookie.ts index f129a00c45..7932b37a09 100644 --- a/packages/core/src/lib/utils/cookie.ts +++ b/packages/core/src/lib/utils/cookie.ts @@ -7,7 +7,7 @@ import type { // Uncomment to recalculate the estimated size // of an empty session cookie -// import * as cookie from "cookie" +// import * as cookie from "../vendored/cookie.js" // const { serialize } = cookie // console.log( // "Cookie estimated to be ", diff --git a/packages/core/src/lib/utils/web.ts b/packages/core/src/lib/utils/web.ts index 047749016b..9e782978bb 100644 --- a/packages/core/src/lib/utils/web.ts +++ b/packages/core/src/lib/utils/web.ts @@ -1,4 +1,4 @@ -import * as cookie from "cookie" +import * as cookie from "../vendored/cookie.js" import { UnknownAction } from "../../errors.js" import { setLogger } from "./logger.js" diff --git a/packages/core/src/lib/vendored/cookie.ts b/packages/core/src/lib/vendored/cookie.ts new file mode 100644 index 0000000000..2e796e9ace --- /dev/null +++ b/packages/core/src/lib/vendored/cookie.ts @@ -0,0 +1,383 @@ +/** + * @source https://github.com/jshttp/cookie + * @author blakeembrey + * @license MIT + */ + +/** + * This is a workaround to support ESM-only environments, until `cookie` ships ESM builds. + * @see https://github.com/jshttp/cookie/issues/211 + */ + +/** + * RegExp to match cookie-name in RFC 6265 sec 4.1.1 + * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2 + * which has been replaced by the token definition in RFC 7230 appendix B. + * + * cookie-name = token + * token = 1*tchar + * tchar = "!" / "#" / "$" / "%" / "&" / "'" / + * "*" / "+" / "-" / "." / "^" / "_" / + * "`" / "|" / "~" / DIGIT / ALPHA + */ +const cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/ + +/** + * RegExp to match cookie-value in RFC 6265 sec 4.1.1 + * + * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + * ; US-ASCII characters excluding CTLs, + * ; whitespace DQUOTE, comma, semicolon, + * ; and backslash + */ +const cookieValueRegExp = + /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/ + +/** + * RegExp to match domain-value in RFC 6265 sec 4.1.1 + * + * domain-value = + * ; defined in [RFC1034], Section 3.5, as + * ; enhanced by [RFC1123], Section 2.1 + * =
diff --git a/docs/pages/getting-started/providers/loops.mdx b/docs/pages/getting-started/providers/loops.mdx new file mode 100644 index 0000000000..77a5672f38 --- /dev/null +++ b/docs/pages/getting-started/providers/loops.mdx @@ -0,0 +1,103 @@ +import { Callout } from "nextra/components" +import { Code } from "@/components/Code" + + + +# Loops Provider + +## Overview + +The Loops provider uses email to send "magic links" that contain URLs with verification tokens can be used to sign in. + +Adding support for signing in via email in addition to one or more OAuth services provides a way for users to sign in if they lose access to their OAuth account (e.g. if it is locked or deleted). + +The Loops provider can be used in conjunction with (or instead of) one or more OAuth providers. + +## How it works + +On initial sign in, a **Verification Token** is sent to the email address provided. By default this token is valid for 24 hours. If the Verification Token is used within that time (i.e. by clicking on the link in the email) an account is created for the user and they are signed in. + +If someone provides the email address of an _existing account_ when signing in, an email is sent and they are signed into the account associated with that email address when they follow the link in the email. + + + The Loops provider can be used with both JSON Web Token and database managed + sessions, however **you must configure a database** to use it. It is not + possible to enable email sign in without using a database. + + +## Configuration + +### Add and Verify your Domain on Loops + +First, you'll need to have completed the steps covered in the ['Start here'](https://loops.so/docs/start-here) Loops documentation. +The main thing required is to [set up your domain records](https://loops.so/docs/start-here#1-set-up-your-domain-records). + +### Generate an API Key + +Next, you will have to generate an API key in the [Loops Dashboard](https://loops.so/api-keys). You can save this API key as the `AUTH_LOOPS_KEY` environment variable. + +```sh +AUTH_LOOPS_KEY=abc +``` + +### Create a Transactional Email Template on Loops + +The easiest way to achieve this is using the [Loops email editor](https://loops.so/docs/creating-emails/editor) to create a transactional email template. +If you're new to Loops, you can find rich documentation [here](https://loops.so/docs/transactional/guide). + +
+Copy the Transactional ID value from the last page of the template creation +process, and save this as the `AUTH_LOOPS_TRANSACTIONAL_ID` environment +variable. If you're following these steps, you should now have two environment +variables set up for Loops. + +```sh +AUTH_LOOPS_KEY=abc +AUTH_LOOPS_TRANSACTIONAL_ID=def +``` + + + When creating your email template, make sure to include the `url` variable in + the template. This is the URL that will sent to the user, allowing them to + signin. + + + + +### Configure AuthJS with the Loops Provider +```ts filename="./auth.ts" +import NextAuth from "next-auth" +import Loops from "next-auth/providers/loops" + +export const { handlers, auth, signIn, signOut } = NextAuth({ + adapter: ..., // database adapter of your choosing + providers: [ + Loops({ + apiKey: process.env.AUTH_LOOPS_KEY, + transactionalId: process.env.AUTH_LOOPS_TRANSACTIONAL_ID, + }), + ], +}) +``` + + + +### Configure AuthJS with the Loops Provider +```ts filename="./src/auth.ts" +import { SvelteKitAuth } from "@auth/sveltekit" +import Loops from "@auth/sveltekit/providers/loops" +import { AUTH_LOOPS_KEY, AUTH_LOOPS_TRANSACTIONAL_ID } from "@env/static/private" + +export const { handle, signIn, signOut } = SvelteKitAuth({ + adapter: ..., // database adapter of your choosing + providers: [ + Loops({ + apiKey: AUTH_LOOPS_KEY, + transactionalId: AUTH_LOOPS_TRANSACTIONAL_ID, + }), + ], +}) +``` + + + diff --git a/docs/public/img/providers/loops.svg b/docs/public/img/providers/loops.svg new file mode 100644 index 0000000000..8f831f634d --- /dev/null +++ b/docs/public/img/providers/loops.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/core/src/providers/email.ts b/packages/core/src/providers/email.ts index d7b7d3998e..35bd306d77 100644 --- a/packages/core/src/providers/email.ts +++ b/packages/core/src/providers/email.ts @@ -23,21 +23,29 @@ export default function Email(config: NodemailerUserConfig): NodemailerConfig { } } +// TODO: Rename to Token provider +// when started working on https://github.com/nextauthjs/next-auth/discussions/1465 +export type EmailProviderType = "email" + +export type EmailProviderSendVerificationRequestParams = { + identifier: string + url: string + expires: Date + provider: EmailConfig + token: string + theme: Theme + request: Request +} + export interface EmailConfig extends CommonProviderOptions { id: string type: "email" name: string from?: string maxAge?: number - sendVerificationRequest: (params: { - identifier: string - url: string - expires: Date - provider: EmailConfig - token: string - theme: Theme - request: Request - }) => Awaitable + sendVerificationRequest: ( + params: EmailProviderSendVerificationRequestParams + ) => Awaitable /** Used to hash the verification token. */ secret?: string /** Used with HTTP-based email providers. */ diff --git a/packages/core/src/providers/loops.ts b/packages/core/src/providers/loops.ts new file mode 100644 index 0000000000..dd76fa1eb8 --- /dev/null +++ b/packages/core/src/providers/loops.ts @@ -0,0 +1,79 @@ +/** + *
+ * + * @module providers/loops + */ + +import type { EmailConfig, EmailUserConfig } from "./email.js" + +export type LoopsUserConfig = Omit, "options" | "type"> + +export interface LoopsConfig + extends Omit { + id: string + apiKey: string + transactionalId: string + sendVerificationRequest: (params: Params) => Promise + options: LoopsUserConfig +} + +type Params = Parameters[0] & { + provider: LoopsConfig +} + +/** + * + * @param config + * @returns LoopsConfig + * @requires LoopsUserConfig + * @example + * ```ts + * Loops({ + * apiKey: process.env.AUTH_LOOPS_KEY, + * transactionalId: process.env.AUTH_LOOPS_TRANSACTIONAL_ID, + * }) + * ``` + * + * @typedef LoopsUserConfig + */ + +export default function Loops(config: LoopsUserConfig): LoopsConfig { + return { + id: "loops", + apiKey: "", + type: "email", + name: "Loops", + from: "Auth.js ", + maxAge: 24 * 60 * 60, + transactionalId: config.transactionalId || "", + async sendVerificationRequest(params: Params) { + const { identifier: to, provider, url } = params + if (!provider.apiKey || !provider.transactionalId) + throw new TypeError("Missing Loops API Key or TransactionalId") + + const res = await fetch("https://app.loops.so/api/v1/transactional", { + method: "POST", + headers: { + Authorization: `Bearer ${provider.apiKey}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + transactionalId: provider.transactionalId, + email: to, + dataVariables: { + url: url, + }, + }), + }) + if (!res.ok) { + throw new Error("Loops Send Error: " + JSON.stringify(await res.json())) + } + }, + options: config, + } +} From c60cf7b514dcce78cb5204307fcc40ccac1992db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Fri, 29 Nov 2024 18:19:40 +0100 Subject: [PATCH 32/35] docs: Update index.tsx --- docs/components/Footer/index.tsx | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/docs/components/Footer/index.tsx b/docs/components/Footer/index.tsx index 3df4fb2fc6..3978a4ab8e 100644 --- a/docs/components/Footer/index.tsx +++ b/docs/components/Footer/index.tsx @@ -58,24 +58,6 @@ export function Footer({ className = "" }) { Discord Community -
  • - - Powered by - - Vercel - - - -
  • From 5fc548d96eff23f131cbcac8f6920a34194c1971 Mon Sep 17 00:00:00 2001 From: vytenisstaugaitis <30520456+vytenisstaugaitis@users.noreply.github.com> Date: Sat, 30 Nov 2024 12:02:53 +0200 Subject: [PATCH 33/35] chore(docs): fix clickup id (#12320) --- docs/pages/data/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/data/manifest.json b/docs/pages/data/manifest.json index bbeb72499f..b9bba6f916 100644 --- a/docs/pages/data/manifest.json +++ b/docs/pages/data/manifest.json @@ -62,7 +62,7 @@ "box": "Box", "boxyhq-saml": "BoxyHQ SAML", "bungie": "Bungie", - "clickup": "ClickUp", + "click-up": "ClickUp", "cognito": "Cognito", "coinbase": "Coinbase", "descope": "Descope", From b301c9cf55242e9064d91e0b87c4d60c9a88a011 Mon Sep 17 00:00:00 2001 From: Rik Smale <13023439+WikiRik@users.noreply.github.com> Date: Sat, 30 Nov 2024 11:03:40 +0100 Subject: [PATCH 34/35] fix(prisma): add support for prisma v6 (#12319) --- packages/adapter-prisma/package.json | 6 +- pnpm-lock.yaml | 263 ++++++++++++++------------- 2 files changed, 144 insertions(+), 125 deletions(-) diff --git a/packages/adapter-prisma/package.json b/packages/adapter-prisma/package.json index 484769c29b..4e78bc58ef 100644 --- a/packages/adapter-prisma/package.json +++ b/packages/adapter-prisma/package.json @@ -53,12 +53,12 @@ "@auth/core": "workspace:*" }, "peerDependencies": { - "@prisma/client": ">=2.26.0 || >=3 || >=4 || >=5" + "@prisma/client": ">=2.26.0 || >=3 || >=4 || >=5 || >=6" }, "devDependencies": { - "@prisma/client": "^5.20.0", + "@prisma/client": "^6.0.0", "@prisma/extension-accelerate": "1.1.0", "mongodb": "^6.9.0", - "prisma": "^5.20.0" + "prisma": "^6.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95ceb0cad8..cc553ae408 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,7 +66,7 @@ importers: version: 7.33.2(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)) + version: 2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3)) fake-smtp-server: specifier: ^0.8.0 version: 0.8.0 @@ -234,7 +234,7 @@ importers: version: 4.2.19 svelte-check: specifier: 2.10.2 - version: 2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19) + version: 2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19) typescript: specifier: 5.2.2 version: 5.2.2 @@ -246,7 +246,7 @@ importers: version: 0.4.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@inkeep/widgets': specifier: ^0.2.289 - version: 0.2.289(@internationalized/date@3.5.2)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + version: 0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) '@next/third-parties': specifier: ^14.2.15 version: 14.2.15(next@14.2.15(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1) @@ -313,7 +313,7 @@ importers: version: 1.22.0 tailwindcss: specifier: ^3.4.13 - version: 3.4.13(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3)) typedoc: specifier: ^0.25.13 version: 0.25.13(typescript@5.6.3) @@ -377,7 +377,7 @@ importers: version: 0.23.0 drizzle-orm: specifier: ^0.32.0 - version: 0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@opentelemetry/api@1.7.0)(@prisma/client@5.20.0)(@types/better-sqlite3@7.6.9)(@types/pg@8.11.0)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.3.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6))(kysely@0.24.2)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(react@18.3.1)(sqlite3@5.1.6) + version: 0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@opentelemetry/api@1.7.0)(@prisma/client@6.0.0(prisma@6.0.0))(@types/better-sqlite3@7.6.9)(@types/pg@8.11.0)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.6.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13)))(kysely@0.24.2)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(prisma@6.0.0)(react@18.3.1)(sqlite3@5.1.6(encoding@0.1.13)) libsql: specifier: ^0.3.18 version: 0.3.18 @@ -425,7 +425,7 @@ importers: version: 1.3.1 fauna-shell: specifier: 1.2.1 - version: 1.2.1(@swc/core@1.3.106)(@types/node@22.7.5)(encoding@0.1.13)(typescript@5.6.3) + version: 1.2.1(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(encoding@0.1.13)(typescript@5.6.3) packages/adapter-firebase: dependencies: @@ -496,7 +496,7 @@ importers: devDependencies: mongodb: specifier: ^6.0.0 - version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0)(socks@2.7.1) + version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1) packages/adapter-neo4j: dependencies: @@ -550,17 +550,17 @@ importers: version: link:../core devDependencies: '@prisma/client': - specifier: ^5.20.0 - version: 5.20.0(prisma@5.20.0) + specifier: ^6.0.0 + version: 6.0.0(prisma@6.0.0) '@prisma/extension-accelerate': specifier: 1.1.0 - version: 1.1.0(@prisma/client@5.20.0(prisma@5.20.0)) + version: 1.1.0(@prisma/client@6.0.0(prisma@6.0.0)) mongodb: specifier: ^6.9.0 - version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0)(socks@2.7.1) + version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1) prisma: - specifier: ^5.20.0 - version: 5.20.0 + specifier: ^6.0.0 + version: 6.0.0 packages/adapter-sequelize: dependencies: @@ -614,10 +614,10 @@ importers: version: 8.11.3 typeorm: specifier: 0.3.17 - version: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)) + version: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)) typeorm-naming-strategies: specifier: ^4.1.0 - version: 4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3))) + version: 4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3))) packages/adapter-unstorage: dependencies: @@ -3999,23 +3999,23 @@ packages: peerDependencies: prettier: ^3.0.0 - '@prisma/client@5.20.0': - resolution: {integrity: sha512-CLv55ZuMuUawMsxoqxGtLT3bEZoa2W8L3Qnp6rDIFWy+ZBrUcOFKdoeGPSnbBqxc3SkdxJrF+D1veN/WNynZYA==} - engines: {node: '>=16.13'} + '@prisma/client@6.0.0': + resolution: {integrity: sha512-tOBhG35ozqZ/5Y6B0TNOa6cwULUW8ijXqBXcgb12bfozqf6eGMyGs+jphywCsj6uojv5lAZZnxVSoLMVebIP+g==} + engines: {node: '>=18.18'} peerDependencies: prisma: '*' peerDependenciesMeta: prisma: optional: true - '@prisma/debug@5.20.0': - resolution: {integrity: sha512-oCx79MJ4HSujokA8S1g0xgZUGybD4SyIOydoHMngFYiwEwYDQ5tBQkK5XoEHuwOYDKUOKRn/J0MEymckc4IgsQ==} + '@prisma/debug@6.0.0': + resolution: {integrity: sha512-eUjoNThlDXdyJ1iQ2d7U6aTVwm59EwvODb5zFVNJEokNoSiQmiYWNzZIwZyDmZ+j51j42/0iTaHIJ4/aZPKFRg==} - '@prisma/engines-version@5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284': - resolution: {integrity: sha512-Lg8AS5lpi0auZe2Mn4gjuCg081UZf88k3cn0RCwHgR+6cyHHpttPZBElJTHf83ZGsRNAmVCZCfUGA57WB4u4JA==} + '@prisma/engines-version@5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e': + resolution: {integrity: sha512-JmIds0Q2/vsOmnuTJYxY4LE+sajqjYKhLtdOT6y4imojqv5d/aeVEfbBGC74t8Be1uSp0OP8lxIj2OqoKbLsfQ==} - '@prisma/engines@5.20.0': - resolution: {integrity: sha512-DtqkP+hcZvPEbj8t8dK5df2b7d3B8GNauKqaddRRqQBBlgkbdhJkxhoJTrOowlS3vaRt2iMCkU0+CSNn0KhqAQ==} + '@prisma/engines@6.0.0': + resolution: {integrity: sha512-ZZCVP3q22ifN6Ex6C8RIcTDBlRtMJS2H1ljV0knCiWNGArvvkEbE88W3uDdq/l4+UvyvHpGzdf9ZsCWSQR7ZQQ==} '@prisma/extension-accelerate@1.1.0': resolution: {integrity: sha512-sESjhBZ4ywQjAVpKzsfhxyNu+9txIM5I6M1MPBaJBq/xDlqmniIAhlwIEt9KLtO80zqPxqbZYes18zrkgYqNiQ==} @@ -4023,11 +4023,11 @@ packages: peerDependencies: '@prisma/client': '>=4.16.1' - '@prisma/fetch-engine@5.20.0': - resolution: {integrity: sha512-JVcaPXC940wOGpCOwuqQRTz6I9SaBK0c1BAyC1pcz9xBi+dzFgUu3G/p9GV1FhFs9OKpfSpIhQfUJE9y00zhqw==} + '@prisma/fetch-engine@6.0.0': + resolution: {integrity: sha512-j2m+iO5RDPRI7SUc7sHo8wX7SA4iTkJ+18Sxch8KinQM46YiCQD1iXKN6qU79C1Fliw5Bw/qDyTHaTsa3JMerA==} - '@prisma/get-platform@5.20.0': - resolution: {integrity: sha512-8/+CehTZZNzJlvuryRgc77hZCWrUDYd/PmlZ7p2yNXtmf2Una4BWnTbak3us6WVdqoz5wmptk6IhsXdG2v5fmA==} + '@prisma/get-platform@6.0.0': + resolution: {integrity: sha512-PS6nYyIm9g8C03E4y7LknOfdCw/t2KyEJxntMPQHQZCOUgOpF82Ma60mdlOD08w90I3fjLiZZ0+MadenR3naDQ==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -9340,12 +9340,10 @@ packages: libsql@0.3.18: resolution: {integrity: sha512-lvhKr7WV3NLWRbXkjn/MeKqXOAqWKU0PX9QYrvDh7fneukapj+iUQ4qgJASrQyxcCrEsClXCQiiK5W6OoYPAlA==} - cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] libsql@0.3.19: resolution: {integrity: sha512-Aj5cQ5uk/6fHdmeW0TiXK42FqUlwx7ytmMLPSaUQPin5HKKKuUPD62MAbN4OEweGBBI7q1BekoEN4gPUEL6MZA==} - cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] lil-fp@1.4.5: @@ -11121,9 +11119,9 @@ packages: peerDependencies: react: '>=16.0.0' - prisma@5.20.0: - resolution: {integrity: sha512-6obb3ucKgAnsGS9x9gLOe8qa51XxvJ3vLQtmyf52CTey1Qcez3A6W6ROH5HIz5Q5bW+0VpmZb8WBohieMFGpig==} - engines: {node: '>=16.13'} + prisma@6.0.0: + resolution: {integrity: sha512-RX7KtbW7IoEByf7MR32JK1PkVYLVYFqeODTtiIX3cqekq1aKdsF3Eud4zp2sUShMLjvdb5Jow0LbUjRq5LVxPw==} + engines: {node: '>=18.18'} hasBin: true prismjs@1.29.0: @@ -13853,7 +13851,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.2)': + '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.6)': dependencies: '@zag-js/accordion': 0.20.0 '@zag-js/anatomy': 0.20.0 @@ -13864,7 +13862,7 @@ snapshots: '@zag-js/color-utils': 0.20.0 '@zag-js/combobox': 0.20.0 '@zag-js/date-picker': 0.20.0 - '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.2) + '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.6) '@zag-js/dialog': 0.20.0 '@zag-js/editable': 0.20.0 '@zag-js/hover-card': 0.20.0 @@ -13890,7 +13888,7 @@ snapshots: transitivePeerDependencies: - '@internationalized/date' - '@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@zag-js/accordion': 0.19.1 '@zag-js/anatomy': 0.19.1 @@ -13902,7 +13900,7 @@ snapshots: '@zag-js/combobox': 0.19.1 '@zag-js/core': 0.19.1 '@zag-js/date-picker': 0.19.1 - '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.2) + '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.6) '@zag-js/dialog': 0.19.1 '@zag-js/editable': 0.19.1 '@zag-js/hover-card': 0.19.1 @@ -16676,11 +16674,11 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: - '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/preset': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) + '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@inkeep/styled-system': 0.0.44 '@pandacss/dev': 0.22.1(typescript@5.6.3) @@ -16692,9 +16690,9 @@ snapshots: - jsdom - typescript - '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)': + '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)': dependencies: - '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) + '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6) '@inkeep/shared': 0.0.25 '@pandacss/dev': 0.22.1(typescript@5.6.3) transitivePeerDependencies: @@ -16702,10 +16700,10 @@ snapshots: - jsdom - typescript - '@inkeep/preset@0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)': + '@inkeep/preset@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)': dependencies: - '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) + '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@pandacss/dev': 0.22.1(typescript@5.6.3) colorjs.io: 0.4.5 @@ -16720,14 +16718,14 @@ snapshots: '@inkeep/styled-system@0.0.46': {} - '@inkeep/widgets@0.2.289(@internationalized/date@3.5.2)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + '@inkeep/widgets@0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': dependencies: '@apollo/client': 3.9.5(@types/react@18.2.78)(graphql-ws@5.14.3(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@inkeep/color-mode': 0.0.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@inkeep/preset': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) - '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3) + '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) + '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3) '@inkeep/shared': 0.0.25 '@inkeep/styled-system': 0.0.46 '@types/lodash.isequal': 4.5.8 @@ -17342,7 +17340,7 @@ snapshots: supports-color: 8.1.1 tslib: 2.7.0 - '@oclif/core@2.15.0(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3)': + '@oclif/core@2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)': dependencies: '@types/cli-progress': 3.11.5 ansi-escapes: 4.3.2 @@ -17367,7 +17365,7 @@ snapshots: strip-ansi: 6.0.1 supports-color: 8.1.1 supports-hyperlinks: 2.3.0 - ts-node: 10.9.2(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) tslib: 2.7.0 widest-line: 3.1.0 wordwrap: 1.0.0 @@ -17388,19 +17386,19 @@ snapshots: '@oclif/linewrap@1.0.0': {} - '@oclif/plugin-help@5.2.20(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3)': + '@oclif/plugin-help@5.2.20(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)': dependencies: - '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' - '@types/node' - typescript - '@oclif/plugin-plugins@2.4.7(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3)': + '@oclif/plugin-plugins@2.4.7(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)': dependencies: '@oclif/color': 1.0.13 - '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) chalk: 4.1.2 debug: 4.3.7(supports-color@8.1.1) fs-extra: 9.1.0 @@ -17754,34 +17752,34 @@ snapshots: prettier: 3.3.3 pug-lexer: 5.0.1 - '@prisma/client@5.20.0(prisma@5.20.0)': + '@prisma/client@6.0.0(prisma@6.0.0)': optionalDependencies: - prisma: 5.20.0 + prisma: 6.0.0 - '@prisma/debug@5.20.0': {} + '@prisma/debug@6.0.0': {} - '@prisma/engines-version@5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284': {} + '@prisma/engines-version@5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e': {} - '@prisma/engines@5.20.0': + '@prisma/engines@6.0.0': dependencies: - '@prisma/debug': 5.20.0 - '@prisma/engines-version': 5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284 - '@prisma/fetch-engine': 5.20.0 - '@prisma/get-platform': 5.20.0 + '@prisma/debug': 6.0.0 + '@prisma/engines-version': 5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e + '@prisma/fetch-engine': 6.0.0 + '@prisma/get-platform': 6.0.0 - '@prisma/extension-accelerate@1.1.0(@prisma/client@5.20.0(prisma@5.20.0))': + '@prisma/extension-accelerate@1.1.0(@prisma/client@6.0.0(prisma@6.0.0))': dependencies: - '@prisma/client': 5.20.0(prisma@5.20.0) + '@prisma/client': 6.0.0(prisma@6.0.0) - '@prisma/fetch-engine@5.20.0': + '@prisma/fetch-engine@6.0.0': dependencies: - '@prisma/debug': 5.20.0 - '@prisma/engines-version': 5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284 - '@prisma/get-platform': 5.20.0 + '@prisma/debug': 6.0.0 + '@prisma/engines-version': 5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e + '@prisma/get-platform': 6.0.0 - '@prisma/get-platform@5.20.0': + '@prisma/get-platform@6.0.0': dependencies: - '@prisma/debug': 5.20.0 + '@prisma/debug': 6.0.0 '@protobufjs/aspromise@1.1.2': optional: true @@ -19843,11 +19841,6 @@ snapshots: dependencies: tslib: 2.7.0 - '@xata.io/client@0.28.0(typescript@5.3.3)': - dependencies: - typescript: 5.3.3 - optional: true - '@xata.io/client@0.28.0(typescript@5.6.3)': dependencies: typescript: 5.6.3 @@ -20056,9 +20049,9 @@ snapshots: dependencies: '@internationalized/date': 3.5.2 - '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.2)': + '@zag-js/date-utils@0.19.1(@internationalized/date@3.5.6)': dependencies: - '@internationalized/date': 3.5.2 + '@internationalized/date': 3.5.6 '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.6)': dependencies: @@ -22230,22 +22223,23 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@opentelemetry/api@1.7.0)(@prisma/client@5.20.0)(@types/better-sqlite3@7.6.9)(@types/pg@8.11.0)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.3.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6))(kysely@0.24.2)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(react@18.3.1)(sqlite3@5.1.6): + drizzle-orm@0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@opentelemetry/api@1.7.0)(@prisma/client@6.0.0(prisma@6.0.0))(@types/better-sqlite3@7.6.9)(@types/pg@8.11.0)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.6.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13)))(kysely@0.24.2)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(prisma@6.0.0)(react@18.3.1)(sqlite3@5.1.6(encoding@0.1.13)): optionalDependencies: '@cloudflare/workers-types': 4.20240117.0 '@libsql/client': 0.6.0 '@opentelemetry/api': 1.7.0 - '@prisma/client': 5.20.0(prisma@5.20.0) + '@prisma/client': 6.0.0(prisma@6.0.0) '@types/better-sqlite3': 7.6.9 '@types/pg': 8.11.0 '@types/react': 18.2.78 - '@xata.io/client': 0.28.0(typescript@5.3.3) + '@xata.io/client': 0.28.0(typescript@5.6.3) better-sqlite3: 9.6.0 knex: 2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13)) kysely: 0.24.2 mysql2: 3.9.7 pg: 8.11.3 postgres: 3.4.3 + prisma: 6.0.0 react: 18.3.1 sqlite3: 5.1.6(encoding@0.1.13) @@ -22657,7 +22651,7 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.10 - eslint-plugin-svelte@2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)): + eslint-plugin-svelte@2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) '@jridgewell/sourcemap-codec': 1.5.0 @@ -22667,7 +22661,7 @@ snapshots: esutils: 2.0.3 known-css-properties: 0.30.0 postcss: 8.4.47 - postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)) + postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3)) postcss-safe-parser: 6.0.0(postcss@8.4.47) postcss-selector-parser: 6.0.16 semver: 7.6.3 @@ -23029,12 +23023,12 @@ snapshots: dependencies: format: 0.2.2 - fauna-shell@1.2.1(@swc/core@1.3.106)(@types/node@22.7.5)(encoding@0.1.13)(typescript@5.6.3): + fauna-shell@1.2.1(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(encoding@0.1.13)(typescript@5.6.3): dependencies: '@inquirer/prompts': 3.3.2 - '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3) - '@oclif/plugin-help': 5.2.20(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3) - '@oclif/plugin-plugins': 2.4.7(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/plugin-help': 5.2.20(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/plugin-plugins': 2.4.7(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) chalk: 4.1.2 cli-table: 0.3.11 cli-ux: 4.9.3 @@ -23365,7 +23359,7 @@ snapshots: wide-align: 1.1.5 optional: true - gaxios@5.1.3: + gaxios@5.1.3(encoding@0.1.13): dependencies: extend: 3.0.2 https-proxy-agent: 5.0.1 @@ -23388,9 +23382,9 @@ snapshots: - supports-color optional: true - gcp-metadata@5.3.0: + gcp-metadata@5.3.0(encoding@0.1.13): dependencies: - gaxios: 5.1.3 + gaxios: 5.1.3(encoding@0.1.13) json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -25946,14 +25940,14 @@ snapshots: '@types/whatwg-url': 11.0.4 whatwg-url: 13.0.0 - mongodb@6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0)(socks@2.7.1): + mongodb@6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1): dependencies: '@mongodb-js/saslprep': 1.1.9 bson: 6.8.0 mongodb-connection-string-url: 3.0.0 optionalDependencies: '@aws-sdk/credential-providers': 3.499.0 - gcp-metadata: 5.3.0 + gcp-metadata: 5.3.0(encoding@0.1.13) socks: 2.7.1 morgan@1.10.0: @@ -26813,30 +26807,30 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.47 - postcss-load-config@3.1.4(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)): + postcss-load-config@3.1.4(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.3.3) + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3) - postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3)): dependencies: lilconfig: 3.1.1 yaml: 2.3.4 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.3.3) - optional: true + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3) - postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)): dependencies: lilconfig: 3.1.1 yaml: 2.3.4 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2) + optional: true postcss-merge-rules@6.1.1(postcss@8.4.47): dependencies: @@ -27142,9 +27136,9 @@ snapshots: clsx: 1.2.1 react: 18.3.1 - prisma@5.20.0: + prisma@6.0.0: dependencies: - '@prisma/engines': 5.20.0 + '@prisma/engines': 6.0.0 optionalDependencies: fsevents: 2.3.3 @@ -28619,7 +28613,7 @@ snapshots: - bufferutil - utf-8-validate - svelte-check@2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19): + svelte-check@2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -28628,7 +28622,7 @@ snapshots: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.19 - svelte-preprocess: 4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5) + svelte-preprocess: 4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' @@ -28668,7 +28662,7 @@ snapshots: dependencies: svelte: 4.2.19 - svelte-preprocess@4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5): + svelte-preprocess@4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5): dependencies: '@types/pug': 2.0.10 '@types/sass': 1.45.0 @@ -28680,7 +28674,7 @@ snapshots: optionalDependencies: '@babel/core': 7.23.9 postcss: 8.4.47 - postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2)) pug: 3.0.2 sass: 1.70.0 typescript: 5.4.5 @@ -28729,7 +28723,7 @@ snapshots: tabbable@6.2.0: {} - tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3)): + tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -28748,7 +28742,7 @@ snapshots: 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)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3)) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3)) postcss-nested: 6.0.1(postcss@8.4.47) postcss-selector-parser: 6.0.16 resolve: 1.22.8 @@ -28967,27 +28961,28 @@ snapshots: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 - ts-node@10.9.2(@swc/core@1.3.106)(@types/node@22.7.5)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.7.5 + '@types/node': 20.12.7 acorn: 8.12.1 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.3 + typescript: 5.3.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: '@swc/core': 1.3.106(@swc/helpers@0.5.13) + optional: true - ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3): + ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@20.12.7)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -29001,30 +28996,54 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 + typescript: 5.6.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.106(@swc/helpers@0.5.13) optional: true - ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.2.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.7 + '@types/node': 22.7.5 acorn: 8.12.1 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.3 + typescript: 5.2.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.106(@swc/helpers@0.5.13) optional: true + ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.7.5 + acorn: 8.12.1 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.106(@swc/helpers@0.5.13) + ts-pattern@5.0.5: {} tsconfck@2.1.2(typescript@5.6.3): @@ -29165,11 +29184,11 @@ snapshots: shiki: 0.14.7 typescript: 5.6.3 - typeorm-naming-strategies@4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3))): + typeorm-naming-strategies@4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3))): dependencies: - typeorm: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)) + typeorm: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)) - typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)): + typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3)): dependencies: '@sqltools/formatter': 1.2.5 app-root-path: 3.1.0 @@ -29193,7 +29212,7 @@ snapshots: pg: 8.11.3 redis: 4.6.12 sqlite3: 5.1.6(encoding@0.1.13) - ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.3.3) + ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.13))(@types/node@22.7.5)(typescript@5.6.3) transitivePeerDependencies: - supports-color From 2922e286ae7ffb7b8be42603bdb5fe2029504960 Mon Sep 17 00:00:00 2001 From: Bill Bond <66650377+wmbond@users.noreply.github.com> Date: Sat, 30 Nov 2024 04:07:07 -0600 Subject: [PATCH 35/35] chore(docs): update index.mdx typo (#12323) Update index.mdx minor language change ("but you can create your own...") --- docs/pages/getting-started/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/getting-started/index.mdx b/docs/pages/getting-started/index.mdx index 874efb1b4d..ceee02642a 100644 --- a/docs/pages/getting-started/index.mdx +++ b/docs/pages/getting-started/index.mdx @@ -51,7 +51,7 @@ Select your framework of choice to get started, or view the example application
    -Check the [integrations page](/getting-started/integrations) for all supported packages. We are working on supporting more frameworks, but you can create own or +Check the [integrations page](/getting-started/integrations) for all supported packages. We are working on supporting more frameworks, but you can create your own or help us create one for your favorite framework.