@yielded/auth-persistence-drizzle 0.1.0-beta.1 → 0.1.0-beta.12

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.
Files changed (222) hide show
  1. package/dist/D1.d.mts +27 -22
  2. package/dist/D1.mjs +10 -4
  3. package/dist/D1.mjs.map +1 -1
  4. package/dist/Libsql.d.mts +66 -61
  5. package/dist/Libsql.mjs +20 -15
  6. package/dist/Libsql.mjs.map +1 -1
  7. package/dist/Mysql2.d.mts +58 -46
  8. package/dist/Mysql2.mjs +13 -6
  9. package/dist/Mysql2.mjs.map +1 -1
  10. package/dist/Pglite.d.mts +43 -32
  11. package/dist/Pglite.mjs +12 -7
  12. package/dist/Pglite.mjs.map +1 -1
  13. package/dist/Postgres.d.mts +59 -48
  14. package/dist/Postgres.mjs +12 -7
  15. package/dist/Postgres.mjs.map +1 -1
  16. package/dist/SqliteBun.d.mts +58 -53
  17. package/dist/SqliteBun.mjs +20 -14
  18. package/dist/SqliteBun.mjs.map +1 -1
  19. package/dist/SqliteDo.d.mts +66 -60
  20. package/dist/SqliteDo.mjs +26 -14
  21. package/dist/SqliteDo.mjs.map +1 -1
  22. package/dist/SqliteNode.d.mts +58 -53
  23. package/dist/SqliteNode.mjs +20 -14
  24. package/dist/SqliteNode.mjs.map +1 -1
  25. package/dist/SqliteWasm.d.mts +66 -61
  26. package/dist/SqliteWasm.mjs +20 -14
  27. package/dist/SqliteWasm.mjs.map +1 -1
  28. package/dist/drizzle/d1-database.d.mts +11 -0
  29. package/dist/drizzle/d1-database.mjs +8 -0
  30. package/dist/drizzle/d1-database.mjs.map +1 -0
  31. package/dist/drizzle/d1-emails.d.mts +8 -7
  32. package/dist/drizzle/d1-emails.mjs +7 -4
  33. package/dist/drizzle/d1-emails.mjs.map +1 -1
  34. package/dist/drizzle/d1-identity.mjs +12 -9
  35. package/dist/drizzle/d1-identity.mjs.map +1 -1
  36. package/dist/drizzle/d1-oauth.d.mts +14 -13
  37. package/dist/drizzle/d1-oauth.mjs +7 -4
  38. package/dist/drizzle/d1-oauth.mjs.map +1 -1
  39. package/dist/drizzle/d1-passkey.d.mts +3 -14
  40. package/dist/drizzle/d1-passkey.mjs +2 -1
  41. package/dist/drizzle/d1-passkey.mjs.map +1 -1
  42. package/dist/drizzle/d1-password-prepared.d.mts +4 -3
  43. package/dist/drizzle/d1-password-prepared.mjs +3 -1
  44. package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
  45. package/dist/drizzle/d1-passwords.d.mts +6 -5
  46. package/dist/drizzle/d1-passwords.mjs +5 -2
  47. package/dist/drizzle/d1-passwords.mjs.map +1 -1
  48. package/dist/drizzle/d1-phone.d.mts +3 -4
  49. package/dist/drizzle/d1-phone.mjs +2 -1
  50. package/dist/drizzle/d1-phone.mjs.map +1 -1
  51. package/dist/drizzle/d1-planning.d.mts +1 -1
  52. package/dist/drizzle/d1-proofs.d.mts +4 -3
  53. package/dist/drizzle/d1-proofs.mjs +3 -1
  54. package/dist/drizzle/d1-proofs.mjs.map +1 -1
  55. package/dist/drizzle/d1-sessions.d.mts +11 -10
  56. package/dist/drizzle/d1-sessions.mjs +15 -9
  57. package/dist/drizzle/d1-sessions.mjs.map +1 -1
  58. package/dist/drizzle/d1-totp.d.mts +3 -4
  59. package/dist/drizzle/d1-totp.mjs +2 -1
  60. package/dist/drizzle/d1-totp.mjs.map +1 -1
  61. package/dist/drizzle/email-registration.mjs +2 -1
  62. package/dist/drizzle/email-registration.mjs.map +1 -1
  63. package/dist/drizzle/email-target.d.mts +7 -6
  64. package/dist/drizzle/email-target.mjs +10 -10
  65. package/dist/drizzle/email-target.mjs.map +1 -1
  66. package/dist/drizzle/mysql-database.d.mts +8 -0
  67. package/dist/drizzle/mysql-database.mjs +8 -0
  68. package/dist/drizzle/mysql-database.mjs.map +1 -0
  69. package/dist/drizzle/mysql-emails.d.mts +7 -6
  70. package/dist/drizzle/mysql-emails.mjs +12 -8
  71. package/dist/drizzle/mysql-emails.mjs.map +1 -1
  72. package/dist/drizzle/mysql-identity.mjs +12 -9
  73. package/dist/drizzle/mysql-identity.mjs.map +1 -1
  74. package/dist/drizzle/mysql-password-prepared.d.mts +3 -2
  75. package/dist/drizzle/mysql-password-prepared.mjs +6 -2
  76. package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
  77. package/dist/drizzle/mysql-passwords.d.mts +6 -4
  78. package/dist/drizzle/mysql-passwords.mjs +11 -7
  79. package/dist/drizzle/mysql-passwords.mjs.map +1 -1
  80. package/dist/drizzle/mysql-proofs.d.mts +3 -2
  81. package/dist/drizzle/mysql-proofs.mjs +8 -4
  82. package/dist/drizzle/mysql-proofs.mjs.map +1 -1
  83. package/dist/drizzle/mysql-sessions.d.mts +11 -10
  84. package/dist/drizzle/mysql-sessions.mjs +16 -12
  85. package/dist/drizzle/mysql-sessions.mjs.map +1 -1
  86. package/dist/drizzle/native-database.mjs +10 -0
  87. package/dist/drizzle/native-database.mjs.map +1 -0
  88. package/dist/drizzle/oauth-connected-drivers.mjs +7 -5
  89. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
  90. package/dist/drizzle/oauth-connected-target.d.mts +6 -7
  91. package/dist/drizzle/oauth-connected-target.mjs +4 -5
  92. package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
  93. package/dist/drizzle/oauth-drivers.mjs +8 -6
  94. package/dist/drizzle/oauth-drivers.mjs.map +1 -1
  95. package/dist/drizzle/oauth-target.d.mts +12 -11
  96. package/dist/drizzle/oauth-target.mjs +13 -12
  97. package/dist/drizzle/oauth-target.mjs.map +1 -1
  98. package/dist/drizzle/passkey-drivers.mjs +8 -6
  99. package/dist/drizzle/passkey-drivers.mjs.map +1 -1
  100. package/dist/drizzle/passkey-write-drivers.mjs +5 -3
  101. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
  102. package/dist/drizzle/passkey-write-target.d.mts +1 -1
  103. package/dist/drizzle/password-prepared-sql.mjs +2 -1
  104. package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
  105. package/dist/drizzle/password-prepared-target.d.mts +3 -2
  106. package/dist/drizzle/password-prepared-target.mjs +4 -3
  107. package/dist/drizzle/password-prepared-target.mjs.map +1 -1
  108. package/dist/drizzle/password-registration.mjs +2 -1
  109. package/dist/drizzle/password-registration.mjs.map +1 -1
  110. package/dist/drizzle/password-target.d.mts +5 -4
  111. package/dist/drizzle/password-target.mjs +8 -8
  112. package/dist/drizzle/password-target.mjs.map +1 -1
  113. package/dist/drizzle/pg-database.d.mts +9 -0
  114. package/dist/drizzle/pg-database.mjs +8 -0
  115. package/dist/drizzle/pg-database.mjs.map +1 -0
  116. package/dist/drizzle/pg-emails.d.mts +7 -6
  117. package/dist/drizzle/pg-emails.mjs +12 -8
  118. package/dist/drizzle/pg-emails.mjs.map +1 -1
  119. package/dist/drizzle/pg-identity.mjs +12 -9
  120. package/dist/drizzle/pg-identity.mjs.map +1 -1
  121. package/dist/drizzle/pg-password-prepared.d.mts +3 -2
  122. package/dist/drizzle/pg-password-prepared.mjs +6 -2
  123. package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
  124. package/dist/drizzle/pg-passwords.d.mts +6 -4
  125. package/dist/drizzle/pg-passwords.mjs +11 -7
  126. package/dist/drizzle/pg-passwords.mjs.map +1 -1
  127. package/dist/drizzle/pg-proofs.d.mts +3 -2
  128. package/dist/drizzle/pg-proofs.mjs +8 -4
  129. package/dist/drizzle/pg-proofs.mjs.map +1 -1
  130. package/dist/drizzle/pg-sessions.d.mts +11 -10
  131. package/dist/drizzle/pg-sessions.mjs +16 -12
  132. package/dist/drizzle/pg-sessions.mjs.map +1 -1
  133. package/dist/drizzle/phone-target.d.mts +4 -3
  134. package/dist/drizzle/phone-target.mjs +12 -11
  135. package/dist/drizzle/phone-target.mjs.map +1 -1
  136. package/dist/drizzle/proof-target.d.mts +3 -2
  137. package/dist/drizzle/proof-target.mjs +5 -5
  138. package/dist/drizzle/proof-target.mjs.map +1 -1
  139. package/dist/drizzle/session-sql.d.mts +1 -0
  140. package/dist/drizzle/session-target.d.mts +10 -8
  141. package/dist/drizzle/session-target.mjs +11 -11
  142. package/dist/drizzle/session-target.mjs.map +1 -1
  143. package/dist/drizzle/sqlite-emails.mjs +9 -5
  144. package/dist/drizzle/sqlite-emails.mjs.map +1 -1
  145. package/dist/drizzle/sqlite-identity.mjs +14 -11
  146. package/dist/drizzle/sqlite-identity.mjs.map +1 -1
  147. package/dist/drizzle/sqlite-password-prepared.mjs +7 -3
  148. package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
  149. package/dist/drizzle/sqlite-passwords.mjs +10 -6
  150. package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
  151. package/dist/drizzle/sqlite-proofs.mjs +7 -3
  152. package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
  153. package/dist/drizzle/sqlite-sessions.mjs +16 -12
  154. package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
  155. package/dist/drizzle/standalone-guard.d.mts +2 -0
  156. package/dist/drizzle/standalone-guard.mjs +8 -4
  157. package/dist/drizzle/standalone-guard.mjs.map +1 -1
  158. package/dist/drizzle/totp-target.d.mts +4 -3
  159. package/dist/drizzle/totp-target.mjs +31 -28
  160. package/dist/drizzle/totp-target.mjs.map +1 -1
  161. package/package.json +1 -1
  162. package/src/D1.ts +37 -10
  163. package/src/Libsql.ts +45 -17
  164. package/src/Mysql2.ts +39 -13
  165. package/src/Pglite.ts +47 -13
  166. package/src/Postgres.ts +47 -13
  167. package/src/SqliteBun.ts +58 -30
  168. package/src/SqliteDo.ts +61 -19
  169. package/src/SqliteNode.ts +55 -28
  170. package/src/SqliteWasm.ts +55 -28
  171. package/src/drizzle/d1-database.ts +10 -0
  172. package/src/drizzle/d1-emails.ts +84 -84
  173. package/src/drizzle/d1-identity.ts +17 -20
  174. package/src/drizzle/d1-oauth.ts +19 -8
  175. package/src/drizzle/d1-passkey.ts +5 -1
  176. package/src/drizzle/d1-password-prepared.ts +38 -37
  177. package/src/drizzle/d1-passwords.ts +74 -76
  178. package/src/drizzle/d1-phone.ts +5 -1
  179. package/src/drizzle/d1-proofs.ts +29 -30
  180. package/src/drizzle/d1-sessions.ts +51 -38
  181. package/src/drizzle/d1-totp.ts +5 -1
  182. package/src/drizzle/email-registration.ts +6 -2
  183. package/src/drizzle/email-target.ts +17 -19
  184. package/src/drizzle/mysql-database.ts +8 -0
  185. package/src/drizzle/mysql-emails.ts +28 -16
  186. package/src/drizzle/mysql-identity.ts +18 -21
  187. package/src/drizzle/mysql-password-prepared.ts +10 -8
  188. package/src/drizzle/mysql-passwords.ts +21 -9
  189. package/src/drizzle/mysql-proofs.ts +16 -5
  190. package/src/drizzle/mysql-sessions.ts +40 -17
  191. package/src/drizzle/native-database.ts +22 -0
  192. package/src/drizzle/oauth-connected-drivers.ts +18 -6
  193. package/src/drizzle/oauth-connected-target.ts +16 -17
  194. package/src/drizzle/oauth-drivers.ts +26 -10
  195. package/src/drizzle/oauth-target.ts +30 -42
  196. package/src/drizzle/passkey-drivers.ts +21 -13
  197. package/src/drizzle/passkey-write-drivers.ts +11 -6
  198. package/src/drizzle/password-prepared-sql.ts +2 -4
  199. package/src/drizzle/password-prepared-target.ts +9 -6
  200. package/src/drizzle/password-registration.ts +7 -8
  201. package/src/drizzle/password-target.ts +19 -18
  202. package/src/drizzle/pg-database.ts +10 -0
  203. package/src/drizzle/pg-emails.ts +28 -16
  204. package/src/drizzle/pg-identity.ts +18 -22
  205. package/src/drizzle/pg-password-prepared.ts +10 -8
  206. package/src/drizzle/pg-passwords.ts +21 -9
  207. package/src/drizzle/pg-proofs.ts +16 -5
  208. package/src/drizzle/pg-sessions.ts +40 -17
  209. package/src/drizzle/phone-target.ts +22 -17
  210. package/src/drizzle/proof-target.ts +9 -12
  211. package/src/drizzle/session-target.ts +32 -50
  212. package/src/drizzle/sqlite-emails.ts +30 -13
  213. package/src/drizzle/sqlite-identity.ts +22 -42
  214. package/src/drizzle/sqlite-password-prepared.ts +23 -9
  215. package/src/drizzle/sqlite-passwords.ts +29 -15
  216. package/src/drizzle/sqlite-proofs.ts +28 -5
  217. package/src/drizzle/sqlite-sessions.ts +49 -23
  218. package/src/drizzle/standalone-guard.ts +18 -6
  219. package/src/drizzle/totp-target.ts +61 -60
  220. package/dist/drizzle/d1-identity.d.mts +0 -30
  221. package/dist/drizzle/mysql-identity.d.mts +0 -21
  222. package/dist/drizzle/pg-identity.d.mts +0 -22
@@ -1 +1 @@
1
- {"version":3,"file":"mysql-sessions.mjs","names":[],"sources":["../../src/drizzle/mysql-sessions.ts"],"sourcesContent":["import type { LifecycleHooks, HookConfigurationError } from \"@yielded/auth/Hooks\";\nimport {\n AuthenticationAuthority,\n type SessionUnavailable,\n type PendingAuthentication,\n type SessionRepository,\n type SignedSessionValidity,\n type StatefulSessionPersistence,\n type SessionStepUpPersistence,\n} from \"@yielded/auth/Sessions\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectMysql2Database } from \"drizzle-orm/effect-mysql2\";\nimport type { AnyMySqlTable } from \"drizzle-orm/mysql-core\";\nimport { Effect, Context } from \"effect\";\nimport type { SqlError } from \"effect/sql/SqlError\";\n\nimport type {\n AuthenticationAuthorityMapping,\n PendingAuthenticationMapping,\n SignedSessionValidityMapping,\n StatefulSessionMapping,\n} from \"./session-model\";\nimport {\n coordinateTargetAuthenticationAuthority,\n coordinateTargetPendingAuthentication,\n coordinateTargetSignedSessionValidity,\n coordinateTargetStatefulSessions,\n makeTargetAuthenticationAuthorityServices,\n makeTargetPendingAuthenticationServices,\n makeTargetSignedSessionValidityServices,\n makeTargetStatefulSessionServices,\n sqlClientSessionStandaloneGuard,\n makeTargetSessionStepUpServices,\n coordinateTargetSessionStepUp,\n} from \"./session-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\ntype Database = EffectMysql2Database<AnyRelations>;\ntype Transaction = Parameters<Parameters<Database[\"transaction\"]>[0]>[0];\n\nconst configuration = (database: Database) => ({\n mode: \"interactive\" as const,\n locking: true,\n standaloneGuard: sqlClientSessionStandaloneGuard(database),\n});\n\nexport const makeMysqlAuthenticationAuthorityServices = <\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n>(\n database: Database,\n mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>,\n) => makeTargetAuthenticationAuthorityServices<Claims>(database, mapping, configuration(database));\n\nexport const makeMysqlPendingAuthenticationServices = <\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n P extends AnyMySqlTable,\n F extends AnyMySqlTable,\n NativeId,\n>(\n database: Database,\n mapping: PendingAuthenticationMapping<Claims, S, C, P, F, NativeId>,\n) => makeTargetPendingAuthenticationServices<Claims>(database, mapping, configuration(database));\n\nexport const makeMysqlStatefulSessionServices = <\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n>(\n database: Database,\n mapping: StatefulSessionMapping<Claims, S, C, Session, F, P, NativeId, NativeSessionId>,\n) => makeTargetStatefulSessionServices<Claims>(database, mapping, configuration(database));\n\nexport const makeMysqlSignedSessionValidityServices = <\n S extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n>(\n database: Database,\n mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>,\n) => makeTargetSignedSessionValidityServices(database, mapping, configuration(database));\n\nexport function coordinateMysqlAuthenticationAuthority<\n D extends Database,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlAuthenticationAuthority<\n D extends Database,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlAuthenticationAuthority<\n D extends Database,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetAuthenticationAuthority<\n Claims,\n Transaction,\n A,\n E,\n Exclude<R, AuthenticationAuthority>\n >(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: Transaction,\n services: { readonly authenticationAuthority: AuthenticationAuthority[\"Service\"] },\n ) => {\n const provided = Context.make(AuthenticationAuthority, services.authenticationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinateMysqlPendingAuthentication<\n D extends Database,\n TargetId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n P extends AnyMySqlTable,\n F extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlPendingAuthentication<\n D extends Database,\n TargetId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n P extends AnyMySqlTable,\n F extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlPendingAuthentication<\n D extends Database,\n TargetId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n P extends AnyMySqlTable,\n F extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetPendingAuthentication<Claims, Transaction, A, E, Exclude<R, TargetId>>(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: Transaction,\n services: { readonly pendingAuthentication: PendingAuthentication<Claims> },\n ) => {\n const provided = Context.make(options.target, services.pendingAuthentication);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinateMysqlStatefulSessions<\n D extends Database,\n PersistenceId,\n RepositoryId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlStatefulSessions<\n D extends Database,\n PersistenceId,\n RepositoryId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlStatefulSessions<\n D extends Database,\n PersistenceId,\n RepositoryId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetStatefulSessions<\n Claims,\n Transaction,\n A,\n E,\n Exclude<R, PersistenceId | RepositoryId>\n >(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: Transaction,\n services: {\n readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;\n readonly sessionRepository: SessionRepository;\n },\n ) => {\n const provided = Context.make(\n options.persistence,\n services.statefulSessionPersistence,\n ).pipe(Context.add(options.repository, services.sessionRepository));\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinateMysqlSignedSessionValidity<\n D extends Database,\n TargetId,\n S extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlSignedSessionValidity<\n D extends Database,\n TargetId,\n S extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlSignedSessionValidity<\n D extends Database,\n TargetId,\n S extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetSignedSessionValidity<Transaction, A, E, Exclude<R, TargetId>>(\n database,\n options.mapping,\n configuration(database),\n (\n transaction: Transaction,\n services: { readonly signedSessionValidity: SignedSessionValidity },\n ) => {\n const provided = Context.make(options.target, services.signedSessionValidity);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nimport type { SessionStepUpMapping } from \"./step-up-model\";\n\nexport const makeMysqlSessionStepUpServices = <\n Claims,\n Id,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n I extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n>(\n database: Database,\n mapping: SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>,\n target: Context.Service<Id, SessionStepUpPersistence<Claims>>,\n) => makeTargetSessionStepUpServices(database, mapping, target, configuration(database));\n\nexport function coordinateMysqlSessionStepUp<\n Claims,\n Id,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n I extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlSessionStepUp<\n Claims,\n Id,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n I extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction: SuppliedService<\n TxId,\n NoInfer<Parameters<Parameters<D[\"transaction\"]>[0]>[0]>,\n TxShape\n >;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlSessionStepUp<\n Claims,\n Id,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n I extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction?: SuppliedService<\n TxId,\n NoInfer<Parameters<Parameters<D[\"transaction\"]>[0]>[0]>,\n TxShape\n >;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetSessionStepUp<\n Claims,\n Id,\n Parameters<Parameters<D[\"transaction\"]>[0]>[0],\n A,\n E,\n Exclude<R, Id>\n >(\n database,\n options.mapping,\n options.target,\n configuration(database),\n (\n transaction: Parameters<Parameters<D[\"transaction\"]>[0]>[0],\n services: { readonly sessionStepUpPersistence: SessionStepUpPersistence<Claims> },\n ) => {\n const provided = Context.make(options.target, services.sessionStepUpPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n"],"mappings":";;;;AAwCA,MAAM,iBAAiB,cAAwB;CAC7C,MAAM;CACN,SAAS;CACT,iBAAiB,gCAAgC,QAAQ;AAC3D;AAEA,MAAa,4CAQX,UACA,YACG,0CAAkD,UAAU,SAAS,cAAc,QAAQ,CAAC;AAEjG,MAAa,0CAQX,UACA,YACG,wCAAgD,UAAU,SAAS,cAAc,QAAQ,CAAC;AAE/F,MAAa,oCAUX,UACA,YACG,kCAA0C,UAAU,SAAS,cAAc,QAAQ,CAAC;AAEzF,MAAa,0CAMX,UACA,YACG,wCAAwC,UAAU,SAAS,cAAc,QAAQ,CAAC;AAwDvF,SAAgB,uCAgBd,SACA,SAIA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,wCAOE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,yBAAyB,SAAS,uBAAuB;EACvF,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF;AA4DA,SAAgB,qCAiBd,SACA,SAKA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,sCACE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;EAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF;AAsFA,SAAgB,gCAoBd,SACA,SAeA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,iCAOE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aAIG;EACH,MAAM,WAAW,QAAQ,KACvB,QAAQ,aACR,SAAS,0BACX,CAAC,CAAC,KAAK,QAAQ,IAAI,QAAQ,YAAY,SAAS,iBAAiB,CAAC;EAElE,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF;AAwDA,SAAgB,qCAed,SACA,SAKA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,sCACE,UACA,QAAQ,SACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;EAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF;AAIA,MAAa,kCAWX,UACA,SACA,WACG,gCAAgC,UAAU,SAAS,QAAQ,cAAc,QAAQ,CAAC;AAsFvF,SAAgB,6BAmBd,SACA,SAkBA,MAKA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,8BAQE,UACA,QAAQ,SACR,QAAQ,QACR,cAAc,QAAQ,IAEpB,aACA,aACG;EACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,wBAAwB;EAC/E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;CAC1F,CACF,CACF;AACF"}
1
+ {"version":3,"file":"mysql-sessions.mjs","names":["DatabaseService"],"sources":["../../src/drizzle/mysql-sessions.ts"],"sourcesContent":["import type { LifecycleHooks, HookConfigurationError } from \"@yielded/auth/Hooks\";\nimport {\n AuthenticationAuthority,\n type SessionUnavailable,\n type PendingAuthentication,\n type SessionRepository,\n type SignedSessionValidity,\n type StatefulSessionPersistence,\n type SessionStepUpPersistence,\n} from \"@yielded/auth/Sessions\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectMysql2Database } from \"drizzle-orm/effect-mysql2\";\nimport type { AnyMySqlTable } from \"drizzle-orm/mysql-core\";\nimport { Effect, Context } from \"effect\";\nimport type { SqlError } from \"effect/sql/SqlError\";\n\nimport { Database as DatabaseService } from \"./mysql-database\";\nimport { nativeDatabase } from \"./native-database\";\nimport type {\n AuthenticationAuthorityMapping,\n PendingAuthenticationMapping,\n SignedSessionValidityMapping,\n StatefulSessionMapping,\n} from \"./session-model\";\nimport { CurrentSessionSql } from \"./session-sql\";\nimport {\n coordinateTargetAuthenticationAuthority,\n coordinateTargetPendingAuthentication,\n coordinateTargetSignedSessionValidity,\n coordinateTargetStatefulSessions,\n makeTargetAuthenticationAuthorityServices,\n makeTargetPendingAuthenticationServices,\n makeTargetSignedSessionValidityServices,\n makeTargetStatefulSessionServices,\n sqlClientSessionStandaloneGuard,\n makeTargetSessionStepUpServices,\n coordinateTargetSessionStepUp,\n} from \"./session-target\";\nimport {\n type TransactionService,\n acquireTransactionService,\n transactionService,\n} from \"./standalone-guard\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\ntype Database = EffectMysql2Database<AnyRelations>;\ntype Transaction = Parameters<Parameters<Database[\"transaction\"]>[0]>[0];\n\nconst configuration = (service: TransactionService | undefined) => ({\n mode: \"interactive\" as const,\n locking: true,\n standaloneGuard: sqlClientSessionStandaloneGuard(service),\n});\n\nexport const makeMysqlAuthenticationAuthorityServices = <\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n>(\n mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>,\n) =>\n Effect.flatMap(\n Effect.map(acquireTransactionService(DatabaseService), configuration),\n (configuration) => makeTargetAuthenticationAuthorityServices<Claims>(mapping, configuration),\n ).pipe(Effect.provideServiceEffect(CurrentSessionSql, nativeDatabase(DatabaseService)));\n\nexport const makeMysqlPendingAuthenticationServices = <\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n P extends AnyMySqlTable,\n F extends AnyMySqlTable,\n NativeId,\n>(\n mapping: PendingAuthenticationMapping<Claims, S, C, P, F, NativeId>,\n) =>\n Effect.flatMap(\n Effect.map(acquireTransactionService(DatabaseService), configuration),\n (configuration) => makeTargetPendingAuthenticationServices<Claims>(mapping, configuration),\n ).pipe(Effect.provideServiceEffect(CurrentSessionSql, nativeDatabase(DatabaseService)));\n\nexport const makeMysqlStatefulSessionServices = <\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n>(\n mapping: StatefulSessionMapping<Claims, S, C, Session, F, P, NativeId, NativeSessionId>,\n) =>\n Effect.flatMap(\n Effect.map(acquireTransactionService(DatabaseService), configuration),\n (configuration) => makeTargetStatefulSessionServices<Claims>(mapping, configuration),\n ).pipe(Effect.provideServiceEffect(CurrentSessionSql, nativeDatabase(DatabaseService)));\n\nexport const makeMysqlSignedSessionValidityServices = <\n S extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n>(\n mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>,\n) =>\n Effect.flatMap(\n Effect.map(acquireTransactionService(DatabaseService), configuration),\n (configuration) => makeTargetSignedSessionValidityServices(mapping, configuration),\n ).pipe(Effect.provideServiceEffect(CurrentSessionSql, nativeDatabase(DatabaseService)));\n\nexport function coordinateMysqlAuthenticationAuthority<\n D extends Database,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlAuthenticationAuthority<\n D extends Database,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlAuthenticationAuthority<\n D extends Database,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthenticationAuthorityMapping<Claims, S, C, F, P, NativeId>;\n readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, AuthenticationAuthority> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetAuthenticationAuthority<\n Claims,\n Transaction,\n A,\n E,\n Exclude<R, AuthenticationAuthority>\n >(\n database,\n options.mapping,\n configuration(transactionService(database)),\n (\n transaction: Transaction,\n services: { readonly authenticationAuthority: AuthenticationAuthority[\"Service\"] },\n ) => {\n const provided = Context.make(AuthenticationAuthority, services.authenticationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinateMysqlPendingAuthentication<\n D extends Database,\n TargetId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n P extends AnyMySqlTable,\n F extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlPendingAuthentication<\n D extends Database,\n TargetId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n P extends AnyMySqlTable,\n F extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlPendingAuthentication<\n D extends Database,\n TargetId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n P extends AnyMySqlTable,\n F extends AnyMySqlTable,\n NativeId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PendingAuthenticationMapping<NoInfer<Claims>, S, C, P, F, NativeId>;\n readonly target: SuppliedService<TargetId, PendingAuthentication<Claims>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetPendingAuthentication<Claims, Transaction, A, E, Exclude<R, TargetId>>(\n database,\n options.mapping,\n configuration(transactionService(database)),\n (\n transaction: Transaction,\n services: { readonly pendingAuthentication: PendingAuthentication<Claims> },\n ) => {\n const provided = Context.make(options.target, services.pendingAuthentication);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinateMysqlStatefulSessions<\n D extends Database,\n PersistenceId,\n RepositoryId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlStatefulSessions<\n D extends Database,\n PersistenceId,\n RepositoryId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlStatefulSessions<\n D extends Database,\n PersistenceId,\n RepositoryId,\n Claims,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n F extends AnyMySqlTable,\n P extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: StatefulSessionMapping<\n NoInfer<Claims>,\n S,\n C,\n Session,\n F,\n P,\n NativeId,\n NativeSessionId\n >;\n readonly persistence: SuppliedService<PersistenceId, StatefulSessionPersistence<Claims>>;\n readonly repository: SuppliedService<RepositoryId, SessionRepository>;\n readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, PersistenceId | RepositoryId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetStatefulSessions<\n Claims,\n Transaction,\n A,\n E,\n Exclude<R, PersistenceId | RepositoryId>\n >(\n database,\n options.mapping,\n configuration(transactionService(database)),\n (\n transaction: Transaction,\n services: {\n readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;\n readonly sessionRepository: SessionRepository;\n },\n ) => {\n const provided = Context.make(\n options.persistence,\n services.statefulSessionPersistence,\n ).pipe(Context.add(options.repository, services.sessionRepository));\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nexport function coordinateMysqlSignedSessionValidity<\n D extends Database,\n TargetId,\n S extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlSignedSessionValidity<\n D extends Database,\n TargetId,\n S extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlSignedSessionValidity<\n D extends Database,\n TargetId,\n S extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SignedSessionValidityMapping<S, T, NativeId, NativeSessionId>;\n readonly target: SuppliedService<TargetId, SignedSessionValidity>;\n readonly transaction?: SuppliedService<TxId, NoInfer<Transaction>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetSignedSessionValidity<Transaction, A, E, Exclude<R, TargetId>>(\n database,\n options.mapping,\n configuration(transactionService(database)),\n (\n transaction: Transaction,\n services: { readonly signedSessionValidity: SignedSessionValidity },\n ) => {\n const provided = Context.make(options.target, services.signedSessionValidity);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n\nimport type { SessionStepUpMapping } from \"./step-up-model\";\n\nexport const makeMysqlSessionStepUpServices = <\n Claims,\n Id,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n I extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n>(\n mapping: SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>,\n target: Context.Service<Id, SessionStepUpPersistence<Claims>>,\n) =>\n Effect.flatMap(\n Effect.map(acquireTransactionService(DatabaseService), configuration),\n (configuration) => makeTargetSessionStepUpServices(mapping, target, configuration),\n ).pipe(Effect.provideServiceEffect(CurrentSessionSql, nativeDatabase(DatabaseService)));\n\nexport function coordinateMysqlSessionStepUp<\n Claims,\n Id,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n I extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlSessionStepUp<\n Claims,\n Id,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n I extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction: SuppliedService<\n TxId,\n NoInfer<Parameters<Parameters<D[\"transaction\"]>[0]>[0]>,\n TxShape\n >;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id | TxId> | LifecycleHooks | DatabaseRequirements\n>;\n\nexport function coordinateMysqlSessionStepUp<\n Claims,\n Id,\n S extends AnyMySqlTable,\n C extends AnyMySqlTable,\n I extends AnyMySqlTable,\n Session extends AnyMySqlTable,\n T extends AnyMySqlTable,\n NativeId,\n NativeSessionId,\n D extends Database,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: SessionStepUpMapping<\n NoInfer<Claims>,\n S,\n C,\n I,\n Session,\n T,\n NativeId,\n NativeSessionId\n >;\n readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;\n readonly transaction?: SuppliedService<\n TxId,\n NoInfer<Parameters<Parameters<D[\"transaction\"]>[0]>[0]>,\n TxShape\n >;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n E | SessionUnavailable | HookConfigurationError | SqlError | DatabaseError,\n Exclude<R, Id> | LifecycleHooks | DatabaseRequirements\n> {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetSessionStepUp<\n Claims,\n Id,\n Parameters<Parameters<D[\"transaction\"]>[0]>[0],\n A,\n E,\n Exclude<R, Id>\n >(\n database,\n options.mapping,\n options.target,\n configuration(transactionService(database)),\n (\n transaction: Parameters<Parameters<D[\"transaction\"]>[0]>[0],\n services: { readonly sessionStepUpPersistence: SessionStepUpPersistence<Claims> },\n ) => {\n const provided = Context.make(options.target, services.sessionStepUpPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Effect } from "effect";
2
+ //#region src/drizzle/native-database.ts
3
+ /** Drizzle omits its captured $client from database class types, and only D1
4
+ * exposes batch. Its generic query builders implement the SQL kernel contracts
5
+ * through drizzleQueryOperations. The selected driver mode controls native calls. */
6
+ const nativeDatabase = (databaseService) => Effect.map(Effect.service(databaseService), (database) => database);
7
+ //#endregion
8
+ export { nativeDatabase };
9
+
10
+ //# sourceMappingURL=native-database.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-database.mjs","names":[],"sources":["../../src/drizzle/native-database.ts"],"sourcesContent":["import type {\n TransactionNativeDatabase,\n SessionSqlDatabase,\n PasswordSqlDatabase,\n EmailSqlDatabase,\n ProofSqlDatabase,\n} from \"@yielded/auth-persistence/Adapter\";\nimport { type Context, Effect } from \"effect\";\n\n/** Drizzle omits its captured $client from database class types, and only D1\n * exposes batch. Its generic query builders implement the SQL kernel contracts\n * through drizzleQueryOperations. The selected driver mode controls native calls. */\nexport const nativeDatabase = <Id, Database>(databaseService: Context.Key<Id, Database>) =>\n Effect.map(\n Effect.service(databaseService),\n (database) =>\n database as unknown as TransactionNativeDatabase &\n SessionSqlDatabase &\n PasswordSqlDatabase &\n EmailSqlDatabase &\n ProofSqlDatabase,\n );\n"],"mappings":";;;;;AAYA,MAAa,kBAAgC,oBAC3C,OAAO,IACL,OAAO,QAAQ,eAAe,IAC7B,aACC,QAKJ"}
@@ -1,11 +1,13 @@
1
1
  import { coordinateTargetOAuthConnected, coordinateTargetOAuthConnectedRevocations, makeTargetOAuthConnectedRevocationServices, makeTargetOAuthConnectedServices } from "./oauth-connected-target.mjs";
2
2
  import { D1BatchStatements } from "./D1BatchStatements.mjs";
3
3
  import { makeD1Owner } from "./d1-planning.mjs";
4
+ import { nativeDatabase } from "./native-database.mjs";
5
+ import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
4
6
  import { Context, Effect } from "effect";
5
7
  import { OAuthConnectedPersistence, OAuthConnectedRevocations, OAuthUnavailable } from "@yielded/auth/OAuth";
6
8
  //#region src/drizzle/oauth-connected-drivers.ts
7
9
  const unavailable = () => OAuthUnavailable.make({});
8
- const makeOAuthConnectedTarget = (configuration) => {
10
+ const makeOAuthConnectedTarget = (databaseService, configuration) => {
9
11
  function coordinateOAuthConnected(acquire, options, body) {
10
12
  return Effect.flatMap(acquire, (database) => coordinateTargetOAuthConnected(database, options.mapping, configuration, (transaction, services) => {
11
13
  const provided = Context.make(OAuthConnectedPersistence, services.oauthConnectedPersistence);
@@ -21,13 +23,13 @@ const makeOAuthConnectedTarget = (configuration) => {
21
23
  }));
22
24
  }
23
25
  return {
24
- makeOAuthConnectedServices: (database, mapping) => makeTargetOAuthConnectedServices(database, mapping, configuration),
25
- makeOAuthConnectedRevocationServices: (database, mapping) => makeTargetOAuthConnectedRevocationServices(database, mapping, configuration),
26
+ makeOAuthConnectedServices: (mapping) => makeTargetOAuthConnectedServices(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
27
+ makeOAuthConnectedRevocationServices: (mapping) => makeTargetOAuthConnectedRevocationServices(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
26
28
  coordinateOAuthConnected,
27
29
  coordinateOAuthConnectedRevocations
28
30
  };
29
31
  };
30
- const makeD1OAuthConnectedTarget = (configuration) => {
32
+ const makeD1OAuthConnectedTarget = (databaseService, configuration) => {
31
33
  function coordinateOAuthConnected(acquire, options, body) {
32
34
  return Effect.flatMap(acquire, (database) => coordinateTargetOAuthConnected(database, options.mapping, configuration, (_tx, services, append) => Effect.gen(function* () {
33
35
  const original = services.oauthConnectedPersistence;
@@ -68,7 +70,7 @@ const makeD1OAuthConnectedTarget = (configuration) => {
68
70
  })));
69
71
  }
70
72
  return {
71
- ...makeOAuthConnectedTarget(configuration),
73
+ ...makeOAuthConnectedTarget(databaseService, configuration),
72
74
  coordinateOAuthConnected,
73
75
  coordinateOAuthConnectedRevocations
74
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-connected-drivers.mjs","names":[],"sources":["../../src/drizzle/oauth-connected-drivers.ts"],"sourcesContent":["import type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n OAuthConnectedPersistence,\n OAuthConnectedRevocations,\n OAuthUnavailable,\n} from \"@yielded/auth/OAuth\";\nimport type { Table } from \"drizzle-orm\";\nimport { Effect, Context } from \"effect\";\n\nimport { makeD1Owner } from \"./d1-planning\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\nimport type {\n OAuthConnectedMapping,\n OAuthConnectedRevocationMapping,\n} from \"./oauth-connected-model\";\nimport {\n coordinateTargetOAuthConnected,\n coordinateTargetOAuthConnectedRevocations,\n makeTargetOAuthConnectedServices,\n makeTargetOAuthConnectedRevocationServices,\n} from \"./oauth-connected-target\";\nimport { type OAuthCoordinatorError, type OAuthTargetConfiguration } from \"./oauth-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n// oxlint-disable-next-line no-explicit-any -- inspect the actual installed native transaction callback without erasing it.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\nconst unavailable = () => OAuthUnavailable.make({});\n\nexport const makeOAuthConnectedTarget = <\n Database,\n Family extends Table,\n Extra = {},\n Synchronous extends boolean = false,\n>(\n configuration: OAuthTargetConfiguration,\n) => {\n function coordinateOAuthConnected<\n D extends Database,\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthConnectedPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthConnectedPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthConnected<\n D extends Database,\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthConnectedPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthConnectedPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthConnected<\n D extends Database,\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthConnectedPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthConnected<TransactionOf<D>, A, E, Exclude<R, OAuthConnectedPersistence>>(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<D>,\n services: { readonly oauthConnectedPersistence: OAuthConnectedPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthConnectedPersistence,\n services.oauthConnectedPersistence,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n function coordinateOAuthConnectedRevocations<\n D extends Database,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthConnectedRevocations> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthConnectedRevocations>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthConnectedRevocations<\n D extends Database,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthConnectedRevocations | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthConnectedRevocations | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthConnectedRevocations<\n D extends Database,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthConnectedRevocations> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthConnectedRevocations<\n TransactionOf<D>,\n A,\n E,\n Exclude<R, OAuthConnectedRevocations>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<D>,\n services: { readonly oauthConnectedRevocations: OAuthConnectedRevocations[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthConnectedRevocations,\n services.oauthConnectedRevocations,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n\n return {\n makeOAuthConnectedServices: <\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family = never,\n >(\n database: Database,\n mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra,\n ) => makeTargetOAuthConnectedServices(database, mapping, configuration),\n makeOAuthConnectedRevocationServices: <\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n >(\n database: Database,\n mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra,\n ) => makeTargetOAuthConnectedRevocationServices(database, mapping, configuration),\n coordinateOAuthConnected,\n coordinateOAuthConnectedRevocations,\n };\n};\n\nexport const makeD1OAuthConnectedTarget = <Database, Family extends Table, Extra>(\n configuration: OAuthTargetConfiguration,\n) => {\n function coordinateOAuthConnected<\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | Exclude<R, OAuthConnectedPersistence | D1BatchStatements>\n | LifecycleHooks\n | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthConnected<\n Database,\n A,\n E | OAuthUnavailable,\n Exclude<R, OAuthConnectedPersistence | D1BatchStatements>\n >(database, options.mapping, configuration, (_tx, services, append) =>\n Effect.gen(function* () {\n const original = services.oauthConnectedPersistence;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(unavailable()).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: OAuthConnectedPersistence[\"Service\"] = {\n claimSignIn: (input, prepare) => owner.run(original.claimSignIn(input, prepare)),\n inspectSignIn: (input) => owner.run(original.inspectSignIn(input)),\n settleSignIn: (input, prepare) => owner.run(original.settleSignIn(input, prepare)),\n capture: (input) => owner.run(original.capture(input)),\n issue: (input, prepare) => owner.run(original.issue(input, prepare)),\n preflight: (input) => owner.run(original.preflight(input)),\n claim: (input, prepare) => owner.run(original.claim(input, prepare)),\n inspectGrant: (input) => owner.run(original.inspectGrant(input)),\n settle: (input, prepare) => owner.run(original.settle(input, prepare)),\n list: (input) => owner.run(original.list(input)),\n inspectDisconnect: (input) => owner.run(original.inspectDisconnect(input)),\n disconnect: (input, prepare) => owner.run(original.disconnect(input, prepare)),\n inspectAccess: (input) => owner.run(original.inspectAccess(input)),\n claimRefresh: (input, prepare) => owner.run(original.claimRefresh(input, prepare)),\n settleRefresh: (input, prepare) => owner.run(original.settleRefresh(input, prepare)),\n admitUse: (input, prepare) => owner.run(original.admitUse(input, prepare)),\n cleanup: (input, prepare) => owner.run(original.cleanup(input, prepare)),\n };\n\n const provided = Context.make(OAuthConnectedPersistence, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n }\n function coordinateOAuthConnectedRevocations<\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: { readonly mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | Exclude<R, OAuthConnectedRevocations | D1BatchStatements>\n | LifecycleHooks\n | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthConnectedRevocations<\n Database,\n A,\n E | OAuthUnavailable,\n Exclude<R, OAuthConnectedRevocations | D1BatchStatements>\n >(database, options.mapping, configuration, (_tx, services, append) =>\n Effect.gen(function* () {\n const original = services.oauthConnectedRevocations;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(unavailable()).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: OAuthConnectedRevocations[\"Service\"] = {\n claim: (input, prepare) => owner.run(original.claim(input, prepare)),\n settle: (input, prepare) => owner.run(original.settle(input, prepare)),\n };\n\n const provided = Context.make(OAuthConnectedRevocations, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n }\n\n return {\n ...makeOAuthConnectedTarget<Database, Family, Extra>(configuration),\n coordinateOAuthConnected,\n coordinateOAuthConnectedRevocations,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"oauth-connected-drivers.mjs","names":[],"sources":["../../src/drizzle/oauth-connected-drivers.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n OAuthConnectedPersistence,\n OAuthConnectedRevocations,\n OAuthUnavailable,\n} from \"@yielded/auth/OAuth\";\nimport type { Table } from \"drizzle-orm\";\nimport { Effect, Context } from \"effect\";\n\nimport { makeD1Owner } from \"./d1-planning\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\nimport { nativeDatabase } from \"./native-database\";\nimport type {\n OAuthConnectedMapping,\n OAuthConnectedRevocationMapping,\n} from \"./oauth-connected-model\";\nimport {\n coordinateTargetOAuthConnected,\n coordinateTargetOAuthConnectedRevocations,\n makeTargetOAuthConnectedServices,\n makeTargetOAuthConnectedRevocationServices,\n} from \"./oauth-connected-target\";\nimport { type OAuthCoordinatorError, type OAuthTargetConfiguration } from \"./oauth-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n// oxlint-disable-next-line no-explicit-any -- inspect the actual installed native transaction callback without erasing it.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\nconst unavailable = () => OAuthUnavailable.make({});\n\nexport const makeOAuthConnectedTarget = <\n DatabaseId,\n Database,\n Family extends Table,\n Extra = {},\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, Database>,\n configuration: OAuthTargetConfiguration,\n) => {\n function coordinateOAuthConnected<\n D extends Database,\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthConnectedPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthConnectedPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthConnected<\n D extends Database,\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthConnectedPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthConnectedPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthConnected<\n D extends Database,\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthConnectedPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthConnected<TransactionOf<D>, A, E, Exclude<R, OAuthConnectedPersistence>>(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<D>,\n services: { readonly oauthConnectedPersistence: OAuthConnectedPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthConnectedPersistence,\n services.oauthConnectedPersistence,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n function coordinateOAuthConnectedRevocations<\n D extends Database,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthConnectedRevocations> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthConnectedRevocations>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthConnectedRevocations<\n D extends Database,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthConnectedRevocations | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthConnectedRevocations | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthConnectedRevocations<\n D extends Database,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthConnectedRevocations> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthConnectedRevocations<\n TransactionOf<D>,\n A,\n E,\n Exclude<R, OAuthConnectedRevocations>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<D>,\n services: { readonly oauthConnectedRevocations: OAuthConnectedRevocations[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthConnectedRevocations,\n services.oauthConnectedRevocations,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n\n return {\n makeOAuthConnectedServices: <\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family = never,\n >(\n mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra,\n ) =>\n makeTargetOAuthConnectedServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthConnectedRevocationServices: <\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n >(\n mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra,\n ) =>\n makeTargetOAuthConnectedRevocationServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinateOAuthConnected,\n coordinateOAuthConnectedRevocations,\n };\n};\n\nexport const makeD1OAuthConnectedTarget = <DatabaseId, Database, Family extends Table, Extra>(\n databaseService: Context.Service<DatabaseId, Database>,\n configuration: OAuthTargetConfiguration,\n) => {\n function coordinateOAuthConnected<\n S extends Family,\n AC extends Family,\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n UA extends Family,\n DC extends Family,\n N,\n J extends Family,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthConnectedMapping<S, AC, T, O, F, G, C, H, UA, DC, N, J> & Extra;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | Exclude<R, OAuthConnectedPersistence | D1BatchStatements>\n | LifecycleHooks\n | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthConnected<\n Database,\n A,\n E | OAuthUnavailable,\n Exclude<R, OAuthConnectedPersistence | D1BatchStatements>\n >(database, options.mapping, configuration, (_tx, services, append) =>\n Effect.gen(function* () {\n const original = services.oauthConnectedPersistence;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(unavailable()).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: OAuthConnectedPersistence[\"Service\"] = {\n claimSignIn: (input, prepare) => owner.run(original.claimSignIn(input, prepare)),\n inspectSignIn: (input) => owner.run(original.inspectSignIn(input)),\n settleSignIn: (input, prepare) => owner.run(original.settleSignIn(input, prepare)),\n capture: (input) => owner.run(original.capture(input)),\n issue: (input, prepare) => owner.run(original.issue(input, prepare)),\n preflight: (input) => owner.run(original.preflight(input)),\n claim: (input, prepare) => owner.run(original.claim(input, prepare)),\n inspectGrant: (input) => owner.run(original.inspectGrant(input)),\n settle: (input, prepare) => owner.run(original.settle(input, prepare)),\n list: (input) => owner.run(original.list(input)),\n inspectDisconnect: (input) => owner.run(original.inspectDisconnect(input)),\n disconnect: (input, prepare) => owner.run(original.disconnect(input, prepare)),\n inspectAccess: (input) => owner.run(original.inspectAccess(input)),\n claimRefresh: (input, prepare) => owner.run(original.claimRefresh(input, prepare)),\n settleRefresh: (input, prepare) => owner.run(original.settleRefresh(input, prepare)),\n admitUse: (input, prepare) => owner.run(original.admitUse(input, prepare)),\n cleanup: (input, prepare) => owner.run(original.cleanup(input, prepare)),\n };\n\n const provided = Context.make(OAuthConnectedPersistence, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n }\n function coordinateOAuthConnectedRevocations<\n T extends Family,\n O extends Family,\n F extends Family,\n G extends Family,\n C extends Family,\n H extends Family,\n J extends Family,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: { readonly mapping: OAuthConnectedRevocationMapping<T, O, F, G, C, H, J, N> & Extra },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | Exclude<R, OAuthConnectedRevocations | D1BatchStatements>\n | LifecycleHooks\n | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthConnectedRevocations<\n Database,\n A,\n E | OAuthUnavailable,\n Exclude<R, OAuthConnectedRevocations | D1BatchStatements>\n >(database, options.mapping, configuration, (_tx, services, append) =>\n Effect.gen(function* () {\n const original = services.oauthConnectedRevocations;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(unavailable()).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: OAuthConnectedRevocations[\"Service\"] = {\n claim: (input, prepare) => owner.run(original.claim(input, prepare)),\n settle: (input, prepare) => owner.run(original.settle(input, prepare)),\n };\n\n const provided = Context.make(OAuthConnectedRevocations, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n }\n\n return {\n ...makeOAuthConnectedTarget<DatabaseId, Database, Family, Extra>(\n databaseService,\n configuration,\n ),\n coordinateOAuthConnected,\n coordinateOAuthConnectedRevocations,\n };\n};\n"],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  import { OAuthTargetConfiguration } from "./oauth-target.mjs";
2
2
  import { Mapping, Revocations, oauth_connected_state_d_exports } from "./oauth-connected-state.mjs";
3
3
  import { Effect, Layer, Schema } from "effect";
4
- import { LifecycleHooks } from "@yielded/auth/Hooks";
5
4
  import * as M from "@yielded/auth/OAuth";
6
5
  import { OAuthConnectedPersistence, OAuthConnectedRevocationDecision, OAuthConnectedRevocations, OAuthExternalIdentity, PrepareOAuthCommit } from "@yielded/auth/OAuth";
7
6
  import { Statement } from "effect/sql/Statement";
8
7
  //#region src/drizzle/oauth-connected-target.d.ts
9
- export declare const makeTargetOAuthConnectedServices: (database: any, mapping: Mapping, configuration: OAuthTargetConfiguration) => Effect.Effect<{
8
+ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, configuration: OAuthTargetConfiguration) => Effect.Effect<{
10
9
  oauthConnectedPersistence: {
11
10
  readonly claimSignIn: <A>(input: {
12
11
  readonly claim: M.OAuthClaim;
@@ -858,8 +857,8 @@ export declare const makeTargetOAuthConnectedServices: (database: any, mapping:
858
857
  readonly hasMore: boolean;
859
858
  }, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.OAuthUnavailable, never>;
860
859
  };
861
- }, never, LifecycleHooks>;
862
- export declare const makeTargetOAuthConnectedRevocationServices: (database: any, mapping: Revocations, configuration: OAuthTargetConfiguration) => Effect.Effect<{
860
+ }, never, import("@yielded/auth/Hooks").LifecycleHooks | import("@yielded/auth-persistence/Adapter").NativeDatabase>;
861
+ export declare const makeTargetOAuthConnectedRevocationServices: (mapping: Revocations, configuration: OAuthTargetConfiguration) => Effect.Effect<{
863
862
  oauthConnectedRevocations: {
864
863
  readonly claim: <A>(input: {
865
864
  readonly moduleId: string & import("effect/Brand").Brand<"effect-auth/OAuthModuleId">;
@@ -873,8 +872,8 @@ export declare const makeTargetOAuthConnectedRevocationServices: (database: any,
873
872
  readonly settled: boolean;
874
873
  }, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.OAuthUnavailable>;
875
874
  };
876
- }, never, LifecycleHooks>;
877
- export declare const oauthConnectedPersistenceLayer: (services: ReturnType<typeof makeTargetOAuthConnectedServices>) => Layer.Layer<OAuthConnectedPersistence, never, LifecycleHooks>;
878
- export declare const oauthConnectedRevocationsLayer: (services: ReturnType<typeof makeTargetOAuthConnectedRevocationServices>) => Layer.Layer<OAuthConnectedRevocations, never, LifecycleHooks>;
875
+ }, never, import("@yielded/auth/Hooks").LifecycleHooks | import("@yielded/auth-persistence/Adapter").NativeDatabase>;
876
+ export declare const oauthConnectedPersistenceLayer: <E, R>(services: Effect.Effect<Effect.Success<ReturnType<typeof makeTargetOAuthConnectedServices>>, E, R>) => Layer.Layer<OAuthConnectedPersistence, E, Exclude<R, import("effect/Scope").Scope>>;
877
+ export declare const oauthConnectedRevocationsLayer: <E, R>(services: Effect.Effect<Effect.Success<ReturnType<typeof makeTargetOAuthConnectedRevocationServices>>, E, R>) => Layer.Layer<OAuthConnectedRevocations, E, Exclude<R, import("effect/Scope").Scope>>;
879
878
  //#endregion
880
879
  //# sourceMappingURL=oauth-connected-target.d.mts.map
@@ -11,7 +11,6 @@ import { claimRevocation, cleanup, settleRevocation } from "./oauth-connected-ma
11
11
  import { disconnect, inspectDisconnect, list } from "./oauth-connected-management.mjs";
12
12
  import { claimSignIn, inspectSignIn, settleSignIn } from "./oauth-connected-sign-in.mjs";
13
13
  import { Effect, Layer, Schema } from "effect";
14
- import { LifecycleHooks } from "@yielded/auth/Hooks";
15
14
  import * as M from "@yielded/auth/OAuth";
16
15
  import { OAuthConnectedPersistence, OAuthConnectedRevocationDecision, OAuthConnectedRevocations, OAuthExternalIdentity, snapshotOAuthSync } from "@yielded/auth/OAuth";
17
16
  //#region src/drizzle/oauth-connected-target.ts
@@ -77,13 +76,13 @@ const makeRevocations = (mapping, execute) => capturedOAuthService({
77
76
  claim: (input, callback) => execute.run(Effect.flatMap(claimRevocation(mapping, input), (value) => prepare(OAuthConnectedRevocationDecision, value, callback))),
78
77
  settle: (input, callback) => execute.run(Effect.flatMap(settleRevocation(mapping, input), (value) => prepare(settled, value, callback)))
79
78
  }, connectedRevocationInputs, execute.active, execute.poison);
80
- const makeTargetOAuthConnectedServices = (database, mapping, configuration) => {
79
+ const makeTargetOAuthConnectedServices = (mapping, configuration) => {
81
80
  const retained = captured(mapping);
82
- return Effect.map(LifecycleHooks, (hooks) => ({ oauthConnectedPersistence: makeConnected(retained, makeOAuthExecution(database, hooks, configuration)) }));
81
+ return Effect.map(makeOAuthExecution(configuration), (execution) => ({ oauthConnectedPersistence: makeConnected(retained, execution) }));
83
82
  };
84
- const makeTargetOAuthConnectedRevocationServices = (database, mapping, configuration) => {
83
+ const makeTargetOAuthConnectedRevocationServices = (mapping, configuration) => {
85
84
  const retained = captured(mapping);
86
- return Effect.map(LifecycleHooks, (hooks) => ({ oauthConnectedRevocations: makeRevocations(retained, makeOAuthExecution(database, hooks, configuration)) }));
85
+ return Effect.map(makeOAuthExecution(configuration), (execution) => ({ oauthConnectedRevocations: makeRevocations(retained, execution) }));
87
86
  };
88
87
  const coordinateTargetOAuthConnected = (database, mapping, configuration, owner) => coordinateOAuthOwner(database, captured(mapping), configuration, () => Effect.void, (value, execution) => ({ oauthConnectedPersistence: makeConnected(value, execution) }), owner);
89
88
  const coordinateTargetOAuthConnectedRevocations = (database, mapping, configuration, owner) => coordinateOAuthOwner(database, captured(mapping), configuration, () => Effect.void, (value, execution) => ({ oauthConnectedRevocations: makeRevocations(value, execution) }), owner);
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-connected-target.mjs","names":["S.nativeCopy","SignIn.claimSignIn","SignIn.inspectSignIn","SignIn.settleSignIn","F.capture","F.issue","F.preflight","F.claim","F.inspectGrant","Management.list","Management.inspectDisconnect","Management.disconnect","A.inspectAccess","A.claimRefresh","A.settleRefresh","A.admitUse","Maintenance.cleanup","Maintenance.claimRevocation","Maintenance.settleRevocation"],"sources":["../../src/drizzle/oauth-connected-target.ts"],"sourcesContent":["import { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport * as M from \"@yielded/auth/OAuth\";\nimport {\n OAuthConnectedPersistence,\n OAuthConnectedRevocations,\n OAuthConnectedRevocationDecision,\n OAuthExternalIdentity,\n snapshotOAuthSync,\n type PrepareOAuthCommit,\n} from \"@yielded/auth/OAuth\";\n/* oxlint-disable no-explicit-any -- concrete adapters retain the native database, table and ID types. */\nimport { Effect, Layer, Schema } from \"effect\";\nimport type { Statement } from \"effect/sql/Statement\";\n\nimport type { PersistenceMappingError } from \"./model\";\nimport * as A from \"./oauth-connected-access\";\nimport * as F from \"./oauth-connected-flow\";\nimport { connectedInputs, connectedRevocationInputs } from \"./oauth-connected-input\";\nimport * as Maintenance from \"./oauth-connected-maintenance\";\nimport * as Management from \"./oauth-connected-management\";\nimport { settle } from \"./oauth-connected-settlement\";\nimport * as SignIn from \"./oauth-connected-sign-in\";\nimport * as S from \"./oauth-connected-state\";\nimport { capturedOAuthService } from \"./oauth-input\";\nimport { CurrentOAuthTransaction } from \"./oauth-owner\";\nimport { captureOAuthMapping } from \"./oauth-state\";\nimport {\n coordinateOAuthOwner,\n makeOAuthExecution,\n type OAuthExecution,\n type OAuthTargetConfiguration,\n} from \"./oauth-target\";\n\nconst captured = <T extends S.Authority>(mapping: T): T => {\n const retained = captureOAuthMapping(mapping),\n codec = retained.subjectId;\n\n const subjectId = {\n ...codec,\n toNative: (subject: Parameters<typeof codec.toNative>[0]) =>\n Effect.map(codec.toNative(subject), S.nativeCopy),\n toSubject: (native: unknown) => codec.toSubject(S.nativeCopy(native)),\n equals: (a: unknown, b: unknown) => codec.equals(S.nativeCopy(a), S.nativeCopy(b)),\n };\n\n const ownership = retained.ownership;\n\n if (ownership.mode === \"separate\" && \"encodeInsert\" in ownership.external) {\n const encode = ownership.external.encodeInsert as (input: {\n readonly identity: typeof OAuthExternalIdentity.Type;\n readonly identityKey: string;\n readonly subjectId: unknown;\n }) => import(\"./oauth-owner\").Row;\n\n return captureOAuthMapping({\n ...retained,\n subjectId,\n ownership: {\n ...ownership,\n external: {\n ...ownership.external,\n encodeInsert: (input: Parameters<typeof encode>[0]) =>\n encode({\n ...input,\n identity: snapshotOAuthSync(OAuthExternalIdentity, input.identity),\n subjectId: S.nativeCopy(input.subjectId),\n }),\n },\n },\n });\n }\n\n return captureOAuthMapping({ ...retained, subjectId });\n};\n\nconst prepare = <Value, Encoded, A>(\n schema: Schema.Codec<Value, Encoded, never, never>,\n value: Value,\n callback: PrepareOAuthCommit<Value, A>,\n) =>\n Effect.flatMap(CurrentOAuthTransaction, (owner) =>\n Effect.sync(() => {\n owner.guards.push(owner.journal.prepare(undefined));\n\n return callback(snapshotOAuthSync(schema, value), owner.journal);\n }),\n );\n\nconst mutation =\n <Input, Value, Encoded>(\n mapping: S.Mapping,\n execute: OAuthExecution,\n body: (\n mapping: S.Mapping,\n input: Input,\n ) => Effect.Effect<\n Value,\n import(\"@yielded/auth/OAuth\").OAuthUnavailable | PersistenceMappingError,\n CurrentOAuthTransaction\n >,\n schema: Schema.Codec<Value, Encoded, never, never>,\n ) =>\n <A>(input: Input, callback: PrepareOAuthCommit<Value, A>) =>\n execute.run(Effect.flatMap(body(mapping, input), (value) => prepare(schema, value, callback)));\n\nconst read =\n <Input, Value>(\n mapping: S.Mapping,\n execute: OAuthExecution,\n body: (\n mapping: S.Mapping,\n input: Input,\n ) => Effect.Effect<\n Value,\n import(\"@yielded/auth/OAuth\").OAuthUnavailable | PersistenceMappingError,\n CurrentOAuthTransaction\n >,\n ) =>\n (input: Input) =>\n execute.run(body(mapping, input), false);\n\nexport const makeConnected = (\n mapping: S.Mapping,\n execute: OAuthExecution,\n): OAuthConnectedPersistence[\"Service\"] =>\n capturedOAuthService<OAuthConnectedPersistence[\"Service\"]>(\n {\n claimSignIn: mutation(mapping, execute, SignIn.claimSignIn, M.OAuthSignInAccessClaim),\n inspectSignIn: read(mapping, execute, SignIn.inspectSignIn),\n settleSignIn: mutation(\n mapping,\n execute,\n SignIn.settleSignIn,\n M.OAuthConnectedSettlementDecision,\n ),\n capture: read(mapping, execute, F.capture),\n issue: mutation(mapping, execute, F.issue, M.OAuthConnectedIssueDecision),\n preflight: read(mapping, execute, F.preflight),\n claim: mutation(mapping, execute, F.claim, M.OAuthConnectedClaimDecision),\n inspectGrant: read(mapping, execute, F.inspectGrant),\n settle: mutation(mapping, execute, settle, M.OAuthConnectedSettlementDecision),\n list: read(mapping, execute, Management.list),\n inspectDisconnect: read(mapping, execute, Management.inspectDisconnect),\n disconnect: mutation(\n mapping,\n execute,\n Management.disconnect,\n M.OAuthConnectedDisconnectDecision,\n ),\n inspectAccess: read(mapping, execute, A.inspectAccess),\n claimRefresh: mutation(mapping, execute, A.claimRefresh, M.OAuthConnectedRefreshDecision),\n settleRefresh: mutation(mapping, execute, A.settleRefresh, M.OAuthConnectedRefreshSettlement),\n admitUse: mutation(mapping, execute, A.admitUse, M.OAuthConnectedUseAdmission),\n cleanup: mutation(mapping, execute, Maintenance.cleanup, M.OAuthConnectedCleanupResult),\n },\n connectedInputs,\n execute.active,\n execute.poison,\n );\n\nconst settled = Schema.Struct({ settled: Schema.Boolean });\n\nexport const makeRevocations = (\n mapping: S.Revocations,\n execute: OAuthExecution,\n): OAuthConnectedRevocations[\"Service\"] =>\n capturedOAuthService<OAuthConnectedRevocations[\"Service\"]>(\n {\n claim: (input, callback) =>\n execute.run(\n Effect.flatMap(Maintenance.claimRevocation(mapping, input), (value) =>\n prepare(OAuthConnectedRevocationDecision, value, callback),\n ),\n ),\n settle: (input, callback) =>\n execute.run(\n Effect.flatMap(Maintenance.settleRevocation(mapping, input), (value) =>\n prepare(settled, value, callback),\n ),\n ),\n },\n connectedRevocationInputs,\n execute.active,\n execute.poison,\n );\n\nexport const makeTargetOAuthConnectedServices = (\n database: any,\n mapping: S.Mapping,\n configuration: OAuthTargetConfiguration,\n) => {\n const retained = captured(mapping);\n\n return Effect.map(LifecycleHooks, (hooks) => ({\n oauthConnectedPersistence: makeConnected(\n retained,\n makeOAuthExecution(database, hooks, configuration),\n ),\n }));\n};\n\nexport const makeTargetOAuthConnectedRevocationServices = (\n database: any,\n mapping: S.Revocations,\n configuration: OAuthTargetConfiguration,\n) => {\n const retained = captured(mapping);\n\n return Effect.map(LifecycleHooks, (hooks) => ({\n oauthConnectedRevocations: makeRevocations(\n retained,\n makeOAuthExecution(database, hooks, configuration),\n ),\n }));\n};\n\nexport const coordinateTargetOAuthConnected = <Transaction, A, E, R>(\n database: any,\n mapping: S.Mapping,\n configuration: OAuthTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly oauthConnectedPersistence: OAuthConnectedPersistence[\"Service\"] },\n append: (statement: Statement<any>) => void,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOAuthOwner(\n database,\n captured(mapping),\n configuration,\n () => Effect.void,\n (value: S.Mapping, execution) => ({\n oauthConnectedPersistence: makeConnected(value, execution),\n }),\n owner,\n );\n\nexport const coordinateTargetOAuthConnectedRevocations = <Transaction, A, E, R>(\n database: any,\n mapping: S.Revocations,\n configuration: OAuthTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly oauthConnectedRevocations: OAuthConnectedRevocations[\"Service\"] },\n append: (statement: Statement<any>) => void,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOAuthOwner(\n database,\n captured(mapping),\n configuration,\n () => Effect.void,\n (value: S.Revocations, execution) => ({\n oauthConnectedRevocations: makeRevocations(value, execution),\n }),\n owner,\n );\n\nexport const oauthConnectedPersistenceLayer = (\n services: ReturnType<typeof makeTargetOAuthConnectedServices>,\n) =>\n Layer.effect(\n OAuthConnectedPersistence,\n Effect.map(services, (value) => value.oauthConnectedPersistence),\n );\n\nexport const oauthConnectedRevocationsLayer = (\n services: ReturnType<typeof makeTargetOAuthConnectedRevocationServices>,\n) =>\n Layer.effect(\n OAuthConnectedRevocations,\n Effect.map(services, (value) => value.oauthConnectedRevocations),\n );\n"],"mappings":"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"}
1
+ {"version":3,"file":"oauth-connected-target.mjs","names":["S.nativeCopy","SignIn.claimSignIn","SignIn.inspectSignIn","SignIn.settleSignIn","F.capture","F.issue","F.preflight","F.claim","F.inspectGrant","Management.list","Management.inspectDisconnect","Management.disconnect","A.inspectAccess","A.claimRefresh","A.settleRefresh","A.admitUse","Maintenance.cleanup","Maintenance.claimRevocation","Maintenance.settleRevocation"],"sources":["../../src/drizzle/oauth-connected-target.ts"],"sourcesContent":["import * as M from \"@yielded/auth/OAuth\";\nimport {\n OAuthConnectedPersistence,\n OAuthConnectedRevocations,\n OAuthConnectedRevocationDecision,\n OAuthExternalIdentity,\n snapshotOAuthSync,\n type PrepareOAuthCommit,\n} from \"@yielded/auth/OAuth\";\n/* oxlint-disable no-explicit-any -- concrete adapters retain the native database, table and ID types. */\nimport { Effect, Layer, Schema } from \"effect\";\nimport type { Statement } from \"effect/sql/Statement\";\n\nimport type { PersistenceMappingError } from \"./model\";\nimport * as A from \"./oauth-connected-access\";\nimport * as F from \"./oauth-connected-flow\";\nimport { connectedInputs, connectedRevocationInputs } from \"./oauth-connected-input\";\nimport * as Maintenance from \"./oauth-connected-maintenance\";\nimport * as Management from \"./oauth-connected-management\";\nimport { settle } from \"./oauth-connected-settlement\";\nimport * as SignIn from \"./oauth-connected-sign-in\";\nimport * as S from \"./oauth-connected-state\";\nimport { capturedOAuthService } from \"./oauth-input\";\nimport { CurrentOAuthTransaction } from \"./oauth-owner\";\nimport { captureOAuthMapping } from \"./oauth-state\";\nimport {\n coordinateOAuthOwner,\n makeOAuthExecution,\n type OAuthExecution,\n type OAuthTargetConfiguration,\n} from \"./oauth-target\";\n\nconst captured = <T extends S.Authority>(mapping: T): T => {\n const retained = captureOAuthMapping(mapping),\n codec = retained.subjectId;\n\n const subjectId = {\n ...codec,\n toNative: (subject: Parameters<typeof codec.toNative>[0]) =>\n Effect.map(codec.toNative(subject), S.nativeCopy),\n toSubject: (native: unknown) => codec.toSubject(S.nativeCopy(native)),\n equals: (a: unknown, b: unknown) => codec.equals(S.nativeCopy(a), S.nativeCopy(b)),\n };\n\n const ownership = retained.ownership;\n\n if (ownership.mode === \"separate\" && \"encodeInsert\" in ownership.external) {\n const encode = ownership.external.encodeInsert as (input: {\n readonly identity: typeof OAuthExternalIdentity.Type;\n readonly identityKey: string;\n readonly subjectId: unknown;\n }) => import(\"./oauth-owner\").Row;\n\n return captureOAuthMapping({\n ...retained,\n subjectId,\n ownership: {\n ...ownership,\n external: {\n ...ownership.external,\n encodeInsert: (input: Parameters<typeof encode>[0]) =>\n encode({\n ...input,\n identity: snapshotOAuthSync(OAuthExternalIdentity, input.identity),\n subjectId: S.nativeCopy(input.subjectId),\n }),\n },\n },\n });\n }\n\n return captureOAuthMapping({ ...retained, subjectId });\n};\n\nconst prepare = <Value, Encoded, A>(\n schema: Schema.Codec<Value, Encoded, never, never>,\n value: Value,\n callback: PrepareOAuthCommit<Value, A>,\n) =>\n Effect.flatMap(CurrentOAuthTransaction, (owner) =>\n Effect.sync(() => {\n owner.guards.push(owner.journal.prepare(undefined));\n\n return callback(snapshotOAuthSync(schema, value), owner.journal);\n }),\n );\n\nconst mutation =\n <Input, Value, Encoded>(\n mapping: S.Mapping,\n execute: OAuthExecution,\n body: (\n mapping: S.Mapping,\n input: Input,\n ) => Effect.Effect<\n Value,\n import(\"@yielded/auth/OAuth\").OAuthUnavailable | PersistenceMappingError,\n CurrentOAuthTransaction\n >,\n schema: Schema.Codec<Value, Encoded, never, never>,\n ) =>\n <A>(input: Input, callback: PrepareOAuthCommit<Value, A>) =>\n execute.run(Effect.flatMap(body(mapping, input), (value) => prepare(schema, value, callback)));\n\nconst read =\n <Input, Value>(\n mapping: S.Mapping,\n execute: OAuthExecution,\n body: (\n mapping: S.Mapping,\n input: Input,\n ) => Effect.Effect<\n Value,\n import(\"@yielded/auth/OAuth\").OAuthUnavailable | PersistenceMappingError,\n CurrentOAuthTransaction\n >,\n ) =>\n (input: Input) =>\n execute.run(body(mapping, input), false);\n\nexport const makeConnected = (\n mapping: S.Mapping,\n execute: OAuthExecution,\n): OAuthConnectedPersistence[\"Service\"] =>\n capturedOAuthService<OAuthConnectedPersistence[\"Service\"]>(\n {\n claimSignIn: mutation(mapping, execute, SignIn.claimSignIn, M.OAuthSignInAccessClaim),\n inspectSignIn: read(mapping, execute, SignIn.inspectSignIn),\n settleSignIn: mutation(\n mapping,\n execute,\n SignIn.settleSignIn,\n M.OAuthConnectedSettlementDecision,\n ),\n capture: read(mapping, execute, F.capture),\n issue: mutation(mapping, execute, F.issue, M.OAuthConnectedIssueDecision),\n preflight: read(mapping, execute, F.preflight),\n claim: mutation(mapping, execute, F.claim, M.OAuthConnectedClaimDecision),\n inspectGrant: read(mapping, execute, F.inspectGrant),\n settle: mutation(mapping, execute, settle, M.OAuthConnectedSettlementDecision),\n list: read(mapping, execute, Management.list),\n inspectDisconnect: read(mapping, execute, Management.inspectDisconnect),\n disconnect: mutation(\n mapping,\n execute,\n Management.disconnect,\n M.OAuthConnectedDisconnectDecision,\n ),\n inspectAccess: read(mapping, execute, A.inspectAccess),\n claimRefresh: mutation(mapping, execute, A.claimRefresh, M.OAuthConnectedRefreshDecision),\n settleRefresh: mutation(mapping, execute, A.settleRefresh, M.OAuthConnectedRefreshSettlement),\n admitUse: mutation(mapping, execute, A.admitUse, M.OAuthConnectedUseAdmission),\n cleanup: mutation(mapping, execute, Maintenance.cleanup, M.OAuthConnectedCleanupResult),\n },\n connectedInputs,\n execute.active,\n execute.poison,\n );\n\nconst settled = Schema.Struct({ settled: Schema.Boolean });\n\nexport const makeRevocations = (\n mapping: S.Revocations,\n execute: OAuthExecution,\n): OAuthConnectedRevocations[\"Service\"] =>\n capturedOAuthService<OAuthConnectedRevocations[\"Service\"]>(\n {\n claim: (input, callback) =>\n execute.run(\n Effect.flatMap(Maintenance.claimRevocation(mapping, input), (value) =>\n prepare(OAuthConnectedRevocationDecision, value, callback),\n ),\n ),\n settle: (input, callback) =>\n execute.run(\n Effect.flatMap(Maintenance.settleRevocation(mapping, input), (value) =>\n prepare(settled, value, callback),\n ),\n ),\n },\n connectedRevocationInputs,\n execute.active,\n execute.poison,\n );\n\nexport const makeTargetOAuthConnectedServices = (\n mapping: S.Mapping,\n configuration: OAuthTargetConfiguration,\n) => {\n const retained = captured(mapping);\n\n return Effect.map(makeOAuthExecution(configuration), (execution) => ({\n oauthConnectedPersistence: makeConnected(retained, execution),\n }));\n};\n\nexport const makeTargetOAuthConnectedRevocationServices = (\n mapping: S.Revocations,\n configuration: OAuthTargetConfiguration,\n) => {\n const retained = captured(mapping);\n\n return Effect.map(makeOAuthExecution(configuration), (execution) => ({\n oauthConnectedRevocations: makeRevocations(retained, execution),\n }));\n};\n\nexport const coordinateTargetOAuthConnected = <Transaction, A, E, R>(\n database: any,\n mapping: S.Mapping,\n configuration: OAuthTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly oauthConnectedPersistence: OAuthConnectedPersistence[\"Service\"] },\n append: (statement: Statement<any>) => void,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOAuthOwner(\n database,\n captured(mapping),\n configuration,\n () => Effect.void,\n (value: S.Mapping, execution) => ({\n oauthConnectedPersistence: makeConnected(value, execution),\n }),\n owner,\n );\n\nexport const coordinateTargetOAuthConnectedRevocations = <Transaction, A, E, R>(\n database: any,\n mapping: S.Revocations,\n configuration: OAuthTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly oauthConnectedRevocations: OAuthConnectedRevocations[\"Service\"] },\n append: (statement: Statement<any>) => void,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOAuthOwner(\n database,\n captured(mapping),\n configuration,\n () => Effect.void,\n (value: S.Revocations, execution) => ({\n oauthConnectedRevocations: makeRevocations(value, execution),\n }),\n owner,\n );\n\nexport const oauthConnectedPersistenceLayer = <E, R>(\n services: Effect.Effect<\n Effect.Success<ReturnType<typeof makeTargetOAuthConnectedServices>>,\n E,\n R\n >,\n) =>\n Layer.effect(\n OAuthConnectedPersistence,\n Effect.map(services, (value) => value.oauthConnectedPersistence),\n );\n\nexport const oauthConnectedRevocationsLayer = <E, R>(\n services: Effect.Effect<\n Effect.Success<ReturnType<typeof makeTargetOAuthConnectedRevocationServices>>,\n E,\n R\n >,\n) =>\n Layer.effect(\n OAuthConnectedRevocations,\n Effect.map(services, (value) => value.oauthConnectedRevocations),\n );\n"],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import { coordinateTargetOAuthAccounts, coordinateTargetOAuthRegistration, coordinateTargetOAuthRegistrationIntents, coordinateTargetOAuthSignIn, makeTargetOAuthAccountsServices, makeTargetOAuthRegistrationIntentServices, makeTargetOAuthRegistrationServices, makeTargetOAuthSignInServices } from "./oauth-target.mjs";
2
+ import { nativeDatabase } from "./native-database.mjs";
2
3
  import { makeOAuthConnectedTarget } from "./oauth-connected-drivers.mjs";
4
+ import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
3
5
  import { Context, Effect } from "effect";
4
6
  import { OAuthAccountsPersistence, OAuthRegistrationIntents, OAuthSignInPersistence } from "@yielded/auth/OAuth";
5
7
  //#region src/drizzle/oauth-drivers.ts
6
8
  /** Driver-specific entry points instantiate both the database and table family. */
7
- const makeOAuthTarget = (configuration) => {
9
+ const makeOAuthTarget = (databaseService, configuration) => {
8
10
  function coordinateOAuthSignIn(acquire, options, body) {
9
11
  return Effect.flatMap(acquire, (database) => coordinateTargetOAuthSignIn(database, options.mapping, configuration, (transaction, services) => {
10
12
  const provided = Context.make(OAuthSignInPersistence, services.oauthSignInPersistence);
@@ -34,14 +36,14 @@ const makeOAuthTarget = (configuration) => {
34
36
  }));
35
37
  }
36
38
  return {
37
- ...makeOAuthConnectedTarget(configuration),
39
+ ...makeOAuthConnectedTarget(databaseService, configuration),
38
40
  coordinateOAuthSignIn,
39
41
  coordinateOAuthRegistrationIntents,
40
42
  coordinateOAuthAccounts,
41
- makeOAuthAccountsServices: (database, mapping) => makeTargetOAuthAccountsServices(database, mapping, configuration),
42
- makeOAuthSignInServices: (database, mapping) => makeTargetOAuthSignInServices(database, mapping, configuration),
43
- makeOAuthRegistrationIntentServices: (database, mapping) => makeTargetOAuthRegistrationIntentServices(database, mapping, configuration),
44
- makeOAuthRegistrationServices: (database, mapping) => makeTargetOAuthRegistrationServices(database, mapping, configuration),
43
+ makeOAuthAccountsServices: (mapping) => makeTargetOAuthAccountsServices(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
44
+ makeOAuthSignInServices: (mapping) => makeTargetOAuthSignInServices(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
45
+ makeOAuthRegistrationIntentServices: (mapping) => makeTargetOAuthRegistrationIntentServices(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
46
+ makeOAuthRegistrationServices: (mapping) => makeTargetOAuthRegistrationServices(mapping, configuration).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService))),
45
47
  coordinateOAuthRegistration
46
48
  };
47
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-drivers.mjs","names":[],"sources":["../../src/drizzle/oauth-drivers.ts"],"sourcesContent":["import type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n OAuthAccountsPersistence,\n OAuthRegistrationIntents,\n OAuthSignInPersistence,\n} from \"@yielded/auth/OAuth\";\nimport type { Table } from \"drizzle-orm\";\nimport { Effect, Context } from \"effect\";\n\nimport { makeOAuthConnectedTarget } from \"./oauth-connected-drivers\";\nimport type {\n OAuthAccountsMapping,\n OAuthRegistrationAuthority,\n OAuthRegistrationIntentMapping,\n OAuthRegistrationMapping,\n OAuthSignInMapping,\n} from \"./oauth-model\";\nimport {\n type OAuthCoordinatorError,\n coordinateTargetOAuthAccounts,\n coordinateTargetOAuthSignIn,\n coordinateTargetOAuthRegistrationIntents,\n coordinateTargetOAuthRegistration,\n makeTargetOAuthRegistrationIntentServices,\n makeTargetOAuthRegistrationServices,\n makeTargetOAuthSignInServices,\n makeTargetOAuthAccountsServices,\n type OAuthTargetConfiguration,\n} from \"./oauth-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\n// oxlint-disable-next-line no-explicit-any -- inspect the installed generic transaction signature without erasing its callback parameter.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\n/** Driver-specific entry points instantiate both the database and table family. */\nexport const makeOAuthTarget = <D, T extends Table, Synchronous extends boolean = false>(\n configuration: OAuthTargetConfiguration,\n) => {\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthSignInPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthSignInPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthSignInPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthSignInPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthSignInPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthSignIn<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthSignInPersistence>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthSignInPersistence: OAuthSignInPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(OAuthSignInPersistence, services.oauthSignInPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthRegistrationIntents> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthRegistrationIntents>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthRegistrationIntents | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthRegistrationIntents | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthRegistrationIntents> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthRegistrationIntents<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthRegistrationIntents>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthRegistrationIntents: OAuthRegistrationIntents[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthRegistrationIntents,\n services.oauthRegistrationIntents,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthAccountsPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthAccountsPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthAccountsPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthAccountsPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthAccountsPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthAccounts<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthAccountsPersistence>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthAccountsPersistence: OAuthAccountsPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthAccountsPersistence,\n services.oauthAccountsPersistence,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TargetId> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthRegistration<\n Registration,\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, TargetId>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly registrationAuthority: OAuthRegistrationAuthority<Registration> },\n ) => {\n const provided = Context.make(options.target, services.registrationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n\n return {\n ...makeOAuthConnectedTarget<D, T, {}, Synchronous>(configuration),\n coordinateOAuthSignIn,\n coordinateOAuthRegistrationIntents,\n coordinateOAuthAccounts,\n makeOAuthAccountsServices: <\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n >(\n database: D,\n mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>,\n ) => makeTargetOAuthAccountsServices(database, mapping, configuration),\n makeOAuthSignInServices: <S extends T, O extends T, C extends T, AC extends T, F extends T, N>(\n database: D,\n mapping: OAuthSignInMapping<S, O, C, AC, F, N>,\n ) => makeTargetOAuthSignInServices(database, mapping, configuration),\n makeOAuthRegistrationIntentServices: <\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n >(\n database: D,\n mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>,\n ) => makeTargetOAuthRegistrationIntentServices(database, mapping, configuration),\n makeOAuthRegistrationServices: <\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n R extends T,\n N,\n >(\n database: D,\n mapping: OAuthRegistrationMapping<Registration, S, O, C, AC, TA, I, R, N>,\n ) => makeTargetOAuthRegistrationServices<Registration>(database, mapping, configuration),\n coordinateOAuthRegistration,\n };\n};\n"],"mappings":";;;;;;AAqCA,MAAa,mBACX,kBACG;CA6DH,SAAS,sBAgBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,4BAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,wBAAwB,SAAS,sBAAsB;GACrF,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAiEA,SAAS,mCAkBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,yCAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KACvB,0BACA,SAAS,wBACX;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAiEA,SAAS,wBAkBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,8BAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KACvB,0BACA,SAAS,wBACX;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAmEA,SAAS,4BAoBP,SACA,SAKA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,kCAOE,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;GAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAEA,OAAO;EACL,GAAG,yBAAgD,aAAa;EAChE;EACA;EACA;EACA,4BAUE,UACA,YACG,gCAAgC,UAAU,SAAS,aAAa;EACrE,0BACE,UACA,YACG,8BAA8B,UAAU,SAAS,aAAa;EACnE,sCAUE,UACA,YACG,0CAA0C,UAAU,SAAS,aAAa;EAC/E,gCAWE,UACA,YACG,oCAAkD,UAAU,SAAS,aAAa;EACvF;CACF;AACF"}
1
+ {"version":3,"file":"oauth-drivers.mjs","names":[],"sources":["../../src/drizzle/oauth-drivers.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n OAuthAccountsPersistence,\n OAuthRegistrationIntents,\n OAuthSignInPersistence,\n} from \"@yielded/auth/OAuth\";\nimport type { Table } from \"drizzle-orm\";\nimport { Effect, Context } from \"effect\";\n\nimport { nativeDatabase } from \"./native-database\";\nimport { makeOAuthConnectedTarget } from \"./oauth-connected-drivers\";\nimport type {\n OAuthAccountsMapping,\n OAuthRegistrationAuthority,\n OAuthRegistrationIntentMapping,\n OAuthRegistrationMapping,\n OAuthSignInMapping,\n} from \"./oauth-model\";\nimport {\n type OAuthCoordinatorError,\n coordinateTargetOAuthAccounts,\n coordinateTargetOAuthSignIn,\n coordinateTargetOAuthRegistrationIntents,\n coordinateTargetOAuthRegistration,\n makeTargetOAuthRegistrationIntentServices,\n makeTargetOAuthRegistrationServices,\n makeTargetOAuthSignInServices,\n makeTargetOAuthAccountsServices,\n type OAuthTargetConfiguration,\n} from \"./oauth-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\n// oxlint-disable-next-line no-explicit-any -- inspect the installed generic transaction signature without erasing its callback parameter.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\n/** Driver-specific entry points instantiate both the database and table family. */\nexport const makeOAuthTarget = <\n DatabaseId,\n D,\n T extends Table,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration: OAuthTargetConfiguration,\n) => {\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthSignInPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthSignInPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthSignInPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthSignInPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthSignInPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthSignIn<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthSignInPersistence>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthSignInPersistence: OAuthSignInPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(OAuthSignInPersistence, services.oauthSignInPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthRegistrationIntents> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthRegistrationIntents>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthRegistrationIntents | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthRegistrationIntents | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthRegistrationIntents> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthRegistrationIntents<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthRegistrationIntents>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthRegistrationIntents: OAuthRegistrationIntents[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthRegistrationIntents,\n services.oauthRegistrationIntents,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthAccountsPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthAccountsPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthAccountsPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthAccountsPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthAccountsPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthAccounts<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthAccountsPersistence>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthAccountsPersistence: OAuthAccountsPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthAccountsPersistence,\n services.oauthAccountsPersistence,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TargetId> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetOAuthRegistration<\n Registration,\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, TargetId>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly registrationAuthority: OAuthRegistrationAuthority<Registration> },\n ) => {\n const provided = Context.make(options.target, services.registrationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n\n return {\n ...makeOAuthConnectedTarget<DatabaseId, D, T, {}, Synchronous>(databaseService, configuration),\n coordinateOAuthSignIn,\n coordinateOAuthRegistrationIntents,\n coordinateOAuthAccounts,\n makeOAuthAccountsServices: <\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n >(\n mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>,\n ) =>\n makeTargetOAuthAccountsServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthSignInServices: <S extends T, O extends T, C extends T, AC extends T, F extends T, N>(\n mapping: OAuthSignInMapping<S, O, C, AC, F, N>,\n ) =>\n makeTargetOAuthSignInServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthRegistrationIntentServices: <\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n >(\n mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>,\n ) =>\n makeTargetOAuthRegistrationIntentServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthRegistrationServices: <\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n R extends T,\n N,\n >(\n mapping: OAuthRegistrationMapping<Registration, S, O, C, AC, TA, I, R, N>,\n ) =>\n makeTargetOAuthRegistrationServices<Registration>(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinateOAuthRegistration,\n };\n};\n"],"mappings":";;;;;;;;AAuCA,MAAa,mBAMX,iBACA,kBACG;CA6DH,SAAS,sBAgBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,4BAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,wBAAwB,SAAS,sBAAsB;GACrF,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAiEA,SAAS,mCAkBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,yCAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KACvB,0BACA,SAAS,wBACX;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAiEA,SAAS,wBAkBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,8BAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KACvB,0BACA,SAAS,wBACX;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAmEA,SAAS,4BAoBP,SACA,SAKA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,kCAOE,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;GAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAEA,OAAO;EACL,GAAG,yBAA4D,iBAAiB,aAAa;EAC7F;EACA;EACA;EACA,4BAUE,YAEA,gCAAgC,SAAS,aAAa,CAAC,CAAC,KACtD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,0BACE,YAEA,8BAA8B,SAAS,aAAa,CAAC,CAAC,KACpD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,sCAUE,YAEA,0CAA0C,SAAS,aAAa,CAAC,CAAC,KAChE,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,gCAWE,YAEA,oCAAkD,SAAS,aAAa,CAAC,CAAC,KACxE,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;CACF;AACF"}
@@ -3,6 +3,7 @@ import { OAuthRegistrationAuthority } from "./oauth-model.mjs";
3
3
  import "./oauth-owner.mjs";
4
4
  import "./oauth-registration.mjs";
5
5
  import { TransactionCoordinatorError, TransactionTargetConfiguration } from "./transaction-execution.mjs";
6
+ import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
6
7
  import { Context, Effect, Layer } from "effect";
7
8
  import { LifecycleHooks } from "@yielded/auth/Hooks";
8
9
  import { OAuthAccountRevision, OAuthAccountsPersistence, OAuthClaim, OAuthClaimDecision, OAuthCleanupInput, OAuthCredentialSnapshot, OAuthIssueDecision, OAuthLinkClaimDecision, OAuthLinkDecision, OAuthLinkIssueDecision, OAuthLinkPendingFlow, OAuthPendingFlow, OAuthRegistrationIntent, OAuthRegistrationIntents, OAuthSettlementDecision, OAuthSignInPersistence, OAuthUnavailable, OAuthUnlinkDecision, OAuthUnlinkInspection, OAuthVerifiedExternalIdentity, PrepareOAuthCommit } from "@yielded/auth/OAuth";
@@ -10,7 +11,7 @@ import { Statement } from "effect/sql/Statement";
10
11
  //#region src/drizzle/oauth-target.d.ts
11
12
  export type OAuthTargetConfiguration = TransactionTargetConfiguration<OAuthUnavailable>;
12
13
  export type OAuthCoordinatorError<E> = TransactionCoordinatorError<E, OAuthUnavailable>;
13
- export declare const makeTargetOAuthSignInServices: (database: any, mapping: any, configuration: OAuthTargetConfiguration) => Effect.Effect<{
14
+ export declare const makeTargetOAuthSignInServices: (mapping: any, configuration: OAuthTargetConfiguration) => Effect.Effect<{
14
15
  oauthSignInPersistence: {
15
16
  readonly issue: <A>(input: OAuthPendingFlow, prepare: PrepareOAuthCommit<OAuthIssueDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, OAuthUnavailable>;
16
17
  readonly claim: <A>(input: {
@@ -42,8 +43,8 @@ export declare const makeTargetOAuthSignInServices: (database: any, mapping: any
42
43
  readonly hasMore: boolean;
43
44
  }, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, OAuthUnavailable>;
44
45
  };
45
- }, never, LifecycleHooks>;
46
- export declare const makeTargetOAuthRegistrationIntentServices: (database: any, mapping: any, configuration: OAuthTargetConfiguration) => Effect.Effect<{
46
+ }, never, LifecycleHooks | NativeDatabase>;
47
+ export declare const makeTargetOAuthRegistrationIntentServices: (mapping: any, configuration: OAuthTargetConfiguration) => Effect.Effect<{
47
48
  oauthRegistrationIntents: {
48
49
  readonly settle: <A>(input: {
49
50
  readonly claim: OAuthClaim;
@@ -52,8 +53,8 @@ export declare const makeTargetOAuthRegistrationIntentServices: (database: any,
52
53
  readonly nowMillis: number;
53
54
  }, prepare: PrepareOAuthCommit<import("@yielded/auth/OAuth").OAuthRegistrationSettlement, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, OAuthUnavailable>;
54
55
  };
55
- }, never, LifecycleHooks>;
56
- export declare const makeTargetOAuthAccountsServices: (database: any, mapping: any, configuration: OAuthTargetConfiguration) => Effect.Effect<{
56
+ }, never, LifecycleHooks | NativeDatabase>;
57
+ export declare const makeTargetOAuthAccountsServices: (mapping: any, configuration: OAuthTargetConfiguration) => Effect.Effect<{
57
58
  oauthAccountsPersistence: {
58
59
  readonly capture: (input: {
59
60
  readonly moduleId: string & import("effect/Brand").Brand<"effect-auth/OAuthModuleId">;
@@ -98,12 +99,12 @@ export declare const makeTargetOAuthAccountsServices: (database: any, mapping: a
98
99
  readonly hasMore: boolean;
99
100
  }, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, OAuthUnavailable>;
100
101
  };
101
- }, never, LifecycleHooks>;
102
- export declare const oauthAccountsPersistenceLayer: (services: ReturnType<typeof makeTargetOAuthAccountsServices>) => Layer.Layer<OAuthAccountsPersistence, never, LifecycleHooks>;
103
- export declare const oauthSignInPersistenceLayer: (services: ReturnType<typeof makeTargetOAuthSignInServices>) => Layer.Layer<OAuthSignInPersistence, never, LifecycleHooks>;
104
- export declare const oauthRegistrationIntentsLayer: (services: ReturnType<typeof makeTargetOAuthRegistrationIntentServices>) => Layer.Layer<OAuthRegistrationIntents, never, LifecycleHooks>;
105
- export declare const oauthRegistrationAuthorityLayer: <Id, Registration>(tag: Context.Key<Id, OAuthRegistrationAuthority<Registration>>, services: Effect.Effect<{
102
+ }, never, LifecycleHooks | NativeDatabase>;
103
+ export declare const oauthAccountsPersistenceLayer: <E, R>(services: Effect.Effect<Effect.Success<ReturnType<typeof makeTargetOAuthAccountsServices>>, E, R>) => Layer.Layer<OAuthAccountsPersistence, E, Exclude<R, import("effect/Scope").Scope>>;
104
+ export declare const oauthSignInPersistenceLayer: <E, R>(services: Effect.Effect<Effect.Success<ReturnType<typeof makeTargetOAuthSignInServices>>, E, R>) => Layer.Layer<OAuthSignInPersistence, E, Exclude<R, import("effect/Scope").Scope>>;
105
+ export declare const oauthRegistrationIntentsLayer: <E, R>(services: Effect.Effect<Effect.Success<ReturnType<typeof makeTargetOAuthRegistrationIntentServices>>, E, R>) => Layer.Layer<OAuthRegistrationIntents, E, Exclude<R, import("effect/Scope").Scope>>;
106
+ export declare const oauthRegistrationAuthorityLayer: <Id, Registration, E, R>(tag: Context.Key<Id, OAuthRegistrationAuthority<Registration>>, services: Effect.Effect<{
106
107
  readonly registrationAuthority: OAuthRegistrationAuthority<Registration>;
107
- }, never, LifecycleHooks>) => Layer.Layer<Id, never, LifecycleHooks>;
108
+ }, E, R>) => Layer.Layer<Id, E, Exclude<R, import("effect/Scope").Scope>>;
108
109
  //#endregion
109
110
  //# sourceMappingURL=oauth-target.d.mts.map