@rttnd/gau 1.2.6 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-DVVL3GFT.js +1 -0
- package/dist/chunk-DVVL3GFT.js.map +1 -0
- package/dist/chunk-VQD3ROBK.js +1 -0
- package/dist/chunk-VQD3ROBK.js.map +1 -0
- package/dist/src/adapters/drizzle/index.js +1 -1
- package/dist/src/adapters/drizzle/pg.d.ts.map +1 -1
- package/dist/src/adapters/drizzle/sqlite.d.ts.map +1 -1
- package/dist/src/adapters/index.js +1 -1
- package/dist/src/adapters/memory/index.d.ts.map +1 -1
- package/dist/src/adapters/memory/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-BAIUBBG4.js +0 -1
- package/dist/chunk-BAIUBBG4.js.map +0 -1
- package/dist/chunk-SKDOAOYX.js +0 -1
- package/dist/chunk-SKDOAOYX.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{is as e}from"drizzle-orm";import{MySqlDatabase as r}from"drizzle-orm/mysql-core";import{PgDatabase as t}from"drizzle-orm/pg-core";import{BaseSQLiteDatabase as n}from"drizzle-orm/sqlite-core";import{and as a,eq as o}from"drizzle-orm";import{and as i,eq as c}from"drizzle-orm";import{sql as s}from"drizzle-orm";async function u(e,r){if("async"===e.session?.mode||"async"===e.mode)return e.transaction(r);e.run(s`BEGIN`);try{const t=await r(e);return e.run(s`COMMIT`),t}catch(r){throw e.run(s`ROLLBACK`),r}}function d(s,d,l){if(e(s,n))return function(e,r,t){const n=e=>e?{...e}:null;return{async getUser(t){const a=await e.select().from(r).where(c(r.id,t)).get();return n(a)},async getUserByEmail(t){const a=await e.select().from(r).where(c(r.email,t)).get();return n(a)},async getUserByAccount(a,o){const s=await e.select().from(r).innerJoin(t,c(r.id,t.userId)).where(i(c(t.provider,a),c(t.providerAccountId,o))).get();return n(s?.users)},getAccounts:async r=>await e.select().from(t).where(c(t.userId,r)).all(),async getUserAndAccounts(a){const o=await e.select().from(r).where(c(r.id,a)).leftJoin(t,c(r.id,t.userId)).all();return o.length?{user:n(o[0].users),accounts:o.map(e=>e.accounts).filter(Boolean)}:null},async createUser(t){const a=t.id??crypto.randomUUID();return await u(e,async e=>{await e.insert(r).values({...t,id:a,name:t.name??null,email:t.email??null,image:t.image??null,emailVerified:t.emailVerified??null,...r.role?{role:t.role??null}:{},createdAt:new Date,updatedAt:new Date}).run();const o=await e.select().from(r).where(c(r.id,a)).get();return n(o)})},async linkAccount(r){await e.insert(t).values({type:"oauth",...r}).run()},async unlinkAccount(r,n){await e.delete(t).where(i(c(t.provider,r),c(t.providerAccountId,n))).run()},async updateAccount(r){await e.update(t).set({accessToken:r.accessToken,refreshToken:r.refreshToken,expiresAt:r.expiresAt,idToken:r.idToken,tokenType:r.tokenType,scope:r.scope}).where(i(c(t.userId,r.userId),c(t.provider,r.provider),c(t.providerAccountId,r.providerAccountId))).run()},async updateUser(t){const{id:a,...o}=t;return await u(e,async e=>{await e.update(r).set({...o,updatedAt:new Date}).where(c(r.id,a)).run();const t=await e.select().from(r).where(c(r.id,a)).get();return n(t)})},async deleteUser(t){await e.delete(r).where(c(r.id,t)).run()}}}(s,d,l);if(e(s,r))return function(){throw new Error("MySQL adapter is not yet implemented.")}();if(e(s,t))return function(e,r,t){const n=e=>e?{...e}:null;return{async getUser(t){const a=await e.select().from(r).where(o(r.id,t)).limit(1).execute();return n(a[0])},async getUserByEmail(t){const a=await e.select().from(r).where(o(r.email,t)).limit(1).execute();return n(a[0])},async getUserByAccount(i,c){const s=(await e.select().from(r).innerJoin(t,o(r.id,t.userId)).where(a(o(t.provider,i),o(t.providerAccountId,c))).limit(1).execute())[0];return n(s?.users)},getAccounts:async r=>await e.select().from(t).where(o(t.userId,r)).execute(),async getUserAndAccounts(a){const i=await e.select().from(r).leftJoin(t,o(r.id,t.userId)).where(o(r.id,a)).execute();return i.length?{user:n(i[0]?.users),accounts:i.map(e=>e?.accounts).filter(Boolean)}:null},async createUser(t){const a=t.id??crypto.randomUUID(),[o]=await e.insert(r).values({...t,id:a,name:t.name??null,email:t.email??null,image:t.image??null,emailVerified:t.emailVerified??null,...r.role?{role:t.role??null}:{},createdAt:new Date,updatedAt:new Date}).returning().execute();return n(o)},async linkAccount(r){await e.insert(t).values({type:"oauth",...r}).execute()},async unlinkAccount(r,n){await e.delete(t).where(a(o(t.provider,r),o(t.providerAccountId,n))).execute()},async updateAccount(r){await e.update(t).set({accessToken:r.accessToken,refreshToken:r.refreshToken,expiresAt:r.expiresAt,idToken:r.idToken,tokenType:r.tokenType,scope:r.scope}).where(a(o(t.userId,r.userId),o(t.provider,r.provider),o(t.providerAccountId,r.providerAccountId))).execute()},async updateUser(t){const{id:a,...i}=t,[c]=await e.update(r).set({...i,updatedAt:new Date}).where(o(r.id,a)).returning().execute();return n(c)},async deleteUser(t){await e.delete(r).where(o(r.id,t)).execute()}}}(s,d,l);throw new Error(`Unsupported database type (${typeof s}) in gau Drizzle adapter.`)}export{d as DrizzleAdapter};//# sourceMappingURL=chunk-DVVL3GFT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/adapters/drizzle/index.ts","../src/adapters/drizzle/mysql.ts","../src/adapters/drizzle/pg.ts","../src/adapters/drizzle/sqlite.ts","../src/adapters/drizzle/transaction.ts"],"sourcesContent":["import type { Adapter } from '../../core/index'\nimport type { AccountsTable, UsersTable } from './sqlite'\nimport { is } from 'drizzle-orm'\nimport { MySqlDatabase } from 'drizzle-orm/mysql-core'\nimport { PgDatabase } from 'drizzle-orm/pg-core'\n\nimport { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'\nimport { MySqlDrizzleAdapter } from './mysql'\nimport { PostgresDrizzleAdapter } from './pg'\nimport { SQLiteDrizzleAdapter } from './sqlite'\n\nexport function DrizzleAdapter<\n U extends UsersTable,\n A extends AccountsTable,\n>(\n db:\n | BaseSQLiteDatabase<'sync' | 'async', any, any>\n | MySqlDatabase<any, any, any, any>\n | PgDatabase<any, any, any>,\n users: U,\n accounts: A,\n): Adapter {\n if (is(db, BaseSQLiteDatabase))\n return SQLiteDrizzleAdapter(db, users, accounts)\n\n if (is(db, MySqlDatabase))\n // @ts-expect-error Not implemented\n return MySqlDrizzleAdapter(db, users, accounts)\n\n if (is(db, PgDatabase))\n return PostgresDrizzleAdapter(db, users, accounts)\n\n throw new Error(\n `Unsupported database type (${typeof db}) in gau Drizzle adapter.`,\n )\n}\n","// TODO: Implement MySQL adapter for gau\nexport function MySqlDrizzleAdapter(): never {\n throw new Error('MySQL adapter is not yet implemented.')\n}\n","import type { AnyColumn, InferInsertModel, InferSelectModel, Table } from 'drizzle-orm'\nimport type { PgDatabase, PgTable } from 'drizzle-orm/pg-core'\nimport type { Account, Adapter, NewAccount, NewUser, User } from '../../core'\nimport { and, eq } from 'drizzle-orm'\n\nexport type UsersTable = Table & {\n id: AnyColumn\n name: AnyColumn\n email: AnyColumn\n image: AnyColumn\n emailVerified: AnyColumn\n role?: AnyColumn\n createdAt: AnyColumn\n updatedAt: AnyColumn\n}\n\nexport type AccountsTable = Table & {\n userId: AnyColumn\n type: AnyColumn\n provider: AnyColumn\n providerAccountId: AnyColumn\n refreshToken: AnyColumn\n accessToken: AnyColumn\n expiresAt: AnyColumn\n tokenType: AnyColumn\n scope: AnyColumn\n idToken: AnyColumn\n sessionState?: AnyColumn\n}\n\nexport function PostgresDrizzleAdapter<\n DB extends PgDatabase<any, any, any>,\n U extends UsersTable,\n A extends AccountsTable,\n>(db: DB, Users: U, Accounts: A): Adapter {\n type DBUser = InferSelectModel<U>\n type DBAccount = InferSelectModel<A>\n type DBInsertUser = InferInsertModel<U>\n type DBInsertAccount = InferInsertModel<A>\n\n const toUser = (row: DBUser | undefined | null): User | null =>\n row ? ({ ...(row as any) }) : null\n\n return {\n async getUser(id) {\n const rows = await db\n .select()\n .from(Users as unknown as PgTable)\n .where(eq(Users.id, id))\n .limit(1)\n .execute()\n return toUser(rows[0] as DBUser | undefined)\n },\n\n async getUserByEmail(email) {\n const rows = await db\n .select()\n .from(Users as unknown as PgTable)\n .where(eq(Users.email, email))\n .limit(1)\n .execute()\n return toUser(rows[0] as DBUser | undefined)\n },\n\n async getUserByAccount(provider, providerAccountId) {\n const rows = await db\n .select()\n .from(Users as unknown as PgTable)\n .innerJoin(Accounts as unknown as PgTable, eq(Users.id, Accounts.userId))\n .where(and(\n eq(Accounts.provider, provider),\n eq(Accounts.providerAccountId, providerAccountId),\n ))\n .limit(1)\n .execute()\n const row = rows[0] as { users?: DBUser } | undefined\n return toUser(row?.users)\n },\n\n async getAccounts(userId) {\n const rows = await db\n .select()\n .from(Accounts as unknown as PgTable)\n .where(eq(Accounts.userId, userId))\n .execute()\n return rows as unknown as Account[]\n },\n\n async getUserAndAccounts(userId) {\n const rows = await db\n .select()\n .from(Users as unknown as PgTable)\n .leftJoin(Accounts as unknown as PgTable, eq(Users.id, Accounts.userId))\n .where(eq(Users.id, userId))\n .execute()\n\n if (!rows.length)\n return null\n\n const user = toUser((rows[0] as { users?: DBUser } | undefined)?.users) as User\n const accounts = (rows\n .map((r: { accounts?: DBAccount } | undefined) => r?.accounts)\n .filter(Boolean) as DBAccount[]) as unknown as Account[]\n\n return { user, accounts }\n },\n\n async createUser(data: NewUser) {\n const id = data.id ?? crypto.randomUUID()\n const [inserted] = await db\n .insert(Users)\n .values({\n ...data,\n id,\n name: data.name ?? null,\n email: data.email ?? null,\n image: data.image ?? null,\n emailVerified: data.emailVerified ?? null,\n ...(Users.role ? { role: data.role ?? null } : {}),\n createdAt: new Date(),\n updatedAt: new Date(),\n } as DBInsertUser)\n .returning()\n .execute()\n\n return toUser(inserted) as User\n },\n\n async linkAccount(data: NewAccount) {\n await db\n .insert(Accounts)\n .values({\n type: 'oauth',\n ...data,\n } as DBInsertAccount)\n .execute()\n },\n\n async unlinkAccount(provider, providerAccountId) {\n await db\n .delete(Accounts)\n .where(and(\n eq(Accounts.provider, provider),\n eq(Accounts.providerAccountId, providerAccountId),\n ))\n .execute()\n },\n\n async updateAccount(data) {\n await db\n .update(Accounts)\n .set({\n accessToken: data.accessToken,\n refreshToken: data.refreshToken,\n expiresAt: data.expiresAt,\n idToken: data.idToken,\n tokenType: data.tokenType,\n scope: data.scope,\n } as Partial<DBInsertAccount>)\n .where(and(\n eq(Accounts.userId, data.userId),\n eq(Accounts.provider, data.provider),\n eq(Accounts.providerAccountId, data.providerAccountId),\n ))\n .execute()\n },\n\n async updateUser(partial) {\n const { id, ...rest } = partial\n const [updated] = await db\n .update(Users)\n .set({\n ...rest,\n updatedAt: new Date(),\n } as Partial<DBInsertUser>)\n .where(eq(Users.id, id))\n .returning()\n .execute()\n\n return toUser(updated) as User\n },\n\n async deleteUser(id) {\n await db\n .delete(Users)\n .where(eq(Users.id, id))\n .execute()\n },\n }\n}\n","import type { AnyColumn, InferInsertModel, InferSelectModel, Table } from 'drizzle-orm'\nimport type { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'\nimport type { Account, Adapter, NewAccount, NewUser, User } from '../../core/index'\nimport { and, eq } from 'drizzle-orm'\nimport { transaction } from './transaction'\n\nexport type UsersTable = Table & {\n id: AnyColumn\n name: AnyColumn\n email: AnyColumn\n image: AnyColumn\n emailVerified: AnyColumn\n role?: AnyColumn\n createdAt: AnyColumn\n updatedAt: AnyColumn\n}\n\nexport type AccountsTable = Table & {\n userId: AnyColumn\n type: AnyColumn\n provider: AnyColumn\n providerAccountId: AnyColumn\n refreshToken: AnyColumn\n accessToken: AnyColumn\n expiresAt: AnyColumn\n tokenType: AnyColumn\n scope: AnyColumn\n idToken: AnyColumn\n sessionState?: AnyColumn\n}\n\nexport function SQLiteDrizzleAdapter<\n DB extends BaseSQLiteDatabase<'sync' | 'async', any, any>,\n U extends UsersTable,\n A extends AccountsTable,\n>(db: DB, Users: U, Accounts: A): Adapter {\n type DBUser = InferSelectModel<U>\n type DBAccount = InferSelectModel<A>\n type DBInsertUser = InferInsertModel<U>\n type DBInsertAccount = InferInsertModel<A>\n\n const toUser = (row: DBUser | undefined | null): User | null =>\n row ? ({ ...(row as any) }) : null\n\n return {\n async getUser(id) {\n const user: DBUser | undefined = await db\n .select()\n .from(Users)\n .where(eq(Users.id, id))\n .get()\n return toUser(user)\n },\n\n async getUserByEmail(email) {\n const user: DBUser | undefined = await db\n .select()\n .from(Users)\n .where(eq(Users.email, email))\n .get()\n return toUser(user)\n },\n\n async getUserByAccount(provider, providerAccountId) {\n const result: DBUser | undefined = await db\n .select()\n .from(Users)\n .innerJoin(Accounts, eq(Users.id, Accounts.userId))\n .where(and(eq(Accounts.provider, provider), eq(Accounts.providerAccountId, providerAccountId)))\n .get()\n return toUser(result?.users)\n },\n\n async getAccounts(userId) {\n const accounts: DBAccount[] = await db\n .select()\n .from(Accounts)\n .where(eq(Accounts.userId, userId))\n .all()\n return accounts as Account[]\n },\n\n async getUserAndAccounts(userId) {\n const result = await db\n .select()\n .from(Users)\n .where(eq(Users.id, userId))\n .leftJoin(Accounts, eq(Users.id, Accounts.userId))\n .all()\n\n if (!result.length)\n return null\n\n const user = toUser(result[0]!.users)!\n const accounts = result\n .map(row => row.accounts)\n .filter(Boolean) as Account[]\n\n return { user, accounts }\n },\n\n async createUser(data: NewUser) {\n const id = data.id ?? crypto.randomUUID()\n return await transaction(db, async (tx) => {\n await tx\n .insert(Users)\n .values({\n ...data,\n id,\n name: data.name ?? null,\n email: data.email ?? null,\n image: data.image ?? null,\n emailVerified: data.emailVerified ?? null,\n ...(Users.role ? { role: data.role ?? null } : {}),\n createdAt: new Date(),\n updatedAt: new Date(),\n } as DBInsertUser)\n .run()\n\n const result: DBUser | undefined = await tx.select().from(Users).where(eq(Users.id, id)).get()\n return toUser(result) as User\n })\n },\n\n async linkAccount(data: NewAccount) {\n await db\n .insert(Accounts)\n .values({\n type: 'oauth',\n ...data,\n } as DBInsertAccount)\n .run()\n },\n\n async unlinkAccount(provider, providerAccountId) {\n await db\n .delete(Accounts)\n .where(and(eq(Accounts.provider, provider), eq(Accounts.providerAccountId, providerAccountId)))\n .run()\n },\n\n async updateAccount(data) {\n await db\n .update(Accounts)\n .set({\n accessToken: data.accessToken,\n refreshToken: data.refreshToken,\n expiresAt: data.expiresAt,\n idToken: data.idToken,\n tokenType: data.tokenType,\n scope: data.scope,\n })\n .where(and(\n eq(Accounts.userId, data.userId),\n eq(Accounts.provider, data.provider),\n eq(Accounts.providerAccountId, data.providerAccountId),\n ))\n .run()\n },\n\n async updateUser(partial) {\n const { id, ...rest } = partial\n return await transaction(db, async (tx) => {\n await tx\n .update(Users)\n .set({\n ...rest,\n updatedAt: new Date(),\n } as Partial<DBInsertUser>)\n .where(eq(Users.id, id))\n .run()\n\n const result: DBUser | undefined = await tx.select().from(Users).where(eq(Users.id, id)).get()\n return toUser(result) as User\n })\n },\n\n async deleteUser(id) {\n await db.delete(Users).where(eq(Users.id, id)).run()\n },\n }\n}\n","import type { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'\nimport { sql } from 'drizzle-orm'\n\n/**\n * A helper to run transactions across both sync (`better-sqlite3`)\n * and async (`libsql`) Drizzle drivers.\n *\n * It checks for the `mode` property on the Drizzle DB instance, which is\n * `'sync'` or `'async'`.\n *\n * @param db The Drizzle database instance.\n * @param callback The function to execute within the transaction.\n */\nexport async function transaction<T>(\n db: BaseSQLiteDatabase<'sync' | 'async', any, any>,\n callback: (\n tx: Omit<typeof db, 'transaction'>,\n ) => Promise<T>,\n): Promise<T> {\n const isAsync = (db as any).session?.mode === 'async' || (db as any).mode === 'async'\n\n if (isAsync)\n return db.transaction(callback)\n\n db.run(sql`BEGIN`)\n try {\n const result = await callback(db)\n db.run(sql`COMMIT`)\n return result\n }\n catch (e) {\n db.run(sql`ROLLBACK`)\n throw e\n }\n}\n"],"mappings":"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","names":["and","eq","eq","and"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){return`${e.provider}:${e.providerAccountId}`}function t(){const t=new Map,n=new Map,r=new Map,s=new Map;return{getUser:async e=>t.get(e)??null,async getUserByEmail(e){const r=n.get(e);return r?t.get(r)??null:null},async getUserByAccount(n,s){const o=r.get(e({provider:n,providerAccountId:s}));return o?t.get(o)??null:null},async getAccounts(e){const t=[];for(const[n,o]of r.entries())if(o===e){const[r,o]=n.split(":"),c=s.get(n)??{};t.push({userId:e,provider:r,providerAccountId:o,...c})}return t},async getUserAndAccounts(e){const t=await this.getUser(e);if(!t)return null;return{user:t,accounts:await this.getAccounts(e)}},async createUser(e){const r=e.id??crypto.randomUUID(),s={...e,id:r,name:e.name??null,email:e.email??null,image:e.image??null,emailVerified:e.emailVerified??null,role:e.role??void 0};return t.set(r,s),s.email&&n.set(s.email,r),s},async linkAccount(t){const n=e(t);r.set(n,t.userId),s.set(n,{type:t.type,accessToken:t.accessToken,refreshToken:t.refreshToken,expiresAt:t.expiresAt,idToken:t.idToken,scope:t.scope,tokenType:t.tokenType,sessionState:t.sessionState})},async unlinkAccount(t,n){const o=e({provider:t,providerAccountId:n});r.delete(o),s.delete(o)},async updateAccount(t){const n=e({provider:t.provider,providerAccountId:t.providerAccountId});if(!r.has(n)||r.get(n)!==t.userId)return;const o=s.get(n)??{};s.set(n,{...o,...t})},async updateUser(e){const r=t.get(e.id);if(!r)throw new Error("User not found");const s={...r,...e};return t.set(s.id,s),r.email&&r.email!==s.email&&n.delete(r.email),s.email&&n.set(s.email,s.id),s},async deleteUser(e){const s=t.get(e);s?.email&&n.delete(s.email),t.delete(e);for(const[t,n]of r.entries())n===e&&r.delete(t)}}}export{t as MemoryAdapter};//# sourceMappingURL=chunk-VQD3ROBK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/adapters/memory/index.ts"],"sourcesContent":["import type { Account, Adapter, NewAccount, NewUser, User } from '../../core/index'\n\ninterface InternalAccountKey {\n provider: string\n providerAccountId: string\n}\n\nfunction accountKey(k: InternalAccountKey): string {\n return `${k.provider}:${k.providerAccountId}`\n}\n\nexport function MemoryAdapter(): Adapter {\n const users = new Map<string, User>()\n const usersByEmail = new Map<string, string>() // email -> userId\n const accounts = new Map<string, string>() // accountKey -> userId\n const accountData = new Map<string, Partial<Account>>() // accountKey -> stored account fields\n\n return {\n async getUser(id) {\n return users.get(id) ?? null\n },\n\n async getUserByEmail(email) {\n const id = usersByEmail.get(email)\n if (!id)\n return null\n return users.get(id) ?? null\n },\n\n async getUserByAccount(provider, providerAccountId) {\n const id = accounts.get(accountKey({ provider, providerAccountId }))\n if (!id)\n return null\n return users.get(id) ?? null\n },\n\n async getAccounts(userId) {\n const userAccounts: Account[] = []\n for (const [key, accUserId] of accounts.entries()) {\n if (accUserId === userId) {\n const [provider, providerAccountId] = key.split(':') as [string, string]\n const stored = accountData.get(key) ?? {}\n userAccounts.push({ userId, provider, providerAccountId, ...stored })\n }\n }\n return userAccounts\n },\n\n async getUserAndAccounts(userId) {\n const user = await this.getUser(userId)\n if (!user)\n return null\n const accounts = await this.getAccounts(userId)\n return { user, accounts }\n },\n\n async createUser(data: NewUser) {\n const id = data.id ?? crypto.randomUUID()\n const user: User = {\n ...data,\n id,\n name: data.name ?? null,\n email: data.email ?? null,\n image: data.image ?? null,\n emailVerified: data.emailVerified ?? null,\n role: data.role ?? undefined,\n }\n users.set(id, user)\n if (user.email)\n usersByEmail.set(user.email, id)\n return user\n },\n\n async linkAccount(data: NewAccount) {\n const key = accountKey(data)\n accounts.set(key, data.userId)\n accountData.set(key, {\n type: data.type,\n accessToken: data.accessToken,\n refreshToken: data.refreshToken,\n expiresAt: data.expiresAt,\n idToken: data.idToken,\n scope: data.scope,\n tokenType: data.tokenType,\n sessionState: data.sessionState,\n })\n },\n\n async unlinkAccount(provider, providerAccountId) {\n const key = accountKey({ provider, providerAccountId })\n accounts.delete(key)\n accountData.delete(key)\n },\n\n async updateAccount(data) {\n const key = accountKey({ provider: data.provider, providerAccountId: data.providerAccountId })\n if (!accounts.has(key) || accounts.get(key) !== data.userId)\n return\n const existing = accountData.get(key) ?? {}\n accountData.set(key, { ...existing, ...data })\n },\n\n async updateUser(partial) {\n const existing = users.get(partial.id)\n if (!existing)\n throw new Error('User not found')\n const updated: User = { ...existing, ...partial }\n users.set(updated.id, updated)\n if (existing.email && existing.email !== updated.email)\n usersByEmail.delete(existing.email)\n if (updated.email)\n usersByEmail.set(updated.email, updated.id)\n return updated\n },\n async deleteUser(id) {\n const user = users.get(id)\n if (user?.email)\n usersByEmail.delete(user.email)\n users.delete(id)\n for (const [key, userId] of accounts.entries()) {\n if (userId === id)\n accounts.delete(key)\n }\n },\n }\n}\n"],"mappings":"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","names":["accounts"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DrizzleAdapter as o}from"../../../chunk-
|
|
1
|
+
import{DrizzleAdapter as o}from"../../../chunk-DVVL3GFT.js";export{o as DrizzleAdapter};//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../../../src/adapters/drizzle/pg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAsC,KAAK,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAW,OAAO,EAA6B,MAAM,YAAY,CAAA;AAG7E,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,EAAE,EAAE,SAAS,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,aAAa,EAAE,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAClC,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;IACnB,iBAAiB,EAAE,SAAS,CAAA;IAC5B,YAAY,EAAE,SAAS,CAAA;IACvB,WAAW,EAAE,SAAS,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,SAAS,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;CACzB,CAAA;AAED,wBAAgB,sBAAsB,CACpC,EAAE,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpC,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,EACvB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../../../src/adapters/drizzle/pg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAsC,KAAK,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAW,OAAO,EAA6B,MAAM,YAAY,CAAA;AAG7E,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,EAAE,EAAE,SAAS,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,aAAa,EAAE,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAClC,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;IACnB,iBAAiB,EAAE,SAAS,CAAA;IAC5B,YAAY,EAAE,SAAS,CAAA;IACvB,WAAW,EAAE,SAAS,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,SAAS,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;CACzB,CAAA;AAED,wBAAgB,sBAAsB,CACpC,EAAE,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpC,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,EACvB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CA2JxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/adapters/drizzle/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAsC,KAAK,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAW,OAAO,EAA6B,MAAM,kBAAkB,CAAA;AAInF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,EAAE,EAAE,SAAS,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,aAAa,EAAE,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAClC,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;IACnB,iBAAiB,EAAE,SAAS,CAAA;IAC5B,YAAY,EAAE,SAAS,CAAA;IACvB,WAAW,EAAE,SAAS,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,SAAS,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;CACzB,CAAA;AAED,wBAAgB,oBAAoB,CAClC,EAAE,SAAS,kBAAkB,CAAC,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EACzD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,EACvB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/adapters/drizzle/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAsC,KAAK,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAW,OAAO,EAA6B,MAAM,kBAAkB,CAAA;AAInF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,EAAE,EAAE,SAAS,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,aAAa,EAAE,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAClC,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;IACnB,iBAAiB,EAAE,SAAS,CAAA;IAC5B,YAAY,EAAE,SAAS,CAAA;IACvB,WAAW,EAAE,SAAS,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,SAAS,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;CACzB,CAAA;AAED,wBAAgB,oBAAoB,CAClC,EAAE,SAAS,kBAAkB,CAAC,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EACzD,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,aAAa,EACvB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAkJxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MemoryAdapter as o}from"../../chunk-
|
|
1
|
+
import{MemoryAdapter as o}from"../../chunk-VQD3ROBK.js";import{DrizzleAdapter as r}from"../../chunk-DVVL3GFT.js";export{r as DrizzleAdapter,o as MemoryAdapter};//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,OAAO,EAA6B,MAAM,kBAAkB,CAAA;AAWnF,wBAAgB,aAAa,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,OAAO,EAA6B,MAAM,kBAAkB,CAAA;AAWnF,wBAAgB,aAAa,IAAI,OAAO,CAkHvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MemoryAdapter as o}from"../../../chunk-
|
|
1
|
+
import{MemoryAdapter as o}from"../../../chunk-VQD3ROBK.js";export{o as MemoryAdapter};//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
package/dist/chunk-BAIUBBG4.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{is as e}from"drizzle-orm";import{MySqlDatabase as r}from"drizzle-orm/mysql-core";import{PgDatabase as t}from"drizzle-orm/pg-core";import{BaseSQLiteDatabase as n}from"drizzle-orm/sqlite-core";import{and as a,eq as i}from"drizzle-orm";import{and as o,eq as c}from"drizzle-orm";import{sql as s}from"drizzle-orm";async function u(e,r){if("async"===e.session?.mode||"async"===e.mode)return e.transaction(r);e.run(s`BEGIN`);try{const t=await r(e);return e.run(s`COMMIT`),t}catch(r){throw e.run(s`ROLLBACK`),r}}function l(s,l,d){if(e(s,n))return function(e,r,t){const n=e=>e?{...e}:null;return{async getUser(t){const a=await e.select().from(r).where(c(r.id,t)).get();return n(a)},async getUserByEmail(t){const a=await e.select().from(r).where(c(r.email,t)).get();return n(a)},async getUserByAccount(a,i){const s=await e.select().from(r).innerJoin(t,c(r.id,t.userId)).where(o(c(t.provider,a),c(t.providerAccountId,i))).get();return n(s?.users)},getAccounts:async r=>await e.select().from(t).where(c(t.userId,r)).all(),async getUserAndAccounts(a){const i=await e.select().from(r).where(c(r.id,a)).leftJoin(t,c(r.id,t.userId)).all();return i.length?{user:n(i[0].users),accounts:i.map(e=>e.accounts).filter(Boolean)}:null},async createUser(t){const a=t.id??crypto.randomUUID();return await u(e,async e=>{await e.insert(r).values({id:a,name:t.name??null,email:t.email??null,image:t.image??null,emailVerified:t.emailVerified??null,...r.role?{role:t.role??null}:{},createdAt:new Date,updatedAt:new Date}).run();const i=await e.select().from(r).where(c(r.id,a)).get();return n(i)})},async linkAccount(r){await e.insert(t).values({type:"oauth",...r}).run()},async unlinkAccount(r,n){await e.delete(t).where(o(c(t.provider,r),c(t.providerAccountId,n))).run()},async updateAccount(r){await e.update(t).set({accessToken:r.accessToken,refreshToken:r.refreshToken,expiresAt:r.expiresAt,idToken:r.idToken,tokenType:r.tokenType,scope:r.scope}).where(o(c(t.userId,r.userId),c(t.provider,r.provider),c(t.providerAccountId,r.providerAccountId))).run()},updateUser:async t=>await u(e,async e=>{await e.update(r).set({name:t.name,email:t.email,image:t.image,emailVerified:t.emailVerified,...r.role?{role:t.role}:{},updatedAt:new Date}).where(c(r.id,t.id)).run();const a=await e.select().from(r).where(c(r.id,t.id)).get();return n(a)}),async deleteUser(t){await e.delete(r).where(c(r.id,t)).run()}}}(s,l,d);if(e(s,r))return function(){throw new Error("MySQL adapter is not yet implemented.")}();if(e(s,t))return function(e,r,t){const n=e=>e?{...e}:null;return{async getUser(t){const a=await e.select().from(r).where(i(r.id,t)).limit(1).execute();return n(a[0])},async getUserByEmail(t){const a=await e.select().from(r).where(i(r.email,t)).limit(1).execute();return n(a[0])},async getUserByAccount(o,c){const s=(await e.select().from(r).innerJoin(t,i(r.id,t.userId)).where(a(i(t.provider,o),i(t.providerAccountId,c))).limit(1).execute())[0];return n(s?.users)},getAccounts:async r=>await e.select().from(t).where(i(t.userId,r)).execute(),async getUserAndAccounts(a){const o=await e.select().from(r).leftJoin(t,i(r.id,t.userId)).where(i(r.id,a)).execute();return o.length?{user:n(o[0]?.users),accounts:o.map(e=>e?.accounts).filter(Boolean)}:null},async createUser(t){const a=t.id??crypto.randomUUID(),[i]=await e.insert(r).values({id:a,name:t.name??null,email:t.email??null,image:t.image??null,emailVerified:t.emailVerified??null,...r.role?{role:t.role??null}:{},createdAt:new Date,updatedAt:new Date}).returning().execute();return n(i)},async linkAccount(r){await e.insert(t).values({type:"oauth",...r}).execute()},async unlinkAccount(r,n){await e.delete(t).where(a(i(t.provider,r),i(t.providerAccountId,n))).execute()},async updateAccount(r){await e.update(t).set({accessToken:r.accessToken,refreshToken:r.refreshToken,expiresAt:r.expiresAt,idToken:r.idToken,tokenType:r.tokenType,scope:r.scope}).where(a(i(t.userId,r.userId),i(t.provider,r.provider),i(t.providerAccountId,r.providerAccountId))).execute()},async updateUser(t){const[a]=await e.update(r).set({name:t.name,email:t.email,image:t.image,emailVerified:t.emailVerified,...r.role?{role:t.role}:{},updatedAt:new Date}).where(i(r.id,t.id)).returning().execute();return n(a)},async deleteUser(t){await e.delete(r).where(i(r.id,t)).execute()}}}(s,l,d);throw new Error(`Unsupported database type (${typeof s}) in gau Drizzle adapter.`)}export{l as DrizzleAdapter};//# sourceMappingURL=chunk-BAIUBBG4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/adapters/drizzle/index.ts","../src/adapters/drizzle/mysql.ts","../src/adapters/drizzle/pg.ts","../src/adapters/drizzle/sqlite.ts","../src/adapters/drizzle/transaction.ts"],"sourcesContent":["import type { Adapter } from '../../core/index'\nimport type { AccountsTable, UsersTable } from './sqlite'\nimport { is } from 'drizzle-orm'\nimport { MySqlDatabase } from 'drizzle-orm/mysql-core'\nimport { PgDatabase } from 'drizzle-orm/pg-core'\n\nimport { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'\nimport { MySqlDrizzleAdapter } from './mysql'\nimport { PostgresDrizzleAdapter } from './pg'\nimport { SQLiteDrizzleAdapter } from './sqlite'\n\nexport function DrizzleAdapter<\n U extends UsersTable,\n A extends AccountsTable,\n>(\n db:\n | BaseSQLiteDatabase<'sync' | 'async', any, any>\n | MySqlDatabase<any, any, any, any>\n | PgDatabase<any, any, any>,\n users: U,\n accounts: A,\n): Adapter {\n if (is(db, BaseSQLiteDatabase))\n return SQLiteDrizzleAdapter(db, users, accounts)\n\n if (is(db, MySqlDatabase))\n // @ts-expect-error Not implemented\n return MySqlDrizzleAdapter(db, users, accounts)\n\n if (is(db, PgDatabase))\n return PostgresDrizzleAdapter(db, users, accounts)\n\n throw new Error(\n `Unsupported database type (${typeof db}) in gau Drizzle adapter.`,\n )\n}\n","// TODO: Implement MySQL adapter for gau\nexport function MySqlDrizzleAdapter(): never {\n throw new Error('MySQL adapter is not yet implemented.')\n}\n","import type { AnyColumn, InferInsertModel, InferSelectModel, Table } from 'drizzle-orm'\nimport type { PgDatabase, PgTable } from 'drizzle-orm/pg-core'\nimport type { Account, Adapter, NewAccount, NewUser, User } from '../../core'\nimport { and, eq } from 'drizzle-orm'\n\nexport type UsersTable = Table & {\n id: AnyColumn\n name: AnyColumn\n email: AnyColumn\n image: AnyColumn\n emailVerified: AnyColumn\n role?: AnyColumn\n createdAt: AnyColumn\n updatedAt: AnyColumn\n}\n\nexport type AccountsTable = Table & {\n userId: AnyColumn\n type: AnyColumn\n provider: AnyColumn\n providerAccountId: AnyColumn\n refreshToken: AnyColumn\n accessToken: AnyColumn\n expiresAt: AnyColumn\n tokenType: AnyColumn\n scope: AnyColumn\n idToken: AnyColumn\n sessionState?: AnyColumn\n}\n\nexport function PostgresDrizzleAdapter<\n DB extends PgDatabase<any, any, any>,\n U extends UsersTable,\n A extends AccountsTable,\n>(db: DB, Users: U, Accounts: A): Adapter {\n type DBUser = InferSelectModel<U>\n type DBAccount = InferSelectModel<A>\n type DBInsertUser = InferInsertModel<U>\n type DBInsertAccount = InferInsertModel<A>\n\n const toUser = (row: DBUser | undefined | null): User | null =>\n row ? ({ ...(row as any) }) : null\n\n return {\n async getUser(id) {\n const rows = await db\n .select()\n .from(Users as unknown as PgTable)\n .where(eq(Users.id, id))\n .limit(1)\n .execute()\n return toUser(rows[0] as DBUser | undefined)\n },\n\n async getUserByEmail(email) {\n const rows = await db\n .select()\n .from(Users as unknown as PgTable)\n .where(eq(Users.email, email))\n .limit(1)\n .execute()\n return toUser(rows[0] as DBUser | undefined)\n },\n\n async getUserByAccount(provider, providerAccountId) {\n const rows = await db\n .select()\n .from(Users as unknown as PgTable)\n .innerJoin(Accounts as unknown as PgTable, eq(Users.id, Accounts.userId))\n .where(and(\n eq(Accounts.provider, provider),\n eq(Accounts.providerAccountId, providerAccountId),\n ))\n .limit(1)\n .execute()\n const row = rows[0] as { users?: DBUser } | undefined\n return toUser(row?.users)\n },\n\n async getAccounts(userId) {\n const rows = await db\n .select()\n .from(Accounts as unknown as PgTable)\n .where(eq(Accounts.userId, userId))\n .execute()\n return rows as unknown as Account[]\n },\n\n async getUserAndAccounts(userId) {\n const rows = await db\n .select()\n .from(Users as unknown as PgTable)\n .leftJoin(Accounts as unknown as PgTable, eq(Users.id, Accounts.userId))\n .where(eq(Users.id, userId))\n .execute()\n\n if (!rows.length)\n return null\n\n const user = toUser((rows[0] as { users?: DBUser } | undefined)?.users) as User\n const accounts = (rows\n .map((r: { accounts?: DBAccount } | undefined) => r?.accounts)\n .filter(Boolean) as DBAccount[]) as unknown as Account[]\n\n return { user, accounts }\n },\n\n async createUser(data: NewUser) {\n const id = data.id ?? crypto.randomUUID()\n const [inserted] = await db\n .insert(Users)\n .values({\n id,\n name: data.name ?? null,\n email: data.email ?? null,\n image: data.image ?? null,\n emailVerified: data.emailVerified ?? null,\n ...(Users.role ? { role: data.role ?? null } : {}),\n createdAt: new Date(),\n updatedAt: new Date(),\n } as DBInsertUser)\n .returning()\n .execute()\n\n return toUser(inserted) as User\n },\n\n async linkAccount(data: NewAccount) {\n await db\n .insert(Accounts)\n .values({\n type: 'oauth',\n ...data,\n } as DBInsertAccount)\n .execute()\n },\n\n async unlinkAccount(provider, providerAccountId) {\n await db\n .delete(Accounts)\n .where(and(\n eq(Accounts.provider, provider),\n eq(Accounts.providerAccountId, providerAccountId),\n ))\n .execute()\n },\n\n async updateAccount(data) {\n await db\n .update(Accounts)\n .set({\n accessToken: data.accessToken,\n refreshToken: data.refreshToken,\n expiresAt: data.expiresAt,\n idToken: data.idToken,\n tokenType: data.tokenType,\n scope: data.scope,\n } as Partial<DBInsertAccount>)\n .where(and(\n eq(Accounts.userId, data.userId),\n eq(Accounts.provider, data.provider),\n eq(Accounts.providerAccountId, data.providerAccountId),\n ))\n .execute()\n },\n\n async updateUser(partial) {\n const [updated] = await db\n .update(Users)\n .set({\n name: partial.name,\n email: partial.email,\n image: partial.image,\n emailVerified: partial.emailVerified,\n ...(Users.role ? { role: partial.role } : {}),\n updatedAt: new Date(),\n } as Partial<DBInsertUser>)\n .where(eq(Users.id, partial.id))\n .returning()\n .execute()\n\n return toUser(updated) as User\n },\n\n async deleteUser(id) {\n await db\n .delete(Users)\n .where(eq(Users.id, id))\n .execute()\n },\n }\n}\n","import type { AnyColumn, InferInsertModel, InferSelectModel, Table } from 'drizzle-orm'\nimport type { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'\nimport type { Account, Adapter, NewAccount, NewUser, User } from '../../core/index'\nimport { and, eq } from 'drizzle-orm'\nimport { transaction } from './transaction'\n\nexport type UsersTable = Table & {\n id: AnyColumn\n name: AnyColumn\n email: AnyColumn\n image: AnyColumn\n emailVerified: AnyColumn\n role?: AnyColumn\n createdAt: AnyColumn\n updatedAt: AnyColumn\n}\n\nexport type AccountsTable = Table & {\n userId: AnyColumn\n type: AnyColumn\n provider: AnyColumn\n providerAccountId: AnyColumn\n refreshToken: AnyColumn\n accessToken: AnyColumn\n expiresAt: AnyColumn\n tokenType: AnyColumn\n scope: AnyColumn\n idToken: AnyColumn\n sessionState?: AnyColumn\n}\n\nexport function SQLiteDrizzleAdapter<\n DB extends BaseSQLiteDatabase<'sync' | 'async', any, any>,\n U extends UsersTable,\n A extends AccountsTable,\n>(db: DB, Users: U, Accounts: A): Adapter {\n type DBUser = InferSelectModel<U>\n type DBAccount = InferSelectModel<A>\n type DBInsertUser = InferInsertModel<U>\n type DBInsertAccount = InferInsertModel<A>\n\n const toUser = (row: DBUser | undefined | null): User | null =>\n row ? ({ ...(row as any) }) : null\n\n return {\n async getUser(id) {\n const user: DBUser | undefined = await db\n .select()\n .from(Users)\n .where(eq(Users.id, id))\n .get()\n return toUser(user)\n },\n\n async getUserByEmail(email) {\n const user: DBUser | undefined = await db\n .select()\n .from(Users)\n .where(eq(Users.email, email))\n .get()\n return toUser(user)\n },\n\n async getUserByAccount(provider, providerAccountId) {\n const result: DBUser | undefined = await db\n .select()\n .from(Users)\n .innerJoin(Accounts, eq(Users.id, Accounts.userId))\n .where(and(eq(Accounts.provider, provider), eq(Accounts.providerAccountId, providerAccountId)))\n .get()\n return toUser(result?.users)\n },\n\n async getAccounts(userId) {\n const accounts: DBAccount[] = await db\n .select()\n .from(Accounts)\n .where(eq(Accounts.userId, userId))\n .all()\n return accounts as Account[]\n },\n\n async getUserAndAccounts(userId) {\n const result = await db\n .select()\n .from(Users)\n .where(eq(Users.id, userId))\n .leftJoin(Accounts, eq(Users.id, Accounts.userId))\n .all()\n\n if (!result.length)\n return null\n\n const user = toUser(result[0]!.users)!\n const accounts = result\n .map(row => row.accounts)\n .filter(Boolean) as Account[]\n\n return { user, accounts }\n },\n\n async createUser(data: NewUser) {\n const id = data.id ?? crypto.randomUUID()\n return await transaction(db, async (tx) => {\n await tx\n .insert(Users)\n .values({\n id,\n name: data.name ?? null,\n email: data.email ?? null,\n image: data.image ?? null,\n emailVerified: data.emailVerified ?? null,\n ...(Users.role ? { role: data.role ?? null } : {}),\n createdAt: new Date(),\n updatedAt: new Date(),\n } as DBInsertUser)\n .run()\n\n const result: DBUser | undefined = await tx.select().from(Users).where(eq(Users.id, id)).get()\n return toUser(result) as User\n })\n },\n\n async linkAccount(data: NewAccount) {\n await db\n .insert(Accounts)\n .values({\n type: 'oauth',\n ...data,\n } as DBInsertAccount)\n .run()\n },\n\n async unlinkAccount(provider, providerAccountId) {\n await db\n .delete(Accounts)\n .where(and(eq(Accounts.provider, provider), eq(Accounts.providerAccountId, providerAccountId)))\n .run()\n },\n\n async updateAccount(data) {\n await db\n .update(Accounts)\n .set({\n accessToken: data.accessToken,\n refreshToken: data.refreshToken,\n expiresAt: data.expiresAt,\n idToken: data.idToken,\n tokenType: data.tokenType,\n scope: data.scope,\n })\n .where(and(\n eq(Accounts.userId, data.userId),\n eq(Accounts.provider, data.provider),\n eq(Accounts.providerAccountId, data.providerAccountId),\n ))\n .run()\n },\n\n async updateUser(partial) {\n return await transaction(db, async (tx) => {\n await tx\n .update(Users)\n .set({\n name: partial.name,\n email: partial.email,\n image: partial.image,\n emailVerified: partial.emailVerified,\n ...(Users.role ? { role: partial.role } : {}),\n updatedAt: new Date(),\n } as Partial<DBInsertUser>)\n .where(eq(Users.id, partial.id))\n .run()\n\n const result: DBUser | undefined = await tx.select().from(Users).where(eq(Users.id, partial.id)).get()\n return toUser(result) as User\n })\n },\n\n async deleteUser(id) {\n await db.delete(Users).where(eq(Users.id, id)).run()\n },\n }\n}\n","import type { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'\nimport { sql } from 'drizzle-orm'\n\n/**\n * A helper to run transactions across both sync (`better-sqlite3`)\n * and async (`libsql`) Drizzle drivers.\n *\n * It checks for the `mode` property on the Drizzle DB instance, which is\n * `'sync'` or `'async'`.\n *\n * @param db The Drizzle database instance.\n * @param callback The function to execute within the transaction.\n */\nexport async function transaction<T>(\n db: BaseSQLiteDatabase<'sync' | 'async', any, any>,\n callback: (\n tx: Omit<typeof db, 'transaction'>,\n ) => Promise<T>,\n): Promise<T> {\n const isAsync = (db as any).session?.mode === 'async' || (db as any).mode === 'async'\n\n if (isAsync)\n return db.transaction(callback)\n\n db.run(sql`BEGIN`)\n try {\n const result = await callback(db)\n db.run(sql`COMMIT`)\n return result\n }\n catch (e) {\n db.run(sql`ROLLBACK`)\n throw e\n }\n}\n"],"mappings":"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","names":["and","eq","eq","and"]}
|
package/dist/chunk-SKDOAOYX.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){return`${e.provider}:${e.providerAccountId}`}function t(){const t=new Map,n=new Map,r=new Map,s=new Map;return{getUser:async e=>t.get(e)??null,async getUserByEmail(e){const r=n.get(e);return r?t.get(r)??null:null},async getUserByAccount(n,s){const o=r.get(e({provider:n,providerAccountId:s}));return o?t.get(o)??null:null},async getAccounts(e){const t=[];for(const[n,o]of r.entries())if(o===e){const[r,o]=n.split(":"),c=s.get(n)??{};t.push({userId:e,provider:r,providerAccountId:o,...c})}return t},async getUserAndAccounts(e){const t=await this.getUser(e);if(!t)return null;return{user:t,accounts:await this.getAccounts(e)}},async createUser(e){const r=e.id??crypto.randomUUID(),s={id:r,name:e.name??null,email:e.email??null,image:e.image??null,emailVerified:e.emailVerified??null,role:e.role??void 0};return t.set(r,s),s.email&&n.set(s.email,r),s},async linkAccount(t){const n=e(t);r.set(n,t.userId),s.set(n,{type:t.type,accessToken:t.accessToken,refreshToken:t.refreshToken,expiresAt:t.expiresAt,idToken:t.idToken,scope:t.scope,tokenType:t.tokenType,sessionState:t.sessionState})},async unlinkAccount(t,n){const o=e({provider:t,providerAccountId:n});r.delete(o),s.delete(o)},async updateAccount(t){const n=e({provider:t.provider,providerAccountId:t.providerAccountId});if(!r.has(n)||r.get(n)!==t.userId)return;const o=s.get(n)??{};s.set(n,{...o,...t})},async updateUser(e){const r=t.get(e.id);if(!r)throw new Error("User not found");const s={...r,...e};return t.set(s.id,s),r.email&&r.email!==s.email&&n.delete(r.email),s.email&&n.set(s.email,s.id),s},async deleteUser(e){const s=t.get(e);s?.email&&n.delete(s.email),t.delete(e);for(const[t,n]of r.entries())n===e&&r.delete(t)}}}export{t as MemoryAdapter};//# sourceMappingURL=chunk-SKDOAOYX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/adapters/memory/index.ts"],"sourcesContent":["import type { Account, Adapter, NewAccount, NewUser, User } from '../../core/index'\n\ninterface InternalAccountKey {\n provider: string\n providerAccountId: string\n}\n\nfunction accountKey(k: InternalAccountKey): string {\n return `${k.provider}:${k.providerAccountId}`\n}\n\nexport function MemoryAdapter(): Adapter {\n const users = new Map<string, User>()\n const usersByEmail = new Map<string, string>() // email -> userId\n const accounts = new Map<string, string>() // accountKey -> userId\n const accountData = new Map<string, Partial<Account>>() // accountKey -> stored account fields\n\n return {\n async getUser(id) {\n return users.get(id) ?? null\n },\n\n async getUserByEmail(email) {\n const id = usersByEmail.get(email)\n if (!id)\n return null\n return users.get(id) ?? null\n },\n\n async getUserByAccount(provider, providerAccountId) {\n const id = accounts.get(accountKey({ provider, providerAccountId }))\n if (!id)\n return null\n return users.get(id) ?? null\n },\n\n async getAccounts(userId) {\n const userAccounts: Account[] = []\n for (const [key, accUserId] of accounts.entries()) {\n if (accUserId === userId) {\n const [provider, providerAccountId] = key.split(':') as [string, string]\n const stored = accountData.get(key) ?? {}\n userAccounts.push({ userId, provider, providerAccountId, ...stored })\n }\n }\n return userAccounts\n },\n\n async getUserAndAccounts(userId) {\n const user = await this.getUser(userId)\n if (!user)\n return null\n const accounts = await this.getAccounts(userId)\n return { user, accounts }\n },\n\n async createUser(data: NewUser) {\n const id = data.id ?? crypto.randomUUID()\n const user: User = {\n id,\n name: data.name ?? null,\n email: data.email ?? null,\n image: data.image ?? null,\n emailVerified: data.emailVerified ?? null,\n role: data.role ?? undefined,\n }\n users.set(id, user)\n if (user.email)\n usersByEmail.set(user.email, id)\n return user\n },\n\n async linkAccount(data: NewAccount) {\n const key = accountKey(data)\n accounts.set(key, data.userId)\n accountData.set(key, {\n type: data.type,\n accessToken: data.accessToken,\n refreshToken: data.refreshToken,\n expiresAt: data.expiresAt,\n idToken: data.idToken,\n scope: data.scope,\n tokenType: data.tokenType,\n sessionState: data.sessionState,\n })\n },\n\n async unlinkAccount(provider, providerAccountId) {\n const key = accountKey({ provider, providerAccountId })\n accounts.delete(key)\n accountData.delete(key)\n },\n\n async updateAccount(data) {\n const key = accountKey({ provider: data.provider, providerAccountId: data.providerAccountId })\n if (!accounts.has(key) || accounts.get(key) !== data.userId)\n return\n const existing = accountData.get(key) ?? {}\n accountData.set(key, { ...existing, ...data })\n },\n\n async updateUser(partial) {\n const existing = users.get(partial.id)\n if (!existing)\n throw new Error('User not found')\n const updated: User = { ...existing, ...partial }\n users.set(updated.id, updated)\n if (existing.email && existing.email !== updated.email)\n usersByEmail.delete(existing.email)\n if (updated.email)\n usersByEmail.set(updated.email, updated.id)\n return updated\n },\n async deleteUser(id) {\n const user = users.get(id)\n if (user?.email)\n usersByEmail.delete(user.email)\n users.delete(id)\n for (const [key, userId] of accounts.entries()) {\n if (userId === id)\n accounts.delete(key)\n }\n },\n }\n}\n"],"mappings":"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","names":["accounts"]}
|