Compare commits

...

11 Commits

Author SHA1 Message Date
Balázs Orbán
190c5044be fix(ts): mark options provider config option internal 2023-01-30 13:31:48 +01:00
Balázs Orbán
b204710b5b chore(dev): use workspace modules in Svelte app 2023-01-30 13:29:20 +01:00
Balázs Orbán
533320eb94 chore: generate oauth-types on build 2023-01-29 14:33:41 +01:00
James
dfe6509472 fix: comment Discord profile, fix @auth/sveltekit build on Windows (#6550)
* fix: discord types were inaccurate

* fix: build on windows computers

* Apply review suggestions

* Update discord.ts

---------

Co-authored-by: Balázs Orbán <info@balazsorban.com>
2023-01-29 12:05:14 +00:00
Oskar
1bde7cc8df fix(core): correct docs link (#6446) 2023-01-26 12:16:47 +00:00
Balázs Orbán
cef05d5e2d Merge branch 'main' of github.com:nextauthjs/next-auth 2023-01-26 13:11:14 +01:00
Balázs Orbán
c0dea283ba fix(core): avoid circular dependency
Fixes #6508
2023-01-26 13:11:04 +01:00
Balázs Orbán
0204766e0f fix(core): don't lock nodemailer version as peer dependency 2023-01-25 14:29:16 +00:00
Jérémie Sellam
a336ba762c fix(adapters): allow already initialized firebase app 🐛 (#6230)
* 🐛 Fix already initialized firebase app

* remove comment

Co-authored-by: Jérémie Sellam <jeremie@southpigalle.io>
Co-authored-by: Thang Vu <hi@thvu.dev>
2023-01-25 19:57:52 +07:00
Balázs Orbán
681d53c2f8 chore(core): cleanup 2023-01-24 14:01:40 +01:00
Thang Vu
06e891c0ea chore: cache output for @auth/sveltekit 2023-01-24 15:22:42 +07:00
24 changed files with 228 additions and 186 deletions

1
.gitignore vendored
View File

@@ -84,6 +84,7 @@ docs/providers.json
packages/core/*.js
packages/core/*.d.ts
packages/core/*.d.ts.map
packages/core/src/providers/oauth-types.ts
packages/core/lib
packages/core/providers
packages/core/src/lib/pages/styles.ts

View File

@@ -19,8 +19,8 @@
"vite": "4.0.1"
},
"dependencies": {
"@auth/core": "0.2.5",
"@auth/sveltekit": "0.1.12"
"@auth/core": "workspace:*",
"@auth/sveltekit": "workspace:*"
},
"type": "module"
}

View File

@@ -0,0 +1,11 @@
import { initializeApp, getApps, FirebaseOptions } from "firebase/app"
export default function getFirebase(firebaseOptions: FirebaseOptions) {
const apps = getApps()
const app = apps.find((app) => app.name === firebaseOptions.projectId)
if (app) {
return app
} else {
return initializeApp(firebaseOptions)
}
}

View File

@@ -25,6 +25,7 @@ import type {
} from "next-auth/adapters"
import { getConverter } from "./converter"
import getFirebase from "./getFirebase"
export type IndexableObject = Record<string, unknown>
@@ -39,7 +40,7 @@ export function FirestoreAdapter({
emulator,
...firebaseOptions
}: FirebaseOptions & FirestoreAdapterOptions): Adapter {
const firebaseApp = initializeApp(firebaseOptions)
const firebaseApp = getFirebase(firebaseOptions)
const db = getFirestore(firebaseApp)
if (emulator) {

View File

@@ -69,7 +69,7 @@
"preact-render-to-string": "5.2.3"
},
"peerDependencies": {
"nodemailer": "6.8.0"
"nodemailer": "^6.8.0"
},
"peerDependenciesMeta": {
"nodemailer": {
@@ -77,10 +77,11 @@
}
},
"scripts": {
"build": "pnpm css && tsc",
"build": "pnpm css && pnpm providers && tsc",
"clean": "rm -rf *.js *.d.ts* lib providers",
"css": "node scripts/generate-css",
"dev": "pnpm css && tsc -w"
"dev": "pnpm css && pnpm providers && tsc -w",
"providers": "node scripts/generate-providers"
},
"devDependencies": {
"@next-auth/tsconfig": "workspace:*",
@@ -92,4 +93,4 @@
"postcss": "8.4.19",
"postcss-nested": "6.0.0"
}
}
}

View File

@@ -0,0 +1,18 @@
import { join } from "path"
import { readdirSync, writeFileSync } from "fs"
const providersPath = join(process.cwd(), "src/providers")
const files = readdirSync(providersPath, "utf8")
const providers = files.map((file) => {
const strippedProviderName = file.substring(0, file.indexOf("."))
return `"${strippedProviderName}"`
}).filter((provider) => provider !== '"oauth-types"' && provider !== '"index"')
const result = `
// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
export type OAuthProviderType =
| ${providers.join("\n | ")}`
writeFileSync(join(providersPath, "oauth-types.ts"), result)

View File

@@ -27,14 +27,14 @@
* ## Resources
*
* - [Getting started](https://authjs.dev/getting-started/introduction)
* - [Most common use case guides](https://authjs.dev/guides/overview)
* - [Most common use case guides](https://authjs.dev/guides)
*
* @module main
*/
import { assertConfig } from "./lib/assert.js"
import { ErrorPageLoop } from "./errors.js"
import { AuthInternal } from "./lib/index.js"
import { AuthInternal, skipCSRFCheck } from "./lib/index.js"
import renderPage from "./lib/pages/index.js"
import { logger, setLogger, type LoggerInstance } from "./lib/utils/logger.js"
import { toInternalRequest, toResponse } from "./lib/web.js"
@@ -51,6 +51,8 @@ import type {
import type { Provider } from "./providers/index.js"
import { JWTOptions } from "./jwt.js"
export { skipCSRFCheck }
/**
* Core functionality provided by Auth.js.
*
@@ -298,14 +300,3 @@ export interface AuthConfig {
trustHost?: boolean
skipCSRFCheck?: typeof skipCSRFCheck
}
/**
* :::danger
* This option is inteded for framework authors.
* :::
*
* Auth.js comes with built-in {@link https://authjs.dev/concepts/security#csrf CSRF} protection, but
* if you are implementing a framework that is already protected against CSRF attacks, you can skip this check by
* passing this value to {@link AuthConfig.skipCSRFCheck}.
*/
export const skipCSRFCheck = Symbol("skip-csrf-check")

View File

@@ -1,5 +1,4 @@
import { UnknownAction } from "../errors.js"
import { skipCSRFCheck } from "../index.js"
import { SessionStore } from "./cookie.js"
import { init } from "./init.js"
import renderPage from "./pages/index.js"
@@ -72,9 +71,9 @@ export async function AuthInternal<
if (pages.signIn) {
let signinUrl = `${pages.signIn}${
pages.signIn.includes("?") ? "&" : "?"
}callbackUrl=${encodeURIComponent(options.callbackUrl)}`
}${new URLSearchParams({ callbackUrl: options.callbackUrl })}`
if (error)
signinUrl = `${signinUrl}&error=${encodeURIComponent(error)}`
signinUrl = `${signinUrl}&${new URLSearchParams({ error })}`
return { redirect: signinUrl, cookies }
}
@@ -186,3 +185,14 @@ export async function AuthInternal<
}
throw new UnknownAction(`Cannot handle action: ${action}`)
}
/**
* :::danger
* This option is inteded for framework authors.
* :::
*
* Auth.js comes with built-in {@link https://authjs.dev/concepts/security#csrf CSRF} protection, but
* if you are implementing a framework that is already protected against CSRF attacks, you can skip this check by
* passing this value to {@link AuthConfig.skipCSRFCheck}.
*/
export const skipCSRFCheck = Symbol("skip-csrf-check")

View File

@@ -90,5 +90,5 @@ export async function getAuthorizationUrl(
}
logger.debug("authorization url is ready", { url, cookies, provider })
return { redirect: url, cookies }
return { redirect: url.toString(), cookies }
}

View File

@@ -203,7 +203,7 @@ async function getProfile(
// If we didn't get a response either there was a problem with the provider
// response *or* the user cancelled the action with the provider.
//
// Unfortuately, we can't tell which - at least not in a way that works for
// Unfortunately, we can't tell which - at least not in a way that works for
// all providers, so we return an empty object; the user should then be
// redirected back to the sign up page. We log the error to help developers
// who might be trying to debug this when configuring a new provider.

View File

@@ -149,7 +149,7 @@ export async function callback(params: {
return {
redirect: `${pages.newUser}${
pages.newUser.includes("?") ? "&" : "?"
}callbackUrl=${encodeURIComponent(callbackUrl)}`,
}${new URLSearchParams({ callbackUrl })}`,
cookies,
}
}
@@ -256,7 +256,7 @@ export async function callback(params: {
return {
redirect: `${pages.newUser}${
pages.newUser.includes("?") ? "&" : "?"
}callbackUrl=${encodeURIComponent(callbackUrl)}`,
}${new URLSearchParams({ callbackUrl })}`,
cookies,
}
}
@@ -350,6 +350,6 @@ export async function callback(params: {
logger.error(error)
url.searchParams.set("error", CallbackRouteError.name)
url.pathname += "/error"
return { redirect: url, cookies }
return { redirect: url.toString(), cookies }
}
}

View File

@@ -13,13 +13,13 @@ export async function handleAuthorized(
if (!authorized) {
logger.debug("User not authorized", params)
url.searchParams.set("error", "AccessDenied")
return { status: 403 as const, redirect: url }
return { status: 403 as const, redirect: url.toString() }
}
} catch (e) {
const error = new AuthorizedCallbackError(e as Error)
logger.error(error)
url.searchParams.set("error", "Configuration")
return { status: 500 as const, redirect: url }
return { status: 500 as const, redirect: url.toString() }
}
}

View File

@@ -54,7 +54,7 @@ export async function signin(
logger.error(error)
url.searchParams.set("error", error.name)
url.pathname += "/error"
return { redirect: url }
return { redirect: url.toString() }
}
}

View File

@@ -8,7 +8,7 @@ import type { SessionStore } from "../cookie.js"
* If the session strategy is database,
* The session is also deleted from the database.
* In any case, the session cookie is cleared and
* an `events.signOut` is emitted.
* {@link EventCallbacks.signOut} is emitted.
*/
export async function signout(
sessionStore: SessionStore,

View File

@@ -76,27 +76,22 @@ export function toResponse(res: ResponseInternal): Response {
res.cookies?.forEach((cookie) => {
const { name, value, options } = cookie
const cookieHeader = serialize(name, value, options)
if (headers.has("Set-Cookie")) {
headers.append("Set-Cookie", cookieHeader)
} else {
headers.set("Set-Cookie", cookieHeader)
}
if (headers.has("Set-Cookie")) headers.append("Set-Cookie", cookieHeader)
else headers.set("Set-Cookie", cookieHeader)
// headers.set("Set-Cookie", cookieHeader) // TODO: Remove. Seems to be a bug with Headers in the runtime
})
const body =
headers.get("content-type") === "application/json"
? JSON.stringify(res.body)
: res.body
let body = res.body
const response = new Response(body, {
headers,
status: res.redirect ? 302 : res.status ?? 200,
})
if (headers.get("content-type") === "application/json")
body = JSON.stringify(res.body)
else if (headers.get("content-type") === "application/x-www-form-urlencoded")
body = new URLSearchParams(res.body).toString()
if (res.redirect) {
response.headers.set("Location", res.redirect.toString())
}
const status = res.redirect ? 302 : res.status ?? 200
const response = new Response(body, { headers, status })
if (res.redirect) response.headers.set("Location", res.redirect)
return response
}

View File

@@ -49,10 +49,6 @@ export interface CredentialsConfig<
export type CredentialsProviderType = "Credentials"
export type CredentialsConfigInternal<
C extends Record<string, CredentialInput> = Record<string, CredentialInput>
> = CredentialsConfig<C> & { options: CredentialsConfig<C> }
/**
* The Credentials provider allows you to handle signing in with arbitrary credentials,
* such as a username and password, domain, or two factor authentication or hardware device (e.g. YubiKey U2F / FIDO).

View File

@@ -1,21 +1,77 @@
import type { OAuthConfig, OAuthUserConfig } from "./index.js"
/**
* Corresponds to the user structure documented here:
* https://discord.com/developers/docs/resources/user#user-object-user-structure
*/
export interface DiscordProfile extends Record<string, any> {
accent_color: number
avatar: string
banner: string
banner_color: string
discriminator: string
email: string
flags: number
/** the user's id (i.e. the numerical snowflake) */
id: string
image_url: string
locale: string
mfa_enabled: boolean
premium_type: number
public_flags: number
/** the user's username, not unique across the platform */
username: string
/** the user's 4-digit discord-tag */
discriminator: string
/**
* the user's avatar hash:
* https://discord.com/developers/docs/reference#image-formatting
*/
avatar: string | null
/** whether the user belongs to an OAuth2 application */
bot?: boolean
/**
* whether the user is an Official Discord System user (part of the urgent
* message system)
*/
system?: boolean
/** whether the user has two factor enabled on their account */
mfa_enabled: boolean
/**
* the user's banner hash:
* https://discord.com/developers/docs/reference#image-formatting
*/
banner: string | null
/** the user's banner color encoded as an integer representation of hexadecimal color code */
accent_color: number | null
/**
* the user's chosen language option:
* https://discord.com/developers/docs/reference#locales
*/
locale: string
/** whether the email on this account has been verified */
verified: boolean
/** the user's email */
email: string | null
/**
* the flags on a user's account:
* https://discord.com/developers/docs/resources/user#user-object-user-flags
*/
flags: number
/**
* the type of Nitro subscription on a user's account:
* https://discord.com/developers/docs/resources/user#user-object-premium-types
*/
premium_type: number
/**
* the public flags on a user's account:
* https://discord.com/developers/docs/resources/user#user-object-user-flags
*/
public_flags: number
/** undocumented field; corresponds to the user's custom nickname */
display_name: string | null
/**
* undocumented field; corresponds to the Discord feature where you can e.g.
* put your avatar inside of an ice cube
*/
avatar_decoration: string | null
/**
* undocumented field; corresponds to the premium feature where you can
* select a custom banner color
*/
banner_color: string | null
/** undocumented field; the CDN URL of their profile picture */
image_url: string
}
export default function Discord<P extends DiscordProfile>(

View File

@@ -65,12 +65,16 @@ export type Provider<P extends Profile = Profile> = (
| EmailConfig
| CredentialsConfig
) & {
/**
* Used to deep merge user-provided config with the default config
* @internal
*/
options: Record<string, unknown>
}
export type BuiltInProviders = Record<
OAuthProviderType,
(options: Partial<OAuthConfig<any>>) => OAuthConfig<any>
(config: Partial<OAuthConfig<any>>) => OAuthConfig<any>
> &
Record<CredentialsProviderType, typeof CredentialsProvider> &
Record<EmailProviderType, typeof EmailProvider>

View File

@@ -1,69 +0,0 @@
// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
export type OAuthProviderType =
| "42-school"
| "apple"
| "atlassian"
| "auth0"
| "authentik"
| "azure-ad-b2c"
| "azure-ad"
| "battlenet"
| "box"
| "boxyhq-saml"
| "bungie"
| "cognito"
| "coinbase"
| "credentials"
| "discord"
| "dropbox"
| "duende-identity-server6"
| "email"
| "eveonline"
| "facebook"
| "faceit"
| "foursquare"
| "freshbooks"
| "fusionauth"
| "github"
| "gitlab"
| "google"
| "hubspot"
| "identity-server4"
| "index"
| "instagram"
| "kakao"
| "keycloak"
| "line"
| "linkedin"
| "mailchimp"
| "mailru"
| "medium"
| "naver"
| "netlify"
| "oauth-types.js"
| "oauth"
| "okta"
| "onelogin"
| "osso"
| "osu"
| "patreon"
| "pinterest"
| "pipedrive"
| "reddit"
| "salesforce"
| "slack"
| "spotify"
| "strava"
| "todoist"
| "trakt"
| "twitch"
| "twitter"
| "united-effects"
| "vk"
| "wikimedia"
| "wordpress"
| "workos"
| "yandex"
| "zitadel"
| "zoho"
| "zoom"

View File

@@ -66,7 +66,7 @@ export type TokenEndpointHandler = EndpointHandler<
params: CallbackParamsType
/**
* When using this custom flow, make sure to do all the necessary security checks.
* Thist object contains parameters you have to match against the request to make sure it is valid.
* This object contains parameters you have to match against the request to make sure it is valid.
*/
checks: OAuthChecks
},

View File

@@ -203,7 +203,7 @@ export interface CallbacksOptions<P = Profile, A = Account> {
* Its content is forwarded to the `session` callback,
* where you can control what should be returned to the client.
* Anything else will be kept inaccessible from the client.
*
*
* Returning `null` will invalidate the JWT session by clearing
* the user's cookies. You'll still have to monitor and invalidate
* unexpired tokens from future requests yourself to prevent
@@ -220,7 +220,7 @@ export interface CallbacksOptions<P = Profile, A = Account> {
account?: A | null
profile?: P
isNewUser?: boolean
}) => Awaitable<JWT|null>
}) => Awaitable<JWT | null>
}
/** [Documentation](https://authjs.dev/reference/configuration/auth-config#cookies) */
@@ -452,7 +452,7 @@ export interface ResponseInternal<
status?: number
headers?: Headers | HeadersInit
body?: Body
redirect?: URL | string
redirect?: string
cookies?: Cookie[]
}

View File

@@ -1,8 +1,16 @@
// After build, copy the files in ./package to the root directory, excluding the package.json file.
import fs from "fs/promises"
import path from "path"
const __dirname = path.dirname(new URL(import.meta.url).pathname)
let __dirname = path.dirname(new URL(import.meta.url).pathname)
// The above hack to polyfill "__dirname" for ESM does not work on Windows computers,
// so we might have to manually perform more steps.
__dirname = __dirname.split(path.sep).join(path.posix.sep)
if (__dirname.match(/^\/\w:\//)) {
__dirname = __dirname.slice(3) // Remove the drive prefix.
}
const root = path.join(__dirname, "..")
const pkgDir = path.join(root, "package")

109
pnpm-lock.yaml generated
View File

@@ -114,8 +114,8 @@ importers:
apps/dev/sveltekit:
specifiers:
'@auth/core': 0.2.5
'@auth/sveltekit': 0.1.12
'@auth/core': workspace:*
'@auth/sveltekit': workspace:*
'@sveltejs/adapter-auto': next
'@sveltejs/kit': next
svelte: 3.55.0
@@ -143,7 +143,7 @@ importers:
vercel: ^23.1.2
dependencies:
dotenv: 16.0.3
gatsby: 5.6.0-next.0_biqbaboplfbrettd7655fr4n2y
gatsby: 5.6.0-next.2_biqbaboplfbrettd7655fr4n2y
next-auth: link:../../../packages/next-auth
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
@@ -2877,7 +2877,7 @@ packages:
'@babel/core': 7.20.12
'@babel/helper-plugin-utils': 7.20.2
'@babel/helper-skip-transparent-expression-wrappers': 7.20.0
'@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.12
'@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12
/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.20.2:
resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==}
@@ -2888,7 +2888,7 @@ packages:
'@babel/core': 7.20.2
'@babel/helper-plugin-utils': 7.20.2
'@babel/helper-skip-transparent-expression-wrappers': 7.20.0
'@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.2
'@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.2
dev: true
/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.20.5:
@@ -2900,7 +2900,7 @@ packages:
'@babel/core': 7.20.5
'@babel/helper-plugin-utils': 7.20.2
'@babel/helper-skip-transparent-expression-wrappers': 7.20.0
'@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.5
'@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.5
dev: true
/@babel/plugin-proposal-async-generator-functions/7.17.12:
@@ -3623,7 +3623,30 @@ packages:
'@babel/helper-plugin-utils': 7.20.2
'@babel/helper-skip-transparent-expression-wrappers': 7.20.0
'@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12
dev: false
/@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.2:
resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.20.2
'@babel/helper-plugin-utils': 7.20.2
'@babel/helper-skip-transparent-expression-wrappers': 7.20.0
'@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.2
dev: true
/@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.5:
resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.20.5
'@babel/helper-plugin-utils': 7.20.2
'@babel/helper-skip-transparent-expression-wrappers': 7.20.0
'@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5
dev: true
/@babel/plugin-proposal-private-methods/7.17.12:
resolution: {integrity: sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==}
@@ -14044,8 +14067,10 @@ packages:
indent-string: 4.0.0
dev: true
/ajv-formats/2.1.1:
/ajv-formats/2.1.1_ajv@8.11.0:
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependencies:
ajv: ^8.0.0
peerDependenciesMeta:
ajv:
optional: true
@@ -14552,14 +14577,14 @@ packages:
/axios/0.21.4_debug@4.3.4:
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
dependencies:
follow-redirects: 1.15.1
follow-redirects: 1.15.1_debug@4.3.4
transitivePeerDependencies:
- debug
/axios/0.25.0:
resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==}
dependencies:
follow-redirects: 1.15.1
follow-redirects: 1.15.1_debug@4.3.4
transitivePeerDependencies:
- debug
dev: true
@@ -14946,7 +14971,7 @@ packages:
- supports-color
dev: true
/babel-plugin-remove-graphql-queries/5.6.0-next.0_34zmit57noivsgqvgdpgpcttx4:
/babel-plugin-remove-graphql-queries/5.6.0-next.0_x3fnz3zp5bgltr62wwyqvgm7l4:
resolution: {integrity: sha512-hrxx7U73x6TUL+x/h2/OrQT4hdeGkYjK39oiYtt6erSVz8q1iOYl4tfCYN0wuHyrvpRdXJ7UBrAhLgBFIPn8Gw==}
engines: {node: '>=18.0.0'}
peerDependencies:
@@ -14956,7 +14981,7 @@ packages:
'@babel/core': 7.20.12
'@babel/runtime': 7.20.7
'@babel/types': 7.20.7
gatsby: 5.6.0-next.0_biqbaboplfbrettd7655fr4n2y
gatsby: 5.6.0-next.2_biqbaboplfbrettd7655fr4n2y
gatsby-core-utils: 4.6.0-next.0
dev: false
@@ -16497,8 +16522,8 @@ packages:
readable-stream: 3.6.0
dev: true
/create-gatsby/3.6.0-next.0:
resolution: {integrity: sha512-eeTIlCWsSWhQkfbcRstHO8n7I6kkf/tWkyjHt5nEGoIn2HW1457Qt4QMLhMyowhNBw/nXHiU+QuUvg+1oY8z9g==}
/create-gatsby/3.6.0-next.1:
resolution: {integrity: sha512-7PSTSNLa1w0LZ81WXZ09IBVcE+SCuOk8QOPJC3tK2D50iTeKo1rBp2mZEX0ao5sC5q/N869HuLBPkzdvP5Lvig==}
hasBin: true
dependencies:
'@babel/runtime': 7.20.7
@@ -19710,7 +19735,7 @@ packages:
dependencies:
'@apidevtools/json-schema-ref-parser': 9.0.9
ajv: 8.11.0
ajv-formats: 2.1.1
ajv-formats: 2.1.1_ajv@8.11.0
body-parser: 1.20.0
content-type: 1.0.4
deep-freeze: 0.0.1
@@ -20360,15 +20385,6 @@ packages:
resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==}
dev: true
/follow-redirects/1.15.1:
resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
peerDependenciesMeta:
debug:
optional: true
/follow-redirects/1.15.1_debug@4.3.4:
resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==}
engines: {node: '>=4.0'}
@@ -20379,7 +20395,6 @@ packages:
optional: true
dependencies:
debug: 4.3.4
dev: true
/for-each/0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
@@ -20636,8 +20651,8 @@ packages:
/functions-have-names/1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
/gatsby-cli/5.6.0-next.0:
resolution: {integrity: sha512-B38HOsNXQ1r8EAap/J0E6CRv2QYxuf8J+Uc+aASbbDgEmfZw8A95ayT6JM8rqYaf9mambUmzot/QF/hKQBY1uA==}
/gatsby-cli/5.6.0-next.1:
resolution: {integrity: sha512-tFrTZlEezIxFKMkCXXKu3tKBrjqpZt+PykNABkSgOdMGO1pT/xysSClCbKOMockWosrpgaNup+1rP8sjVRdIsw==}
engines: {node: '>=18.0.0'}
hasBin: true
requiresBuild: true
@@ -20658,7 +20673,7 @@ packages:
clipboardy: 2.3.0
common-tags: 1.8.2
convert-hrtime: 3.0.0
create-gatsby: 3.6.0-next.0
create-gatsby: 3.6.0-next.1
envinfo: 7.8.1
execa: 5.1.1
fs-exists-cached: 1.0.0
@@ -20773,8 +20788,8 @@ packages:
'@parcel/transformer-json': 2.8.2_@parcel+core@2.8.2
dev: false
/gatsby-plugin-page-creator/5.6.0-next.0_4kofk2l43xwpw753oec5pxbv5e:
resolution: {integrity: sha512-zNfm0f5wpVhlwDnvGwkfQtIcIHJeRJBeYQCkUYUPwoA1s4AJFY6+wbYSRYHcM8r2K5aDfE1/t32YEY43UNIzGA==}
/gatsby-plugin-page-creator/5.6.0-next.1_wxxlwg4kb5uwyfjvsdo3jviy2e:
resolution: {integrity: sha512-9yE2C4Xbc+llNRzzC9MbpgSM1GQCi4lUqlNy8Hq/C25S0wTTRW+FQZxuWTiR+AUTUL8MK9wJsNF5f0bZc8hfJw==}
engines: {node: '>=18.0.0'}
peerDependencies:
gatsby: ^5.0.0-next
@@ -20785,10 +20800,10 @@ packages:
chokidar: 3.5.3
fs-exists-cached: 1.0.0
fs-extra: 11.1.0
gatsby: 5.6.0-next.0_biqbaboplfbrettd7655fr4n2y
gatsby: 5.6.0-next.2_biqbaboplfbrettd7655fr4n2y
gatsby-core-utils: 4.6.0-next.0
gatsby-page-utils: 3.6.0-next.0
gatsby-plugin-utils: 4.6.0-next.0_4kofk2l43xwpw753oec5pxbv5e
gatsby-plugin-utils: 4.6.0-next.1_wxxlwg4kb5uwyfjvsdo3jviy2e
gatsby-telemetry: 4.6.0-next.0
globby: 11.1.0
lodash: 4.17.21
@@ -20798,7 +20813,7 @@ packages:
- supports-color
dev: false
/gatsby-plugin-typescript/5.6.0-next.0_gatsby@5.6.0-next.0:
/gatsby-plugin-typescript/5.6.0-next.0_gatsby@5.6.0-next.2:
resolution: {integrity: sha512-CUguJx8GjTQHymcfBOcwUXZtetfhLYtgUehkM8ovvNlscgavGxmbGD90gXMmo5JgrLPhdx8krtMsdIeCOOvo4w==}
engines: {node: '>=18.0.0'}
peerDependencies:
@@ -20810,14 +20825,14 @@ packages:
'@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12
'@babel/preset-typescript': 7.18.6_@babel+core@7.20.12
'@babel/runtime': 7.20.7
babel-plugin-remove-graphql-queries: 5.6.0-next.0_34zmit57noivsgqvgdpgpcttx4
gatsby: 5.6.0-next.0_biqbaboplfbrettd7655fr4n2y
babel-plugin-remove-graphql-queries: 5.6.0-next.0_x3fnz3zp5bgltr62wwyqvgm7l4
gatsby: 5.6.0-next.2_biqbaboplfbrettd7655fr4n2y
transitivePeerDependencies:
- supports-color
dev: false
/gatsby-plugin-utils/4.6.0-next.0_4kofk2l43xwpw753oec5pxbv5e:
resolution: {integrity: sha512-3xidC+kpOz9xtsG5yv4UGB87pA0bo3YEHBTtUf5kshNEycMeTeh6xgb6gnD56kCVQ4DFrUBAe5U95hWH8n65Aw==}
/gatsby-plugin-utils/4.6.0-next.1_wxxlwg4kb5uwyfjvsdo3jviy2e:
resolution: {integrity: sha512-RhM2cQ6RYmdGQkXKs4d+KfG5ovGjvbF4fps/H4Sk81nJ1AnlPGbUlMaCdgFhhTJL1ID8l4rYdpQKXM87THJosQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
gatsby: ^5.0.0-next
@@ -20826,7 +20841,7 @@ packages:
'@babel/runtime': 7.20.7
fastq: 1.15.0
fs-extra: 11.1.0
gatsby: 5.6.0-next.0_biqbaboplfbrettd7655fr4n2y
gatsby: 5.6.0-next.2_biqbaboplfbrettd7655fr4n2y
gatsby-core-utils: 4.6.0-next.0
gatsby-sharp: 1.6.0-next.0
graphql: 16.6.0
@@ -20905,8 +20920,8 @@ packages:
- supports-color
dev: false
/gatsby/5.6.0-next.0_biqbaboplfbrettd7655fr4n2y:
resolution: {integrity: sha512-QwM9R3JtRo7Qk1A0v5Hgpo45SXtRYh7OzZntOaj8VsDk7HebITZ5eLrdTq/wPYNYn3Jlng2bG+bObcIEjjqcyw==}
/gatsby/5.6.0-next.2_biqbaboplfbrettd7655fr4n2y:
resolution: {integrity: sha512-cXyyDjlA2V3NhnfJtLhcrShrYU6k/FB67el5MZIqzrHjb7sg77lJztMpoy4PvXs4MlNvhRupSclIO+o9+G0pyg==}
engines: {node: '>=18.0.0'}
hasBin: true
requiresBuild: true
@@ -20952,7 +20967,7 @@ packages:
babel-plugin-add-module-exports: 1.0.4
babel-plugin-dynamic-import-node: 2.3.3
babel-plugin-lodash: 3.3.4
babel-plugin-remove-graphql-queries: 5.6.0-next.0_34zmit57noivsgqvgdpgpcttx4
babel-plugin-remove-graphql-queries: 5.6.0-next.0_x3fnz3zp5bgltr62wwyqvgm7l4
babel-preset-gatsby: 3.6.0-next.0_pp2vm42zn6vfmnpuhar3irht7i
better-opn: 2.1.1
bluebird: 3.7.2
@@ -20994,16 +21009,16 @@ packages:
find-cache-dir: 3.3.2
fs-exists-cached: 1.0.0
fs-extra: 11.1.0
gatsby-cli: 5.6.0-next.0
gatsby-cli: 5.6.0-next.1
gatsby-core-utils: 4.6.0-next.0
gatsby-graphiql-explorer: 3.6.0-next.0
gatsby-legacy-polyfills: 3.6.0-next.0
gatsby-link: 5.6.0-next.0_y2kppt6lrltqk6wasg3eswwzsa
gatsby-page-utils: 3.6.0-next.0
gatsby-parcel-config: 1.6.0-next.0_@parcel+core@2.8.2
gatsby-plugin-page-creator: 5.6.0-next.0_4kofk2l43xwpw753oec5pxbv5e
gatsby-plugin-typescript: 5.6.0-next.0_gatsby@5.6.0-next.0
gatsby-plugin-utils: 4.6.0-next.0_4kofk2l43xwpw753oec5pxbv5e
gatsby-plugin-page-creator: 5.6.0-next.1_wxxlwg4kb5uwyfjvsdo3jviy2e
gatsby-plugin-typescript: 5.6.0-next.0_gatsby@5.6.0-next.2
gatsby-plugin-utils: 4.6.0-next.1_wxxlwg4kb5uwyfjvsdo3jviy2e
gatsby-react-router-scroll: 6.6.0-next.0_y2kppt6lrltqk6wasg3eswwzsa
gatsby-script: 2.6.0-next.0_y2kppt6lrltqk6wasg3eswwzsa
gatsby-telemetry: 4.6.0-next.0
@@ -22178,7 +22193,7 @@ packages:
engines: {node: '>=8.0.0'}
dependencies:
eventemitter3: 4.0.7
follow-redirects: 1.15.1
follow-redirects: 1.15.1_debug@4.3.4
requires-port: 1.0.0
transitivePeerDependencies:
- debug
@@ -30463,7 +30478,7 @@ packages:
dependencies:
'@types/json-schema': 7.0.11
ajv: 8.11.0
ajv-formats: 2.1.1
ajv-formats: 2.1.1_ajv@8.11.0
ajv-keywords: 5.1.0_ajv@8.11.0
dev: true

View File

@@ -25,6 +25,10 @@
"dependsOn": ["^build"],
"outputs": ["lib/**", "providers/**", "*.js", "*.d.ts", "*.d.ts.map"]
},
"@auth/sveltekit#build": {
"dependsOn": ["^build"],
"outputs": ["client.*", "index.*"]
},
"clean": {
"cache": false
},