From 657ee0770adc888ee6b9b60a0d21083abcdc2e84 Mon Sep 17 00:00:00 2001
From: terrorist
Date: Sun, 6 Jul 2025 10:07:56 +0800
Subject: [PATCH] feat(adapter): PostgresJS Adapter w WebAuthentication
---
.github/ISSUE_TEMPLATE/3_bug_adapter.yml | 1 +
.github/pr-labeler.yml | 1 +
.github/workflows/release.yml | 1 +
docs/pages/data/manifest.json | 1 +
docs/pages/getting-started/adapters/_meta.js | 3 +-
docs/pages/getting-started/adapters/pgjs.mdx | 320 +++++++++++++++++++
docs/public/img/adapters/pgjs.svg | 16 +
packages/adapter-pgjs/README.md | 28 ++
packages/adapter-pgjs/package.json | 22 ++
packages/adapter-pgjs/schema.sql | 162 ++++++++++
packages/adapter-pgjs/src/index.ts | 214 +++++++++++++
packages/adapter-pgjs/test/index.test.ts | 47 +++
packages/adapter-pgjs/test/test.sh | 27 ++
packages/adapter-pgjs/tsconfig.json | 9 +
packages/adapter-pgjs/typedoc.config.cjs | 14 +
pnpm-lock.yaml | 203 +++++++-----
turbo.json | 1 +
17 files changed, 986 insertions(+), 84 deletions(-)
create mode 100644 docs/pages/getting-started/adapters/pgjs.mdx
create mode 100644 docs/public/img/adapters/pgjs.svg
create mode 100755 packages/adapter-pgjs/README.md
create mode 100755 packages/adapter-pgjs/package.json
create mode 100755 packages/adapter-pgjs/schema.sql
create mode 100755 packages/adapter-pgjs/src/index.ts
create mode 100755 packages/adapter-pgjs/test/index.test.ts
create mode 100755 packages/adapter-pgjs/test/test.sh
create mode 100755 packages/adapter-pgjs/tsconfig.json
create mode 100644 packages/adapter-pgjs/typedoc.config.cjs
diff --git a/.github/ISSUE_TEMPLATE/3_bug_adapter.yml b/.github/ISSUE_TEMPLATE/3_bug_adapter.yml
index 46696d17c2..ce3ed08f35 100644
--- a/.github/ISSUE_TEMPLATE/3_bug_adapter.yml
+++ b/.github/ISSUE_TEMPLATE/3_bug_adapter.yml
@@ -35,6 +35,7 @@ body:
- "@auth/mongodb-adapter"
- "@auth/neo4j-adapter"
- "@auth/pg-adapter"
+ - "@auth/pgjs-adapter"
- "@auth/pouchdb-adapter"
- "@auth/prisma-adapter"
- "@auth/sequelize-adapter"
diff --git a/.github/pr-labeler.yml b/.github/pr-labeler.yml
index 89af700064..72a2d4f09c 100644
--- a/.github/pr-labeler.yml
+++ b/.github/pr-labeler.yml
@@ -19,6 +19,7 @@ mongodb: ["packages/adapter-mongodb/**/*"]
neo4j: ["packages/adapter-neo4j/**/*"]
next-auth: ["packages/next-auth/**/*"]
pg: ["packages/adapter-pg/**/*"]
+pgjs: ["packages/adapter-pgjs/**/*"]
neon: ["packages/adapter-neon/**/*"]
playgrounds: ["apps/playgrounds/**/*"]
pouchdb: ["packages/adapter-pouchdb/**/*"]
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 1ee78afa19..8098d21899 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -36,6 +36,7 @@ on:
- "@auth/mongodb-adapter"
- "@auth/neo4j-adapter"
- "@auth/pg-adapter"
+ - "@auth/pgjs-adapter"
- "@auth/pouchdb-adapter"
- "@auth/prisma-adapter"
- "@auth/sequelize-adapter"
diff --git a/docs/pages/data/manifest.json b/docs/pages/data/manifest.json
index 7fef03e029..f32f109798 100644
--- a/docs/pages/data/manifest.json
+++ b/docs/pages/data/manifest.json
@@ -36,6 +36,7 @@
"mongodb": "MongoDB",
"neo4j": "Neo4j",
"pg": "pg",
+ "pgjs": "PostgresJS",
"pouchdb": "PouchDB",
"sequelize": "Sequelize",
"surrealdb": "SurrealDB",
diff --git a/docs/pages/getting-started/adapters/_meta.js b/docs/pages/getting-started/adapters/_meta.js
index 153672f783..f52ebd4f9f 100644
--- a/docs/pages/getting-started/adapters/_meta.js
+++ b/docs/pages/getting-started/adapters/_meta.js
@@ -13,7 +13,8 @@ export default {
mongodb: "MongoDB",
neo4j: "Neo4j",
neon: "Neon",
- pg: "PostgreSQL",
+ pg: "PostgreSQL - PG",
+ pgjs: "PostgreSQL - PostgresJS",
pouchdb: "PouchDB",
prisma: "Prisma",
sequelize: "Sequelize",
diff --git a/docs/pages/getting-started/adapters/pgjs.mdx b/docs/pages/getting-started/adapters/pgjs.mdx
new file mode 100644
index 0000000000..dfc2368c0d
--- /dev/null
+++ b/docs/pages/getting-started/adapters/pgjs.mdx
@@ -0,0 +1,320 @@
+import { Code } from "@/components/Code"
+import { Callout } from "nextra/components"
+
+
+
+# PostgresJS Adapter
+
+## Resources
+
+- [Official PostgreSQL Docs](https://www.postgresql.org/docs/)
+- [PostgresJS Client Docs](https://github.com/porsager/postgres)
+
+## Setup
+
+### Installation
+
+```bash npm2yarn
+npm install @auth/pgjs-adapter postgres
+```
+
+### Environment Variables
+
+```ts
+import postgres from "postgres"
+// Default connection
+const sql = postgres(process.env.PGSQL)
+
+// Connection instance + options. Refer to PostgresJS docs for full info
+const sql = postgres(process.env.PGSQL, {
+ host: "", // Postgres ip address[s] or domain name[s]
+ port: 5432, // Postgres server port[s]
+ database: "", // Name of database to connect to
+ username: "", // Username of database user
+ password: "", // Password
+ max: 20, // max connections
+})
+```
+
+### Configuration
+
+
+
+
+```ts filename="./auth.ts"
+import NextAuth from "next-auth"
+import PostgresJSAdapter from "@auth/pgjs-adapter"
+import postgres from "postgres"
+
+const sql = postgres(process.env.PGSQL, {
+ host: "", // Postgres ip address[s] or domain name[s]
+ port: 5432, // Postgres server port[s]
+ database: "", // Name of database to connect to
+ username: "", // Username of database user
+ password: "", // Password
+ max: 20, // max connections
+})
+
+export const { handlers, auth, signIn, signOut } = NextAuth({
+ adapter: PostgresJSAdapter(sql),
+ providers: [],
+})
+```
+
+
+
+
+```ts filename="/src/routes/plugin@auth.ts"
+import { QwikAuth$ } from "@auth/qwik"
+import PostgresJSAdapter from "@auth/pgjs-adapter"
+import postgres from "postgres"
+
+const sql = postgres(process.env.PGSQL, {
+ host: "", // Postgres ip address[s] or domain name[s]
+ port: 5432, // Postgres server port[s]
+ database: "", // Name of database to connect to
+ username: "", // Username of database user
+ password: "", // Password
+ max: 20, // max connections
+})
+
+export const { onRequest, useSession, useSignIn, useSignOut } = QwikAuth$(
+ () => ({
+ providers: [],
+ adapter: PostgresJSAdapter(sql),
+ })
+)
+```
+
+
+
+
+```ts filename="./src/auth.ts"
+import { SvelteKitAuth } from "@auth/sveltekit"
+import PostgresJSAdapter from "@auth/pgjs-adapter"
+import postgres from "postgres"
+
+const sql = postgres(process.env.PGSQL, {
+ host: "", // Postgres ip address[s] or domain name[s]
+ port: 5432, // Postgres server port[s]
+ database: "", // Name of database to connect to
+ username: "", // Username of database user
+ password: "", // Password
+ max: 20, // max connections
+})
+
+export const { handle, signIn, signOut } = SvelteKitAuth({
+ adapter: PostgresJSAdapter(sql),
+ providers: [],
+})
+```
+
+
+
+
+```ts filename="./src/routes/auth.route.ts"
+import { ExpressAuth } from "@auth/express"
+import PostgresJSAdapter from "@auth/pgjs-adapter"
+import postgres from "postgres"
+
+const sql = postgres(process.env.PGSQL, {
+ host: "", // Postgres ip address[s] or domain name[s]
+ port: 5432, // Postgres server port[s]
+ database: "", // Name of database to connect to
+ username: "", // Username of database user
+ password: "", // Password
+ max: 20, // max connections
+})
+
+const app = express()
+
+app.set("trust proxy", true)
+app.use(
+ "/auth/*",
+ ExpressAuth({
+ providers: [],
+ adapter: PostgresJSAdapter(sql),
+ })
+)
+```
+
+
+
+
+### Schema
+
+The SQL schema for the tables used by this adapter is as follows. Learn more about the models at our
+doc page on [Database Models](/guides/creating-a-database-adapter).
+
+
+For `userId`, this schema uses [nanoid](https://github.com/viascom/nanoid-postgres) server-side.
+This is **entirely optional** and merely to showcase an alternative ID implementation.
+
+
+```sql filename="./schema.sql"
+--Credit [Supabase](https://supabase.com/docs/guides/database/postgres/dropping-all-tables-in-schema)
+do $$ declare
+ r record;
+begin
+ for r in (select tablename from pg_tables where schemaname = 'public') loop
+ execute 'drop table if exists ' || quote_ident(r.tablename) || ' cascade';
+ end loop;
+end $$;
+
+--Credit [Nikola Stanković](https://github.com/viascom/nanoid-postgres)
+CREATE EXTENSION IF NOT EXISTS pgcrypto;
+DROP FUNCTION IF EXISTS nanoid(int, text, float);
+CREATE OR REPLACE FUNCTION nanoid(
+ size int DEFAULT 7, -- The number of symbols in the NanoId String. Must be greater than 0.
+ alphabet text DEFAULT '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', -- The symbols used in the NanoId String. Must contain between 1 and 255 symbols.
+ additionalBytesFactor float DEFAULT 1.02 -- The additional bytes factor used for calculating the step size. Must be equal or greater then 1.
+)
+ RETURNS text -- A randomly generated NanoId String
+ LANGUAGE plpgsql
+ VOLATILE
+ PARALLEL SAFE
+ -- LEAKPROOF // This option requires superuser privileges
+
+AS
+$$
+DECLARE
+ alphabetArray text[];
+ alphabetLength int := 64;
+ mask int := 63;
+ step int := 34;
+BEGIN
+ IF size IS NULL OR size < 1 THEN
+ RAISE EXCEPTION 'The size must be defined and greater than 0!';
+ END IF;
+
+ IF alphabet IS NULL OR length(alphabet) = 0 OR length(alphabet) > 255 THEN
+ RAISE EXCEPTION 'The alphabet can''t be undefined, zero or bigger than 255 symbols!';
+ END IF;
+
+ IF additionalBytesFactor IS NULL OR additionalBytesFactor < 1 THEN
+ RAISE EXCEPTION 'The additional bytes factor can''t be less than 1!';
+ END IF;
+
+ alphabetArray := regexp_split_to_array(alphabet, '');
+ alphabetLength := array_length(alphabetArray, 1);
+ mask := (2 << cast(floor(log(alphabetLength - 1) / log(2)) as int)) - 1;
+ step := cast(ceil(additionalBytesFactor * mask * size / alphabetLength) AS int);
+
+ IF step > 1024 THEN
+ step := 1024; -- The step size % can''t be bigger then 1024!
+ END IF;
+
+ RETURN nanoid_optimized(size, alphabet, mask, step);
+END
+$$;
+
+-- Generates an optimized random string of a specified size using the given alphabet, mask, and step.
+-- This optimized version is designed for higher performance and lower memory overhead.
+-- No checks are performed! Use it only if you really know what you are doing.
+DROP FUNCTION IF EXISTS nanoid_optimized(int, text, int, int);
+CREATE OR REPLACE FUNCTION nanoid_optimized(
+ size int, -- The desired length of the generated string.
+ alphabet text, -- The set of characters to choose from for generating the string.
+ mask int, -- The mask used for mapping random bytes to alphabet indices. Should be `(2^n) - 1` where `n` is a power of 2 less than or equal to the alphabet size.
+ step int -- The number of random bytes to generate in each iteration. A larger value may speed up the function but increase memory usage.
+)
+ RETURNS text -- A randomly generated NanoId String
+ LANGUAGE plpgsql
+ VOLATILE
+ PARALLEL SAFE
+ -- LEAKPROOF // This option requires superuser privileges
+AS
+$$
+DECLARE
+ idBuilder text := '';
+ counter int := 0;
+ bytes bytea;
+ alphabetIndex int;
+ alphabetArray text[];
+ alphabetLength int := 64;
+BEGIN
+ alphabetArray := regexp_split_to_array(alphabet, '');
+ alphabetLength := array_length(alphabetArray, 1);
+
+ LOOP
+ bytes := gen_random_bytes(step);
+ FOR counter IN 0..step - 1
+ LOOP
+ alphabetIndex := (get_byte(bytes, counter) & mask) + 1;
+ IF alphabetIndex <= alphabetLength THEN
+ idBuilder := idBuilder || alphabetArray[alphabetIndex];
+ IF length(idBuilder) = size THEN
+ RETURN idBuilder;
+ END IF;
+ END IF;
+ END LOOP;
+ END LOOP;
+END
+$$;
+---
+
+CREATE TABLE users
+(
+ id TEXT NOT NULL DEFAULT nanoid(),
+ ---id TEXT NOT NULL, --- Auth.js default - UUID's generated client-side.
+ ---id SERIAL NOT NULL,--- Auto-Incrementing Ids - Dont forget to change "userId" ForeignKeys to INTEGER
+ name TEXT,
+ email TEXT,
+ "emailVerified" TIMESTAMPTZ,
+ image TEXT,
+
+ PRIMARY KEY(id)
+
+);
+
+CREATE TABLE verification_token
+(
+ identifier TEXT NOT NULL,
+ expires TIMESTAMPTZ NOT NULL,
+ token TEXT NOT NULL,
+
+ PRIMARY KEY (identifier, token)
+);
+
+CREATE TABLE accounts
+(
+ "userId" TEXT NOT NULL REFERENCES users(id) ON UPDATE no action ON DELETE cascade,
+ type TEXT NOT NULL,
+ provider TEXT NOT NULL,
+ "providerAccountId" TEXT NOT NULL,
+ refresh_token TEXT,
+ access_token TEXT,
+ expires_at INT,
+ id_token TEXT,
+ scope TEXT,
+ session_state TEXT,
+ token_type TEXT,
+
+ PRIMARY KEY (provider, "providerAccountId")
+);
+
+CREATE TABLE sessions
+(
+ "userId" TEXT NOT NULL REFERENCES users(id) ON UPDATE no action ON DELETE cascade,
+ expires TIMESTAMPTZ NOT NULL,
+ "sessionToken" TEXT NOT NULL,
+
+ PRIMARY KEY ("sessionToken")
+);
+
+create table authenticators
+(
+id text not null,
+"credentialID" text unique not null,
+"userId" TEXT NOT NULL REFERENCES users(id) ON UPDATE no action ON DELETE cascade,
+"providerAccountId" text not null,
+"credentialPublicKey" text not null,
+counter integer not null,
+"credentialDeviceType" text not null,
+"credentialBackedUp" boolean not null,
+transports text,
+
+primary key (id)
+
+);
+```
diff --git a/docs/public/img/adapters/pgjs.svg b/docs/public/img/adapters/pgjs.svg
new file mode 100644
index 0000000000..f4826dd71b
--- /dev/null
+++ b/docs/public/img/adapters/pgjs.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/adapter-pgjs/README.md b/packages/adapter-pgjs/README.md
new file mode 100755
index 0000000000..5952ae8713
--- /dev/null
+++ b/packages/adapter-pgjs/README.md
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
PostgresJS Adapter - NextAuth.js / Auth.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---
+
+Check out the documentation at [authjs.dev](https://authjs.dev/reference/adapter/pgjs).
diff --git a/packages/adapter-pgjs/package.json b/packages/adapter-pgjs/package.json
new file mode 100755
index 0000000000..c186a43083
--- /dev/null
+++ b/packages/adapter-pgjs/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "@auth/pgjs-adapter",
+ "version": "2.10.0",
+ "description": "PostgresJS adapter for next-auth.",
+ "homepage": "https://authjs.dev/reference/adapter/pgjs",
+ "repository": "https://github.com/nextauthjs/next-auth",
+ "bugs": {"url": "https://github.com/nextauthjs/next-auth/issues"},
+ "author": "Mustaqim Arifin ",
+ "license": "ISC",
+ "keywords": [
+ "next-auth", "@auth" , "Auth.js" , "next.js" , "oauth" , "postgres"
+ ],
+ "type": "module",
+ "exports": { ".": {"types": "./index.d.ts", "import": "./index.js"} },
+ "files": ["*.d.ts*", "*.js", "src"],
+ "private": false,
+ "publishConfig": {"access": "public"},
+ "scripts": {"test": "./test/test.sh", "build": "tsc"},
+ "dependencies": {"@auth/core": "workspace:*"},
+ "peerDependencies": {"postgres": "^3"},
+ "devDependencies": {"postgres": "3.4.7"}
+}
diff --git a/packages/adapter-pgjs/schema.sql b/packages/adapter-pgjs/schema.sql
new file mode 100755
index 0000000000..ffb44397b3
--- /dev/null
+++ b/packages/adapter-pgjs/schema.sql
@@ -0,0 +1,162 @@
+\set ON_ERROR_STOP true
+
+--- Drop All Tables
+--- Credit [Supabase](https://supabase.com/docs/guides/database/postgres/dropping-all-tables-in-schema)
+
+do $$ declare
+ r record;
+begin
+ for r in (select tablename from pg_tables where schemaname = 'public') loop
+ execute 'drop table if exists ' || quote_ident(r.tablename) || ' cascade';
+ end loop;
+end $$;
+
+--- PG-NANOID [Optional ID generation server-side]
+--- Credit [Nikola Stanković](https://github.com/viascom/nanoid-postgres)
+
+CREATE EXTENSION IF NOT EXISTS pgcrypto;
+
+DROP FUNCTION IF EXISTS nanoid(int, text, float);
+
+CREATE OR REPLACE FUNCTION nanoid(
+ size int DEFAULT 7, -- The number of symbols in the NanoId String. Must be greater than 0.
+ alphabet text DEFAULT '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', -- The symbols used in the NanoId String. Must contain between 1 and 255 symbols.
+ additionalBytesFactor float DEFAULT 1.02 -- The additional bytes factor used for calculating the step size. Must be equal or greater then 1.
+)
+ RETURNS text -- A randomly generated NanoId String
+ LANGUAGE plpgsql
+ VOLATILE
+ PARALLEL SAFE
+--- Uncomment the following line if you have superuser privileges
+--- LEAKPROOF
+AS
+$$
+DECLARE
+ alphabetArray text[];
+ alphabetLength int := 64;
+ mask int := 63;
+ step int := 34;
+BEGIN
+ IF size IS NULL OR size < 1 THEN
+ RAISE EXCEPTION 'The size must be defined and greater than 0!';
+ END IF;
+
+ IF alphabet IS NULL OR length(alphabet) = 0 OR length(alphabet) > 255 THEN
+ RAISE EXCEPTION 'The alphabet can''t be undefined, zero or bigger than 255 symbols!';
+ END IF;
+
+ IF additionalBytesFactor IS NULL OR additionalBytesFactor < 1 THEN
+ RAISE EXCEPTION 'The additional bytes factor can''t be less than 1!';
+ END IF;
+
+ alphabetArray := regexp_split_to_array(alphabet, '');
+ alphabetLength := array_length(alphabetArray, 1);
+ mask := (2 << cast(floor(log(alphabetLength - 1) / log(2)) as int)) - 1;
+ step := cast(ceil(additionalBytesFactor * mask * size / alphabetLength) AS int);
+
+ IF step > 1024 THEN
+ step := 1024; -- The step size % can''t be bigger then 1024!
+ END IF;
+
+ RETURN nanoid_optimized(size, alphabet, mask, step);
+END
+$$;
+
+-- Generates an optimized random string of a specified size using the given alphabet, mask, and step.
+-- This optimized version is designed for higher performance and lower memory overhead.
+-- No checks are performed! Use it only if you really know what you are doing.
+DROP FUNCTION IF EXISTS nanoid_optimized (int, text, int, int);
+
+CREATE OR REPLACE FUNCTION nanoid_optimized(
+ size int, -- The desired length of the generated string.
+ alphabet text, -- The set of characters to choose from for generating the string.
+ mask int, -- The mask used for mapping random bytes to alphabet indices. Should be `(2^n) - 1` where `n` is a power of 2 less than or equal to the alphabet size.
+ step int -- The number of random bytes to generate in each iteration. A larger value may speed up the function but increase memory usage.
+)
+ RETURNS text -- A randomly generated NanoId String
+ LANGUAGE plpgsql
+ VOLATILE
+ PARALLEL SAFE
+ -- Uncomment the following line if you have superuser privileges
+ --LEAKPROOF
+AS
+$$
+DECLARE
+ idBuilder text := '';
+ counter int := 0;
+ bytes bytea;
+ alphabetIndex int;
+ alphabetArray text[];
+ alphabetLength int := 64;
+BEGIN
+ alphabetArray := regexp_split_to_array(alphabet, '');
+ alphabetLength := array_length(alphabetArray, 1);
+
+ LOOP
+ bytes := gen_random_bytes(step);
+ FOR counter IN 0..step - 1
+ LOOP
+ alphabetIndex := (get_byte(bytes, counter) & mask) + 1;
+ IF alphabetIndex <= alphabetLength THEN
+ idBuilder := idBuilder || alphabetArray[alphabetIndex];
+ IF length(idBuilder) = size THEN
+ RETURN idBuilder;
+ END IF;
+ END IF;
+ END LOOP;
+ END LOOP;
+END
+$$;
+
+-- SCHEMA
+
+CREATE TABLE users (
+ id TEXT NOT NULL DEFAULT nanoid (),
+ name TEXT,
+ email TEXT,
+ "emailVerified" TIMESTAMPTZ,
+ image TEXT,
+ PRIMARY KEY (id)
+);
+
+CREATE TABLE verification_token (
+ identifier TEXT NOT NULL,
+ expires TIMESTAMPTZ NOT NULL,
+ token TEXT NOT NULL,
+ PRIMARY KEY (identifier, token)
+);
+
+CREATE TABLE accounts (
+ "userId" TEXT NOT NULL REFERENCES users (id) ON DELETE cascade,
+ type TEXT NOT NULL,
+ provider TEXT NOT NULL,
+ "providerAccountId" TEXT NOT NULL,
+ refresh_token TEXT,
+ access_token TEXT,
+ expires_at INT,
+ id_token TEXT,
+ scope TEXT,
+ session_state TEXT,
+ token_type TEXT,
+ PRIMARY KEY (provider, "providerAccountId")
+);
+
+CREATE TABLE sessions (
+ "userId" TEXT NOT NULL REFERENCES users (id) ON DELETE cascade,
+ expires TIMESTAMPTZ NOT NULL,
+ "sessionToken" TEXT NOT NULL,
+ PRIMARY KEY ("sessionToken")
+);
+
+create table authenticators (
+ "credentialID" text unique not null,
+ "userId" TEXT NOT NULL,
+ "providerAccountId" text not null,
+ "credentialPublicKey" text not null,
+ counter integer not null,
+ "credentialDeviceType" text not null,
+ "credentialBackedUp" boolean not null,
+ transports text,
+ PRIMARY KEY ("userId", "credentialID"),
+ CONSTRAINT "auth_user_fkey" FOREIGN KEY ("userId") REFERENCES users (id) ON DELETE CASCADE ON UPDATE CASCADE
+);
\ No newline at end of file
diff --git a/packages/adapter-pgjs/src/index.ts b/packages/adapter-pgjs/src/index.ts
new file mode 100755
index 0000000000..3c13440208
--- /dev/null
+++ b/packages/adapter-pgjs/src/index.ts
@@ -0,0 +1,214 @@
+/**
+ *
+ *
+ * ## Installation
+ *
+ * ```bash npm2yarn
+ * npm install next-auth @auth/pgjs-adapter postgres
+ * ```
+ *
+ * @module @auth/pgjs-adapter
+ */
+
+import type {
+ Adapter,
+ AdapterAccount,
+ AdapterUser,
+ VerificationToken,
+ AdapterSession,
+ AdapterAuthenticator,
+} from "@auth/core/adapters"
+import type postgres from "postgres"
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
+type SQL = postgres.Sql<{}>
+export default function pgjsAdapter (sql: SQL): Adapter {
+ return {
+ async createVerificationToken (
+ v: VerificationToken
+ ): Promise {
+ const data = {
+ identifier: v.identifier,
+ expires: v.expires,
+ token: v.token,
+ }
+ await sql`insert into verification_token ${sql(data)}`
+ return v
+ },
+ async useVerificationToken ({
+ identifier,
+ token,
+ }: {
+ identifier: string
+ token: string
+ }): Promise {
+ const [res] = await sql<
+ VerificationToken[]
+ >`delete from verification_token where identifier = ${identifier} and token = ${token} RETURNING identifier, expires, token`
+ return res ?? null
+ },
+ async createUser (data): Promise {
+ const { id, ...user } = data
+ const [res] = await sql`INSERT INTO users ${sql(
+ user
+ )} RETURNING *`
+ return res
+ },
+ async getUser (id) {
+ try {
+ const res = await sql<
+ AdapterUser[]
+ >`select * from users where id = ${id}`
+ return res.count === 0 ? null : res[0]
+ } catch (_e) {
+ return null
+ }
+ },
+ async getUserByEmail (email) {
+ try {
+ const res = await sql<
+ AdapterUser[]
+ >`select * from users where email = ${email}`
+ return res.count === 0 ? null : res[0]
+ } catch (_e) {
+ return null
+ }
+ },
+ async getUserByAccount ({
+ providerAccountId,
+ provider,
+ }): Promise {
+ const res = await sql`
+ select u.* from users u join accounts a on u.id = a."userId"
+ where a.provider = ${provider} and a."providerAccountId" = ${providerAccountId}`
+ return res.count !== 0 ? res[0] : null
+ },
+ async getAccount (providerAccountId: string, provider: string) {
+ const res = await sql`
+ select * from accounts where provider = ${provider} and "providerAccountId" = ${providerAccountId}`
+ return res.count !== 0 ? res[0] : null
+ },
+ async updateUser (user: Partial): Promise {
+ const [oldUser] = await sql<
+ AdapterUser[]
+ >`select * from users where id = ${user.id!}`
+ const newUser = { ...oldUser, ...user }
+
+ const { id, name, email, emailVerified, image } = newUser
+ const [newData] = await sql`UPDATE users set
+ name = ${name!}, email = ${email!}, "emailVerified" = ${emailVerified},
+ image = ${image!} where id = ${id!} RETURNING *`
+
+ return newData
+ },
+ async linkAccount (acc: AdapterAccount) {
+ await sql`insert into accounts ${sql(acc)}`
+ return acc
+ },
+ async createSession ({ sessionToken, userId, expires }) {
+ if (userId === undefined) {
+ throw Error(`userId is undef in createSession`)
+ }
+ const [res] = await sql<
+ AdapterSession[]
+ >`insert into sessions ("userId", expires, "sessionToken") values (${userId}, ${expires}, ${sessionToken}) RETURNING *`
+ return res
+ },
+ async getSessionAndUser (sessionToken: string | undefined): Promise<{
+ session: AdapterSession
+ user: AdapterUser
+ } | null> {
+ if (sessionToken === undefined) {
+ return null
+ }
+ const result1 = await sql<
+ AdapterSession[]
+ >`select * from sessions where "sessionToken" = ${sessionToken}`
+ if (result1.count === 0) {
+ return null
+ }
+ const session: AdapterSession = result1[0]
+
+ const result2 = await sql<
+ AdapterUser[]
+ >`select * from users where id = ${session.userId}`
+ if (result2.count === 0) {
+ return null
+ }
+ const user = result2[0]
+ return {
+ session,
+ user,
+ }
+ },
+ async updateSession (
+ session: Partial & Pick
+ ): Promise {
+ const { sessionToken } = session
+ const r1 = await sql<
+ AdapterSession[]
+ >`select * from sessions where "sessionToken" = ${sessionToken}`
+ if (r1.count === 0) {
+ return null
+ }
+ const newSession: AdapterSession = { ...r1[0], ...session }
+ const [result] = await sql`update sessions set
+ ${sql(newSession)} where "sessionToken" = ${newSession.sessionToken}`
+ return result
+ },
+ async deleteSession (sessionToken) {
+ await sql`delete from sessions where "sessionToken" = ${sessionToken}`
+ },
+ async unlinkAccount ({ providerAccountId, provider }) {
+ await sql`delete from accounts where provider = ${provider} and "providerAccountId" = ${providerAccountId}`
+ },
+ async deleteUser (userId: string) {
+ await sql.begin((sql) => [
+ sql`delete from users where id = ${userId}`,
+ sql`delete from sessions where "userId" = ${userId}`,
+ sql`delete from accounts where "userId" = ${userId}`,
+ ])
+ },
+ async createAuthenticator (
+ data: AdapterAuthenticator
+ ): Promise {
+ const [res] = await sql<
+ AdapterAuthenticator[]
+ >`insert into authenticators ${sql(data)} RETURNING *`
+ return res
+ },
+ async getAuthenticator (credentialID: string) {
+ try {
+ const res = await sql<
+ AdapterAuthenticator[]
+ >`select * from authenticators where "credentialID" = ${credentialID}`
+ return res.count === 0 ? null : res[0]
+ } catch (_e) {
+ return null
+ }
+ },
+ async listAuthenticatorsByUserId (
+ userId: string
+ ): Promise {
+ const res = await sql<
+ AdapterAuthenticator[]
+ >`select * from authenticators where "userId" = ${userId}`
+ return res
+ },
+ async updateAuthenticatorCounter (
+ credentialID: string,
+ newCounter: number
+ ): Promise {
+
+ const res = await sql<
+ AdapterAuthenticator[]
+ >`UPDATE authenticators set counter = ${newCounter} where "credentialID" = ${credentialID} RETURNING *`
+ return res[0] ?? Promise.reject(Error(""))
+
+ },
+ }
+}
diff --git a/packages/adapter-pgjs/test/index.test.ts b/packages/adapter-pgjs/test/index.test.ts
new file mode 100755
index 0000000000..96d1e7fe3f
--- /dev/null
+++ b/packages/adapter-pgjs/test/index.test.ts
@@ -0,0 +1,47 @@
+import { runBasicTests } from "utils/adapter"
+import PostgresJSAdapter from "../src"
+import postgres from "postgres"
+
+const sql = postgres({
+ host: "127.0.0.1",
+ database: "pgjs",
+ user: "pgjs",
+ password: "pgjs",
+ port: 6969,
+ max: 20,
+})
+
+runBasicTests({
+ adapter: PostgresJSAdapter(sql),
+ testWebAuthnMethods: true,
+ db: {
+ disconnect: async () => {
+ await sql.end()
+ },
+ user: async (id: string) => {
+ const result = await sql`select * from users where id = ${id}`
+ return result.count !== 0 ? result[0] : null
+ },
+ account: async (account) => {
+ const result =
+ await sql`select * from accounts where "providerAccountId" = ${account.providerAccountId}`
+ return result.count !== 0 ? result[0] : null
+ },
+ session: async (sessionToken) => {
+ const result = await sql`
+ select * from sessions where "sessionToken" = ${sessionToken}`
+ return result.count !== 0 ? result[0] : null
+ },
+ async verificationToken (identifier_token) {
+ const { identifier, token } = identifier_token
+ const result =
+ await sql` select * from verification_token where identifier = ${identifier} and token = ${token}`
+ return result.count !== 0 ? result[0] : null
+ },
+ authenticator: async (credentialID) => {
+ const result =
+ await sql`select * from authenticators where "credentialID" = ${credentialID}`
+ return result[0]
+ },
+ },
+})
\ No newline at end of file
diff --git a/packages/adapter-pgjs/test/test.sh b/packages/adapter-pgjs/test/test.sh
new file mode 100755
index 0000000000..047e4849ee
--- /dev/null
+++ b/packages/adapter-pgjs/test/test.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+echo "Initializing container for PostgresJS Tests."
+
+PGUSER=pgjs
+PGPASSWORD=pgjs
+PGDATABASE=pgjs
+PGPORT=6969
+PG_CONTAINER_NAME=authjs-pgjs-test
+
+docker run -d --rm \
+ -e POSTGRES_USER=${PGUSER} \
+ -e POSTGRES_PASSWORD=${PGPASSWORD} \
+ -e POSTGRES_DB=${PGDATABASE} \
+ -e POSTGRES_HOST_AUTH_METHOD=trust \
+ --name "${PG_CONTAINER_NAME}" \
+ -p ${PGPORT}:5432 \
+ -v "$(pwd)"/schema.sql:/docker-entrypoint-initdb.d/schema.sql \
+ postgres:latest
+
+echo "Waiting 5s for db to start..." && sleep 5
+
+if vitest run -c ../utils/vitest.config.ts ./test/index.test.ts; then
+ docker stop ${PG_CONTAINER_NAME}
+else
+ docker stop ${PG_CONTAINER_NAME} && exit 1
+fi
diff --git a/packages/adapter-pgjs/tsconfig.json b/packages/adapter-pgjs/tsconfig.json
new file mode 100755
index 0000000000..df8621c516
--- /dev/null
+++ b/packages/adapter-pgjs/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "utils/tsconfig.json",
+ "compilerOptions": {
+ "outDir": ".",
+ "rootDir": "src"
+ },
+ "exclude": ["*.js", "*.d.ts"],
+ "include": ["src/**/*"]
+}
diff --git a/packages/adapter-pgjs/typedoc.config.cjs b/packages/adapter-pgjs/typedoc.config.cjs
new file mode 100644
index 0000000000..fc7e7369f1
--- /dev/null
+++ b/packages/adapter-pgjs/typedoc.config.cjs
@@ -0,0 +1,14 @@
+// @ts-check
+
+/**
+ * @type {import('typedoc').TypeDocOptions & import('typedoc-plugin-markdown').MarkdownTheme}
+ */
+module.exports = {
+ entryPoints: ["src/index.ts"],
+ entryPointStrategy: "expand",
+ tsconfig: "./tsconfig.json",
+ entryModule: "@auth/pgjs-adapter",
+ entryFileName: "../pgjs-adapter.mdx",
+ includeVersion: true,
+ readme: 'none',
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f6fe6e4264..1a453db4e4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -42,7 +42,7 @@ importers:
version: 6.19.1(eslint@9.9.1(jiti@1.21.6))(typescript@5.3.3)
'@vitest/coverage-v8':
specifier: 1.2.1
- version: 1.2.1(vitest@1.2.2(@types/node@20.12.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0))
+ version: 1.2.1(vitest@1.2.2)
'@vitest/ui':
specifier: ^1.2.2
version: 1.2.2(vitest@1.2.2)
@@ -66,7 +66,7 @@ importers:
version: 7.33.2(eslint@9.9.1(jiti@1.21.6))
eslint-plugin-svelte:
specifier: ^2.38.0
- version: 2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3))
+ version: 2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.3.3))
fake-smtp-server:
specifier: ^0.8.0
version: 0.8.0
@@ -234,7 +234,7 @@ importers:
version: 4.2.19
svelte-check:
specifier: 2.10.2
- version: 2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)
+ version: 2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)
typescript:
specifier: 5.2.2
version: 5.2.2
@@ -249,7 +249,7 @@ importers:
version: 3.8.3(@algolia/client-search@5.20.0)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.2)
'@inkeep/widgets':
specifier: ^0.2.289
- version: 0.2.289(@internationalized/date@3.5.2)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)
+ version: 0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)
'@next/third-parties':
specifier: ^14.2.15
version: 14.2.15(next@14.2.21(@opentelemetry/api@1.7.0)(@playwright/test@1.41.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.70.0))(react@18.3.1)
@@ -310,7 +310,7 @@ importers:
version: 1.22.0
tailwindcss:
specifier: ^3.4.13
- version: 3.4.13(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3))
+ version: 3.4.13(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.6.3))
typedoc:
specifier: ^0.27.6
version: 0.27.8(typescript@5.6.3)
@@ -377,7 +377,7 @@ importers:
version: 0.23.0
drizzle-orm:
specifier: ^0.32.0
- version: 0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@neondatabase/serverless@0.10.4)(@opentelemetry/api@1.7.0)(@prisma/client@6.0.0)(@types/better-sqlite3@7.6.9)(@types/pg@8.11.6)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.3.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6))(kysely@0.27.5)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(react@18.3.1)(sqlite3@5.1.6)
+ version: 0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@neondatabase/serverless@0.10.4)(@opentelemetry/api@1.7.0)(@prisma/client@6.0.0(prisma@6.0.0))(@types/better-sqlite3@7.6.9)(@types/pg@8.11.6)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.6.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13)))(kysely@0.27.5)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(prisma@6.0.0)(react@18.3.1)(sqlite3@5.1.6(encoding@0.1.13))
libsql:
specifier: ^0.3.18
version: 0.3.18
@@ -425,7 +425,7 @@ importers:
version: 1.3.1
fauna-shell:
specifier: 1.2.1
- version: 1.2.1(@swc/core@1.3.106)(@types/node@22.13.5)(encoding@0.1.13)(typescript@5.6.3)
+ version: 1.2.1(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(encoding@0.1.13)(typescript@5.6.3)
packages/adapter-firebase:
dependencies:
@@ -496,7 +496,7 @@ importers:
devDependencies:
mongodb:
specifier: ^6.0.0
- version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0)(socks@2.7.1)
+ version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1)
packages/adapter-neo4j:
dependencies:
@@ -540,6 +540,16 @@ importers:
specifier: ^8.7.1
version: 8.11.3
+ packages/adapter-pgjs:
+ dependencies:
+ '@auth/core':
+ specifier: workspace:*
+ version: link:../core
+ devDependencies:
+ postgres:
+ specifier: 3.4.7
+ version: 3.4.7
+
packages/adapter-pouchdb:
dependencies:
'@auth/core':
@@ -573,7 +583,7 @@ importers:
version: 1.1.0(@prisma/client@6.0.0(prisma@6.0.0))
mongodb:
specifier: ^6.9.0
- version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0)(socks@2.7.1)
+ version: 6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1)
prisma:
specifier: ^6.0.0
version: 6.0.0
@@ -630,10 +640,10 @@ importers:
version: 8.11.3
typeorm:
specifier: 0.3.17
- version: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3))
+ version: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3))
typeorm-naming-strategies:
specifier: ^4.1.0
- version: 4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))
+ version: 4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)))
packages/adapter-unstorage:
dependencies:
@@ -11201,6 +11211,10 @@ packages:
resolution: {integrity: sha512-iHJn4+M9vbTdHSdDzNkC0crHq+1CUdFhx+YqCE+SqWxPjm+Zu63jq7yZborOBF64c8pc58O5uMudyL1FQcHacA==}
engines: {node: '>=12'}
+ postgres@3.4.7:
+ resolution: {integrity: sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==}
+ engines: {node: '>=12'}
+
pouchdb-abstract-mapreduce@8.0.1:
resolution: {integrity: sha512-BxJRHdfiC8gID8h4DPS0Xy6wsa2VBHRHMv9hsm0BhGTWTqS4k8ivItVSeU2dMoXiTBYp+7SerYmovUQNGSX1GA==}
@@ -14213,7 +14227,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.2)':
+ '@ark-ui/anatomy@0.1.0(@internationalized/date@3.5.6)':
dependencies:
'@zag-js/accordion': 0.20.0
'@zag-js/anatomy': 0.20.0
@@ -14224,7 +14238,7 @@ snapshots:
'@zag-js/color-utils': 0.20.0
'@zag-js/combobox': 0.20.0
'@zag-js/date-picker': 0.20.0
- '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.2)
+ '@zag-js/date-utils': 0.20.0(@internationalized/date@3.5.6)
'@zag-js/dialog': 0.20.0
'@zag-js/editable': 0.20.0
'@zag-js/hover-card': 0.20.0
@@ -14250,7 +14264,7 @@ snapshots:
transitivePeerDependencies:
- '@internationalized/date'
- '@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@zag-js/accordion': 0.19.1
'@zag-js/anatomy': 0.19.1
@@ -14262,7 +14276,7 @@ snapshots:
'@zag-js/combobox': 0.19.1
'@zag-js/core': 0.19.1
'@zag-js/date-picker': 0.19.1
- '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.2)
+ '@zag-js/date-utils': 0.19.1(@internationalized/date@3.5.6)
'@zag-js/dialog': 0.19.1
'@zag-js/editable': 0.19.1
'@zag-js/hover-card': 0.19.1
@@ -17141,11 +17155,11 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)':
+ '@inkeep/components@0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)':
dependencies:
- '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@inkeep/preset': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)
- '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)
+ '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)
+ '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)
'@inkeep/shared': 0.0.25
'@inkeep/styled-system': 0.0.44
'@pandacss/dev': 0.22.1(typescript@5.6.3)
@@ -17157,9 +17171,9 @@ snapshots:
- jsdom
- typescript
- '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)':
+ '@inkeep/preset-chakra@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)':
dependencies:
- '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2)
+ '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6)
'@inkeep/shared': 0.0.25
'@pandacss/dev': 0.22.1(typescript@5.6.3)
transitivePeerDependencies:
@@ -17167,10 +17181,10 @@ snapshots:
- jsdom
- typescript
- '@inkeep/preset@0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)':
+ '@inkeep/preset@0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)':
dependencies:
- '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.2)
- '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)
+ '@ark-ui/anatomy': 0.1.0(@internationalized/date@3.5.6)
+ '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)
'@inkeep/shared': 0.0.25
'@pandacss/dev': 0.22.1(typescript@5.6.3)
colorjs.io: 0.4.5
@@ -17185,14 +17199,14 @@ snapshots:
'@inkeep/styled-system@0.0.46': {}
- '@inkeep/widgets@0.2.289(@internationalized/date@3.5.2)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)':
+ '@inkeep/widgets@0.2.289(@internationalized/date@3.5.6)(@types/react@18.2.78)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)':
dependencies:
'@apollo/client': 3.9.5(@types/react@18.2.78)(graphql-ws@5.14.3(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@ark-ui/react': 0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@ark-ui/react': 0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@inkeep/color-mode': 0.0.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)
- '@inkeep/preset': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)
- '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.2)(typescript@5.6.3)
+ '@inkeep/components': 0.0.24(@ark-ui/react@0.15.0(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@internationalized/date@3.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)
+ '@inkeep/preset': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)
+ '@inkeep/preset-chakra': 0.0.24(@internationalized/date@3.5.6)(typescript@5.6.3)
'@inkeep/shared': 0.0.25
'@inkeep/styled-system': 0.0.46
'@types/lodash.isequal': 4.5.8
@@ -17589,7 +17603,7 @@ snapshots:
optionalDependencies:
'@mikro-orm/sqlite': 5.9.7(@mikro-orm/core@5.9.7)(better-sqlite3@9.6.0)(encoding@0.1.13)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)
- '@mikro-orm/knex@5.9.7(@mikro-orm/core@5.9.7(@mikro-orm/sqlite@5.9.7))(better-sqlite3@9.6.0)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13))':
+ '@mikro-orm/knex@5.9.7(@mikro-orm/core@5.9.7)(better-sqlite3@9.6.0)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13))':
dependencies:
'@mikro-orm/core': 5.9.7(@mikro-orm/sqlite@5.9.7)
fs-extra: 11.1.1
@@ -17610,7 +17624,7 @@ snapshots:
'@mikro-orm/sqlite@5.9.7(@mikro-orm/core@5.9.7)(better-sqlite3@9.6.0)(encoding@0.1.13)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)':
dependencies:
'@mikro-orm/core': 5.9.7(@mikro-orm/sqlite@5.9.7)
- '@mikro-orm/knex': 5.9.7(@mikro-orm/core@5.9.7(@mikro-orm/sqlite@5.9.7))(better-sqlite3@9.6.0)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13))
+ '@mikro-orm/knex': 5.9.7(@mikro-orm/core@5.9.7)(better-sqlite3@9.6.0)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13))
fs-extra: 11.1.1
sqlite3: 5.1.6(encoding@0.1.13)
sqlstring-sqlite: 0.1.1
@@ -17811,7 +17825,7 @@ snapshots:
supports-color: 8.1.1
tslib: 2.8.1
- '@oclif/core@2.15.0(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)':
+ '@oclif/core@2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)':
dependencies:
'@types/cli-progress': 3.11.5
ansi-escapes: 4.3.2
@@ -17836,7 +17850,7 @@ snapshots:
strip-ansi: 6.0.1
supports-color: 8.1.1
supports-hyperlinks: 2.3.0
- ts-node: 10.9.2(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)
+ ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)
tslib: 2.7.0
widest-line: 3.1.0
wordwrap: 1.0.0
@@ -17857,19 +17871,19 @@ snapshots:
'@oclif/linewrap@1.0.0': {}
- '@oclif/plugin-help@5.2.20(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)':
+ '@oclif/plugin-help@5.2.20(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)':
dependencies:
- '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)
+ '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)
transitivePeerDependencies:
- '@swc/core'
- '@swc/wasm'
- '@types/node'
- typescript
- '@oclif/plugin-plugins@2.4.7(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)':
+ '@oclif/plugin-plugins@2.4.7(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)':
dependencies:
'@oclif/color': 1.0.13
- '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)
+ '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)
chalk: 4.1.2
debug: 4.3.7(supports-color@8.1.1)
fs-extra: 9.1.0
@@ -20140,7 +20154,7 @@ snapshots:
dependencies:
'@upstash/redis': 1.25.1
- '@vitest/coverage-v8@1.2.1(vitest@1.2.2(@types/node@20.12.7)(@vitest/ui@1.2.2)(sass@1.70.0)(terser@5.27.0))':
+ '@vitest/coverage-v8@1.2.1(vitest@1.2.2)':
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
@@ -20326,11 +20340,6 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@xata.io/client@0.28.0(typescript@5.3.3)':
- dependencies:
- typescript: 5.3.3
- optional: true
-
'@xata.io/client@0.28.0(typescript@5.6.3)':
dependencies:
typescript: 5.6.3
@@ -20539,9 +20548,9 @@ snapshots:
dependencies:
'@internationalized/date': 3.5.2
- '@zag-js/date-utils@0.20.0(@internationalized/date@3.5.2)':
+ '@zag-js/date-utils@0.19.1(@internationalized/date@3.5.6)':
dependencies:
- '@internationalized/date': 3.5.2
+ '@internationalized/date': 3.5.6
'@zag-js/date-utils@0.20.0(@internationalized/date@3.5.6)':
dependencies:
@@ -22729,7 +22738,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@neondatabase/serverless@0.10.4)(@opentelemetry/api@1.7.0)(@prisma/client@6.0.0)(@types/better-sqlite3@7.6.9)(@types/pg@8.11.6)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.3.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6))(kysely@0.27.5)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(react@18.3.1)(sqlite3@5.1.6):
+ drizzle-orm@0.32.1(@cloudflare/workers-types@4.20240117.0)(@libsql/client@0.6.0)(@neondatabase/serverless@0.10.4)(@opentelemetry/api@1.7.0)(@prisma/client@6.0.0(prisma@6.0.0))(@types/better-sqlite3@7.6.9)(@types/pg@8.11.6)(@types/react@18.2.78)(@xata.io/client@0.28.0(typescript@5.6.3))(better-sqlite3@9.6.0)(knex@2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13)))(kysely@0.27.5)(mysql2@3.9.7)(pg@8.11.3)(postgres@3.4.3)(prisma@6.0.0)(react@18.3.1)(sqlite3@5.1.6(encoding@0.1.13)):
optionalDependencies:
'@cloudflare/workers-types': 4.20240117.0
'@libsql/client': 0.6.0
@@ -22739,13 +22748,14 @@ snapshots:
'@types/better-sqlite3': 7.6.9
'@types/pg': 8.11.6
'@types/react': 18.2.78
- '@xata.io/client': 0.28.0(typescript@5.3.3)
+ '@xata.io/client': 0.28.0(typescript@5.6.3)
better-sqlite3: 9.6.0
knex: 2.5.1(better-sqlite3@9.6.0)(mysql2@3.9.7)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6(encoding@0.1.13))
kysely: 0.27.5
mysql2: 3.9.7
pg: 8.11.3
postgres: 3.4.3
+ prisma: 6.0.0
react: 18.3.1
sqlite3: 5.1.6(encoding@0.1.13)
@@ -23157,7 +23167,7 @@ snapshots:
semver: 6.3.1
string.prototype.matchall: 4.0.10
- eslint-plugin-svelte@2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)):
+ eslint-plugin-svelte@2.38.0(eslint@9.9.1(jiti@1.21.6))(svelte@4.2.19)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.3.3)):
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6))
'@jridgewell/sourcemap-codec': 1.5.0
@@ -23167,7 +23177,7 @@ snapshots:
esutils: 2.0.3
known-css-properties: 0.30.0
postcss: 8.4.47
- postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3))
+ postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.3.3))
postcss-safe-parser: 6.0.0(postcss@8.4.47)
postcss-selector-parser: 6.0.16
semver: 7.6.3
@@ -23529,12 +23539,12 @@ snapshots:
dependencies:
format: 0.2.2
- fauna-shell@1.2.1(@swc/core@1.3.106)(@types/node@22.13.5)(encoding@0.1.13)(typescript@5.6.3):
+ fauna-shell@1.2.1(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(encoding@0.1.13)(typescript@5.6.3):
dependencies:
'@inquirer/prompts': 3.3.2
- '@oclif/core': 2.15.0(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)
- '@oclif/plugin-help': 5.2.20(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)
- '@oclif/plugin-plugins': 2.4.7(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3)
+ '@oclif/core': 2.15.0(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)
+ '@oclif/plugin-help': 5.2.20(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)
+ '@oclif/plugin-plugins': 2.4.7(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)
chalk: 4.1.2
cli-table: 0.3.11
cli-ux: 4.9.3
@@ -23865,7 +23875,7 @@ snapshots:
wide-align: 1.1.5
optional: true
- gaxios@5.1.3:
+ gaxios@5.1.3(encoding@0.1.13):
dependencies:
extend: 3.0.2
https-proxy-agent: 5.0.1
@@ -23888,9 +23898,9 @@ snapshots:
- supports-color
optional: true
- gcp-metadata@5.3.0:
+ gcp-metadata@5.3.0(encoding@0.1.13):
dependencies:
- gaxios: 5.1.3
+ gaxios: 5.1.3(encoding@0.1.13)
json-bigint: 1.0.0
transitivePeerDependencies:
- encoding
@@ -26435,14 +26445,14 @@ snapshots:
'@types/whatwg-url': 11.0.4
whatwg-url: 13.0.0
- mongodb@6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0)(socks@2.7.1):
+ mongodb@6.9.0(@aws-sdk/credential-providers@3.499.0)(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.7.1):
dependencies:
'@mongodb-js/saslprep': 1.1.9
bson: 6.8.0
mongodb-connection-string-url: 3.0.0
optionalDependencies:
'@aws-sdk/credential-providers': 3.499.0
- gcp-metadata: 5.3.0
+ gcp-metadata: 5.3.0(encoding@0.1.13)
socks: 2.7.1
morgan@1.10.0:
@@ -27298,30 +27308,30 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.4.47
- postcss-load-config@3.1.4(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)):
+ postcss-load-config@3.1.4(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.3.3)):
dependencies:
lilconfig: 2.1.0
yaml: 1.10.2
optionalDependencies:
postcss: 8.4.47
- ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.3.3)
+ ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.3.3)
- postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)):
+ postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.6.3)):
dependencies:
lilconfig: 3.1.1
yaml: 2.3.4
optionalDependencies:
postcss: 8.4.47
- ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.3.3)
- optional: true
+ ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.6.3)
- postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3)):
+ postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.2.2)):
dependencies:
lilconfig: 3.1.1
yaml: 2.3.4
optionalDependencies:
postcss: 8.4.47
- ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.6.3)
+ ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.2.2)
+ optional: true
postcss-merge-rules@6.1.1(postcss@8.4.47):
dependencies:
@@ -27415,6 +27425,8 @@ snapshots:
postgres@3.4.3: {}
+ postgres@3.4.7: {}
+
pouchdb-abstract-mapreduce@8.0.1(encoding@0.1.13):
dependencies:
pouchdb-binary-utils: 8.0.1
@@ -29111,7 +29123,7 @@ snapshots:
transitivePeerDependencies:
- ws
- svelte-check@2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19):
+ svelte-check@2.10.2(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
chokidar: 3.6.0
@@ -29120,7 +29132,7 @@ snapshots:
picocolors: 1.0.0
sade: 1.8.1
svelte: 4.2.19
- svelte-preprocess: 4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5)
+ svelte-preprocess: 4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5)
typescript: 5.4.5
transitivePeerDependencies:
- '@babel/core'
@@ -29160,7 +29172,7 @@ snapshots:
dependencies:
svelte: 4.2.19
- svelte-preprocess@4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5):
+ svelte-preprocess@4.10.7(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.2.2)))(postcss@8.4.47)(pug@3.0.2)(sass@1.70.0)(svelte@4.2.19)(typescript@5.4.5):
dependencies:
'@types/pug': 2.0.10
'@types/sass': 1.45.0
@@ -29172,7 +29184,7 @@ snapshots:
optionalDependencies:
'@babel/core': 7.23.9
postcss: 8.4.47
- postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3))
+ postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.2.2))
pug: 3.0.2
sass: 1.70.0
typescript: 5.4.5
@@ -29221,7 +29233,7 @@ snapshots:
tabbable@6.2.0: {}
- tailwindcss@3.4.13(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3)):
+ tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.6.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -29240,7 +29252,7 @@ snapshots:
postcss: 8.4.47
postcss-import: 15.1.0(postcss@8.4.47)
postcss-js: 4.0.1(postcss@8.4.47)
- postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3))
+ postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.6.3))
postcss-nested: 6.0.1(postcss@8.4.47)
postcss-selector-parser: 6.0.16
resolve: 1.22.8
@@ -29459,27 +29471,28 @@ snapshots:
'@ts-morph/common': 0.20.0
code-block-writer: 12.0.0
- ts-node@10.9.2(@swc/core@1.3.106)(@types/node@22.13.5)(typescript@5.6.3):
+ ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.3.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 22.13.5
+ '@types/node': 20.12.7
acorn: 8.12.1
acorn-walk: 8.3.2
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
- typescript: 5.6.3
+ typescript: 5.3.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
optionalDependencies:
'@swc/core': 1.3.106(@swc/helpers@0.5.15)
+ optional: true
- ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3):
+ ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@20.12.7)(typescript@5.6.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.9
@@ -29493,30 +29506,54 @@ snapshots:
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
- typescript: 5.3.3
+ typescript: 5.6.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.3.106(@swc/helpers@0.5.15)
optional: true
- ts-node@10.9.2(@types/node@20.12.7)(typescript@5.6.3):
+ ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.2.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 20.12.7
+ '@types/node': 22.13.5
acorn: 8.12.1
acorn-walk: 8.3.2
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
- typescript: 5.6.3
+ typescript: 5.2.2
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.3.106(@swc/helpers@0.5.15)
optional: true
+ ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.9
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 22.13.5
+ acorn: 8.12.1
+ acorn-walk: 8.3.2
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 5.6.3
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.3.106(@swc/helpers@0.5.15)
+
ts-pattern@5.0.5: {}
tsconfck@2.1.2(typescript@5.6.3):
@@ -29672,11 +29709,11 @@ snapshots:
typescript: 5.6.3
yaml: 2.7.0
- typeorm-naming-strategies@4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3))):
+ typeorm-naming-strategies@4.1.0(typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3))):
dependencies:
- typeorm: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3))
+ typeorm: 0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3))
- typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.3.3)):
+ typeorm@0.3.17(ioredis@5.4.1)(mssql@7.3.5(encoding@0.1.13))(mysql2@3.9.7)(pg@8.11.3)(redis@4.6.12)(sqlite3@5.1.6(encoding@0.1.13))(ts-node@10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)):
dependencies:
'@sqltools/formatter': 1.2.5
app-root-path: 3.1.0
@@ -29700,7 +29737,7 @@ snapshots:
pg: 8.11.3
redis: 4.6.12
sqlite3: 5.1.6(encoding@0.1.13)
- ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.3.3)
+ ts-node: 10.9.2(@swc/core@1.3.106(@swc/helpers@0.5.15))(@types/node@22.13.5)(typescript@5.6.3)
transitivePeerDependencies:
- supports-color
diff --git a/turbo.json b/turbo.json
index 240427e652..1939565ce8 100644
--- a/turbo.json
+++ b/turbo.json
@@ -107,6 +107,7 @@
"@auth/mongodb-adapter#build",
"@auth/neo4j-adapter#build",
"@auth/pg-adapter#build",
+ "@auth/pgjs-adapter#build",
"@auth/pouchdb-adapter#build",
"@auth/prisma-adapter#build",
"@auth/sequelize-adapter#build",