From d77b97c9fca59c10c475cacd15c7c248ff90088b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Mon, 20 Mar 2023 23:34:47 +0100 Subject: [PATCH] add/fix CI build --- .eslintignore | 3 + docs-nextra/.eslintrc | 3 + docs-nextra/.gitignore | 1 + docs-nextra/components/marquee.jsx | 2 +- docs-nextra/next-env.d.ts | 5 + docs-nextra/package.json | 7 +- docs-nextra/pages/{_app.jsx => _app.mdx} | 2 +- docs-nextra/pages/_document.jsx | 8 +- .../reference/configuration/auth-config.mdx | 461 ------------------ .../pages/reference/configuration/env.mdx | 40 -- .../pages/reference/oauth-providers/42.mdx | 40 -- .../pages/reference/oauth-providers/apple.mdx | 139 ------ .../reference/oauth-providers/atlassian.mdx | 54 -- .../pages/reference/oauth-providers/auth0.mdx | 41 -- .../reference/oauth-providers/authentik.mdx | 37 -- .../oauth-providers/azure-ad-b2c.mdx | 119 ----- .../reference/oauth-providers/azure-ad.mdx | 61 --- .../reference/oauth-providers/battlenet.md | 46 -- .../pages/reference/oauth-providers/box.md | 34 -- .../reference/oauth-providers/boxyhq-saml.md | 58 --- .../reference/oauth-providers/bungie.mdx | 139 ------ .../reference/oauth-providers/cognito.mdx | 51 -- .../reference/oauth-providers/coinbase.mdx | 40 -- .../reference/oauth-providers/discord.md | 34 -- .../reference/oauth-providers/dropbox.md | 34 -- .../reference/oauth-providers/eveonline.mdx | 56 --- .../reference/oauth-providers/facebook.mdx | 44 -- .../pages/reference/oauth-providers/faceit.md | 38 -- .../reference/oauth-providers/foursquare.mdx | 41 -- .../reference/oauth-providers/freshbooks.md | 34 -- .../reference/oauth-providers/fusionauth.mdx | 61 --- .../reference/oauth-providers/github.mdx | 48 -- .../reference/oauth-providers/gitlab.mdx | 40 -- .../reference/oauth-providers/google.mdx | 95 ---- .../oauth-providers/identity-server4.mdx | 63 --- .../reference/oauth-providers/instagram.mdx | 52 -- .../pages/reference/oauth-providers/kakao.md | 40 -- .../reference/oauth-providers/keycloak.mdx | 43 -- .../pages/reference/oauth-providers/line.mdx | 49 -- .../reference/oauth-providers/linkedin.md | 38 -- .../reference/oauth-providers/mailchimp.md | 34 -- .../pages/reference/oauth-providers/mailru.md | 34 -- .../reference/oauth-providers/mattermost.md | 36 -- .../reference/oauth-providers/medium.mdx | 40 -- .../pages/reference/oauth-providers/naver.md | 34 -- .../reference/oauth-providers/netlify.md | 34 -- .../pages/reference/oauth-providers/okta.md | 31 -- .../reference/oauth-providers/onelogin.md | 35 -- .../pages/reference/oauth-providers/osso.mdx | 49 -- .../pages/reference/oauth-providers/osu.mdx | 40 -- .../reference/oauth-providers/patreon.mdx | 42 -- .../reference/oauth-providers/pipedrive.md | 30 -- .../reference/oauth-providers/reddit.mdx | 75 --- .../reference/oauth-providers/salesforce.md | 30 -- .../pages/reference/oauth-providers/slack.mdx | 43 -- .../reference/oauth-providers/spotify.md | 34 -- .../pages/reference/oauth-providers/strava.md | 30 -- .../reference/oauth-providers/todoist.md | 35 -- .../pages/reference/oauth-providers/trakt.mdx | 43 -- .../pages/reference/oauth-providers/twitch.md | 36 -- .../reference/oauth-providers/twitter.mdx | 64 --- .../oauth-providers/united-effects.mdx | 45 -- .../pages/reference/oauth-providers/vk.mdx | 59 --- .../reference/oauth-providers/wordpress.mdx | 40 -- .../pages/reference/oauth-providers/workos.md | 103 ---- .../pages/reference/oauth-providers/yandex.md | 34 -- .../pages/reference/oauth-providers/zoho.md | 34 -- .../pages/reference/oauth-providers/zoom.md | 34 -- docs-nextra/tsconfig.json | 35 ++ package.json | 5 +- pnpm-lock.yaml | 456 ++++++++++++++++- turbo.json | 13 +- 72 files changed, 494 insertions(+), 3394 deletions(-) create mode 100644 docs-nextra/.eslintrc create mode 100644 docs-nextra/.gitignore create mode 100644 docs-nextra/next-env.d.ts rename docs-nextra/pages/{_app.jsx => _app.mdx} (69%) delete mode 100644 docs-nextra/pages/reference/configuration/auth-config.mdx delete mode 100644 docs-nextra/pages/reference/configuration/env.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/42.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/apple.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/atlassian.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/auth0.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/authentik.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/azure-ad-b2c.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/azure-ad.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/battlenet.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/box.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/boxyhq-saml.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/bungie.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/cognito.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/coinbase.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/discord.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/dropbox.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/eveonline.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/facebook.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/faceit.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/foursquare.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/freshbooks.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/fusionauth.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/github.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/gitlab.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/google.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/identity-server4.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/instagram.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/kakao.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/keycloak.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/line.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/linkedin.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/mailchimp.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/mailru.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/mattermost.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/medium.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/naver.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/netlify.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/okta.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/onelogin.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/osso.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/osu.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/patreon.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/pipedrive.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/reddit.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/salesforce.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/slack.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/spotify.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/strava.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/todoist.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/trakt.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/twitch.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/twitter.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/united-effects.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/vk.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/wordpress.mdx delete mode 100644 docs-nextra/pages/reference/oauth-providers/workos.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/yandex.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/zoho.md delete mode 100644 docs-nextra/pages/reference/oauth-providers/zoom.md create mode 100644 docs-nextra/tsconfig.json diff --git a/.eslintignore b/.eslintignore index 32343497..ef23c282 100644 --- a/.eslintignore +++ b/.eslintignore @@ -27,6 +27,9 @@ docs/docs/reference/core docs/docs/reference/sveltekit static +# TODO: Enable +docs-nextra + # --------------- Packages --------------- coverage diff --git a/docs-nextra/.eslintrc b/docs-nextra/.eslintrc new file mode 100644 index 00000000..0e81f9b9 --- /dev/null +++ b/docs-nextra/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} \ No newline at end of file diff --git a/docs-nextra/.gitignore b/docs-nextra/.gitignore new file mode 100644 index 00000000..e985853e --- /dev/null +++ b/docs-nextra/.gitignore @@ -0,0 +1 @@ +.vercel diff --git a/docs-nextra/components/marquee.jsx b/docs-nextra/components/marquee.jsx index ca2ebc06..c6bd7744 100644 --- a/docs-nextra/components/marquee.jsx +++ b/docs-nextra/components/marquee.jsx @@ -33,7 +33,7 @@ function MarqueeItem({ name, width, height }) { setReset(true) }, (1000 * (width - offset)) / duration) - 2000 return () => clearTimeout(timeout) - }, [duration, width]) + }, [duration, width, offset]) const offset = Math.random() * width return ( +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/docs-nextra/package.json b/docs-nextra/package.json index 54c7aeda..ede829ac 100644 --- a/docs-nextra/package.json +++ b/docs-nextra/package.json @@ -15,9 +15,9 @@ "dependencies": { "@codesandbox/sandpack-react": "^2.0.6", "framer-motion": "^8.4.3", - "next": "13.1.1", - "nextra": "^2.2.5", - "nextra-theme-docs": "^2.2.5", + "next": "13.2.4", + "nextra": "^2.2.19", + "nextra-theme-docs": "^2.2.19", "react": "^18.2.0", "react-dom": "^18.2.0", "remark-link-rewrite": "^1.0.6", @@ -26,6 +26,7 @@ }, "devDependencies": { "autoprefixer": "^10.4.13", + "eslint-config-next": "^13.2.4", "postcss": "^8.4.21", "tailwindcss": "^3.2.4" } diff --git a/docs-nextra/pages/_app.jsx b/docs-nextra/pages/_app.mdx similarity index 69% rename from docs-nextra/pages/_app.jsx rename to docs-nextra/pages/_app.mdx index a3e4be5f..ad6ab63b 100644 --- a/docs-nextra/pages/_app.jsx +++ b/docs-nextra/pages/_app.mdx @@ -1,5 +1,5 @@ import "../styles/index.css" export default function NextraApp({ Component, pageProps }) { - return ( ) + return } diff --git a/docs-nextra/pages/_document.jsx b/docs-nextra/pages/_document.jsx index b465ccd5..2c8866da 100644 --- a/docs-nextra/pages/_document.jsx +++ b/docs-nextra/pages/_document.jsx @@ -1,5 +1,5 @@ -import Document, { Html, Head, Main, NextScript } from "next/document"; -import { SkipNavLink } from "nextra-theme-docs"; +import Document, { Html, Head, Main, NextScript } from "next/document" +import { SkipNavLink } from "nextra-theme-docs" class MyDocument extends Document { render() { @@ -12,8 +12,8 @@ class MyDocument extends Document { - ); + ) } } -export default MyDocument; +export default MyDocument diff --git a/docs-nextra/pages/reference/configuration/auth-config.mdx b/docs-nextra/pages/reference/configuration/auth-config.mdx deleted file mode 100644 index a78b7929..00000000 --- a/docs-nextra/pages/reference/configuration/auth-config.mdx +++ /dev/null @@ -1,461 +0,0 @@ ---- -title: Initialization ---- - -import { Callout } from "nextra-theme-docs" - -## Options - -Options are passed to Auth.js when initializing it in a server environment like a Next.js API Route. - -### providers - -- **Default value**: `[]` -- **Required**: _Yes_ - -#### Description - -An array of authentication providers for signing in (e.g. Google, Facebook, Twitter, GitHub, Email, etc) in any order. This can be one of the built-in providers or an object with a custom provider. - -Refer to the list of [all available Oauth providers](/reference/providers/oauth-builtin) and the [Oauth tutorial](/getting-started/oauth-tutorial) on how to use them. - ---- - -### secret - -- **Default value**: `string` (_SHA hash of the "options" object_) in development, no default in production. -- **Required**: _Yes, in production!_ - -#### Description - -A random string is used to hash tokens, sign/encrypt cookies and generate cryptographic keys. - -If you set [`NEXTAUTH_SECRET`](#nextauth_secret) as an environment variable, you don't have to define this option. - -If no value specified specified in development (and there is no `NEXTAUTH_SECRET` variable either), it uses a hash for all configuration options, including OAuth Client ID / Secrets for entropy. - - - Not providing any `secret` or `NEXTAUTH_SECRET` will throw [an - error](/reference/errors#no_secret) in production. - - -You can quickly create a good value on the command line via this `openssl` command. - -```bash -$ openssl rand -base64 32 -``` - - - If you rely on the default secret generation in development, you might notice - JWT decryption errors, since the secret changes whenever you change your - configuration. Defining an explicit secret will make this problem go away. We - will likely make this option mandatory, even in development, in the future. - - ---- - -### session - -- **Default value**: `object` -- **Required**: _No_ - -#### Description - -The `session` object and all properties on it are optional. - -Default values for this option are shown below: - -```js -session: { - // Choose how you want to save the user session. - // The default is `"jwt"`, an encrypted JWT (JWE) stored in the session cookie. - // If you use an `adapter` however, we default it to `"database"` instead. - // You can still force a JWT session by explicitly defining `"jwt"`. - // When using `"database"`, the session cookie will only contain a `sessionToken` value, - // which is used to look up the session in the database. - strategy: "database", - - // Seconds - How long until an idle session expires and is no longer valid. - maxAge: 30 * 24 * 60 * 60, // 30 days - - // Seconds - Throttle how frequently to write to database to extend a session. - // Use it to limit write operations. Set to 0 to always update the database. - // Note: This option is ignored if using JSON Web Tokens - updateAge: 24 * 60 * 60, // 24 hours -} -``` - ---- - -### jwt - -- **Default value**: `object` -- **Required**: _No_ - -#### Description - -JSON Web Tokens can be used for session tokens if enabled with `session: { strategy: "jwt" }` option. JSON Web Tokens are enabled by default if you have not specified an adapter. JSON Web Tokens are encrypted (JWE) by default. We recommend you keep this behaviour. See the [Override JWT `encode` and `decode` methods](#override-jwt-encode-and-decode-methods) advanced option. - -#### JSON Web Token Options - -```js -jwt: { - // The maximum age of the Auth.js issued JWT in seconds. - // Defaults to `session.maxAge`. - maxAge: 60 * 60 * 24 * 30, - // You can define your own encode/decode functions for signing and encryption - async encode() {}, - async decode() {}, -} -``` - -An example JSON Web Token contains a payload like this: - -```js -{ - name: 'Iain Collins', - email: 'me@iaincollins.com', - picture: 'https://example.com/image.jpg', - iat: 1594601838, - exp: 1597193838 -} -``` - -#### JWT Helper - -You can use the built-in `getToken()` helper method to verify and decrypt the token, like this: - -```js -import { getToken } from "next-auth/jwt" - -const secret = process.env.NEXTAUTH_SECRET - -export default async function handler(req, res) { - // if using `NEXTAUTH_SECRET` env variable, we detect it, and you won't actually need to `secret` - // const token = await getToken({ req }) - const token = await getToken({ req, secret }) - console.log("JSON Web Token", token) - res.end() -} -``` - -_For convenience, this helper function is also able to read and decode tokens passed from the `Authorization: 'Bearer token'` HTTP header._ - -**Required** - -The getToken() helper requires the following options: - -- `req` - (object) Request object -- `secret` - (string) JWT Secret. Use `NEXTAUTH_SECRET` instead. - -You must also pass _any options configured on the `jwt` option_ to the helper. - -e.g. Including custom session `maxAge` and custom signing and/or encryption keys or options - -**Optional** - -It also supports the following options: - -- `secureCookie` - (boolean) Use secure prefixed cookie name - - By default, the helper function will attempt to determine if it should use the secure prefixed cookie (e.g. `true` in production and `false` in development, unless NEXTAUTH_URL contains an HTTPS URL). - -- `cookieName` - (string) Session token cookie name - - The `secureCookie` option is ignored if `cookieName` is explicitly specified. - -- `raw` - (boolean) Get raw token (not decoded) - - If set to `true` returns the raw token without decrypting or verifying it. - - - The JWT is stored in the Session Token cookie, the same cookie used for tokens - with database sessions. - - ---- - -### pages - -- **Default value**: `{}` -- **Required**: _No_ - -#### Description - -Specify URLs to be used if you want to create custom sign in, sign out and error pages. - -Pages specified will override the corresponding built-in page. - -_For example:_ - -```js -pages: { - signIn: '/auth/signin', - signOut: '/auth/signout', - error: '/auth/error', // Error code passed in query string as ?error= - verifyRequest: '/auth/verify-request', // (used for check email message) - newUser: '/auth/new-user' // New users will be directed here on first sign in (leave the property out if not of interest) -} -``` - - - When using this configuration, ensure that these pages actually exist. For - example `error: '/auth/error'` refers to a page file at `pages/auth/error.js`. - - -See the documentation for the [creating custom pages guide](/guides/basics/pages) for more information. - ---- - -### callbacks - -- **Default value**: `object` -- **Required**: _No_ - -#### Description - -Callbacks are asynchronous functions you can use to control what happens when an action is performed. - -Callbacks are extremely powerful, especially in scenarios involving JSON Web Tokens as they allow you to implement access controls without a database and to integrate with external databases or APIs. - -You can specify a handler for any of the callbacks below. - -```js -callbacks: { - async signIn({ user, account, profile, email, credentials }) { - return true - }, - async redirect({ url, baseUrl }) { - return baseUrl - }, - async session({ session, token, user }) { - return session - }, - async jwt({ token, user, account, profile, isNewUser }) { - return token - } -} -``` - -See [our callbacks guide](/guides/basics/callbacks) for more information on how to use the callback functions. - ---- - -### events - -- **Default value**: `object` -- **Required**: _No_ - -#### Description - -Events are asynchronous functions that do not return a response, they are useful for audit logging. - -You can specify a handler for any of these events below - e.g. for debugging or to create an audit log. - -The content of the message object varies depending on the flow (e.g. OAuth or Email authentication flow, JWT or database sessions, etc). See the [events guide](/guides/basics/events) for more information on the form of each message object and how to use the events functions. - -```js -events: { - async signIn(message) { /* on successful sign in */ }, - async signOut(message) { /* on signout */ }, - async createUser(message) { /* user created */ }, - async updateUser(message) { /* user updated - e.g. their email was verified */ }, - async linkAccount(message) { /* account (e.g. Twitter) linked to a user */ }, - async session(message) { /* session is active */ }, -} -``` - ---- - -### adapter - -- **Default value**: none -- **Required**: _No_ - -#### Description - -By default Auth.js does not include an adapter any longer. If you would like to persist user / account data, please install one of the many available adapters. More information can be found in the [adapter documentation](/reference/adapters/overview). - ---- - -### debug - -- **Default value**: `false` -- **Required**: _No_ - -#### Description - -Set debug to `true` to enable debug messages for authentication and database operations. - ---- - -### logger - -- **Default value**: `console` -- **Required**: _No_ - -#### Description - -Override any of the logger levels (`undefined` levels will use the built-in logger), and intercept logs in NextAuth. You can use this to send NextAuth logs to a third-party logging service. - -The `code` parameter for `error` and `warn` are explained in the [Warnings](/reference/warnings) and [Errors](/reference/errors) pages respectively. - -Example: - -```js title="/pages/api/auth/[...nextauth].js" -import log from "logging-service" - -export default NextAuth({ - ... - logger: { - error(code, metadata) { - log.error(code, metadata) - }, - warn(code) { - log.warn(code) - }, - debug(code, metadata) { - log.debug(code, metadata) - } - } - ... -}) -``` - - - If the `debug` level is defined by the user, it will be called regardless of - the `debug: false` [option](#debug). - - ---- - -### theme - -- **Default value**: `object` -- **Required**: _No_ - -#### Description - -Changes the color scheme theme of [pages](/reference/configuration/auth-config#pages) as well as allows some minor customization. Set `theme.colorScheme` to `"light"`, if you want to force pages to always be light. Set to `"dark"`, if you want to force pages to always be dark. Set to `"auto"`, (or leave this option out) if you want the pages to follow the preferred system theme. (Uses the [prefers-color-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme) media query.) - -In addition, you can define a logo URL in `theme.logo` which will be rendered above the main card in the default signin/signout/error/verify-request pages, as well as a `theme.brandColor` which will affect the accent color of these pages. - -```js -theme: { - colorScheme: "auto", // "auto" | "dark" | "light" - brandColor: "", // Hex color code - logo: "" // Absolute URL to image -} -``` - ---- - -## Advanced Options - -Advanced options are passed the same way as basic options, but may have complex implications or side effects. You should try to avoid using advanced options unless you are very comfortable using them. - ---- - -### useSecureCookies - -- **Default value**: `true` for HTTPS sites / `false` for HTTP sites -- **Required**: _No_ - -#### Description - -When set to `true` (the default for all site URLs that start with `https://`) then all cookies set by Auth.js will only be accessible from HTTPS URLs. - -This option defaults to `false` on URLs that start with `http://` (e.g. `http://localhost:3000`) for developer convenience. - - - Properties on any custom `cookies` that are specified override this option. - - - - Setting this option to _false_ in production is a security risk and may allow - sessions to be hijacked if used in production. It is intended to support - development and testing. Using this option is not recommended. - - ---- - -### cookies - -- **Default value**: `{}` -- **Required**: _No_ - -#### Description - -Cookies in Auth.js are chunked by default, meaning that once they reach the 4kb limit, we will create a new cookie with the `.{number}` suffix and reassemble the cookies in the correct order when parsing / reading them. This was introduced to avoid size constraints which can occur when users want to store additional data in their sessionToken, for example. - -You can override the default cookie names and options for any of the cookies used by Auth.js. - -This is an advanced option and using it is not recommended as you may break authentication or introduce security flaws into your application. - -You can specify one or more cookies with custom properties, but if you specify custom options for a cookie you must provide all the options for that cookie. - -If you use this feature, you will likely want to create conditional behaviour to support setting different cookies policies in development and production builds, as you will be opting out of the built-in dynamic policy. - - - An example of a use case for this option is to support sharing session tokens - across subdomains. - - -#### Example - -```js -cookies: { - sessionToken: { - name: `__Secure-next-auth.session-token`, - options: { - httpOnly: true, - sameSite: 'lax', - path: '/', - secure: true - } - }, - callbackUrl: { - name: `__Secure-next-auth.callback-url`, - options: { - sameSite: 'lax', - path: '/', - secure: true - } - }, - csrfToken: { - name: `__Host-next-auth.csrf-token`, - options: { - httpOnly: true, - sameSite: 'lax', - path: '/', - secure: true - } - }, - pkceCodeVerifier: { - name: `${cookiePrefix}next-auth.pkce.code_verifier`, - options: { - httpOnly: true, - sameSite: 'lax', - path: '/', - secure: useSecureCookies, - maxAge: 900 - } - }, - state: { - name: `${cookiePrefix}next-auth.state`, - options: { - httpOnly: true, - sameSite: "lax", - path: "/", - secure: useSecureCookies, - maxAge: 900 - }, - }, -} -``` - - - Using a custom cookie policy may introduce security flaws into your - application and is intended as an option for advanced users who understand the - implications. Using this option is not recommended. - diff --git a/docs-nextra/pages/reference/configuration/env.mdx b/docs-nextra/pages/reference/configuration/env.mdx deleted file mode 100644 index 8d113485..00000000 --- a/docs-nextra/pages/reference/configuration/env.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Environment variables -sidebar_label: Environment Variables ---- - -import { Callout } from "nextra-theme-docs" - -## NEXTAUTH_URL - -When deploying to production, set the `NEXTAUTH_URL` environment variable to the canonical URL of your site. - -``` -NEXTAUTH_URL=https://example.com -``` - -If your Next.js application uses a custom base path, specify the route to the API endpoint in full. - -_e.g. `NEXTAUTH_URL=https://example.com/custom-route/api/auth`_ - - -Using [System Environment Variables](https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables) we automatically detect when you deploy to [Vercel](https://vercel.com) so you don't have to define this variable. Make sure **Automatically expose System Environment Variables** is checked in your Project Settings. - - ---- - -## NEXTAUTH_SECRET - -Used to encrypt the Auth.js JWT, and to hash [email verification tokens](/reference/adapters/models#verification-token). This is the default value for the [`secret`](/reference/configuration/auth-config#secret) option. The `secret` option might be removed in the future in favor of this. - -If you are using [Middleware](/reference/nextjs/#prerequisites) this environment variable must be set. - ---- - -## NEXTAUTH_URL_INTERNAL - -If provided, server-side calls will use this instead of `NEXTAUTH_URL`. Useful in environments when the server doesn't have access to the canonical URL of your site. Defaults to `NEXTAUTH_URL`. - -``` -NEXTAUTH_URL_INTERNAL=http://10.240.8.16 -``` diff --git a/docs-nextra/pages/reference/oauth-providers/42.mdx b/docs-nextra/pages/reference/oauth-providers/42.mdx deleted file mode 100644 index 8dc33930..00000000 --- a/docs-nextra/pages/reference/oauth-providers/42.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: 42-school -title: 42 School ---- - -import { Callout } from "nextra-theme-docs" - - -42 returns a field on `Account` called `created_at` which is a number. See the [docs](https://api.intra.42.fr/apidoc/guides/getting_started#make-basic-requests). Make sure to add this field to your database schema, in case if you are using an [Adapter](/reference/adapters/overview). - - -## Documentation - -https://api.intra.42.fr/apidoc/guides/web_application_flow - -## Configuration - -https://profile.intra.42.fr/oauth/applications/new - -## Options - -The **42 School Provider** comes with a set of default options: - -- [42 School Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/42-school.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import FortyTwoProvider from "next-auth/providers/42-school"; -... -providers: [ - FortyTwoProvider({ - clientId: process.env.FORTY_TWO_CLIENT_ID, - clientSecret: process.env.FORTY_TWO_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/apple.mdx b/docs-nextra/pages/reference/oauth-providers/apple.mdx deleted file mode 100644 index d6b54647..00000000 --- a/docs-nextra/pages/reference/oauth-providers/apple.mdx +++ /dev/null @@ -1,139 +0,0 @@ ---- -id: apple -title: Apple ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://developer.apple.com/sign-in-with-apple/get-started/ - -## Configuration - -https://developer.apple.com/account/resources/identifiers/list/serviceId - -## Options - -The **Apple Provider** comes with a set of default options: - -- [Apple Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/apple.ts) - -You can override any of the options to suit your own use case. - -### Generating a secret - -Apple requires the client secret to be a JWT. To generate one, you can use the following script: https://bal.so/apple-gen-secret. - -For more information, see the [Apple docs](https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens#3262048) - -Then, you can paste the result into your `.env.local` file under `APPLE_SECRET`, so you can refer to it from your code: - -```js -import AppleProvider from "next-auth/providers/apple"; -... -providers: [ - AppleProvider({ - clientId: process.env.APPLE_ID, - clientSecret: process.env.APPLE_SECRET - }) -] -... -``` - - -The TeamID is located on the top right after logging in. - - - -The KeyID is located after you create the key. Look for it before you download the k8 file. - - -## Testing on a development server - - -Apple requires all sites to run HTTPS (including local development instances). - - - -Apple doesn't allow you to use localhost in domains or subdomains. - - -### Host name resolution - -Edit your host file and point your site to `127.0.0.1`. - -_Linux/macOS_ - -``` -sudo echo '127.0.0.1 dev.example.com' >> /etc/hosts -``` - -_Windows_ (run PowerShell as administrator) - -```ps -Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "127.0.0.1 dev.example.com" -Force -``` - -More info: [How to edit my host file?](https://phoenixnap.com/kb/how-to-edit-hosts-file-in-windows-mac-or-linux) - -### Create certificate - -Create a directory `certificates` and add the certificate files `localhost.key` and `localhost.crt`, which you generate using OpenSSL: - -_Linux/macOS_ - -```bash -openssl req -x509 -out localhost.crt -keyout localhost.key \ - -newkey rsa:2048 -nodes -sha256 \ - -subj "/CN=localhost" -extensions EXT -config <( \ - printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth") -``` - -_Windows_ - -The OpenSSL executable is distributed with [Git](https://git-scm.com/download/win) for Windows. Once installed you will find the openssl.exe file in `C:\Program Files\Git\mingw64\bin`, which you can add to the system PATH environment variable if it’s not already done. - -Add environment variable `OPENSSL_CONF=C:\Program Files\Git\mingw64\ssl\openssl.cnf` - -```cmd - req -x509 -out localhost.crt -keyout localhost.key \ - -newkey rsa:2048 -nodes -sha256 \ - -subj "/CN=localhost" -``` - -### Deploy to server - -You can create a `server.js` in the root of your project and run it with `node server.js` to test Sign in with Apple integration locally: - -```js -const { createServer } = require("https") -const { parse } = require("url") -const next = require("next") -const fs = require("fs") - -const dev = process.env.NODE_ENV !== "production" -const app = next({ dev }) -const handle = app.getRequestHandler() - -const httpsOptions = { - key: fs.readFileSync("./certificates/localhost.key"), - cert: fs.readFileSync("./certificates/localhost.crt"), -} - -app.prepare().then(() => { - createServer(httpsOptions, (req, res) => { - const parsedUrl = parse(req.url, true) - handle(req, res, parsedUrl) - }).listen(3000, (err) => { - if (err) throw err - console.log("> Ready on https://localhost:3000") - }) -}) -``` - -### Helpful guides - -- [How to setup localhost with HTTPS with a Next.js app](https://medium.com/@anMagpie/secure-your-local-development-server-with-https-next-js-81ac6b8b3d68) - -- [Guide to configuring Sign in with Apple](https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple) diff --git a/docs-nextra/pages/reference/oauth-providers/atlassian.mdx b/docs-nextra/pages/reference/oauth-providers/atlassian.mdx deleted file mode 100644 index cd680bbd..00000000 --- a/docs-nextra/pages/reference/oauth-providers/atlassian.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: atlassian -title: Atlassian ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://developer.atlassian.com/cloud/jira/platform/oauth-2-authorization-code-grants-3lo-for-apps/#implementing-oauth-2-0--3lo- - -## Options - -The **Atlassian Provider** comes with a set of default options: - -- [Atlassian Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/atlassian.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import AtlassianProvider from "next-auth/providers/atlassian"; -... -providers: [ - AtlassianProvider({ - clientId: process.env.ATLASSIAN_CLIENT_ID, - clientSecret: process.env.ATLASSIAN_CLIENT_SECRET, - authorization: { - params: { - scope: "write:jira-work read:jira-work read:jira-user offline_access read:me" - } - } - }) -] -... -``` - -## Instructions - -### Configuration - - -An app can be created at https://developer.atlassian.com/apps/ - - -Under "Apis and features" in the side menu, configure the following for "OAuth 2.0 (3LO)": - -- Redirect URL - - http://localhost:3000/api/auth/callback/atlassian - - -To enable access to Jira Platform REST API you must enable User Identity API and add `read:me` to your provider scope option. - diff --git a/docs-nextra/pages/reference/oauth-providers/auth0.mdx b/docs-nextra/pages/reference/oauth-providers/auth0.mdx deleted file mode 100644 index f869cfb8..00000000 --- a/docs-nextra/pages/reference/oauth-providers/auth0.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: auth0 -title: Auth0 ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://auth0.com/docs/api/authentication#authorize-application - -## Configuration - -https://manage.auth0.com/dashboard - -## Options - -The **Auth0 Provider** comes with a set of default options: - -- [Auth0 Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/auth0.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import Auth0Provider from "next-auth/providers/auth0"; -... -providers: [ - Auth0Provider({ - clientId: process.env.AUTH0_CLIENT_ID, - clientSecret: process.env.AUTH0_CLIENT_SECRET, - issuer: process.env.AUTH0_ISSUER - }) -] -... -``` - - -`issuer` should be the fully qualified URL – e.g. `https://dev-s6clz2lv.eu.auth0.com` - diff --git a/docs-nextra/pages/reference/oauth-providers/authentik.mdx b/docs-nextra/pages/reference/oauth-providers/authentik.mdx deleted file mode 100644 index 988ca776..00000000 --- a/docs-nextra/pages/reference/oauth-providers/authentik.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -id: authentik -title: Authentik ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://goauthentik.io/docs/providers/oauth2 - -## Options - -The **Authentik Provider** comes with a set of default options: - -- [Authentik Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/authentik.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import AuthentikProvider from "next-auth/providers/authentik"; -... -providers: [ - AuthentikProvider({ - clientId: process.env.AUTHENTIK_ID, - clientSecret: process.env.AUTHENTIK_SECRET, - issuer: process.env.AUTHENTIK_ISSUER, - }) -] -... -``` - - -`issuer` should include the slug without a trailing slash – e.g., `https://my-authentik-domain.com/application/o/My_Slug` - diff --git a/docs-nextra/pages/reference/oauth-providers/azure-ad-b2c.mdx b/docs-nextra/pages/reference/oauth-providers/azure-ad-b2c.mdx deleted file mode 100644 index 23f1916d..00000000 --- a/docs-nextra/pages/reference/oauth-providers/azure-ad-b2c.mdx +++ /dev/null @@ -1,119 +0,0 @@ ---- -id: azure-ad-b2c -title: Azure Active Directory B2C ---- - -import { Callout } from "nextra-theme-docs" - - -Azure AD B2C returns the following fields on `Account`: - -- `refresh_token_expires_in` (number) -- `not_before` (number) -- `id_token_expires_in` (number) -- `profile_info` (string). - -See their [docs](https://docs.microsoft.com/en-us/azure/active-directory-b2c/access-tokens). Remember to add these fields to your database schema, in case if you are using an [Adapter](/reference/adapters/overview). - - -## Documentation - -https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow - -## Configuration - -https://docs.microsoft.com/azure/active-directory-b2c/tutorial-create-tenant - -## Options - -The **Azure Active Directory Provider** comes with a set of default options: - -- [Azure Active Directory Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/azure-ad-b2c.ts) - -You can override any of the options to suit your own use case. - -## Configuration (Basic) - -Basic configuration sets up Azure AD B2C to return an ID Token. This should be done as a prerequisite prior to running through the Advanced configuration. - -Step 1: Azure AD B2C Tenant -https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant - -Step 2: App Registration -https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-register-applications - -Step 3: User Flow -https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-user-flows - -Note: For the step "User attributes and token claims" you might minimally: - -- Collect attribute: - - Email Address - - Display Name - - Given Name - - Surname -- Return claim: - - Email Addresses - - Display Name - - Given Name - - Surname - - Identity Provider - - Identity Provider Access Token - - User's Object ID - -## Example - -In `.env.local` create the following entries: - -``` -AZURE_AD_B2C_TENANT_NAME= -AZURE_AD_B2C_CLIENT_ID= -AZURE_AD_B2C_CLIENT_SECRET= -AZURE_AD_B2C_PRIMARY_USER_FLOW= -``` - -In `pages/api/auth/[...nextauth].js` find or add the AZURE_AD_B2C entries: - -```js -import AzureADB2CProvider from "next-auth/providers/azure-ad-b2c"; -... -providers: [ - AzureADB2CProvider({ - tenantId: process.env.AZURE_AD_B2C_TENANT_NAME, - clientId: process.env.AZURE_AD_B2C_CLIENT_ID, - clientSecret: process.env.AZURE_AD_B2C_CLIENT_SECRET, - primaryUserFlow: process.env.AZURE_AD_B2C_PRIMARY_USER_FLOW, - authorization: { params: { scope: "offline_access openid" } }, - }), -] -... -``` - -## Configuration (Advanced) - -Advanced configuration sets up Azure AD B2C to return an Authorization Token. This builds on the steps completed in the Basic configuration above. - -Step 4: Add a Web API application -https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-single-page-app-webapi?tabs=app-reg-ga - -Note: this is a second app registration (similar to Step 2) but with different setup and configuration. - -## Example - -Nothing in `.env.local` needs to change here. The only update is in `pages/api/auth/[...nextauth].js` where you will need to add the additional scopes that were created in Step 4 above: - -```js -import AzureADB2CProvider from "next-auth/providers/azure-ad-b2c"; -... -providers: [ - AzureADB2CProvider({ - tenantId: process.env.AZURE_AD_B2C_TENANT_NAME, - clientId: process.env.AZURE_AD_B2C_CLIENT_ID, - clientSecret: process.env.AZURE_AD_B2C_CLIENT_SECRET, - primaryUserFlow: process.env.AZURE_AD_B2C_PRIMARY_USER_FLOW, - authorization: { params: { scope: `https://${process.env.AZURE_AD_B2C_TENANT_NAME}.onmicrosoft.com/api/demo.read https://${process.env.AZURE_AD_B2C_TENANT_NAME}.onmicrosoft.com/api/demo.write offline_access openid` } }, - }), -] -... - -``` diff --git a/docs-nextra/pages/reference/oauth-providers/azure-ad.mdx b/docs-nextra/pages/reference/oauth-providers/azure-ad.mdx deleted file mode 100644 index e1e4d0bf..00000000 --- a/docs-nextra/pages/reference/oauth-providers/azure-ad.mdx +++ /dev/null @@ -1,61 +0,0 @@ ---- -id: azure-ad -title: Azure Active Directory ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow - -## Configuration - -https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app - -## Example - -### To allow specific Active Directory users access: - -- In https://portal.azure.com/ search for "Azure Active Directory", and select your organization. -- Next, go to "App Registration" in the left menu, and create a new one. -- Pay close attention to "Who can use this application or access this API?" - - This allows you to scope access to specific types of user accounts - - Only your tenant, all azure tenants, or all azure tenants and public Microsoft accounts (Skype, Xbox, Outlook.com, etc.) -- When asked for a redirection URL, use `https://yourapplication.com/api/auth/callback/azure-ad` or for development `http://localhost:3000/api/auth/callback/azure-ad`. -- After your App Registration is created, under "Client Credential" create your Client secret. -- Now copy your: - - Application (client) ID - - Directory (tenant) ID - - Client secret (value) - -In `.env.local` create the following entries: - -``` -AZURE_AD_CLIENT_ID= -AZURE_AD_CLIENT_SECRET= -AZURE_AD_TENANT_ID= -``` - -That will default the tenant to use the `common` authorization endpoint. [For more details see here](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols#endpoints). - - -Azure AD returns the profile picture in an ArrayBuffer, instead of just a URL to the image, so our provider converts it to a base64 encoded image string and returns that instead. See: https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0#examples. The default image size is 48x48 to avoid [running out of space](https://authjs.dev/concepts/faq#:~:text=What%20are%20the%20disadvantages%20of%20JSON%20Web%20Tokens%3F) in case the session is saved as a JWT. - - -In `pages/api/auth/[...nextauth].js` find or add the `AzureAD` entries: - -```js -import AzureADProvider from "next-auth/providers/azure-ad"; - -... -providers: [ - AzureADProvider({ - clientId: process.env.AZURE_AD_CLIENT_ID, - clientSecret: process.env.AZURE_AD_CLIENT_SECRET, - tenantId: process.env.AZURE_AD_TENANT_ID, - }), -] -... - -``` diff --git a/docs-nextra/pages/reference/oauth-providers/battlenet.md b/docs-nextra/pages/reference/oauth-providers/battlenet.md deleted file mode 100644 index 69af1b00..00000000 --- a/docs-nextra/pages/reference/oauth-providers/battlenet.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -id: battle.net -title: Battle.net ---- - -## Documentation - -https://develop.battle.net/documentation/guides/using-oauth - -## Configuration - -https://develop.battle.net/access/clients - -## Options - -The **Battle.net Provider** comes with a set of default options: - -- [Battle.net Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/battlenet.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import BattleNetProvider from "next-auth/providers/battlenet"; -... -providers: [ - BattleNetProvider({ - clientId: process.env.BATTLENET_CLIENT_ID, - clientSecret: process.env.BATTLENET_CLIENT_SECRET, - issuer: process.env.BATTLENET_ISSUER - }) -] -... -``` - -`issuer` must be one of these values, based on the [available regions](https://develop.battle.net/documentation/guides/regionality-and-apis): - -```ts -type BattleNetIssuer = - | "https://www.battlenet.com.cn/oauth" - | "https://us.battle.net/oauth" - | "https://eu.battle.net/oauth" - | "https://kr.battle.net/oauth" - | "https://tw.battle.net/oauth" -``` diff --git a/docs-nextra/pages/reference/oauth-providers/box.md b/docs-nextra/pages/reference/oauth-providers/box.md deleted file mode 100644 index c7ce0c9e..00000000 --- a/docs-nextra/pages/reference/oauth-providers/box.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: box -title: Box ---- - -## Documentation - -https://developer.box.com/reference/ - -## Configuration - -https://developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/configure-box/ - -## Options - -The **Box Provider** comes with a set of default options: - -- [Box Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/box.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import BoxProvider from "next-auth/providers/box"; -... -providers: [ - BoxProvider({ - clientId: process.env.BOX_CLIENT_ID, - clientSecret: process.env.BOX_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/boxyhq-saml.md b/docs-nextra/pages/reference/oauth-providers/boxyhq-saml.md deleted file mode 100644 index a2e67570..00000000 --- a/docs-nextra/pages/reference/oauth-providers/boxyhq-saml.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -id: boxyhq-saml -title: BoxyHQ SAML ---- - -## Documentation - -BoxyHQ SAML is an open source service that handles the SAML login flow as an OAuth 2.0 flow, abstracting away all the complexities of the SAML protocol. - -You can deploy BoxyHQ SAML as a separate service or embed it into your app using our NPM library. [Check out the documentation for more details](https://boxyhq.com/docs/jackson/deploy) - -## Configuration - -SAML login requires a configuration for every tenant of yours. One common method is to use the domain for an email address to figure out which tenant they belong to. You can also use a unique tenant ID (string) from your backend for this, typically some kind of account or organization ID. - -Check out the [documentation](https://boxyhq.com/docs/jackson/saml-flow#2-saml-config-api) for more details. - -## Options - -The **BoxyHQ SAML Provider** comes with a set of default options: - -- [BoxyHQ Provider options](https://github.com/nextauthjs/next-auth/tree/main/packages/next-auth/src/providers/boxyhq-saml.ts) - -You can override any of the options to suit your own use case. - -## Example - -```ts -import BoxyHQSAMLProvider from "next-auth/providers/boxyhq-saml" -... -providers: [ - BoxyHQSAMLProvider({ - issuer: "http://localhost:5225", - clientId: "dummy", // The dummy here is necessary since we'll pass tenant and product custom attributes in the client code - clientSecret: "dummy", // The dummy here is necessary since we'll pass tenant and product custom attributes in the client code - }) -} -... -``` - -On the client side you'll need to pass additional parameters `tenant` and `product` to the `signIn` function. This will allow BoxyHQL SAML to figure out the right SAML configuration and take your user to the right SAML Identity Provider to sign them in. - -```tsx -import { signIn } from "next-auth/react"; -... - - // Map your users's email to a tenant and product - const tenant = email.split("@")[1]; - const product = 'my_awesome_product'; -... - -... -``` - - -Email address is not returned by the Instagram API. - - - -Instagram display app required callback URL to be configured in your Facebook app and Facebook required you to use **https** even for localhost! In order to do that, you either need to [add an SSL to your localhost](https://www.freecodecamp.org/news/how-to-get-https-working-on-your-local-development-environment-in-5-minutes-7af615770eec/) or use a proxy such as [ngrok](https://ngrok.com/docs). - diff --git a/docs-nextra/pages/reference/oauth-providers/kakao.md b/docs-nextra/pages/reference/oauth-providers/kakao.md deleted file mode 100644 index c309058c..00000000 --- a/docs-nextra/pages/reference/oauth-providers/kakao.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: kakao -title: Kakao ---- - -## Documentation - -https://developers.kakao.com/product/kakaoLogin - -## Configuration - -https://developers.kakao.com/docs/latest/en/kakaologin/common - -## Options - -The **Kakao Provider** comes with a set of default options: - -- [Kakao Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/kakao.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import KakaoProvider from "next-auth/providers/kakao"; -... -providers: [ - KakaoProvider({ - clientId: process.env.KAKAO_CLIENT_ID, - clientSecret: process.env.KAKAO_CLIENT_SECRET - }) -] -... -``` - -## Instructions - -### Configuration - -Create a provider and a Kakao application at `https://developers.kakao.com/console/app`. In the settings of the app under Kakao Login, activate web app, change consent items and configure callback URL. diff --git a/docs-nextra/pages/reference/oauth-providers/keycloak.mdx b/docs-nextra/pages/reference/oauth-providers/keycloak.mdx deleted file mode 100644 index f0768b38..00000000 --- a/docs-nextra/pages/reference/oauth-providers/keycloak.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: keycloak -title: Keycloak ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://www.keycloak.org/docs/latest/server_admin/#_oidc_clients - -## Configuration - - -Create an openid-connect client in Keycloak with "confidential" as the "Access Type". - - -## Options - -The **Keycloak Provider** comes with a set of default options: - -- [Keycloak Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/keycloak.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import KeycloakProvider from "next-auth/providers/keycloak"; -... -providers: [ - KeycloakProvider({ - clientId: process.env.KEYCLOAK_ID, - clientSecret: process.env.KEYCLOAK_SECRET, - issuer: process.env.KEYCLOAK_ISSUER, - }) -] -... -``` - - -`issuer` should include the realm – e.g. `https://my-keycloak-domain.com/realms/My_Realm` - diff --git a/docs-nextra/pages/reference/oauth-providers/line.mdx b/docs-nextra/pages/reference/oauth-providers/line.mdx deleted file mode 100644 index 9e136cc9..00000000 --- a/docs-nextra/pages/reference/oauth-providers/line.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -id: line -title: LINE ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://developers.line.biz/en/docs/line-login/integrate-line-login/ - -## Configuration - -https://developers.line.biz/console/ - -## Options - -The **Line Provider** comes with a set of default options: - -- [Line Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/line.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import LineProvider from "next-auth/providers/line"; -... -providers: [ - LineProvider({ - clientId: process.env.LINE_CLIENT_ID, - clientSecret: process.env.LINE_CLIENT_SECRET - }) -] -... -``` - -## Instructions - -### Configuration - -Create a provider and a LINE login channel at `https://developers.line.biz/console/`. In the settings of the channel under LINE Login, activate web app and configure the following: - -- Callback URL - - http://localhost:3000/api/auth/callback/line - - -To retrieve email address, you need to apply for Email address permission. Open [Line Developer Console](https://developers.line.biz/console/), go to your Login Channel. Scroll down bottom to find **OpenID Connect** -> **Email address permission**. Click **Apply** and follow the instruction. - diff --git a/docs-nextra/pages/reference/oauth-providers/linkedin.md b/docs-nextra/pages/reference/oauth-providers/linkedin.md deleted file mode 100644 index 2efe3b81..00000000 --- a/docs-nextra/pages/reference/oauth-providers/linkedin.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -id: linkedin -title: LinkedIn ---- - -## Documentation - -https://docs.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow - -## Configuration - -https://www.linkedin.com/developers/apps/ - -From the Auth tab get the client ID and client secret. On the same tab, add redirect URLs such as http://localhost:3000/api/auth/callback/linkedin so LinkedIn can correctly redirect back to your application. Finally, head over to the Products tab and enable the "Sign In with LinkedIn" product. The LinkedIn team will review and approve your request before you can test it out. - -![image](https://user-images.githubusercontent.com/330396/114429603-68195600-9b72-11eb-8311-62e58383c42b.png) - -## Options - -The **LinkedIn Provider** comes with a set of default options: - -- [LinkedIn Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/linkedin.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import LinkedInProvider from "next-auth/providers/linkedin"; -... -providers: [ - LinkedInProvider({ - clientId: process.env.LINKEDIN_CLIENT_ID, - clientSecret: process.env.LINKEDIN_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/mailchimp.md b/docs-nextra/pages/reference/oauth-providers/mailchimp.md deleted file mode 100644 index 833279ff..00000000 --- a/docs-nextra/pages/reference/oauth-providers/mailchimp.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: mailchimp -title: Mailchimp ---- - -## Documentation - -https://mailchimp.com/developer/marketing/guides/access-user-data-oauth-2/ - -## Configuration - -https://admin.mailchimp.com/account/oauth2/client/ - -## Options - -The **Mailchimp Provider** comes with a set of default options: - -- [Mailchimp Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/mailchimp.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import MailchimpProvider from "next-auth/providers/mailchimp"; -... -providers: [ - MailchimpProvider({ - clientId: process.env.MAILCHIMP_CLIENT_ID, - clientSecret: process.env.MAILCHIMP_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/mailru.md b/docs-nextra/pages/reference/oauth-providers/mailru.md deleted file mode 100644 index 306b91b5..00000000 --- a/docs-nextra/pages/reference/oauth-providers/mailru.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: mailru -title: Mail.ru ---- - -## Documentation - -https://o2.mail.ru/docs - -## Configuration - -https://o2.mail.ru/app/ - -## Options - -The **Mail.ru Provider** comes with a set of default options: - -- [Mail.ru Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/mailru.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import MailRuProvider from "next-auth/providers/mailru"; -... -providers: [ - MailRuProvider({ - clientId: process.env.MAILRU_CLIENT_ID, - clientSecret: process.env.MAILRU_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/mattermost.md b/docs-nextra/pages/reference/oauth-providers/mattermost.md deleted file mode 100644 index b10d6c86..00000000 --- a/docs-nextra/pages/reference/oauth-providers/mattermost.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: mattermost -title: Mattermost ---- - -## Documentation - -https://developers.mattermost.com/integrate/apps/authentication/oauth2 - -## Configuration - -http://my-cool-server.cloud.mattermost.com/mycoolteam/integrations/oauth2-apps - -## Options - -The **Mattermost provider** comes with a set of default options: - -- [Mattermost Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/mattermost.ts) - -You can override any of the options to suit your own use case. - -## Example - -```ts -import Mattermost from "@auth/core/providers/mattermost"; -... -providers: [ - Mattermost({ - // The base url of your Mattermost instance. e.g https://my-cool-server.cloud.mattermost.com - clientId: env.MATTERMOST_ID, - clientSecret: env.MATTERMOST_SECRET, - issuer: env.MATTERMOST_ISSUER, - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/medium.mdx b/docs-nextra/pages/reference/oauth-providers/medium.mdx deleted file mode 100644 index 6d5fbab1..00000000 --- a/docs-nextra/pages/reference/oauth-providers/medium.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: medium -title: Medium ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://github.com/Medium/medium-api-docs - -## Configuration - -https://medium.com/me/applications - -## Options - -The **Medium Provider** comes with a set of default options: - -- [Medium Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/medium.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import MediumProvider from "next-auth/providers/medium"; -... -providers: [ - MediumProvider({ - clientId: process.env.MEDIUM_CLIENT_ID, - clientSecret: process.env.MEDIUM_CLIENT_SECRET - }) -} -... -``` - - -Email address is not returned by the Medium API. - diff --git a/docs-nextra/pages/reference/oauth-providers/naver.md b/docs-nextra/pages/reference/oauth-providers/naver.md deleted file mode 100644 index 8e9e39eb..00000000 --- a/docs-nextra/pages/reference/oauth-providers/naver.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: naver -title: Naver ---- - -## Documentation - -https://developers.naver.com/docs/login/overview/overview.md - -## Configuration - -https://developers.naver.com/docs/login/api/api.md - -## Options - -The **Naver Provider** comes with a set of default options: - -- [Naver Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/naver.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import NaverProvider from "next-auth/providers/naver"; -... -providers: [ - NaverProvider({ - clientId: process.env.NAVER_CLIENT_ID, - clientSecret: process.env.NAVER_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/netlify.md b/docs-nextra/pages/reference/oauth-providers/netlify.md deleted file mode 100644 index eb55b639..00000000 --- a/docs-nextra/pages/reference/oauth-providers/netlify.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: netlify -title: Netlify ---- - -## Documentation - -https://www.netlify.com/blog/2016/10/10/integrating-with-netlify-oauth2/ - -## Configuration - -https://github.com/netlify/netlify-oauth-example - -## Options - -The **Netlify Provider** comes with a set of default options: - -- [Netlify Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/netlify.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import NetlifyProvider from "next-auth/providers/netlify"; -... -providers: [ - NetlifyProvider({ - clientId: process.env.NETLIFY_CLIENT_ID, - clientSecret: process.env.NETLIFY_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/okta.md b/docs-nextra/pages/reference/oauth-providers/okta.md deleted file mode 100644 index 4f7bec98..00000000 --- a/docs-nextra/pages/reference/oauth-providers/okta.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -id: okta -title: Okta ---- - -## Documentation - -https://developer.okta.com/docs/reference/api/oidc - -## Options - -The **Okta Provider** comes with a set of default options: - -- [Okta Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/okta.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import OktaProvider from "next-auth/providers/okta"; -... -providers: [ - OktaProvider({ - clientId: process.env.OKTA_CLIENT_ID, - clientSecret: process.env.OKTA_CLIENT_SECRET, - issuer: process.env.OKTA_ISSUER - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/onelogin.md b/docs-nextra/pages/reference/oauth-providers/onelogin.md deleted file mode 100644 index 236e6266..00000000 --- a/docs-nextra/pages/reference/oauth-providers/onelogin.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: onelogin -title: OneLogin ---- - -## Documentation - -https://developers.onelogin.com/openid-connect - -## Configuration - -https://developers.onelogin.com/openid-connect/connect-to-onelogin - -## Options - -The **OneLogin Provider** comes with a set of default options: - -- [OneLogin Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/onelogin.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import OneLoginProvider from "next-auth/providers/onelogin"; -... -providers: [ - OneLoginProvider({ - clientId: process.env.ONELOGIN_CLIENT_ID, - clientSecret: process.env.ONELOGIN_CLIENT_SECRET, - issuer: process.env.ONELOGIN_ISSUER - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/osso.mdx b/docs-nextra/pages/reference/oauth-providers/osso.mdx deleted file mode 100644 index 8ab2f180..00000000 --- a/docs-nextra/pages/reference/oauth-providers/osso.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -id: osso -title: Osso ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -Osso is an open source service that handles SAML authentication against Identity Providers, normalizes profiles, and makes those profiles available to you in an OAuth 2.0 code grant flow. - -If you don't yet have an Osso instance, you can use [Osso's Demo App](https://demo.ossoapp.com) for your testing purposes. For documentation on deploying an Osso instance, see https://ossoapp.com/docs/deploy/overview/ - -## Configuration - -You can configure your OAuth Clients on your Osso Admin UI, i.e. https://demo.ossoapp.com/admin/config - you'll need to get a Client ID and Secret and allow-list your redirect URIs. - -[SAML SSO differs a bit from OAuth](https://ossoapp.com/blog/saml-vs-oauth) - for every tenant who wants to sign in to your application using SAML, you and your customer need to perform a multi-step configuration in Osso's Admin UI and the admin dashboard of the tenant's Identity Provider. Osso provides documentation for providers like Okta and OneLogin, cloud-based IDPs who also offer a developer account that's useful for testing. Osso also provides a [Mock IDP](https://idp.ossoapp.com) that you can use for testing without needing to sign up for an Identity Provider service. - -See Osso's complete configuration and testing documentation at https://ossoapp.com/docs/configure/overview - -## Options - -The **Osso Provider** comes with a set of default options: - -- [Osso Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/osso.js) - -You can override any of the options to suit your own use case. - -## Example - -A full example application is available at https://github.com/enterprise-oss/osso-next-auth-example and https://nextjs-demo.ossoapp.com - -```js -import OssoProvider from "next-auth/providers/osso"; -... -providers: [ - OssoProvider({ - clientId: process.env.OSSO_CLIENT_ID, - clientSecret: process.env.OSSO_CLIENT_SECRET, - issuer: process.env.OSSO_ISSUER - }) -} -... -``` - - -`issuer` should be the fully qualified domain – e.g. `demo.ossoapp.com` - diff --git a/docs-nextra/pages/reference/oauth-providers/osu.mdx b/docs-nextra/pages/reference/oauth-providers/osu.mdx deleted file mode 100644 index fb816bb0..00000000 --- a/docs-nextra/pages/reference/oauth-providers/osu.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: osu -title: Osu! ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://osu.ppy.sh/docs/index.html#authentication - -## Configuration - -https://osu.ppy.sh/home/account/edit#new-oauth-application - -## Options - -The **Osu Provider** comes with a set of default options: - -- [Osu Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/osu.ts) - -You can override any of the options to suit your own use case. - - -Osu! does **not** provide a user email! - - -## Example - -```js -import OsuProvider from "next-auth/providers/osu"; -... -providers: [ - OsuProvider({ - clientId: process.env.OSU_CLIENT_ID, - clientSecret: process.env.OSU_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/patreon.mdx b/docs-nextra/pages/reference/oauth-providers/patreon.mdx deleted file mode 100644 index 06158e74..00000000 --- a/docs-nextra/pages/reference/oauth-providers/patreon.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -id: patreon -title: Patreon ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://docs.patreon.com/#apiv2-oauth - -## Configuration - - -Create a API v2 client on [Patreon Platform](https://www.patreon.com/portal/registration/register-clients) - - -## Options - -The **Patreon Provider** comes with a set of default options: - -- [Patreon Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/patreon.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import PatreonProvider from "next-auth/providers/patreon"; -... -providers: [ - PatreonProvider({ - clientId: process.env.PATREON_ID, - clientSecret: process.env.PATREON_SECRET, - }) -] -... -``` - - -Make sure you use the scopes defined in [ApiV2](https://docs.patreon.com/#scopes) - diff --git a/docs-nextra/pages/reference/oauth-providers/pipedrive.md b/docs-nextra/pages/reference/oauth-providers/pipedrive.md deleted file mode 100644 index 74cda409..00000000 --- a/docs-nextra/pages/reference/oauth-providers/pipedrive.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: pipedrive -title: Pipedrive ---- - -## Documentation - -https://pipedrive.readme.io/docs/marketplace-oauth-authorization - -## Options - -The **Pipedrive Provider** comes with a set of default options: - -- [Pipedrive Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/pipedrive.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import PipedriveProvider from "next-auth/providers/pipedrive"; -... -providers: [ - PipedriveProvider({ - clientId: process.env.PIPEDRIVE_CLIENT_ID, - clientSecret: process.env.PIPEDRIVE_CLIENT_SECRET, - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/reddit.mdx b/docs-nextra/pages/reference/oauth-providers/reddit.mdx deleted file mode 100644 index f42ef468..00000000 --- a/docs-nextra/pages/reference/oauth-providers/reddit.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: reddit -title: Reddit ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://www.reddit.com/dev/api/ - -## Configuration - -https://www.reddit.com/prefs/apps/ - -## Options - -The **Reddit Provider** comes with a set of default options: - -- [Reddit Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/reddit.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import RedditProvider from "next-auth/providers/reddit"; -... -providers: [ - RedditProvider({ - clientId: process.env.REDDIT_CLIENT_ID, - clientSecret: process.env.REDDIT_CLIENT_SECRET - }) -] -... -``` - - -Reddit requires authorization every time you go through their page. - - - -Only allows one callback URL per Client ID / Client Secret. - - - -This Provider template only has a one hour access token to it and only has the "identity" scope. If you want to get a refresh token as well you must follow this: - -```js -providers: [ - { - id: "reddit", - name: "Reddit", - clientId: process.env.REDDIT_CLIENT_ID, - clientSecret: process.env.REDDIT_CLIENT_SECRET, - scope: "identity mysubreddits read", //Check Reddit API Documentation for more. The identity scope is required. - type: "oauth", - version: "2.0", - params: { grant_type: "authorization_code" }, - accessTokenUrl: " https://www.reddit.com/api/v1/access_token", - authorizationUrl: - "https://www.reddit.com/api/v1/authorize?response_type=code&duration=permanent", - profileUrl: "https://oauth.reddit.com/api/v1/me", - profile: (profile) => { - return { - id: profile.id, - name: profile.name, - email: null, - } - }, - }, -] -``` - - diff --git a/docs-nextra/pages/reference/oauth-providers/salesforce.md b/docs-nextra/pages/reference/oauth-providers/salesforce.md deleted file mode 100644 index d6507571..00000000 --- a/docs-nextra/pages/reference/oauth-providers/salesforce.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: salesforce -title: Salesforce ---- - -## Documentation - -https://help.salesforce.com/articleView?id=remoteaccess_authenticate.htm&type=5 - -## Options - -The **Salesforce Provider** comes with a set of default options: - -- [Salesforce Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/salesforce.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import SalesforceProvider from "next-auth/providers/salesforce"; -... -providers: [ - SalesforceProvider({ - clientId: process.env.SALESFORCE_CLIENT_ID, - clientSecret: process.env.SALESFORCE_CLIENT_SECRET, - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/slack.mdx b/docs-nextra/pages/reference/oauth-providers/slack.mdx deleted file mode 100644 index e6a20a06..00000000 --- a/docs-nextra/pages/reference/oauth-providers/slack.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: slack -title: Slack ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://api.slack.com/authentication -https://api.slack.com/docs/sign-in-with-slack - -## Configuration - -https://api.slack.com/apps - - -Slack requires that the redirect URL of your app uses `https`, even for local development. An easy workaround for this is using a service like [`ngrok`](https://ngrok.com) that creates a secure tunnel to your app, using `https`. Remember to set the url as `NEXTAUTH_URL` as well. - - -![](https://i.imgur.com/ydYKTLD.png) - -## Options - -The **Slack Provider** comes with a set of default options: - -- [Slack Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/slack.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import SlackProvider from "next-auth/providers/slack"; -... -providers: [ - SlackProvider({ - clientId: process.env.SLACK_CLIENT_ID, - clientSecret: process.env.SLACK_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/spotify.md b/docs-nextra/pages/reference/oauth-providers/spotify.md deleted file mode 100644 index 1462bb57..00000000 --- a/docs-nextra/pages/reference/oauth-providers/spotify.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: spotify -title: Spotify ---- - -## Documentation - -https://developer.spotify.com/documentation/general/guides/authorization-guide - -## Configuration - -https://developer.spotify.com/dashboard/applications - -## Options - -The **Spotify Provider** comes with a set of default options: - -- [Spotify Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/spotify.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import SpotifyProvider from "next-auth/providers/spotify"; -... -providers: [ - SpotifyProvider({ - clientId: process.env.SPOTIFY_CLIENT_ID, - clientSecret: process.env.SPOTIFY_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/strava.md b/docs-nextra/pages/reference/oauth-providers/strava.md deleted file mode 100644 index 2ce9f324..00000000 --- a/docs-nextra/pages/reference/oauth-providers/strava.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: strava -title: Strava ---- - -## Documentation - -http://developers.strava.com/docs/reference/ - -## Options - -The **Strava Provider** comes with a set of default options: - -- [Strava Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/strava.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import StravaProvider from "next-auth/providers/strava"; -... -providers: [ - StravaProvider({ - clientId: process.env.STRAVA_CLIENT_ID, - clientSecret: process.env.STRAVA_CLIENT_SECRET, - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/todoist.md b/docs-nextra/pages/reference/oauth-providers/todoist.md deleted file mode 100644 index 3fab7cff..00000000 --- a/docs-nextra/pages/reference/oauth-providers/todoist.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: todoist -title: Todoist ---- - -## Documentation - -https://developer.todoist.com/guides/#oauth - -## Configuration - -https://developer.todoist.com/appconsole.html - -## Options - -The **Todoist Provider** comes with a set of default options: - -- [Todoist Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/todoist.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import TodoistProvider from "next-auth/providers/todoist"; - -... -providers: [ - TodoistProvider({ - clientId: process.env.TODOIST_ID, - clientSecret: process.env.TODOIST_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/trakt.mdx b/docs-nextra/pages/reference/oauth-providers/trakt.mdx deleted file mode 100644 index dcfe239d..00000000 --- a/docs-nextra/pages/reference/oauth-providers/trakt.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: trakt -title: Trakt ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://trakt.docs.apiary.io/#reference/authentication-oauth - -## Configuration - -If you're using the api in production by calling [api.trakt.tv](https://api.trakt.tv). Follow the example below. If you wish to develop on Trakt's sandbox environment by calling [api-staging.trakt.tv](https://api-staging.trakt.tv). Use the default options with the changed the URLs. - -Start by creating an OAuth app on Trakt for [production](https://trakt.tv/oauth/applications/new) or [development](https://staging.trakt.tv/oauth/applications/new). Then set the Client ID and Client Secret as `TRAKT_ID` and `TRAKT_SECRET` in `.env`. - -## Options - -The **Trakt Provider** comes with a set of default options: - -- [Trakt Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/trakt.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -providers: [ - TraktProvider({ - clientId: process.env.TRAKT_ID, - clientSecret: process.env.TRAKT_SECRET, - }), -] -``` - - -Trakt does not allow hotlinking images. Even the authenticated user's profie picture. - - - -Trakt does not supply the authenticated user's email. - diff --git a/docs-nextra/pages/reference/oauth-providers/twitch.md b/docs-nextra/pages/reference/oauth-providers/twitch.md deleted file mode 100644 index 17ec61d0..00000000 --- a/docs-nextra/pages/reference/oauth-providers/twitch.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: twitch -title: Twitch ---- - -## Documentation - -https://dev.twitch.tv/docs/authentication - -## Configuration - -https://dev.twitch.tv/console/apps - -Add the following redirect URL into the console `http:///api/auth/callback/twitch` - -## Options - -The **Twitch Provider** comes with a set of default options: - -- [Twitch Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/twitch.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import TwitchProvider from "next-auth/providers/twitch"; -... -providers: [ - TwitchProvider({ - clientId: process.env.TWITCH_CLIENT_ID, - clientSecret: process.env.TWITCH_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/twitter.mdx b/docs-nextra/pages/reference/oauth-providers/twitter.mdx deleted file mode 100644 index 10b2d933..00000000 --- a/docs-nextra/pages/reference/oauth-providers/twitter.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: twitter -title: Twitter ---- - -import { Callout } from "nextra-theme-docs" - - -Twitter is currently the only built-in provider using the OAuth 1.0 spec. This means that you won't receive an `access_token` or `refresh_token`, but an `oauth_token` and `oauth_token_secret` respectively. Remember to add these to your database schema, in case if you are using an [Adapter](/reference/adapters/overview). - - -## Documentation - -https://developer.twitter.com - -## Configuration - -https://developer.twitter.com/en/apps - -## Options - -The **Twitter Provider** comes with a set of default options: - -- [Twitter Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/twitter.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import TwitterProvider from "next-auth/providers/twitter"; -... -providers: [ - TwitterProvider({ - clientId: process.env.TWITTER_CLIENT_ID, - clientSecret: process.env.TWITTER_CLIENT_SECRET - }) -] -... -``` - - -You must enable the _"Request email address from users"_ option in your app permissions if you want to obtain the users email address. - - -![twitter](https://user-images.githubusercontent.com/55143799/168702338-a95912a7-b689-4680-aa2c-6306fe3c2ec7.jpeg) - -## OAuth 2.0 - -Twitter supports OAuth 2, which is currently opt-in. To enable it, simply add `version: "2.0"` to your Provider configuration: - -```js -TwitterProvider({ - clientId: process.env.TWITTER_ID, - clientSecret: process.env.TWITTER_SECRET, - version: "2.0", // opt-in to Twitter OAuth 2.0 -}) -``` - -Keep in mind that although this change is easy, it changes how and with which of [Twitter APIs](https://developer.twitter.com/en/docs/api-reference-index) you can interact with. Read the official [Twitter OAuth 2 documentation](https://developer.twitter.com/en/docs/authentication/oauth-2-0) for more details. - - -Email is currently not supported by Twitter OAuth 2.0. - diff --git a/docs-nextra/pages/reference/oauth-providers/united-effects.mdx b/docs-nextra/pages/reference/oauth-providers/united-effects.mdx deleted file mode 100644 index 0daf1ee9..00000000 --- a/docs-nextra/pages/reference/oauth-providers/united-effects.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -id: united-effects -title: United Effects ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://docs.unitedeffects.com/integrations/nextauthjs - -## Configuration - -https://core.unitedeffects.com - -## Options - -The **United Effects Provider** comes with a set of default options: - -- [United Effects Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/united-effects.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import UnitedEffectsProvider from "next-auth/providers/united-effects"; -... -providers: [ - UnitedEffectsProvider({ - clientId: process.env.UNITED_EFFECTS_CLIENT_ID, - clientSecret: process.env.UNITED_EFFECTS_CLIENT_SECRET, - issuer: process.env.UNITED_EFFECTS_ISSUER - }) -] -... -``` - - -`issuer` should be the fully qualified URL including your Auth Group ID – e.g. `https://auth.unitedeffects.com/YQpbQV5dbW-224dCovz-3` - - - -The United Effects API does not return the user name or image by design, so this provider will return null for both. United Effects prioritizes user personal information security above all and has built a secured profile access request system separate from the provider API. - diff --git a/docs-nextra/pages/reference/oauth-providers/vk.mdx b/docs-nextra/pages/reference/oauth-providers/vk.mdx deleted file mode 100644 index f4a3a3c2..00000000 --- a/docs-nextra/pages/reference/oauth-providers/vk.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -id: vk -title: VK ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://vk.com/dev/first_guide - -## Configuration - -https://vk.com/apps?act=manage - -## Options - -The **VK Provider** comes with a set of default options: - -- [VK Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/vk.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import VkProvider from "next-auth/providers/vk"; -... -providers: [ - VkProvider({ - clientId: process.env.VK_CLIENT_ID, - clientSecret: process.env.VK_CLIENT_SECRET - }) -] -... -``` - - -By default the provider uses `5.126` version of the API. See https://vk.com/dev/versions for more info. - - -If you want to use a different version, you can pass it to provider's options object: - -```js -// pages/api/auth/[...nextauth].js - -const apiVersion = "5.126" -... -providers: [ - VkProvider({ - accessTokenUrl: `https://oauth.vk.com/access_token?v=${apiVersion}`, - requestTokenUrl: `https://oauth.vk.com/access_token?v=${apiVersion}`, - authorizationUrl: - `https://oauth.vk.com/authorize?response_type=code&v=${apiVersion}`, - profileUrl: `https://api.vk.com/method/users.get?fields=photo_100&v=${apiVersion}`, - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/wordpress.mdx b/docs-nextra/pages/reference/oauth-providers/wordpress.mdx deleted file mode 100644 index 9174c28c..00000000 --- a/docs-nextra/pages/reference/oauth-providers/wordpress.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: wordpress -title: WordPress.com ---- - -import { Callout } from "nextra-theme-docs" - -## Documentation - -https://developer.wordpress.com/docs/oauth2/ - -## Configuration - -https://developer.wordpress.com/apps/ - -## Options - -The **Wordpress Provider** comes with a set of default options: - -- [Wordpress Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/wordpress.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import WordpressProvider from "next-auth/providers/wordpress"; -... -providers: [ - WordpressProvider({ - clientId: process.env.WORDPRESS_CLIENT_ID, - clientSecret: process.env.WORDPRESS_CLIENT_SECRET - }) -} -... -``` - - -Register your application to obtain Client ID and Client Secret at https://developer.wordpress.com/apps/ Select Type as Web and set Redirect URL to `http://example.com/api/auth/callback/wordpress` where example.com is your site domain. - diff --git a/docs-nextra/pages/reference/oauth-providers/workos.md b/docs-nextra/pages/reference/oauth-providers/workos.md deleted file mode 100644 index 08038592..00000000 --- a/docs-nextra/pages/reference/oauth-providers/workos.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -id: workos -title: WorkOS ---- - -## Documentation - -https://workos.com/docs/sso/guide - -## Configuration - -https://dashboard.workos.com - -## Options - -The **WorkOS Provider** comes with a set of default options: - -- [WorkOS Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/workos.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import WorkOSProvider from "next-auth/providers/workos"; -... -providers: [ - WorkOSProvider({ - clientId: process.env.WORKOS_CLIENT_ID, - clientSecret: process.env.WORKOS_API_KEY, - }), -], -... -``` - -WorkOS is not an identity provider itself, but, rather, a bridge to multiple single sign-on (SSO) providers. As a result, we need to make some additional changes to authenticate users using WorkOS. - -In order to sign a user in using WorkOS, we need to specify which WorkOS Connection to use. A common way to do this is to collect the user's email address and extract the domain. - -This can be done using a custom login page. - -To add a custom login page, you can use the `pages` option: - -```javascript title="pages/api/auth/[...nextauth].js" -... - pages: { - signIn: "/auth/signin", - } -``` - -We can then add a custom login page that displays an input where the user can enter their email address. We then extract the domain from the user's email address and pass it to the `authorizationParams` parameter on the `signIn` function: - -```jsx title="pages/auth/signin.js" -import { useState } from "react" -import { getProviders, signIn } from "next-auth/react" - -export default function SignIn({ providers }) { - const [email, setEmail] = useState("") - - return ( - <> - {Object.values(providers).map((provider) => { - if (provider.id === "workos") { - return ( -
- setEmail(event.target.value)} - /> - -
- ) - } - - return ( -
- -
- ) - })} - - ) -} - -export async function getServerSideProps(context) { - const providers = await getProviders() - return { - props: { providers }, - } -} -``` diff --git a/docs-nextra/pages/reference/oauth-providers/yandex.md b/docs-nextra/pages/reference/oauth-providers/yandex.md deleted file mode 100644 index d5239718..00000000 --- a/docs-nextra/pages/reference/oauth-providers/yandex.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: yandex -title: Yandex ---- - -## Documentation - -https://tech.yandex.com/oauth/doc/dg/concepts/about-docpage/ - -## Configuration - -https://oauth.yandex.com/client/new - -## Options - -The **Yandex Provider** comes with a set of default options: - -- [Yandex Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/yandex.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import YandexProvider from "next-auth/providers/yandex"; -... -providers: [ - YandexProvider({ - clientId: process.env.YANDEX_CLIENT_ID, - clientSecret: process.env.YANDEX_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/zoho.md b/docs-nextra/pages/reference/oauth-providers/zoho.md deleted file mode 100644 index 7199e23e..00000000 --- a/docs-nextra/pages/reference/oauth-providers/zoho.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: zoho -title: Zoho ---- - -## Documentation - -https://www.zoho.com/accounts/protocol/oauth/web-server-applications.html - -## Configuration - -https://api-console.zoho.com/ - -## Options - -The **Zoho Provider** comes with a set of default options: - -- [Zoho Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/zoho.js) - -You can override any of the options to suit your own use case. - -## Example - -```js -import ZohoProvider from "next-auth/providers/zoho"; -... -providers: [ - ZohoProvider({ - clientId: process.env.ZOHO_CLIENT_ID, - clientSecret: process.env.ZOHO_CLIENT_SECRET - }) -] -... -``` diff --git a/docs-nextra/pages/reference/oauth-providers/zoom.md b/docs-nextra/pages/reference/oauth-providers/zoom.md deleted file mode 100644 index c854b192..00000000 --- a/docs-nextra/pages/reference/oauth-providers/zoom.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: zoom -title: Zoom ---- - -## Documentation - -https://marketplace.zoom.us/docs/guides/auth/oauth - -## Configuration - -https://marketplace.zoom.us - -## Options - -The **Zoom Provider** comes with a set of default options: - -- [Zoom Provider options](https://github.com/nextauthjs/next-auth/blob/main/packages/next-auth/src/providers/zoom.ts) - -You can override any of the options to suit your own use case. - -## Example - -```js -import ZoomProvider from "next-auth/providers/zoom" -... -providers: [ - ZoomProvider({ - clientId: process.env.ZOOM_CLIENT_ID, - clientSecret: process.env.ZOOM_CLIENT_SECRET - }) -} -... -``` diff --git a/docs-nextra/tsconfig.json b/docs-nextra/tsconfig.json new file mode 100644 index 00000000..400396a7 --- /dev/null +++ b/docs-nextra/tsconfig.json @@ -0,0 +1,35 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/*": [ + "./*" + ] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/package.json b/package.json index 008205d5..eb001c15 100644 --- a/package.json +++ b/package.json @@ -5,15 +5,14 @@ "repository": "https://github.com/nextauthjs/next-auth.git", "scripts": { "build:app": "turbo run build --filter=next-auth-app", - "build:docs": "turbo run build --filter=docs", + "build:docs": "turbo run build --filter=docs-nextra", "build": "turbo run build --filter=next-auth --filter=@next-auth/* --filter=@auth/* --no-deps", "test": "turbo run test --concurrency=1 --filter=[HEAD^1] --filter=./packages/* --filter=!@*upstash* --filter=!*dynamodb-*", "clean": "turbo run clean --no-cache", "dev:db": "turbo run dev --parallel --continue --filter=next-auth-app...", "dev": "turbo run dev --parallel --continue --filter=next-auth-app... --filter=!./packages/adapter-*", "dev:kit": "turbo run dev --parallel --continue --filter=sveltekit-auth-app...", - "dev:docs": "turbo run dev --filter=docs", - "dev:nextra": "turbo run dev --filter=docs-nextra", + "dev:docs": "turbo run dev --filter=docs-nextra", "email": "cd apps/dev/nextjs && pnpm email", "eslint": "eslint --cache .", "lint": "prettier --check .", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e04df7e..ad1b9ad5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -206,10 +206,11 @@ importers: specifiers: '@codesandbox/sandpack-react': ^2.0.6 autoprefixer: ^10.4.13 + eslint-config-next: ^13.2.4 framer-motion: ^8.4.3 - next: 13.1.1 - nextra: ^2.2.5 - nextra-theme-docs: ^2.2.5 + next: 13.2.4 + nextra: ^2.2.19 + nextra-theme-docs: ^2.2.19 postcss: ^8.4.21 react: ^18.2.0 react-dom: ^18.2.0 @@ -220,9 +221,9 @@ importers: dependencies: '@codesandbox/sandpack-react': 2.1.10_biqbaboplfbrettd7655fr4n2y framer-motion: 8.5.5_biqbaboplfbrettd7655fr4n2y - next: 13.1.1_biqbaboplfbrettd7655fr4n2y - nextra: 2.2.19_q76c2b4vyoegvsbrcwkfvimnai - nextra-theme-docs: 2.2.19_6wwb6rmmbetajjtcsd25d2vm4m + next: 13.2.4_biqbaboplfbrettd7655fr4n2y + nextra: 2.2.19_ld2jel3hspngo3u5lti2kgl2sq + nextra-theme-docs: 2.2.19_i765vautotixoofbdi6dinfkwe react: 18.2.0 react-dom: 18.2.0_react@18.2.0 remark-link-rewrite: 1.0.6 @@ -230,6 +231,7 @@ importers: typedoc-plugin-markdown: 4.0.0-next.3_typedoc@0.23.24 devDependencies: autoprefixer: 10.4.13_postcss@8.4.21 + eslint-config-next: 13.2.4 postcss: 8.4.21 tailwindcss: 3.2.7_postcss@8.4.21 @@ -9662,6 +9664,16 @@ packages: /@next/env/13.1.1: resolution: {integrity: sha512-vFMyXtPjSAiOXOywMojxfKIqE3VWN5RCAx+tT3AS3pcKjMLFTCJFUWsKv8hC+87Z1F4W3r68qTwDFZIFmd5Xkw==} + /@next/env/13.2.4: + resolution: {integrity: sha512-+Mq3TtpkeeKFZanPturjcXt+KHfKYnLlX6jMLyCrmpq6OOs4i1GqBOAauSkii9QeKCMTYzGppar21JU57b/GEA==} + dev: false + + /@next/eslint-plugin-next/13.2.4: + resolution: {integrity: sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ==} + dependencies: + glob: 7.1.7 + dev: true + /@next/swc-android-arm-eabi/13.1.1: resolution: {integrity: sha512-qnFCx1kT3JTWhWve4VkeWuZiyjG0b5T6J2iWuin74lORCupdrNukxkq9Pm+Z7PsatxuwVJMhjUoYz7H4cWzx2A==} engines: {node: '>= 10'} @@ -9670,6 +9682,15 @@ packages: requiresBuild: true optional: true + /@next/swc-android-arm-eabi/13.2.4: + resolution: {integrity: sha512-DWlalTSkLjDU11MY11jg17O1gGQzpRccM9Oes2yTqj2DpHndajrXHGxj9HGtJ+idq2k7ImUdJVWS2h2l/EDJOw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + /@next/swc-android-arm64/13.1.1: resolution: {integrity: sha512-eCiZhTzjySubNqUnNkQCjU3Fh+ep3C6b5DCM5FKzsTH/3Gr/4Y7EiaPZKILbvnXmhWtKPIdcY6Zjx51t4VeTfA==} engines: {node: '>= 10'} @@ -9678,6 +9699,15 @@ packages: requiresBuild: true optional: true + /@next/swc-android-arm64/13.2.4: + resolution: {integrity: sha512-sRavmUImUCf332Gy+PjIfLkMhiRX1Ez4SI+3vFDRs1N5eXp+uNzjFUK/oLMMOzk6KFSkbiK/3Wt8+dHQR/flNg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + /@next/swc-darwin-arm64/13.1.1: resolution: {integrity: sha512-9zRJSSIwER5tu9ADDkPw5rIZ+Np44HTXpYMr0rkM656IvssowPxmhK0rTreC1gpUCYwFsRbxarUJnJsTWiutPg==} engines: {node: '>= 10'} @@ -9686,6 +9716,15 @@ packages: requiresBuild: true optional: true + /@next/swc-darwin-arm64/13.2.4: + resolution: {integrity: sha512-S6vBl+OrInP47TM3LlYx65betocKUUlTZDDKzTiRDbsRESeyIkBtZ6Qi5uT2zQs4imqllJznVjFd1bXLx3Aa6A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@next/swc-darwin-x64/13.1.1: resolution: {integrity: sha512-qWr9qEn5nrnlhB0rtjSdR00RRZEtxg4EGvicIipqZWEyayPxhUu6NwKiG8wZiYZCLfJ5KWr66PGSNeDMGlNaiA==} engines: {node: '>= 10'} @@ -9694,6 +9733,15 @@ packages: requiresBuild: true optional: true + /@next/swc-darwin-x64/13.2.4: + resolution: {integrity: sha512-a6LBuoYGcFOPGd4o8TPo7wmv5FnMr+Prz+vYHopEDuhDoMSHOnC+v+Ab4D7F0NMZkvQjEJQdJS3rqgFhlZmKlw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@next/swc-freebsd-x64/13.1.1: resolution: {integrity: sha512-UwP4w/NcQ7V/VJEj3tGVszgb4pyUCt3lzJfUhjDMUmQbzG9LDvgiZgAGMYH6L21MoyAATJQPDGiAMWAPKsmumA==} engines: {node: '>= 10'} @@ -9702,6 +9750,15 @@ packages: requiresBuild: true optional: true + /@next/swc-freebsd-x64/13.2.4: + resolution: {integrity: sha512-kkbzKVZGPaXRBPisoAQkh3xh22r+TD+5HwoC5bOkALraJ0dsOQgSMAvzMXKsN3tMzJUPS0tjtRf1cTzrQ0I5vQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-arm-gnueabihf/13.1.1: resolution: {integrity: sha512-CnsxmKHco9sosBs1XcvCXP845Db+Wx1G0qouV5+Gr+HT/ZlDYEWKoHVDgnJXLVEQzq4FmHddBNGbXvgqM1Gfkg==} engines: {node: '>= 10'} @@ -9710,6 +9767,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-arm-gnueabihf/13.2.4: + resolution: {integrity: sha512-7qA1++UY0fjprqtjBZaOA6cas/7GekpjVsZn/0uHvquuITFCdKGFCsKNBx3S0Rpxmx6WYo0GcmhNRM9ru08BGg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-arm64-gnu/13.1.1: resolution: {integrity: sha512-JfDq1eri5Dif+VDpTkONRd083780nsMCOKoFG87wA0sa4xL8LGcXIBAkUGIC1uVy9SMsr2scA9CySLD/i+Oqiw==} engines: {node: '>= 10'} @@ -9718,6 +9784,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-arm64-gnu/13.2.4: + resolution: {integrity: sha512-xzYZdAeq883MwXgcwc72hqo/F/dwUxCukpDOkx/j1HTq/J0wJthMGjinN9wH5bPR98Mfeh1MZJ91WWPnZOedOg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-arm64-musl/13.1.1: resolution: {integrity: sha512-GA67ZbDq2AW0CY07zzGt07M5b5Yaq5qUpFIoW3UFfjOPgb0Sqf3DAW7GtFMK1sF4ROHsRDMGQ9rnT0VM2dVfKA==} engines: {node: '>= 10'} @@ -9726,6 +9801,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-arm64-musl/13.2.4: + resolution: {integrity: sha512-8rXr3WfmqSiYkb71qzuDP6I6R2T2tpkmf83elDN8z783N9nvTJf2E7eLx86wu2OJCi4T05nuxCsh4IOU3LQ5xw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-x64-gnu/13.1.1: resolution: {integrity: sha512-nnjuBrbzvqaOJaV+XgT8/+lmXrSCOt1YYZn/irbDb2fR2QprL6Q7WJNgwsZNxiLSfLdv+2RJGGegBx9sLBEzGA==} engines: {node: '>= 10'} @@ -9734,6 +9818,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-x64-gnu/13.2.4: + resolution: {integrity: sha512-Ngxh51zGSlYJ4EfpKG4LI6WfquulNdtmHg1yuOYlaAr33KyPJp4HeN/tivBnAHcZkoNy0hh/SbwDyCnz5PFJQQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-x64-musl/13.1.1: resolution: {integrity: sha512-CM9xnAQNIZ8zf/igbIT/i3xWbQZYaF397H+JroF5VMOCUleElaMdQLL5riJml8wUfPoN3dtfn2s4peSr3azz/g==} engines: {node: '>= 10'} @@ -9742,6 +9835,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-x64-musl/13.2.4: + resolution: {integrity: sha512-gOvwIYoSxd+j14LOcvJr+ekd9fwYT1RyMAHOp7znA10+l40wkFiMONPLWiZuHxfRk+Dy7YdNdDh3ImumvL6VwA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-win32-arm64-msvc/13.1.1: resolution: {integrity: sha512-pzUHOGrbgfGgPlOMx9xk3QdPJoRPU+om84hqVoe6u+E0RdwOG0Ho/2UxCgDqmvpUrMab1Deltlt6RqcXFpnigQ==} engines: {node: '>= 10'} @@ -9750,6 +9852,15 @@ packages: requiresBuild: true optional: true + /@next/swc-win32-arm64-msvc/13.2.4: + resolution: {integrity: sha512-q3NJzcfClgBm4HvdcnoEncmztxrA5GXqKeiZ/hADvC56pwNALt3ngDC6t6qr1YW9V/EPDxCYeaX4zYxHciW4Dw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@next/swc-win32-ia32-msvc/13.1.1: resolution: {integrity: sha512-WeX8kVS46aobM9a7Xr/kEPcrTyiwJqQv/tbw6nhJ4fH9xNZ+cEcyPoQkwPo570dCOLz3Zo9S2q0E6lJ/EAUOBg==} engines: {node: '>= 10'} @@ -9758,6 +9869,15 @@ packages: requiresBuild: true optional: true + /@next/swc-win32-ia32-msvc/13.2.4: + resolution: {integrity: sha512-/eZ5ncmHUYtD2fc6EUmAIZlAJnVT2YmxDsKs1Ourx0ttTtvtma/WKlMV5NoUsyOez0f9ExLyOpeCoz5aj+MPXw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@next/swc-win32-x64-msvc/13.1.1: resolution: {integrity: sha512-mVF0/3/5QAc5EGVnb8ll31nNvf3BWpPY4pBb84tk+BfQglWLqc5AC9q1Ht/YMWiEgs8ALNKEQ3GQnbY0bJF2Gg==} engines: {node: '>= 10'} @@ -9766,6 +9886,15 @@ packages: requiresBuild: true optional: true + /@next/swc-win32-x64-msvc/13.2.4: + resolution: {integrity: sha512-0MffFmyv7tBLlji01qc0IaPP/LVExzvj7/R5x1Jph1bTAIj4Vu81yFQWHHQAP6r4ff9Ukj1mBK6MDNVXm7Tcvw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3: resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} requiresBuild: true @@ -10407,6 +10536,18 @@ packages: nullthrows: 1.1.1 dev: false + /@pkgr/utils/2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.0 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.5.0 + dev: true + /@playwright/test/1.29.2: resolution: {integrity: sha512-+3/GPwOgcoF0xLz/opTnahel1/y42PdcgZ4hs+BZGIUjtmEFSXGg+nFoaH3NSmuc7a6GSFwXDJ5L7VXpqzigNg==} engines: {node: '>=14'} @@ -12353,6 +12494,24 @@ packages: - supports-color dev: true + /@typescript-eslint/parser/5.47.0: + resolution: {integrity: sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.47.0 + '@typescript-eslint/types': 5.47.0 + '@typescript-eslint/typescript-estree': 5.47.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser/5.47.0_lzzuuodtsqwxnvqeq4g4likcqa: resolution: {integrity: sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -12525,6 +12684,26 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree/5.47.0: + resolution: {integrity: sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.47.0 + '@typescript-eslint/visitor-keys': 5.47.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree/5.47.0_typescript@4.9.4: resolution: {integrity: sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -13461,7 +13640,6 @@ packages: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.0.5 - dev: false /arr-rotate/1.0.0: resolution: {integrity: sha512-yOzOZcR9Tn7enTF66bqKorGGH0F36vcPaSWg8fO0c0UYb3LX3VMXj5ZxEqQLNOecAhlRJ7wYZja5i4jTlnbIfQ==} @@ -13562,7 +13740,6 @@ packages: /ast-types-flow/0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} - dev: false /ast-types/0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} @@ -13706,12 +13883,11 @@ packages: /axe-core/4.6.2: resolution: {integrity: sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==} engines: {node: '>=4'} - dev: false /axios/0.21.4_debug@4.3.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.1_debug@4.3.4 + follow-redirects: 1.15.1 transitivePeerDependencies: - debug @@ -13735,7 +13911,6 @@ packages: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: deep-equal: 2.0.5 - dev: false /babel-jest/27.5.1_@babel+core@7.20.12: resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} @@ -16657,7 +16832,6 @@ packages: /damerau-levenshtein/1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: false /dashdash/1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} @@ -18229,6 +18403,29 @@ packages: source-map: 0.6.1 dev: true + /eslint-config-next/13.2.4: + resolution: {integrity: sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 13.2.4 + '@rushstack/eslint-patch': 1.2.0 + '@typescript-eslint/parser': 5.47.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3_5rfvta7qn57kxm7ir36ta6fixq + eslint-plugin-import: 2.27.5_3jihazwpnldh4k27oo52im3y6i + eslint-plugin-jsx-a11y: 6.7.1 + eslint-plugin-react: 7.31.11 + eslint-plugin-react-hooks: 4.6.0 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-config-prettier/8.5.0_eslint@8.30.0: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true @@ -18326,7 +18523,25 @@ packages: resolve: 1.22.1 transitivePeerDependencies: - supports-color - dev: false + + /eslint-import-resolver-typescript/3.5.3_5rfvta7qn57kxm7ir36ta6fixq: + resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.12.0 + eslint-plugin-import: 2.27.5_3jihazwpnldh4k27oo52im3y6i + get-tsconfig: 4.4.0 + globby: 13.1.2 + is-core-module: 2.11.0 + is-glob: 4.0.3 + synckit: 0.8.5 + transitivePeerDependencies: + - supports-color + dev: true /eslint-module-utils/2.7.4_5vuadmvmkyhbtm34phil3e6noa: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} @@ -18386,6 +18601,35 @@ packages: - supports-color dev: false + /eslint-module-utils/2.7.4_sc73uoihciiv5gkk4cezhnbwme: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.47.0 + debug: 3.2.7 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3_5rfvta7qn57kxm7ir36ta6fixq + transitivePeerDependencies: + - supports-color + dev: true + /eslint-plugin-es/3.0.1_eslint@8.30.0: resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} @@ -18439,6 +18683,38 @@ packages: - supports-color dev: true + /eslint-plugin-import/2.27.5_3jihazwpnldh4k27oo52im3y6i: + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.47.0 + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.7.4_sc73uoihciiv5gkk4cezhnbwme + has: 1.0.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + semver: 6.3.0 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-import/2.27.5_ffi3uiz42rv3jyhs6cr7p7qqry: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} @@ -18511,6 +18787,30 @@ packages: - supports-color dev: true + /eslint-plugin-jsx-a11y/6.7.1: + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.20.13 + aria-query: 5.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.6.2 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + has: 1.0.3 + jsx-ast-utils: 3.3.3 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 6.3.0 + dev: true + /eslint-plugin-jsx-a11y/6.7.1_eslint@7.32.0: resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} @@ -18560,6 +18860,13 @@ packages: eslint: 8.30.0 dev: true + /eslint-plugin-react-hooks/4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dev: true + /eslint-plugin-react-hooks/4.6.0_eslint@7.32.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -18569,6 +18876,29 @@ packages: eslint: 7.32.0 dev: false + /eslint-plugin-react/7.31.11: + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: true + /eslint-plugin-react/7.31.11_eslint@7.32.0: resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} engines: {node: '>=4'} @@ -19681,7 +20011,6 @@ packages: peerDependenciesMeta: debug: optional: true - dev: true /follow-redirects/1.15.1_debug@4.3.4: resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} @@ -19693,6 +20022,7 @@ packages: optional: true dependencies: debug: 4.3.4 + dev: true /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -20596,6 +20926,10 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.1.3 + /get-tsconfig/4.4.0: + resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} + dev: true + /get-uri/3.0.2: resolution: {integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==} engines: {node: '>= 6'} @@ -20713,6 +21047,17 @@ packages: path-is-absolute: 1.0.1 dev: true + /glob/7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -24932,13 +25277,11 @@ packages: /language-subtag-registry/0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - dev: false /language-tags/1.0.5: resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 - dev: false /latest-version/5.1.0: resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} @@ -26998,26 +27341,26 @@ packages: - supports-color dev: false - /next-seo/5.15.0_q76c2b4vyoegvsbrcwkfvimnai: + /next-seo/5.15.0_ld2jel3hspngo3u5lti2kgl2sq: resolution: {integrity: sha512-LGbcY91yDKGMb7YI+28n3g+RuChUkt6pXNpa8FkfKkEmNiJkeRDEXTnnjVtwT9FmMhG6NH8qwHTelGrlYm9rgg==} peerDependencies: next: ^8.1.1-canary.54 || >=9.0.0 react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - next: 13.1.1_biqbaboplfbrettd7655fr4n2y + next: 13.2.4_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false - /next-themes/0.2.1_q76c2b4vyoegvsbrcwkfvimnai: + /next-themes/0.2.1_ld2jel3hspngo3u5lti2kgl2sq: resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 13.1.1_biqbaboplfbrettd7655fr4n2y + next: 13.2.4_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false @@ -27113,7 +27456,54 @@ packages: - babel-plugin-macros dev: false - /nextra-theme-docs/2.2.19_6wwb6rmmbetajjtcsd25d2vm4m: + /next/13.2.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-g1I30317cThkEpvzfXujf0O4wtaQHtDCLhlivwlTJ885Ld+eOgcz7r3TGQzeU+cSRoNHtD8tsJgzxVdYojFssw==} + engines: {node: '>=14.6.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.4.0 + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + '@next/env': 13.2.4 + '@swc/helpers': 0.4.14 + caniuse-lite: 1.0.30001431 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + styled-jsx: 5.1.1_react@18.2.0 + optionalDependencies: + '@next/swc-android-arm-eabi': 13.2.4 + '@next/swc-android-arm64': 13.2.4 + '@next/swc-darwin-arm64': 13.2.4 + '@next/swc-darwin-x64': 13.2.4 + '@next/swc-freebsd-x64': 13.2.4 + '@next/swc-linux-arm-gnueabihf': 13.2.4 + '@next/swc-linux-arm64-gnu': 13.2.4 + '@next/swc-linux-arm64-musl': 13.2.4 + '@next/swc-linux-x64-gnu': 13.2.4 + '@next/swc-linux-x64-musl': 13.2.4 + '@next/swc-win32-arm64-msvc': 13.2.4 + '@next/swc-win32-ia32-msvc': 13.2.4 + '@next/swc-win32-x64-msvc': 13.2.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /nextra-theme-docs/2.2.19_i765vautotixoofbdi6dinfkwe: resolution: {integrity: sha512-+5PcNgHwxwSAmQZlbV2cbjbvxj7CPYnN44OtWNxHQ8L3dzlw6fUyIJtyCUcGbDHpFC3sHmwYgB3OCWH8m4P35Q==} peerDependencies: next: '>=9.5.3' @@ -27129,17 +27519,17 @@ packages: git-url-parse: 13.1.0 intersection-observer: 0.12.2 match-sorter: 6.3.1 - next: 13.1.1_biqbaboplfbrettd7655fr4n2y - next-seo: 5.15.0_q76c2b4vyoegvsbrcwkfvimnai - next-themes: 0.2.1_q76c2b4vyoegvsbrcwkfvimnai - nextra: 2.2.19_q76c2b4vyoegvsbrcwkfvimnai + next: 13.2.4_biqbaboplfbrettd7655fr4n2y + next-seo: 5.15.0_ld2jel3hspngo3u5lti2kgl2sq + next-themes: 0.2.1_ld2jel3hspngo3u5lti2kgl2sq + nextra: 2.2.19_ld2jel3hspngo3u5lti2kgl2sq react: 18.2.0 react-dom: 18.2.0_react@18.2.0 scroll-into-view-if-needed: 3.0.6 zod: 3.21.4 dev: false - /nextra/2.2.19_q76c2b4vyoegvsbrcwkfvimnai: + /nextra/2.2.19_ld2jel3hspngo3u5lti2kgl2sq: resolution: {integrity: sha512-QmgbJvT1lfmFCM8n5gfGTA5p8efw20N/oZP9ojBhWhmatq/PwAp7VoSeTan6TT9Yspv6PmnrgpqKhYGzPSkFVw==} peerDependencies: next: '>=9.5.3' @@ -27154,7 +27544,7 @@ packages: gray-matter: 4.0.3 katex: 0.16.4 lodash.get: 4.4.2 - next: 13.1.1_biqbaboplfbrettd7655fr4n2y + next: 13.2.4_biqbaboplfbrettd7655fr4n2y next-mdx-remote: 4.4.1_biqbaboplfbrettd7655fr4n2y p-limit: 3.1.0 react: 18.2.0 @@ -33007,6 +33397,14 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true + /synckit/0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.5.0 + dev: true + /table/6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} @@ -33676,6 +34074,10 @@ packages: /tslib/2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: true + /tsup/6.5.0_typescript@4.9.4: resolution: {integrity: sha512-36u82r7rYqRHFkD15R20Cd4ercPkbYmuvRkz3Q1LCm5BsiFNUgpo36zbjVhCOgvjyxNBWNKHsaD5Rl8SykfzNA==} engines: {node: '>=14'} diff --git a/turbo.json b/turbo.json index cb597228..261d953a 100644 --- a/turbo.json +++ b/turbo.json @@ -50,11 +50,11 @@ "@next-auth/upstash-redis-adapter#test": { "env": ["UPSTASH_REDIS_KEY", "UPSTASH_REDIS_URL"] }, - "docs#dev": { + "docs-nextra#dev": { "dependsOn": ["^build"], "cache": false }, - "docs#build": { + "docs-nextra#build": { "dependsOn": [ "@auth/core#build", "@auth/sveltekit#build", @@ -69,11 +69,10 @@ "next-auth#build" ], "outputs": [ - ".docusaurus/**/*", - "build/**/*", - "docs/reference/core/**/*", - "docs/reference/sveltekit/**/*", - "docs/reference/adapter/**" + ".next/**", + "docs-nextra/pages/reference/core/**", + "docs-nextra/pages/reference/sveltekit/**", + "docs-nextra/pages/reference/adapter/**" ] } }