diff --git a/docs/docs/reference/adapters/index.md b/docs/docs/reference/adapters/index.md
index 5165f60f2d..8a64a717ec 100644
--- a/docs/docs/reference/adapters/index.md
+++ b/docs/docs/reference/adapters/index.md
@@ -69,6 +69,10 @@ Using an Auth.js / NextAuth.js adapter you can connect to any database service o
Supabase Adapter
+
+
+ SurrealDB Adapter
+
TypeORM Adapter
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 6831d3d024..1d1abc2ef9 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -299,6 +299,7 @@ const docusaurusConfig = {
typedocAdapter("TypeORM"),
typedocAdapter("Sequelize"),
typedocAdapter("Supabase"),
+ typedocAdapter("SurrealDB"),
typedocAdapter("Upstash Redis"),
typedocAdapter("Xata"),
]),
diff --git a/docs/sidebars.js b/docs/sidebars.js
index 1db5d36ce3..f2b94eeff9 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -61,6 +61,7 @@ module.exports = {
{ type: "doc", id: "reference/adapter/prisma/index" },
{ type: "doc", id: "reference/adapter/sequelize/index" },
{ type: "doc", id: "reference/adapter/supabase/index" },
+ { type: "doc", id: "reference/adapter/surrealdb/index" },
{ type: "doc", id: "reference/adapter/typeorm/index" },
{ type: "doc", id: "reference/adapter/upstash-redis/index" },
{ type: "doc", id: "reference/adapter/xata/index" },
diff --git a/docs/static/img/adapters/surreal.png b/docs/static/img/adapters/surreal.png
new file mode 100644
index 0000000000..b171137606
Binary files /dev/null and b/docs/static/img/adapters/surreal.png differ
diff --git a/packages/adapter-surrealdb/README.md b/packages/adapter-surrealdb/README.md
new file mode 100644
index 0000000000..2bb5a90034
--- /dev/null
+++ b/packages/adapter-surrealdb/README.md
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
Surreal DB Adapter - NextAuth.js / Auth.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---
+
+Check out the documentation at [authjs.dev](https://authjs.dev/reference/adapter/surrealdb).
diff --git a/packages/adapter-surrealdb/package.json b/packages/adapter-surrealdb/package.json
new file mode 100644
index 0000000000..2ce0fe36c3
--- /dev/null
+++ b/packages/adapter-surrealdb/package.json
@@ -0,0 +1,60 @@
+{
+ "name": "@next-auth/surrealdb-adapter",
+ "version": "0.0.0",
+ "description": "SurrealDB adapter for next-auth.",
+ "homepage": "https://authjs.dev",
+ "repository": "https://github.com/nextauthjs/next-auth",
+ "bugs": {
+ "url": "https://github.com/nextauthjs/next-auth/issues"
+ },
+ "author": "Martin Schaer ",
+ "contributors": [
+ "Thang Huu Vu "
+ ],
+ "type": "module",
+ "types": "./index.d.ts",
+ "files": [
+ "*.js",
+ "*.d.ts*",
+ "src"
+ ],
+ "exports": {
+ ".": {
+ "types": "./index.d.ts",
+ "import": "./index.js"
+ }
+ },
+ "license": "ISC",
+ "keywords": [
+ "next-auth",
+ "next.js",
+ "oauth",
+ "mongodb",
+ "adapter"
+ ],
+ "private": false,
+ "publishConfig": {
+ "access": "public"
+ },
+ "scripts": {
+ "test": "./tests/test.sh",
+ "test:watch": "./tests/test.sh -w",
+ "build": "tsc"
+ },
+ "dependencies": {
+ "@auth/core": "workspace:*"
+ },
+ "peerDependencies": {
+ "surrealdb.js": "^0.9.0"
+ },
+ "devDependencies": {
+ "@types/node-fetch": "^2.5.11",
+ "@auth/adapter-test": "workspace:*",
+ "@auth/tsconfig": "workspace:*",
+ "jest": "^27.4.3",
+ "node-fetch": "^2.6.1"
+ },
+ "jest": {
+ "preset": "@auth/adapter-test/jest"
+ }
+}
diff --git a/packages/adapter-surrealdb/src/index.ts b/packages/adapter-surrealdb/src/index.ts
new file mode 100644
index 0000000000..06c141d6c0
--- /dev/null
+++ b/packages/adapter-surrealdb/src/index.ts
@@ -0,0 +1,366 @@
+import Surreal, { ExperimentalSurrealHTTP } from "surrealdb.js"
+import type {
+ Adapter,
+ AdapterUser,
+ AdapterAccount,
+ AdapterSession,
+ VerificationToken,
+} from "@auth/core/adapters"
+import type { ProviderType } from "@auth/core/providers"
+
+type Document = Record & { id: string }
+export type UserDoc = Document & { email: string }
+export type AccountDoc = {
+ id: string
+ userId: T
+ refresh_token?: string
+ access_token?: string
+ type: Extract
+ provider: string
+ providerAccountId: string
+ expires_at?: number
+}
+export type SessionDoc = Document & { userId: T }
+
+const extractId = (surrealId: string) => surrealId.split(":")[1] ?? surrealId
+
+// Convert DB object to AdapterUser
+export const docToUser = (doc: UserDoc): AdapterUser => ({
+ ...doc,
+ id: extractId(doc.id),
+ emailVerified: doc.emailVerified ? new Date(doc.emailVerified) : null,
+})
+
+// Convert DB object to AdapterAccount
+export const docToAccount = (doc: AccountDoc) => {
+ const account: AdapterAccount = {
+ ...doc,
+ id: extractId(doc.id),
+ userId: doc.userId ? extractId(doc.userId) : "",
+ }
+ return account
+}
+
+// Convert DB object to AdapterSession
+export const docToSession = (
+ doc: SessionDoc
+): AdapterSession => ({
+ userId: extractId(
+ typeof doc.userId === "string" ? doc.userId : doc.userId.id
+ ),
+ expires: new Date(doc.expires ?? ""),
+ sessionToken: doc.sessionToken ?? "",
+})
+
+// Convert AdapterUser to DB object
+const userToDoc = (
+ user: Omit | Partial
+): Omit => {
+ const doc = {
+ ...user,
+ emailVerified: user.emailVerified?.toISOString(),
+ }
+ return doc
+}
+
+// Convert AdapterAccount to DB object
+const accountToDoc = (account: AdapterAccount): Omit => {
+ const doc = {
+ ...account,
+ userId: `user:${account.userId}`,
+ }
+ return doc
+}
+
+// Convert AdapterSession to DB object
+export const sessionToDoc = (
+ session: AdapterSession
+): Omit => {
+ const doc = {
+ ...session,
+ expires: session.expires.toISOString(),
+ }
+ return doc
+}
+
+export function SurrealDBAdapter(
+ client: Promise>
+ // options = {}
+): Adapter {
+ return {
+ async createUser(user: Omit) {
+ const surreal = await client
+ const doc = userToDoc(user)
+ const userDoc = await surreal.create>("user", doc)
+ if (userDoc.length) {
+ return docToUser(userDoc[0])
+ }
+ throw new Error("User not created")
+ },
+ async getUser(id: string) {
+ const surreal = await client
+ try {
+ const queryResult = await surreal.query<[UserDoc[]]>(
+ "SELECT * FROM $user",
+ {
+ user: `user:${id}`,
+ }
+ )
+ const doc = queryResult[0].result?.[0]
+ if (doc) {
+ return docToUser(doc)
+ }
+ } catch (e) { }
+ return null
+ },
+ async getUserByEmail(email: string) {
+ const surreal = await client
+ try {
+ const users = await surreal.query<[UserDoc[]]>(
+ `SELECT * FROM user WHERE email = $email`,
+ { email }
+ )
+ const doc = users[0].result?.[0]
+ if (doc) return docToUser(doc)
+ } catch (e) { }
+ return null
+ },
+ async getUserByAccount({
+ providerAccountId,
+ provider,
+ }: Pick) {
+ const surreal = await client
+ try {
+ const users = await surreal.query<[AccountDoc[]]>(
+ `SELECT userId
+ FROM account
+ WHERE providerAccountId = $providerAccountId
+ AND provider = $provider
+ FETCH userId`,
+ { providerAccountId, provider }
+ )
+ const user = users[0].result?.[0]
+ ?.userId
+ if (user) return docToUser(user)
+ } catch (e) { }
+ return null
+ },
+ async updateUser(user: Partial) {
+ const surreal = await client
+ const doc = { ...user, emailVerified: user.emailVerified?.toISOString(), id: undefined }
+ let updatedUser = await surreal.merge>(`user:${user.id}`, doc)
+ if (updatedUser.length) {
+ return docToUser(updatedUser[0])
+ } else {
+ throw new Error("User not updated")
+ }
+ },
+ async deleteUser(userId: string) {
+ const surreal = await client
+
+ // delete account
+ try {
+ const accounts = await surreal.query<[AccountDoc[]]>(
+ `SELECT *
+ FROM account
+ WHERE userId = $userId
+ LIMIT 1`,
+ { userId: `user:${userId}` }
+ )
+ const account = accounts[0].result?.[0]
+ if (account) {
+ const accountId = extractId(account.id)
+ await surreal.delete(`account:${accountId}`)
+ }
+ } catch (e) { }
+
+ // delete session
+ try {
+ const sessions = await surreal.query<[SessionDoc[]]>(
+ `SELECT *
+ FROM session
+ WHERE userId = $userId
+ LIMIT 1`,
+ { userId: `user:${userId}` }
+ )
+ const session = sessions[0].result?.[0]
+ if (session) {
+ const sessionId = extractId(session.id)
+ await surreal.delete(`session:${sessionId}`)
+ }
+ } catch (e) { }
+
+ // delete user
+ await surreal.delete(`user:${userId}`)
+
+ // TODO: put all 3 deletes inside a Promise all
+ },
+ async linkAccount(account: AdapterAccount) {
+ const surreal = await client
+ const doc = await surreal.create("account", accountToDoc(account))
+ return docToAccount(doc[0])
+ },
+ async unlinkAccount({
+ providerAccountId,
+ provider,
+ }: Pick) {
+ const surreal = await client
+ try {
+ const accounts = await surreal.query<[AccountDoc[]]>(
+ `SELECT *
+ FROM account
+ WHERE providerAccountId = $providerAccountId
+ AND provider = $provider
+ LIMIT 1`,
+ { providerAccountId, provider }
+ )
+ const account = accounts[0].result?.[0]
+ if (account) {
+ const accountId = extractId(account.id)
+ await surreal.delete(`account:${accountId}`)
+ }
+ } catch (e) { }
+ },
+ async createSession({
+ sessionToken,
+ userId,
+ expires,
+ }: {
+ sessionToken: string
+ userId: string
+ expires: Date
+ }) {
+ const surreal = await client
+ const doc = {
+ sessionToken,
+ userId: `user:${userId}`,
+ expires,
+ }
+ const result = await surreal.create("session", doc)
+ return result[0] ?? null
+ },
+ async getSessionAndUser(sessionToken: string) {
+ const surreal = await client
+ try {
+ // Can't use limit 1 because it prevent userId to be fetched.
+ // Works setting limit to 2
+ const sessions = await surreal.query<[SessionDoc[]]>(
+ `SELECT *
+ FROM session
+ WHERE sessionToken = $sessionToken
+ FETCH userId`,
+ { sessionToken }
+ )
+ const session = sessions[0].result?.[0]
+ if (session) {
+ const userDoc = session.userId
+ if (!userDoc) return null
+ return {
+ user: docToUser(userDoc),
+ session: docToSession({
+ ...session,
+ userId: userDoc.id,
+ }),
+ }
+ }
+ } catch (e) { }
+ return null
+ },
+ async updateSession(
+ session: Partial & Pick
+ ) {
+ const surreal = await client
+ try {
+ const sessions = await surreal.query<[SessionDoc[]]>(
+ `SELECT *
+ FROM session
+ WHERE sessionToken = $sessionToken
+ LIMIT 1`,
+ { sessionToken: session.sessionToken }
+ )
+ const sessionDoc = sessions[0].result?.[0]
+ if (sessionDoc && session.expires) {
+ const sessionId = extractId(sessionDoc.id)
+ let updatedSession = await surreal.merge>(
+ `session:${sessionId}`,
+ sessionToDoc({
+ ...sessionDoc,
+ ...session,
+ userId: sessionDoc.userId,
+ expires: session.expires,
+ })
+ )
+ if (updatedSession.length) {
+ return docToSession(updatedSession[0])
+ } else {
+ return null
+ }
+ }
+ } catch (e) { }
+ return null
+ },
+ async deleteSession(sessionToken: string) {
+ const surreal = await client
+ try {
+ const sessions = await surreal.query<[SessionDoc[]]>(
+ `SELECT *
+ FROM session
+ WHERE sessionToken = $sessionToken
+ LIMIT 1`,
+ { sessionToken }
+ )
+ const session = sessions[0].result?.[0]
+ if (session) {
+ const sessionId = extractId(session.id)
+ await surreal.delete(`session:${sessionId}`)
+ return
+ }
+ } catch (e) { }
+ },
+ async createVerificationToken({
+ identifier,
+ expires,
+ token,
+ }: VerificationToken) {
+ const surreal = await client
+ const doc = {
+ identifier,
+ expires,
+ token,
+ }
+ const result = await surreal.create("verification_token", doc)
+ return result[0] ?? null
+ },
+ async useVerificationToken({
+ identifier,
+ token,
+ }: {
+ identifier: string
+ token: string
+ }) {
+ const surreal = await client
+ try {
+ const tokens = await surreal.query<[{ identifier: string, expires: string, token: string, id: string }[]]>(
+ `SELECT *
+ FROM verification_token
+ WHERE identifier = $identifier
+ AND token = $verificationToken
+ LIMIT 1`,
+ { identifier, verificationToken: token }
+ )
+ if (tokens.length && tokens[0].result) {
+ const vt = tokens[0].result[0]
+ if (vt) {
+ await surreal.delete(vt.id)
+ return {
+ identifier: vt.identifier,
+ expires: new Date(vt.expires),
+ token: vt.token,
+ }
+ }
+ } else { return null }
+ } catch (e) { }
+ return null
+ },
+ }
+}
diff --git a/packages/adapter-surrealdb/tests/common.ts b/packages/adapter-surrealdb/tests/common.ts
new file mode 100644
index 0000000000..197e2e2178
--- /dev/null
+++ b/packages/adapter-surrealdb/tests/common.ts
@@ -0,0 +1,77 @@
+import Surreal, { ExperimentalSurrealHTTP } from "surrealdb.js"
+import fetch from "node-fetch"
+
+import {
+ SurrealDBAdapter,
+ docToUser,
+ docToAccount,
+ docToSession,
+} from "../src/index"
+import type { UserDoc, AccountDoc, SessionDoc } from "../src/index"
+
+export const config = (
+ clientPromise: Promise>
+) => ({
+ adapter: SurrealDBAdapter(clientPromise),
+ db: {
+ async disconnect() {
+ const surreal = await clientPromise
+ if (surreal.close) surreal.close()
+ },
+ async user(id: string) {
+ const surreal = await clientPromise
+ try {
+ const users = await surreal.query<[UserDoc[]]>("SELECT * FROM $user", {
+ user: `user:${id}`,
+ })
+ const user = users[0]
+ if (user.result?.[0] !== undefined)
+ return docToUser(user.result[0])
+ } catch (e) { }
+ return null
+ },
+ async account({ provider, providerAccountId }) {
+ const surreal = await clientPromise
+ const accounts = await surreal.query<[AccountDoc[]]>(
+ `SELECT * FROM account WHERE provider = $provider AND providerAccountId = $providerAccountId`,
+ { provider, providerAccountId }
+ )
+ const account = accounts[0]
+ if (account.result?.[0] !== undefined)
+ return docToAccount(account.result[0])
+ return null
+ },
+ async session(sessionToken: string) {
+ const surreal = await clientPromise
+ const sessions = await surreal.query<[SessionDoc[]]>(
+ `SELECT * FROM session WHERE sessionToken = $sessionToken`,
+ { sessionToken }
+ )
+ const session = sessions[0].result?.[0]
+ if (session !== undefined) {
+ return docToSession(session)
+ }
+ return null
+ },
+ async verificationToken({ identifier, token }) {
+ const surreal = await clientPromise
+ const tokens = await surreal.query<[{ identifier: string, expires: string, token: string, id: string }[]]>(
+ `SELECT *
+ FROM verification_token
+ WHERE identifier = $identifier
+ AND token = $verificationToken
+ LIMIT 1`,
+ { identifier, verificationToken: token }
+ )
+ const verificationToken = tokens[0].result?.[0]
+ if (verificationToken) {
+ return {
+ identifier: verificationToken.identifier,
+ expires: new Date(verificationToken.expires),
+ token: verificationToken.token,
+ }
+ }
+ return null
+ },
+ },
+})
diff --git a/packages/adapter-surrealdb/tests/index.test.ts b/packages/adapter-surrealdb/tests/index.test.ts
new file mode 100644
index 0000000000..8c546b5ec2
--- /dev/null
+++ b/packages/adapter-surrealdb/tests/index.test.ts
@@ -0,0 +1,23 @@
+import Surreal from "surrealdb.js"
+import { runBasicTests } from "@auth/adapter-test"
+
+import { config } from "./common"
+
+const clientPromise = new Promise(async (resolve, reject) => {
+ const db = new Surreal();
+ try {
+ await db.connect('http://0.0.0.0:8000/rpc', {
+ ns: "test",
+ db: "test",
+ auth: {
+ user: "test",
+ pass: "test",
+ }
+ })
+ resolve(db)
+ } catch (e) {
+ reject(e)
+ }
+})
+
+runBasicTests(config(clientPromise))
diff --git a/packages/adapter-surrealdb/tests/rest.test.ts b/packages/adapter-surrealdb/tests/rest.test.ts
new file mode 100644
index 0000000000..45290e29db
--- /dev/null
+++ b/packages/adapter-surrealdb/tests/rest.test.ts
@@ -0,0 +1,27 @@
+test("TODO: test rest", () => {
+ expect(true).toBe(true)
+})
+// import { ExperimentalSurrealHTTP } from "surrealdb.js"
+// import { runBasicTests } from "@auth/adapter-test"
+// import fetch from "node-fetch"
+
+// import { config } from "./common"
+
+// const clientPromise = new Promise>(async (resolve, reject) => {
+// try {
+// const db = new ExperimentalSurrealHTTP("http://0.0.0.0:8000", {
+// fetch,
+// auth: {
+// user: "test",
+// pass: "test",
+// },
+// ns: "test",
+// db: "test",
+// })
+// resolve(db)
+// } catch (e) {
+// reject(e)
+// }
+// })
+
+// runBasicTests(config(clientPromise))
diff --git a/packages/adapter-surrealdb/tests/test.sh b/packages/adapter-surrealdb/tests/test.sh
new file mode 100755
index 0000000000..8483c06eb9
--- /dev/null
+++ b/packages/adapter-surrealdb/tests/test.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+
+CONTAINER_NAME=next-auth-surrealdb-test
+
+JEST_WATCH=false
+
+# Is the watch flag passed to the script?
+while getopts w flag
+do
+ case "${flag}" in
+ w) JEST_WATCH=true;;
+ *) continue;;
+ esac
+done
+
+# Start db
+docker run -d --rm -p 8000:8000 --name ${CONTAINER_NAME} surrealdb/surrealdb:latest start --log debug --user test --pass test memory
+
+echo "Waiting 3 sec for db to start..."
+sleep 3
+
+if $JEST_WATCH; then
+ # Run jest in watch mode
+ npx jest tests --watch
+ # Only stop the container after jest has been quit
+ docker stop "${CONTAINER_NAME}"
+else
+ # Always stop container, but exit with 1 when tests are failing
+ if npx jest;then
+ docker stop ${CONTAINER_NAME}
+ else
+ docker stop ${CONTAINER_NAME} && exit 1
+ fi
+fi
diff --git a/packages/adapter-surrealdb/tsconfig.json b/packages/adapter-surrealdb/tsconfig.json
new file mode 100644
index 0000000000..44e6eeee55
--- /dev/null
+++ b/packages/adapter-surrealdb/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "extends": "@auth/tsconfig/tsconfig.base.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "baseUrl": ".",
+ "isolatedModules": true,
+ "target": "ES2020",
+ "module": "ESNext",
+ "moduleResolution": "node",
+ "outDir": ".",
+ "rootDir": "src",
+ "skipDefaultLibCheck": true,
+ "strictNullChecks": true,
+ "stripInternal": true,
+ "declarationMap": true,
+ "declaration": true
+ },
+ "include": [
+ "src/**/*"
+ ],
+ "exclude": [
+ "*.js",
+ "*.d.ts",
+ ]
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5a59143b18..eb54a1583d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -709,6 +709,31 @@ importers:
specifier: ^27.4.3
version: 27.5.1
+ packages/adapter-surrealdb:
+ dependencies:
+ '@auth/core':
+ specifier: workspace:*
+ version: link:../core
+ surrealdb.js:
+ specifier: ^0.9.0
+ version: 0.9.0
+ devDependencies:
+ '@auth/adapter-test':
+ specifier: workspace:*
+ version: link:../adapter-test
+ '@auth/tsconfig':
+ specifier: workspace:*
+ version: link:../tsconfig
+ '@types/node-fetch':
+ specifier: ^2.5.11
+ version: 2.6.2
+ jest:
+ specifier: ^27.4.3
+ version: 27.5.1
+ node-fetch:
+ specifier: ^2.6.1
+ version: 2.6.9
+
packages/adapter-test:
devDependencies:
'@auth/core':
@@ -8942,30 +8967,6 @@ packages:
slash: 3.0.0
dev: true
- /@jest/console@29.2.1:
- resolution: {integrity: sha512-MF8Adcw+WPLZGBiNxn76DOuczG3BhODTcMlDCA4+cFi41OkaY/lyI0XUUhi73F88Y+7IHoGmD80pN5CtxQUdSw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/node': 17.0.45
- chalk: 4.1.2
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- slash: 3.0.0
- dev: true
-
- /@jest/console@29.3.1:
- resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/node': 17.0.45
- chalk: 4.1.2
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- slash: 3.0.0
- dev: true
-
/@jest/console@29.5.0:
resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -9115,10 +9116,10 @@ packages:
node-notifier:
optional: true
dependencies:
- '@jest/console': 29.2.1
- '@jest/reporters': 29.3.0
+ '@jest/console': 29.5.0
+ '@jest/reporters': 29.5.0
'@jest/test-result': 29.5.0
- '@jest/transform': 29.3.0
+ '@jest/transform': 29.5.0
'@jest/types': 29.5.0
'@types/node': 17.0.45
ansi-escapes: 4.3.2
@@ -9126,19 +9127,19 @@ packages:
ci-info: 3.7.0
exit: 0.1.2
graceful-fs: 4.2.10
- jest-changed-files: 29.2.0
+ jest-changed-files: 29.5.0
jest-config: 29.5.0(@types/node@17.0.45)
- jest-haste-map: 29.3.0
- jest-message-util: 29.2.1
- jest-regex-util: 29.2.0
- jest-resolve: 29.3.0
- jest-resolve-dependencies: 29.3.0
- jest-runner: 29.3.0
- jest-runtime: 29.3.0
- jest-snapshot: 29.3.0
+ jest-haste-map: 29.5.0
+ jest-message-util: 29.5.0
+ jest-regex-util: 29.4.3
+ jest-resolve: 29.5.0
+ jest-resolve-dependencies: 29.5.0
+ jest-runner: 29.5.0
+ jest-runtime: 29.5.0
+ jest-snapshot: 29.5.0
jest-util: 29.5.0
jest-validate: 29.5.0
- jest-watcher: 29.2.2
+ jest-watcher: 29.5.0
micromatch: 4.0.5
pretty-format: 29.2.1
slash: 3.0.0
@@ -9157,10 +9158,10 @@ packages:
node-notifier:
optional: true
dependencies:
- '@jest/console': 29.3.1
- '@jest/reporters': 29.3.1
+ '@jest/console': 29.5.0
+ '@jest/reporters': 29.5.0
'@jest/test-result': 29.5.0
- '@jest/transform': 29.3.1
+ '@jest/transform': 29.5.0
'@jest/types': 29.5.0
'@types/node': 17.0.45
ansi-escapes: 4.3.2
@@ -9168,19 +9169,19 @@ packages:
ci-info: 3.7.0
exit: 0.1.2
graceful-fs: 4.2.10
- jest-changed-files: 29.2.0
+ jest-changed-files: 29.5.0
jest-config: 29.5.0(@types/node@17.0.45)
- jest-haste-map: 29.3.1
- jest-message-util: 29.3.1
- jest-regex-util: 29.2.0
- jest-resolve: 29.3.1
- jest-resolve-dependencies: 29.3.1
- jest-runner: 29.3.1
- jest-runtime: 29.3.1
- jest-snapshot: 29.3.1
+ jest-haste-map: 29.5.0
+ jest-message-util: 29.5.0
+ jest-regex-util: 29.4.3
+ jest-resolve: 29.5.0
+ jest-resolve-dependencies: 29.5.0
+ jest-runner: 29.5.0
+ jest-runtime: 29.5.0
+ jest-snapshot: 29.5.0
jest-util: 29.5.0
jest-validate: 29.5.0
- jest-watcher: 29.3.1
+ jest-watcher: 29.5.0
micromatch: 4.0.5
pretty-format: 29.3.1
slash: 3.0.0
@@ -9263,10 +9264,10 @@ packages:
resolution: {integrity: sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==}
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
dependencies:
- '@jest/fake-timers': 28.1.1
+ '@jest/fake-timers': 28.1.3
'@jest/types': 28.1.3
'@types/node': 17.0.45
- jest-mock: 28.1.1
+ jest-mock: 28.1.3
dev: true
/@jest/environment@28.1.3:
@@ -9362,7 +9363,7 @@ packages:
'@sinonjs/fake-timers': 9.1.2
'@types/node': 17.0.45
jest-message-util: 28.1.3
- jest-mock: 28.1.1
+ jest-mock: 28.1.3
jest-util: 28.1.3
dev: true
@@ -9541,80 +9542,6 @@ packages:
- supports-color
dev: true
- /@jest/reporters@29.3.0:
- resolution: {integrity: sha512-MV76tB3Kd80vcv2yMDZfQpMkwkHaY9hlvVhCtHXkVRCWwN+SX3EOmCdX8pT/X4Xh+NusA7l2Rc3yhx4q5p3+Fg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@bcoe/v8-coverage': 0.2.3
- '@jest/console': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@jridgewell/trace-mapping': 0.3.17
- '@types/node': 17.0.45
- chalk: 4.1.2
- collect-v8-coverage: 1.0.1
- exit: 0.1.2
- glob: 7.2.3
- graceful-fs: 4.2.10
- istanbul-lib-coverage: 3.2.0
- istanbul-lib-instrument: 5.2.0
- istanbul-lib-report: 3.0.0
- istanbul-lib-source-maps: 4.0.1
- istanbul-reports: 3.1.4
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- jest-worker: 29.5.0
- slash: 3.0.0
- string-length: 4.0.2
- strip-ansi: 6.0.1
- v8-to-istanbul: 9.0.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@jest/reporters@29.3.1:
- resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@bcoe/v8-coverage': 0.2.3
- '@jest/console': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@jridgewell/trace-mapping': 0.3.17
- '@types/node': 17.0.45
- chalk: 4.1.2
- collect-v8-coverage: 1.0.1
- exit: 0.1.2
- glob: 7.2.3
- graceful-fs: 4.2.10
- istanbul-lib-coverage: 3.2.0
- istanbul-lib-instrument: 5.2.0
- istanbul-lib-report: 3.0.0
- istanbul-lib-source-maps: 4.0.1
- istanbul-reports: 3.1.4
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- jest-worker: 29.5.0
- slash: 3.0.0
- string-length: 4.0.2
- strip-ansi: 6.0.1
- v8-to-istanbul: 9.0.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@jest/reporters@29.5.0:
resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -9860,52 +9787,6 @@ packages:
- supports-color
dev: true
- /@jest/transform@29.3.0:
- resolution: {integrity: sha512-4T8h61ItCakAlJkdYa7XVWP3r39QldlCeOSNmRpiJisi5PrrlzwZdpJDIH13ZZjh+MlSPQ2cq8YbUs3TuH+tRA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/core': 7.22.1
- '@jest/types': 29.5.0
- '@jridgewell/trace-mapping': 0.3.17
- babel-plugin-istanbul: 6.1.1
- chalk: 4.1.2
- convert-source-map: 2.0.0
- fast-json-stable-stringify: 2.1.0
- graceful-fs: 4.2.10
- jest-haste-map: 29.5.0
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- micromatch: 4.0.5
- pirates: 4.0.5
- slash: 3.0.0
- write-file-atomic: 4.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@jest/transform@29.3.1:
- resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/core': 7.22.1
- '@jest/types': 29.5.0
- '@jridgewell/trace-mapping': 0.3.17
- babel-plugin-istanbul: 6.1.1
- chalk: 4.1.2
- convert-source-map: 2.0.0
- fast-json-stable-stringify: 2.1.0
- graceful-fs: 4.2.10
- jest-haste-map: 29.5.0
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- micromatch: 4.0.5
- pirates: 4.0.5
- slash: 3.0.0
- write-file-atomic: 4.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@jest/transform@29.5.0:
resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -18578,7 +18459,7 @@ packages:
'@jest/expect-utils': 29.3.1
jest-get-type: 29.2.0
jest-matcher-utils: 29.3.1
- jest-message-util: 29.3.1
+ jest-message-util: 29.5.0
jest-util: 29.5.0
dev: true
@@ -21179,7 +21060,7 @@ packages:
/isomorphic-fetch@3.0.0:
resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==}
dependencies:
- node-fetch: 2.6.7
+ node-fetch: 2.6.9
whatwg-fetch: 3.6.2
transitivePeerDependencies:
- encoding
@@ -21275,14 +21156,6 @@ packages:
throat: 6.0.1
dev: true
- /jest-changed-files@29.2.0:
- resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- execa: 5.1.1
- p-limit: 3.1.0
- dev: true
-
/jest-changed-files@29.5.0:
resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -21993,44 +21866,6 @@ packages:
fsevents: 2.3.2
dev: true
- /jest-haste-map@29.3.0:
- resolution: {integrity: sha512-ugdLIreycMRRg3+6AjiExECmuFI2D9PS+BmNU7eGvBt3fzVMKybb9USAZXN6kw4Q6Mn8DSK+7OFCloY2rN820Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/graceful-fs': 4.1.5
- '@types/node': 17.0.45
- anymatch: 3.1.3
- fb-watchman: 2.0.1
- graceful-fs: 4.2.10
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- jest-worker: 29.5.0
- micromatch: 4.0.5
- walker: 1.0.8
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /jest-haste-map@29.3.1:
- resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/graceful-fs': 4.1.5
- '@types/node': 17.0.45
- anymatch: 3.1.3
- fb-watchman: 2.0.1
- graceful-fs: 4.2.10
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- jest-worker: 29.5.0
- micromatch: 4.0.5
- walker: 1.0.8
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
/jest-haste-map@29.5.0:
resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -22250,36 +22085,6 @@ packages:
stack-utils: 2.0.5
dev: true
- /jest-message-util@29.2.1:
- resolution: {integrity: sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/code-frame': 7.21.4
- '@jest/types': 29.5.0
- '@types/stack-utils': 2.0.1
- chalk: 4.1.2
- graceful-fs: 4.2.10
- micromatch: 4.0.5
- pretty-format: 29.5.0
- slash: 3.0.0
- stack-utils: 2.0.5
- dev: true
-
- /jest-message-util@29.3.1:
- resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/code-frame': 7.21.4
- '@jest/types': 29.5.0
- '@types/stack-utils': 2.0.1
- chalk: 4.1.2
- graceful-fs: 4.2.10
- micromatch: 4.0.5
- pretty-format: 29.5.0
- slash: 3.0.0
- stack-utils: 2.0.5
- dev: true
-
/jest-message-util@29.5.0:
resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -22372,7 +22177,7 @@ packages:
jest-resolve: 28.1.1
dev: true
- /jest-pnp-resolver@1.2.2(jest-resolve@29.3.0):
+ /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0):
resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
engines: {node: '>=6'}
peerDependencies:
@@ -22381,31 +22186,7 @@ packages:
jest-resolve:
optional: true
dependencies:
- jest-resolve: 29.3.0
- dev: true
-
- /jest-pnp-resolver@1.2.2(jest-resolve@29.3.1):
- resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
- engines: {node: '>=6'}
- peerDependencies:
- jest-resolve: '*'
- peerDependenciesMeta:
- jest-resolve:
- optional: true
- dependencies:
- jest-resolve: 29.3.1
- dev: true
-
- /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0):
- resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
- engines: {node: '>=6'}
- peerDependencies:
- jest-resolve: '*'
- peerDependenciesMeta:
- jest-resolve:
- optional: true
- dependencies:
- jest-resolve: 29.5.0
+ jest-resolve: 29.5.0
dev: true
/jest-regex-util@26.0.0:
@@ -22423,11 +22204,6 @@ packages:
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
dev: true
- /jest-regex-util@29.2.0:
- resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
/jest-regex-util@29.4.3:
resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -22465,26 +22241,6 @@ packages:
- supports-color
dev: true
- /jest-resolve-dependencies@29.3.0:
- resolution: {integrity: sha512-ykSbDbWmIaHprOBig57AExw7i6Fj0y69M6baiAd75Ivx1UMQt4wsM6A+SNqIhycV6Zy8XV3L40Ac3HYSrDSq7w==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- jest-regex-util: 29.4.3
- jest-snapshot: 29.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-resolve-dependencies@29.3.1:
- resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- jest-regex-util: 29.4.3
- jest-snapshot: 29.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/jest-resolve-dependencies@29.5.0:
resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -22540,36 +22296,6 @@ packages:
slash: 3.0.0
dev: true
- /jest-resolve@29.3.0:
- resolution: {integrity: sha512-xH6C6loDlOWEWHdCgioLDlbpmsolNdNsV/UR35ChuK217x0ttHuhyEPdh5wa6CTQ/Eq4OGW2/EZTlh0ay5aojQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- chalk: 4.1.2
- graceful-fs: 4.2.10
- jest-haste-map: 29.5.0
- jest-pnp-resolver: 1.2.2(jest-resolve@29.3.0)
- jest-util: 29.5.0
- jest-validate: 29.5.0
- resolve: 1.22.1
- resolve.exports: 1.1.0
- slash: 3.0.0
- dev: true
-
- /jest-resolve@29.3.1:
- resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- chalk: 4.1.2
- graceful-fs: 4.2.10
- jest-haste-map: 29.5.0
- jest-pnp-resolver: 1.2.2(jest-resolve@29.3.1)
- jest-util: 29.5.0
- jest-validate: 29.5.0
- resolve: 1.22.1
- resolve.exports: 1.1.0
- slash: 3.0.0
- dev: true
-
/jest-resolve@29.5.0:
resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -22678,64 +22404,6 @@ packages:
- supports-color
dev: true
- /jest-runner@29.3.0:
- resolution: {integrity: sha512-E/ROzAVj7gy44FvIe+Tbz0xGWG1sa8WLkhUg/hsXHewPC0Z48kqWySdfYRtXkB7RmMn4OcWE+hIBfsRAMVV+sQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/console': 29.5.0
- '@jest/environment': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 17.0.45
- chalk: 4.1.2
- emittery: 0.13.1
- graceful-fs: 4.2.10
- jest-docblock: 29.4.3
- jest-environment-node: 29.5.0
- jest-haste-map: 29.5.0
- jest-leak-detector: 29.5.0
- jest-message-util: 29.5.0
- jest-resolve: 29.5.0
- jest-runtime: 29.5.0
- jest-util: 29.5.0
- jest-watcher: 29.5.0
- jest-worker: 29.5.0
- p-limit: 3.1.0
- source-map-support: 0.5.13
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-runner@29.3.1:
- resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/console': 29.5.0
- '@jest/environment': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 17.0.45
- chalk: 4.1.2
- emittery: 0.13.1
- graceful-fs: 4.2.10
- jest-docblock: 29.4.3
- jest-environment-node: 29.5.0
- jest-haste-map: 29.5.0
- jest-leak-detector: 29.5.0
- jest-message-util: 29.5.0
- jest-resolve: 29.5.0
- jest-runtime: 29.5.0
- jest-util: 29.5.0
- jest-watcher: 29.5.0
- jest-worker: 29.5.0
- p-limit: 3.1.0
- source-map-support: 0.5.13
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/jest-runner@29.5.0:
resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -22865,66 +22533,6 @@ packages:
- supports-color
dev: true
- /jest-runtime@29.3.0:
- resolution: {integrity: sha512-ufgX/hbpa7MLnjWRW82T5mVF73FBk3W38dGCLPXWtYZ5Zr1ZFh8QnaAtITKJt0p3kGXR8ZqlIjadSiBTk/QJ/A==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/environment': 29.5.0
- '@jest/fake-timers': 29.5.0
- '@jest/globals': 29.5.0
- '@jest/source-map': 29.4.3
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 17.0.45
- chalk: 4.1.2
- cjs-module-lexer: 1.2.2
- collect-v8-coverage: 1.0.1
- glob: 7.2.3
- graceful-fs: 4.2.10
- jest-haste-map: 29.5.0
- jest-message-util: 29.5.0
- jest-mock: 29.5.0
- jest-regex-util: 29.4.3
- jest-resolve: 29.5.0
- jest-snapshot: 29.5.0
- jest-util: 29.5.0
- slash: 3.0.0
- strip-bom: 4.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-runtime@29.3.1:
- resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/environment': 29.5.0
- '@jest/fake-timers': 29.5.0
- '@jest/globals': 29.5.0
- '@jest/source-map': 29.4.3
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 17.0.45
- chalk: 4.1.2
- cjs-module-lexer: 1.2.2
- collect-v8-coverage: 1.0.1
- glob: 7.2.3
- graceful-fs: 4.2.10
- jest-haste-map: 29.5.0
- jest-message-util: 29.5.0
- jest-mock: 29.5.0
- jest-regex-util: 29.4.3
- jest-resolve: 29.5.0
- jest-snapshot: 29.5.0
- jest-util: 29.5.0
- slash: 3.0.0
- strip-bom: 4.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/jest-runtime@29.5.0:
resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -23056,70 +22664,6 @@ packages:
- supports-color
dev: true
- /jest-snapshot@29.3.0:
- resolution: {integrity: sha512-+4mX3T8XI3ABbZFzBd/AM74mfwOb6gMpYVFNTc0Cgg2F2fGYvHii8D6jWWka99a3wyNFmni3ov8meEVTF8n13Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/core': 7.22.1
- '@babel/generator': 7.22.3
- '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.22.1)
- '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1)
- '@babel/traverse': 7.22.4
- '@babel/types': 7.22.4
- '@jest/expect-utils': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/babel__traverse': 7.17.1
- '@types/prettier': 2.6.3
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1)
- chalk: 4.1.2
- expect: 29.5.0
- graceful-fs: 4.2.10
- jest-diff: 29.5.0
- jest-get-type: 29.4.3
- jest-haste-map: 29.5.0
- jest-matcher-utils: 29.5.0
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- natural-compare: 1.4.0
- pretty-format: 29.5.0
- semver: 7.5.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-snapshot@29.3.1:
- resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/core': 7.22.1
- '@babel/generator': 7.22.3
- '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.22.1)
- '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1)
- '@babel/traverse': 7.22.4
- '@babel/types': 7.22.4
- '@jest/expect-utils': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/babel__traverse': 7.17.1
- '@types/prettier': 2.6.3
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1)
- chalk: 4.1.2
- expect: 29.5.0
- graceful-fs: 4.2.10
- jest-diff: 29.5.0
- jest-get-type: 29.4.3
- jest-haste-map: 29.5.0
- jest-matcher-utils: 29.5.0
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- natural-compare: 1.4.0
- pretty-format: 29.5.0
- semver: 7.5.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/jest-snapshot@29.5.0:
resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -23329,34 +22873,6 @@ packages:
string-length: 4.0.2
dev: true
- /jest-watcher@29.2.2:
- resolution: {integrity: sha512-j2otfqh7mOvMgN2WlJ0n7gIx9XCMWntheYGlBK7+5g3b1Su13/UAK7pdKGyd4kDlrLwtH2QPvRv5oNIxWvsJ1w==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/test-result': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 17.0.45
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- emittery: 0.13.1
- jest-util: 29.5.0
- string-length: 4.0.2
- dev: true
-
- /jest-watcher@29.3.1:
- resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/test-result': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 17.0.45
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- emittery: 0.13.1
- jest-util: 29.5.0
- string-length: 4.0.2
- dev: true
-
/jest-watcher@29.5.0:
resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -23721,7 +23237,7 @@ packages:
whatwg-encoding: 2.0.0
whatwg-mimetype: 3.0.0
whatwg-url: 10.0.0
- ws: 8.11.0
+ ws: 8.14.1
xml-name-validator: 4.0.0
transitivePeerDependencies:
- bufferutil
@@ -25405,7 +24921,7 @@ packages:
inquirer: 8.2.4
is-node-process: 1.0.1
js-levenshtein: 1.1.6
- node-fetch: 2.6.7
+ node-fetch: 2.6.9
outvariant: 1.3.0
path-to-regexp: 6.2.1
statuses: 2.0.1
@@ -30363,6 +29879,16 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ /surrealdb.js@0.9.0:
+ resolution: {integrity: sha512-JV1lSzeSF4GftfxSvrOd0fDAw0AwRTSTsn+smp4BzhVuvcfJH/2zceEMwsMLzQcUao386pq4xk5JKoieayFJqQ==}
+ dependencies:
+ unws: 0.2.4(ws@8.14.1)
+ ws: 8.14.1
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: false
+
/svelte-check@2.10.1(svelte@3.54.0):
resolution: {integrity: sha512-uscZovyuOPA89NuAkc4vO27mzx//2wFBNtwTsgYcNs7JwaFpJ2TqBawQ/avG7gkieYQ3QXqFUggJZ+s51fQGDQ==}
hasBin: true
@@ -31806,6 +31332,15 @@ packages:
engines: {node: '>=8'}
dev: false
+ /unws@0.2.4(ws@8.14.1):
+ resolution: {integrity: sha512-/N1ajiqrSp0A/26/LBg7r10fOcPtGXCqJRJ61sijUFoGZMr6ESWGYn7i0cwr7fR7eEECY5HsitqtjGHDZLAu2w==}
+ engines: {node: '>=16.14.0'}
+ peerDependencies:
+ ws: '*'
+ dependencies:
+ ws: 8.14.1
+ dev: false
+
/unzipper@0.10.11:
resolution: {integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==}
dependencies:
@@ -32483,7 +32018,7 @@ packages:
spdy: 4.0.2
webpack: 5.75.0
webpack-dev-middleware: 5.3.3(webpack@5.75.0)
- ws: 8.11.0
+ ws: 8.14.1
transitivePeerDependencies:
- bufferutil
- debug
@@ -32827,18 +32362,17 @@ packages:
utf-8-validate:
optional: true
- /ws@8.11.0:
- resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==}
+ /ws@8.14.1:
+ resolution: {integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
- utf-8-validate: ^5.0.2
+ utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
- dev: true
/xdg-basedir@4.0.0:
resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==}