{"version":3,"file":"SqliteBun.mjs","names":["PasskeyTransaction"],"sources":["../src/SqliteBun.ts"],"sourcesContent":["import type { AnyRelations } from \"drizzle-orm\";\nimport {\n  EffectSQLiteBunTransaction as PasskeyTransaction,\n  type EffectSQLiteBunDatabase,\n  makeWithDefaults,\n} from \"drizzle-orm/effect-sqlite-bun\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\n\nimport { NativeDatabase, nativeDatabase } from \"./drizzle/native-database\";\n\n/** The application-owned Drizzle database used to construct persistence services. */\nexport class Database extends Context.Service<Database, EffectSQLiteBunDatabase<AnyRelations>>()(\n  \"effect-auth/persistence-drizzle/SqliteBun/Database\",\n) {}\n\n/** Construct Drizzle from the driver's SQL-client Layer. */\nexport const databaseLayer = Layer.effect(Database, makeWithDefaults({}));\n\nimport type {\n  ExternalIdentityTables,\n  IdentityTables,\n  SubjectProvisioningTables,\n} from \"./drizzle/model\";\nimport { makePasswordTarget } from \"./drizzle/password-drivers\";\nimport { makeProofTarget } from \"./drizzle/proof-drivers\";\nimport {\n  makeSqliteExternalIdentityServices,\n  makeSqliteIdentityServices,\n  makeSqliteSubjectProvisioningServices,\n} from \"./drizzle/sqlite-identity\";\n\nconst proofTarget = makeProofTarget(Database, {\n  mode: \"native\",\n  dialect: \"sqlite\",\n  transactionConstructor: PasskeyTransaction,\n});\n\nconst passwordTarget = makePasswordTarget(Database, {\n  mode: \"native\",\n  dialect: \"sqlite\",\n  transactionConstructor: PasskeyTransaction,\n});\n\nimport { makeEmailTarget } from \"./drizzle/email-drivers\";\n\nexport const {\n  makeEmailSignInServices,\n  makeEmailAddressServices,\n  makeEmailRegistrationServices,\n  coordinateEmailAddress,\n  coordinateEmailRegistration,\n} = makeEmailTarget(Database, {\n  mode: \"native\",\n  dialect: \"sqlite\",\n  transactionConstructor: PasskeyTransaction,\n});\n\nexport const {\n  coordinatePasswordPersistence,\n  coordinatePasswordRegistration,\n  makePasswordPersistenceServices,\n  makePasswordRegistrationServices,\n} = passwordTarget;\n\nexport const { coordinateProofPersistence, makeProofPersistenceServices } = proofTarget;\n\nexport const makeIdentityServices = <\n  Subject extends AnySQLiteTable,\n  Identifier extends AnySQLiteTable,\n  External extends AnySQLiteTable,\n  Request extends AnySQLiteTable,\n  NativeId,\n>(\n  mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,\n) =>\n  makeSqliteIdentityServices(mapping, \"interactive\").pipe(\n    Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),\n  );\n\nexport const makeSubjectProvisioningServices = <\n  Subject extends AnySQLiteTable,\n  Identifier extends AnySQLiteTable,\n  Request extends AnySQLiteTable,\n  NativeId,\n>(\n  mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,\n) =>\n  makeSqliteSubjectProvisioningServices(mapping, \"interactive\").pipe(\n    Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),\n  );\n\nexport const makeExternalIdentityServices = <\n  Subject extends AnySQLiteTable,\n  External extends AnySQLiteTable,\n  NativeId,\n>(\n  mapping: ExternalIdentityTables<Subject, External, NativeId>,\n) =>\n  makeSqliteExternalIdentityServices(mapping).pipe(\n    Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),\n  );\n\nimport { makeOAuthTarget } from \"./drizzle/oauth-drivers\";\n\nconst oauthTarget = makeOAuthTarget<\n  Database,\n  EffectSQLiteBunDatabase<AnyRelations>,\n  AnySQLiteTable<{ dialect: \"sqlite\" }>\n>(Database, {\n  mode: \"native\",\n  dialect: \"sqlite\",\n  transactionConstructor: PasskeyTransaction,\n});\n\nexport const {\n  makeOAuthAccountsServices,\n  makeOAuthSignInServices,\n  makeOAuthRegistrationIntentServices,\n  makeOAuthRegistrationServices,\n  coordinateOAuthRegistration,\n  coordinateOAuthSignIn,\n  coordinateOAuthRegistrationIntents,\n  coordinateOAuthAccounts,\n  makeOAuthConnectedServices,\n  makeOAuthConnectedRevocationServices,\n  coordinateOAuthConnected,\n  coordinateOAuthConnectedRevocations,\n} = oauthTarget;\n\nimport { makePasskeyTarget } from \"./drizzle/passkey-drivers\";\n\nconst passkeyTarget = makePasskeyTarget<\n  Database,\n  EffectSQLiteBunDatabase<AnyRelations>,\n  AnySQLiteTable<{ dialect: \"sqlite\" }>\n>(Database, {\n  transactionConstructor: PasskeyTransaction,\n  mode: \"native\",\n  dialect: \"sqlite\",\n});\n\nexport const {\n  makePasskeyCredentialServices,\n  makePasskeyPersistenceServices,\n  makePasskeyRegistrationCeremonyServices,\n  coordinatePasskeyPersistence,\n  coordinatePasskeyRegistrationCeremony,\n  makePasskeyManagementServices,\n  makePasskeyRegistrationServices,\n  coordinatePasskeyManagement,\n  coordinatePasskeyRegistration,\n} = passkeyTarget;\n\nimport { makePhoneTarget } from \"./drizzle/phone-drivers\";\n\nexport const { makePhonePersistenceServices, coordinatePhonePersistence } = makePhoneTarget(\n  Database,\n  { mode: \"native\", dialect: \"sqlite\", transactionConstructor: PasskeyTransaction },\n);\n\nimport { drizzleMigrationsLayer } from \"./internal/drizzle-migrations\";\nimport { sqlitePersistence } from \"./internal/drizzle-sqlite\";\n\nexport const AuthPersistence = {\n  ...sqlitePersistence(makeWithDefaults({})),\n  migrationsLayer: drizzleMigrationsLayer(\n    makeWithDefaults({}),\n    Effect.promise(() => import(\"drizzle-orm/effect-sqlite-bun/migrator\")).pipe(\n      Effect.map((module) => module.migrate),\n    ),\n  ),\n};\n\nexport { OAuthProxyPersistence } from \"./internal/drizzle-sqlite-oauth-proxy\";\n\nimport { makeSessionTarget } from \"./drizzle/session-drivers\";\n\nexport const {\n  coordinateAuthenticationAuthority,\n  coordinatePendingAuthentication,\n  coordinateSignedSessionValidity,\n  coordinateStatefulSessions,\n  makeAuthenticationAuthorityServices,\n  makePendingAuthenticationServices,\n  makeSignedSessionValidityServices,\n  makeStatefulSessionServices,\n  makeSessionStepUpServices,\n  coordinateSessionStepUp,\n  makeSessionCleanupServices,\n} = makeSessionTarget(Database, {\n  mode: \"native\",\n  dialect: \"sqlite\",\n  transactionConstructor: PasskeyTransaction,\n});\n\nimport { makeTotpTarget } from \"./drizzle/totp-target\";\n\nexport const { makeTotpPersistenceServices, coordinateTotpPersistence } = makeTotpTarget(Database, {\n  mode: \"native\",\n  dialect: \"sqlite\",\n  transactionConstructor: PasskeyTransaction,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAcA,IAAa,WAAb,cAA8B,QAAQ,QAAyD,CAAC,CAC9F,oDACF,CAAC,CAAC,CAAC;;AAGH,MAAa,gBAAgB,MAAM,OAAO,UAAU,iBAAiB,CAAC,CAAC,CAAC;AAexE,MAAM,cAAc,gBAAgB,UAAU;CAC5C,MAAM;CACN,SAAS;CACT,wBAAwBA;AAC1B,CAAC;AAED,MAAM,iBAAiB,mBAAmB,UAAU;CAClD,MAAM;CACN,SAAS;CACT,wBAAwBA;AAC1B,CAAC;AAID,MAAa,EACX,yBACA,0BACA,+BACA,wBACA,gCACE,gBAAgB,UAAU;CAC5B,MAAM;CACN,SAAS;CACT,wBAAwBA;AAC1B,CAAC;AAED,MAAa,EACX,+BACA,gCACA,iCACA,qCACE;AAEJ,MAAa,EAAE,4BAA4B,iCAAiC;AAE5E,MAAa,wBAOX,YAEA,2BAA2B,SAAS,aAAa,CAAC,CAAC,KACjD,OAAO,qBAAqB,gBAAgB,eAAe,QAAQ,CAAC,CACtE;AAEF,MAAa,mCAMX,YAEA,sCAAsC,SAAS,aAAa,CAAC,CAAC,KAC5D,OAAO,qBAAqB,gBAAgB,eAAe,QAAQ,CAAC,CACtE;AAEF,MAAa,gCAKX,YAEA,mCAAmC,OAAO,CAAC,CAAC,KAC1C,OAAO,qBAAqB,gBAAgB,eAAe,QAAQ,CAAC,CACtE;AAcF,MAAa,EACX,2BACA,yBACA,qCACA,+BACA,6BACA,uBACA,oCACA,yBACA,4BACA,sCACA,0BACA,wCAtBkB,gBAIlB,UAAU;CACV,MAAM;CACN,SAAS;CACT,wBAAwBA;AAC1B,CAeI;AAcJ,MAAa,EACX,+BACA,gCACA,yCACA,8BACA,uCACA,+BACA,iCACA,6BACA,kCAnBoB,kBAIpB,UAAU;CACV,wBAAwBA;CACxB,MAAM;CACN,SAAS;AACX,CAYI;AAIJ,MAAa,EAAE,8BAA8B,+BAA+B,gBAC1E,UACA;CAAE,MAAM;CAAU,SAAS;CAAU,wBAAwBA;AAAmB,CAClF;AAKA,MAAa,kBAAkB;CAC7B,GAAG,kBAAkB,iBAAiB,CAAC,CAAC,CAAC;CACzC,iBAAiB,uBACf,iBAAiB,CAAC,CAAC,GACnB,OAAO,cAAc,OAAO,yCAAyC,CAAC,CAAC,KACrE,OAAO,KAAK,WAAW,OAAO,OAAO,CACvC,CACF;AACF;AAMA,MAAa,EACX,mCACA,iCACA,iCACA,4BACA,qCACA,mCACA,mCACA,6BACA,2BACA,yBACA,+BACE,kBAAkB,UAAU;CAC9B,MAAM;CACN,SAAS;CACT,wBAAwBA;AAC1B,CAAC;AAID,MAAa,EAAE,6BAA6B,8BAA8B,eAAe,UAAU;CACjG,MAAM;CACN,SAAS;CACT,wBAAwBA;AAC1B,CAAC"}