@yielded/auth-persistence 0.1.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/Drizzle.d.mts +28 -0
- package/dist/Drizzle.mjs +28 -0
- package/dist/DrizzleD1.d.mts +963 -0
- package/dist/DrizzleD1.mjs +29 -0
- package/dist/DrizzleD1.mjs.map +1 -0
- package/dist/DrizzleLibsql.d.mts +2284 -0
- package/dist/DrizzleLibsql.mjs +92 -0
- package/dist/DrizzleLibsql.mjs.map +1 -0
- package/dist/DrizzleMysql2.d.mts +1820 -0
- package/dist/DrizzleMysql2.mjs +55 -0
- package/dist/DrizzleMysql2.mjs.map +1 -0
- package/dist/DrizzlePglite.d.mts +1826 -0
- package/dist/DrizzlePglite.mjs +53 -0
- package/dist/DrizzlePglite.mjs.map +1 -0
- package/dist/DrizzlePostgres.d.mts +1826 -0
- package/dist/DrizzlePostgres.mjs +53 -0
- package/dist/DrizzlePostgres.mjs.map +1 -0
- package/dist/DrizzleSqliteBun.d.mts +2279 -0
- package/dist/DrizzleSqliteBun.mjs +70 -0
- package/dist/DrizzleSqliteBun.mjs.map +1 -0
- package/dist/DrizzleSqliteDo.d.mts +2329 -0
- package/dist/DrizzleSqliteDo.mjs +105 -0
- package/dist/DrizzleSqliteDo.mjs.map +1 -0
- package/dist/DrizzleSqliteNode.d.mts +2279 -0
- package/dist/DrizzleSqliteNode.mjs +70 -0
- package/dist/DrizzleSqliteNode.mjs.map +1 -0
- package/dist/DrizzleSqliteWasm.d.mts +2282 -0
- package/dist/DrizzleSqliteWasm.mjs +70 -0
- package/dist/DrizzleSqliteWasm.mjs.map +1 -0
- package/dist/drizzle/D1BatchStatements.d.mts +11 -0
- package/dist/drizzle/D1BatchStatements.mjs +8 -0
- package/dist/drizzle/D1BatchStatements.mjs.map +1 -0
- package/dist/drizzle/PasswordPreparedPostconditions.mjs +12 -0
- package/dist/drizzle/PasswordPreparedPostconditions.mjs.map +1 -0
- package/dist/drizzle/SuppliedService.d.mts +10 -0
- package/dist/drizzle/d1-emails.d.mts +62 -0
- package/dist/drizzle/d1-emails.mjs +580 -0
- package/dist/drizzle/d1-emails.mjs.map +1 -0
- package/dist/drizzle/d1-generated-statement.d.mts +2 -0
- package/dist/drizzle/d1-generated-statement.mjs +79 -0
- package/dist/drizzle/d1-generated-statement.mjs.map +1 -0
- package/dist/drizzle/d1-identity.d.mts +31 -0
- package/dist/drizzle/d1-identity.mjs +119 -0
- package/dist/drizzle/d1-identity.mjs.map +1 -0
- package/dist/drizzle/d1-oauth.d.mts +301 -0
- package/dist/drizzle/d1-oauth.mjs +76 -0
- package/dist/drizzle/d1-oauth.mjs.map +1 -0
- package/dist/drizzle/d1-passkey.d.mts +51 -0
- package/dist/drizzle/d1-passkey.mjs +95 -0
- package/dist/drizzle/d1-passkey.mjs.map +1 -0
- package/dist/drizzle/d1-password-prepared.d.mts +25 -0
- package/dist/drizzle/d1-password-prepared.mjs +461 -0
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -0
- package/dist/drizzle/d1-passwords.d.mts +87 -0
- package/dist/drizzle/d1-passwords.mjs +1004 -0
- package/dist/drizzle/d1-passwords.mjs.map +1 -0
- package/dist/drizzle/d1-phone.d.mts +26 -0
- package/dist/drizzle/d1-phone.mjs +30 -0
- package/dist/drizzle/d1-phone.mjs.map +1 -0
- package/dist/drizzle/d1-planning.d.mts +12 -0
- package/dist/drizzle/d1-planning.mjs +43 -0
- package/dist/drizzle/d1-planning.mjs.map +1 -0
- package/dist/drizzle/d1-proofs.d.mts +80 -0
- package/dist/drizzle/d1-proofs.mjs +830 -0
- package/dist/drizzle/d1-proofs.mjs.map +1 -0
- package/dist/drizzle/d1-sessions.d.mts +67 -0
- package/dist/drizzle/d1-sessions.mjs +966 -0
- package/dist/drizzle/d1-sessions.mjs.map +1 -0
- package/dist/drizzle/d1-totp.d.mts +26 -0
- package/dist/drizzle/d1-totp.mjs +27 -0
- package/dist/drizzle/d1-totp.mjs.map +1 -0
- package/dist/drizzle/email-model.d.mts +354 -0
- package/dist/drizzle/email-model.mjs +21 -0
- package/dist/drizzle/email-model.mjs.map +1 -0
- package/dist/drizzle/email-registration.d.mts +30 -0
- package/dist/drizzle/email-registration.mjs +238 -0
- package/dist/drizzle/email-registration.mjs.map +1 -0
- package/dist/drizzle/email-sql.d.mts +4 -0
- package/dist/drizzle/email-sql.mjs +9 -0
- package/dist/drizzle/email-sql.mjs.map +1 -0
- package/dist/drizzle/email-target.d.mts +20 -0
- package/dist/drizzle/email-target.mjs +72 -0
- package/dist/drizzle/email-target.mjs.map +1 -0
- package/dist/drizzle/model.d.mts +250 -0
- package/dist/drizzle/model.mjs +58 -0
- package/dist/drizzle/model.mjs.map +1 -0
- package/dist/drizzle/mysql-emails.d.mts +71 -0
- package/dist/drizzle/mysql-emails.mjs +38 -0
- package/dist/drizzle/mysql-emails.mjs.map +1 -0
- package/dist/drizzle/mysql-identity.d.mts +22 -0
- package/dist/drizzle/mysql-identity.mjs +94 -0
- package/dist/drizzle/mysql-identity.mjs.map +1 -0
- package/dist/drizzle/mysql-password-prepared.d.mts +30 -0
- package/dist/drizzle/mysql-password-prepared.mjs +16 -0
- package/dist/drizzle/mysql-password-prepared.mjs.map +1 -0
- package/dist/drizzle/mysql-passwords.d.mts +86 -0
- package/dist/drizzle/mysql-passwords.mjs +38 -0
- package/dist/drizzle/mysql-passwords.mjs.map +1 -0
- package/dist/drizzle/mysql-proofs.d.mts +75 -0
- package/dist/drizzle/mysql-proofs.mjs +23 -0
- package/dist/drizzle/mysql-proofs.mjs.map +1 -0
- package/dist/drizzle/mysql-sessions.d.mts +237 -0
- package/dist/drizzle/mysql-sessions.mjs +53 -0
- package/dist/drizzle/mysql-sessions.mjs.map +1 -0
- package/dist/drizzle/mysql.d.mts +70 -0
- package/dist/drizzle/mysql.mjs +218 -0
- package/dist/drizzle/mysql.mjs.map +1 -0
- package/dist/drizzle/oauth-accounts.mjs +358 -0
- package/dist/drizzle/oauth-accounts.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-access.mjs +210 -0
- package/dist/drizzle/oauth-connected-access.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-collection.mjs +202 -0
- package/dist/drizzle/oauth-connected-collection.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-custody.mjs +146 -0
- package/dist/drizzle/oauth-connected-custody.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-drivers.mjs +76 -0
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-flow.mjs +247 -0
- package/dist/drizzle/oauth-connected-flow.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-input.mjs +103 -0
- package/dist/drizzle/oauth-connected-input.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-maintenance.mjs +214 -0
- package/dist/drizzle/oauth-connected-maintenance.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-management.mjs +228 -0
- package/dist/drizzle/oauth-connected-management.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-model.d.mts +278 -0
- package/dist/drizzle/oauth-connected-model.mjs +22 -0
- package/dist/drizzle/oauth-connected-model.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-reference.d.mts +17 -0
- package/dist/drizzle/oauth-connected-reference.mjs +53 -0
- package/dist/drizzle/oauth-connected-reference.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-settlement.mjs +117 -0
- package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-state.d.mts +14 -0
- package/dist/drizzle/oauth-connected-state.mjs +422 -0
- package/dist/drizzle/oauth-connected-state.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-target.d.mts +753 -0
- package/dist/drizzle/oauth-connected-target.mjs +91 -0
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -0
- package/dist/drizzle/oauth-drivers.mjs +51 -0
- package/dist/drizzle/oauth-drivers.mjs.map +1 -0
- package/dist/drizzle/oauth-flow.d.mts +5 -0
- package/dist/drizzle/oauth-flow.mjs +253 -0
- package/dist/drizzle/oauth-flow.mjs.map +1 -0
- package/dist/drizzle/oauth-input.mjs +127 -0
- package/dist/drizzle/oauth-input.mjs.map +1 -0
- package/dist/drizzle/oauth-model.d.mts +463 -0
- package/dist/drizzle/oauth-model.mjs +49 -0
- package/dist/drizzle/oauth-model.mjs.map +1 -0
- package/dist/drizzle/oauth-mysql.mjs +8 -0
- package/dist/drizzle/oauth-mysql.mjs.map +1 -0
- package/dist/drizzle/oauth-owner.d.mts +4 -0
- package/dist/drizzle/oauth-owner.mjs +10 -0
- package/dist/drizzle/oauth-owner.mjs.map +1 -0
- package/dist/drizzle/oauth-registration.d.mts +6 -0
- package/dist/drizzle/oauth-registration.mjs +374 -0
- package/dist/drizzle/oauth-registration.mjs.map +1 -0
- package/dist/drizzle/oauth-state.mjs +107 -0
- package/dist/drizzle/oauth-state.mjs.map +1 -0
- package/dist/drizzle/oauth-target.d.mts +111 -0
- package/dist/drizzle/oauth-target.mjs +246 -0
- package/dist/drizzle/oauth-target.mjs.map +1 -0
- package/dist/drizzle/passkey-drivers.mjs +34 -0
- package/dist/drizzle/passkey-drivers.mjs.map +1 -0
- package/dist/drizzle/passkey-kernel.mjs +8 -0
- package/dist/drizzle/passkey-kernel.mjs.map +1 -0
- package/dist/drizzle/passkey-model.d.mts +272 -0
- package/dist/drizzle/passkey-model.mjs +34 -0
- package/dist/drizzle/passkey-model.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-ceremony-model.d.mts +50 -0
- package/dist/drizzle/passkey-registration-ceremony-model.mjs +18 -0
- package/dist/drizzle/passkey-registration-ceremony-model.mjs.map +1 -0
- package/dist/drizzle/passkey-state.mjs +7 -0
- package/dist/drizzle/passkey-state.mjs.map +1 -0
- package/dist/drizzle/passkey-target.d.mts +9 -0
- package/dist/drizzle/passkey-target.mjs +7 -0
- package/dist/drizzle/passkey-target.mjs.map +1 -0
- package/dist/drizzle/passkey-write-drivers.mjs +32 -0
- package/dist/drizzle/passkey-write-drivers.mjs.map +1 -0
- package/dist/drizzle/passkey-write-model.d.mts +190 -0
- package/dist/drizzle/passkey-write-model.mjs +13 -0
- package/dist/drizzle/passkey-write-model.mjs.map +1 -0
- package/dist/drizzle/passkey-write-target.d.mts +11 -0
- package/dist/drizzle/passkey-write-target.mjs +7 -0
- package/dist/drizzle/passkey-write-target.mjs.map +1 -0
- package/dist/drizzle/password-model.d.mts +329 -0
- package/dist/drizzle/password-model.mjs +23 -0
- package/dist/drizzle/password-model.mjs.map +1 -0
- package/dist/drizzle/password-prepared-model.d.mts +94 -0
- package/dist/drizzle/password-prepared-model.mjs +11 -0
- package/dist/drizzle/password-prepared-model.mjs.map +1 -0
- package/dist/drizzle/password-prepared-sql.mjs +390 -0
- package/dist/drizzle/password-prepared-sql.mjs.map +1 -0
- package/dist/drizzle/password-prepared-state.mjs +104 -0
- package/dist/drizzle/password-prepared-state.mjs.map +1 -0
- package/dist/drizzle/password-prepared-target.d.mts +12 -0
- package/dist/drizzle/password-prepared-target.mjs +56 -0
- package/dist/drizzle/password-prepared-target.mjs.map +1 -0
- package/dist/drizzle/password-registration.d.mts +19 -0
- package/dist/drizzle/password-registration.mjs +135 -0
- package/dist/drizzle/password-registration.mjs.map +1 -0
- package/dist/drizzle/password-sql.d.mts +5 -0
- package/dist/drizzle/password-sql.mjs +9 -0
- package/dist/drizzle/password-sql.mjs.map +1 -0
- package/dist/drizzle/password-target.d.mts +17 -0
- package/dist/drizzle/password-target.mjs +61 -0
- package/dist/drizzle/password-target.mjs.map +1 -0
- package/dist/drizzle/pg-emails.d.mts +72 -0
- package/dist/drizzle/pg-emails.mjs +38 -0
- package/dist/drizzle/pg-emails.mjs.map +1 -0
- package/dist/drizzle/pg-password-prepared.d.mts +31 -0
- package/dist/drizzle/pg-password-prepared.mjs +16 -0
- package/dist/drizzle/pg-password-prepared.mjs.map +1 -0
- package/dist/drizzle/pg-passwords.d.mts +87 -0
- package/dist/drizzle/pg-passwords.mjs +38 -0
- package/dist/drizzle/pg-passwords.mjs.map +1 -0
- package/dist/drizzle/pg-proofs.d.mts +76 -0
- package/dist/drizzle/pg-proofs.mjs +22 -0
- package/dist/drizzle/pg-proofs.mjs.map +1 -0
- package/dist/drizzle/pg-sessions.d.mts +238 -0
- package/dist/drizzle/pg-sessions.mjs +53 -0
- package/dist/drizzle/pg-sessions.mjs.map +1 -0
- package/dist/drizzle/pg.d.mts +81 -0
- package/dist/drizzle/pg.mjs +290 -0
- package/dist/drizzle/pg.mjs.map +1 -0
- package/dist/drizzle/phone-model.d.mts +115 -0
- package/dist/drizzle/phone-model.mjs +39 -0
- package/dist/drizzle/phone-model.mjs.map +1 -0
- package/dist/drizzle/phone-state.mjs +16 -0
- package/dist/drizzle/phone-state.mjs.map +1 -0
- package/dist/drizzle/phone-target.d.mts +17 -0
- package/dist/drizzle/phone-target.mjs +170 -0
- package/dist/drizzle/phone-target.mjs.map +1 -0
- package/dist/drizzle/proof-model.d.mts +286 -0
- package/dist/drizzle/proof-model.mjs +17 -0
- package/dist/drizzle/proof-model.mjs.map +1 -0
- package/dist/drizzle/proof-sql.d.mts +4 -0
- package/dist/drizzle/proof-sql.mjs +8 -0
- package/dist/drizzle/proof-sql.mjs.map +1 -0
- package/dist/drizzle/proof-target.d.mts +12 -0
- package/dist/drizzle/proof-target.mjs +36 -0
- package/dist/drizzle/proof-target.mjs.map +1 -0
- package/dist/drizzle/query-operations.mjs +26 -0
- package/dist/drizzle/query-operations.mjs.map +1 -0
- package/dist/drizzle/session-model.d.mts +200 -0
- package/dist/drizzle/session-model.mjs +20 -0
- package/dist/drizzle/session-model.mjs.map +1 -0
- package/dist/drizzle/session-sql.mjs +8 -0
- package/dist/drizzle/session-sql.mjs.map +1 -0
- package/dist/drizzle/session-target.d.mts +28 -0
- package/dist/drizzle/session-target.mjs +47 -0
- package/dist/drizzle/session-target.mjs.map +1 -0
- package/dist/drizzle/sqlite-emails.mjs +45 -0
- package/dist/drizzle/sqlite-emails.mjs.map +1 -0
- package/dist/drizzle/sqlite-identity.mjs +91 -0
- package/dist/drizzle/sqlite-identity.mjs.map +1 -0
- package/dist/drizzle/sqlite-password-prepared.mjs +21 -0
- package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -0
- package/dist/drizzle/sqlite-passwords.mjs +49 -0
- package/dist/drizzle/sqlite-passwords.mjs.map +1 -0
- package/dist/drizzle/sqlite-proofs.mjs +29 -0
- package/dist/drizzle/sqlite-proofs.mjs.map +1 -0
- package/dist/drizzle/sqlite-sessions.mjs +74 -0
- package/dist/drizzle/sqlite-sessions.mjs.map +1 -0
- package/dist/drizzle/sqlite.d.mts +78 -0
- package/dist/drizzle/sqlite.mjs +217 -0
- package/dist/drizzle/sqlite.mjs.map +1 -0
- package/dist/drizzle/standalone-guard.mjs +19 -0
- package/dist/drizzle/standalone-guard.mjs.map +1 -0
- package/dist/drizzle/step-up-model.d.mts +65 -0
- package/dist/drizzle/step-up-model.mjs +9 -0
- package/dist/drizzle/step-up-model.mjs.map +1 -0
- package/dist/drizzle/step-up-state.mjs +32 -0
- package/dist/drizzle/step-up-state.mjs.map +1 -0
- package/dist/drizzle/totp-model.d.mts +84 -0
- package/dist/drizzle/totp-model.mjs +13 -0
- package/dist/drizzle/totp-model.mjs.map +1 -0
- package/dist/drizzle/totp-state.d.mts +38 -0
- package/dist/drizzle/totp-state.mjs +287 -0
- package/dist/drizzle/totp-state.mjs.map +1 -0
- package/dist/drizzle/totp-target.d.mts +17 -0
- package/dist/drizzle/totp-target.mjs +81 -0
- package/dist/drizzle/totp-target.mjs.map +1 -0
- package/dist/drizzle/transaction-execution.d.mts +4 -0
- package/dist/drizzle/transaction-execution.mjs +11 -0
- package/dist/drizzle/transaction-execution.mjs.map +1 -0
- package/dist/drizzle/transaction-mysql.mjs +46 -0
- package/dist/drizzle/transaction-mysql.mjs.map +1 -0
- package/dist/drizzle/transaction-owner.d.mts +2 -0
- package/dist/drizzle/transaction-owner.mjs +8 -0
- package/dist/drizzle/transaction-owner.mjs.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +5 -0
- package/dist/internal/configuration.d.mts +174 -0
- package/dist/internal/configuration.mjs +7 -0
- package/dist/internal/configuration.mjs.map +1 -0
- package/dist/internal/drizzle-migrations.mjs +19 -0
- package/dist/internal/drizzle-migrations.mjs.map +1 -0
- package/dist/internal/drizzle-postgres.mjs +39 -0
- package/dist/internal/drizzle-postgres.mjs.map +1 -0
- package/dist/internal/drizzle-sqlite.mjs +37 -0
- package/dist/internal/drizzle-sqlite.mjs.map +1 -0
- package/dist/internal/email-kernel.d.mts +13 -0
- package/dist/internal/email-kernel.mjs +487 -0
- package/dist/internal/email-kernel.mjs.map +1 -0
- package/dist/internal/mapping-error.d.mts +11 -0
- package/dist/internal/mapping-error.mjs +30 -0
- package/dist/internal/mapping-error.mjs.map +1 -0
- package/dist/internal/passkey/admission.d.mts +7 -0
- package/dist/internal/passkey/admission.mjs +216 -0
- package/dist/internal/passkey/admission.mjs.map +1 -0
- package/dist/internal/passkey/credentials.d.mts +6 -0
- package/dist/internal/passkey/credentials.mjs +249 -0
- package/dist/internal/passkey/credentials.mjs.map +1 -0
- package/dist/internal/passkey/enrollment.mjs +138 -0
- package/dist/internal/passkey/enrollment.mjs.map +1 -0
- package/dist/internal/passkey/flow.d.mts +10 -0
- package/dist/internal/passkey/flow.mjs +452 -0
- package/dist/internal/passkey/flow.mjs.map +1 -0
- package/dist/internal/passkey/management.mjs +231 -0
- package/dist/internal/passkey/management.mjs.map +1 -0
- package/dist/internal/passkey/registration-ceremony.d.mts +9 -0
- package/dist/internal/passkey/registration-ceremony.mjs +129 -0
- package/dist/internal/passkey/registration-ceremony.mjs.map +1 -0
- package/dist/internal/passkey/registration-custody.d.mts +2 -0
- package/dist/internal/passkey/registration-custody.mjs +52 -0
- package/dist/internal/passkey/registration-custody.mjs.map +1 -0
- package/dist/internal/passkey/registration-write.mjs +211 -0
- package/dist/internal/passkey/registration-write.mjs.map +1 -0
- package/dist/internal/passkey/state.d.mts +5 -0
- package/dist/internal/passkey/state.mjs +234 -0
- package/dist/internal/passkey/state.mjs.map +1 -0
- package/dist/internal/passkey/target.d.mts +19 -0
- package/dist/internal/passkey/target.mjs +190 -0
- package/dist/internal/passkey/target.mjs.map +1 -0
- package/dist/internal/passkey/write-state.mjs +345 -0
- package/dist/internal/passkey/write-state.mjs.map +1 -0
- package/dist/internal/passkey/write-target.mjs +192 -0
- package/dist/internal/passkey/write-target.mjs.map +1 -0
- package/dist/internal/passkey-kernel.mjs +49 -0
- package/dist/internal/passkey-kernel.mjs.map +1 -0
- package/dist/internal/passkeys.mjs +367 -0
- package/dist/internal/passkeys.mjs.map +1 -0
- package/dist/internal/password-kernel.d.mts +13 -0
- package/dist/internal/password-kernel.mjs +704 -0
- package/dist/internal/password-kernel.mjs.map +1 -0
- package/dist/internal/persistence.mjs +289 -0
- package/dist/internal/persistence.mjs.map +1 -0
- package/dist/internal/phone-kernel.mjs +434 -0
- package/dist/internal/phone-kernel.mjs.map +1 -0
- package/dist/internal/proof-kernel.d.mts +9 -0
- package/dist/internal/proof-kernel.mjs +619 -0
- package/dist/internal/proof-kernel.mjs.map +1 -0
- package/dist/internal/query-operations.d.mts +3 -0
- package/dist/internal/registration.mjs +65 -0
- package/dist/internal/registration.mjs.map +1 -0
- package/dist/internal/session-kernel.mjs +737 -0
- package/dist/internal/session-kernel.mjs.map +1 -0
- package/dist/internal/sql-persistence.d.mts +11 -0
- package/dist/internal/sql-persistence.mjs +37 -0
- package/dist/internal/sql-persistence.mjs.map +1 -0
- package/dist/internal/sql-query.mjs +207 -0
- package/dist/internal/sql-query.mjs.map +1 -0
- package/dist/internal/sql-table.d.mts +37 -0
- package/dist/internal/sql-table.mjs +71 -0
- package/dist/internal/sql-table.mjs.map +1 -0
- package/dist/internal/storage-mapping.mjs +687 -0
- package/dist/internal/storage-mapping.mjs.map +1 -0
- package/dist/internal/storage-tables.d.mts +914 -0
- package/dist/internal/storage-tables.mjs +387 -0
- package/dist/internal/storage-tables.mjs.map +1 -0
- package/dist/internal/storage-validation.mjs +58 -0
- package/dist/internal/storage-validation.mjs.map +1 -0
- package/dist/internal/transaction-execution-kernel.d.mts +18 -0
- package/dist/internal/transaction-execution-kernel.mjs +118 -0
- package/dist/internal/transaction-execution-kernel.mjs.map +1 -0
- package/dist/internal/transaction-kernel.d.mts +7 -0
- package/dist/internal/transaction-kernel.mjs +260 -0
- package/dist/internal/transaction-kernel.mjs.map +1 -0
- package/package.json +1 -0
- package/src/Drizzle.ts +378 -0
- package/src/DrizzleD1.ts +136 -0
- package/src/DrizzleLibsql.ts +301 -0
- package/src/DrizzleMysql2.ts +184 -0
- package/src/DrizzlePglite.ts +174 -0
- package/src/DrizzlePostgres.ts +174 -0
- package/src/DrizzleSqliteBun.ts +258 -0
- package/src/DrizzleSqliteDo.ts +473 -0
- package/src/DrizzleSqliteNode.ts +259 -0
- package/src/DrizzleSqliteWasm.ts +263 -0
- package/src/drizzle/D1BatchStatements.ts +10 -0
- package/src/drizzle/PasswordPreparedPostconditions.ts +30 -0
- package/src/drizzle/SuppliedService.ts +10 -0
- package/src/drizzle/d1-emails.ts +1829 -0
- package/src/drizzle/d1-generated-statement.ts +129 -0
- package/src/drizzle/d1-identity.ts +375 -0
- package/src/drizzle/d1-oauth.ts +340 -0
- package/src/drizzle/d1-passkey.ts +373 -0
- package/src/drizzle/d1-password-prepared.ts +1270 -0
- package/src/drizzle/d1-passwords.ts +2656 -0
- package/src/drizzle/d1-phone.ts +96 -0
- package/src/drizzle/d1-planning.ts +104 -0
- package/src/drizzle/d1-proofs.ts +2305 -0
- package/src/drizzle/d1-sessions.ts +2857 -0
- package/src/drizzle/d1-totp.ts +78 -0
- package/src/drizzle/email-model.ts +516 -0
- package/src/drizzle/email-registration.ts +698 -0
- package/src/drizzle/email-sql.ts +24 -0
- package/src/drizzle/email-target.ts +243 -0
- package/src/drizzle/model.ts +463 -0
- package/src/drizzle/mysql-emails.ts +321 -0
- package/src/drizzle/mysql-identity.ts +324 -0
- package/src/drizzle/mysql-password-prepared.ts +204 -0
- package/src/drizzle/mysql-passwords.ts +339 -0
- package/src/drizzle/mysql-proofs.ts +181 -0
- package/src/drizzle/mysql-sessions.ts +741 -0
- package/src/drizzle/mysql.ts +687 -0
- package/src/drizzle/oauth-accounts.ts +804 -0
- package/src/drizzle/oauth-connected-access.ts +354 -0
- package/src/drizzle/oauth-connected-collection.ts +324 -0
- package/src/drizzle/oauth-connected-custody.ts +277 -0
- package/src/drizzle/oauth-connected-drivers.ts +465 -0
- package/src/drizzle/oauth-connected-flow.ts +441 -0
- package/src/drizzle/oauth-connected-input.ts +127 -0
- package/src/drizzle/oauth-connected-maintenance.ts +345 -0
- package/src/drizzle/oauth-connected-management.ts +365 -0
- package/src/drizzle/oauth-connected-model.ts +347 -0
- package/src/drizzle/oauth-connected-reference.ts +112 -0
- package/src/drizzle/oauth-connected-settlement.ts +226 -0
- package/src/drizzle/oauth-connected-state.ts +845 -0
- package/src/drizzle/oauth-connected-target.ts +264 -0
- package/src/drizzle/oauth-drivers.ts +569 -0
- package/src/drizzle/oauth-flow.ts +462 -0
- package/src/drizzle/oauth-input.ts +201 -0
- package/src/drizzle/oauth-model.ts +617 -0
- package/src/drizzle/oauth-mysql.ts +10 -0
- package/src/drizzle/oauth-owner.ts +29 -0
- package/src/drizzle/oauth-registration.ts +640 -0
- package/src/drizzle/oauth-state.ts +215 -0
- package/src/drizzle/oauth-target.ts +750 -0
- package/src/drizzle/passkey-drivers.ts +385 -0
- package/src/drizzle/passkey-kernel.ts +3 -0
- package/src/drizzle/passkey-model.ts +353 -0
- package/src/drizzle/passkey-registration-ceremony-model.ts +69 -0
- package/src/drizzle/passkey-state.ts +3 -0
- package/src/drizzle/passkey-target.ts +23 -0
- package/src/drizzle/passkey-write-drivers.ts +395 -0
- package/src/drizzle/passkey-write-model.ts +271 -0
- package/src/drizzle/passkey-write-target.ts +9 -0
- package/src/drizzle/password-model.ts +491 -0
- package/src/drizzle/password-prepared-model.ts +259 -0
- package/src/drizzle/password-prepared-sql.ts +1191 -0
- package/src/drizzle/password-prepared-state.ts +231 -0
- package/src/drizzle/password-prepared-target.ts +160 -0
- package/src/drizzle/password-registration.ts +374 -0
- package/src/drizzle/password-sql.ts +12 -0
- package/src/drizzle/password-target.ts +224 -0
- package/src/drizzle/pg-emails.ts +321 -0
- package/src/drizzle/pg-password-prepared.ts +205 -0
- package/src/drizzle/pg-passwords.ts +338 -0
- package/src/drizzle/pg-proofs.ts +191 -0
- package/src/drizzle/pg-sessions.ts +750 -0
- package/src/drizzle/pg.ts +984 -0
- package/src/drizzle/phone-model.ts +190 -0
- package/src/drizzle/phone-state.ts +21 -0
- package/src/drizzle/phone-target.ts +472 -0
- package/src/drizzle/proof-model.ts +398 -0
- package/src/drizzle/proof-sql.ts +9 -0
- package/src/drizzle/proof-target.ts +122 -0
- package/src/drizzle/query-operations.ts +37 -0
- package/src/drizzle/session-model.ts +370 -0
- package/src/drizzle/session-sql.ts +13 -0
- package/src/drizzle/session-target.ts +338 -0
- package/src/drizzle/sqlite-emails.ts +366 -0
- package/src/drizzle/sqlite-identity.ts +344 -0
- package/src/drizzle/sqlite-password-prepared.ts +260 -0
- package/src/drizzle/sqlite-passwords.ts +497 -0
- package/src/drizzle/sqlite-proofs.ts +202 -0
- package/src/drizzle/sqlite-sessions.ts +971 -0
- package/src/drizzle/sqlite.ts +705 -0
- package/src/drizzle/standalone-guard.ts +38 -0
- package/src/drizzle/step-up-model.ts +128 -0
- package/src/drizzle/step-up-state.ts +139 -0
- package/src/drizzle/totp-model.ts +92 -0
- package/src/drizzle/totp-state.ts +525 -0
- package/src/drizzle/totp-target.ts +308 -0
- package/src/drizzle/transaction-execution.ts +12 -0
- package/src/drizzle/transaction-mysql.ts +104 -0
- package/src/drizzle/transaction-owner.ts +10 -0
- package/src/index.ts +4 -0
- package/src/internal/configuration.ts +282 -0
- package/src/internal/drizzle-migrations.ts +30 -0
- package/src/internal/drizzle-postgres.ts +81 -0
- package/src/internal/drizzle-sqlite.ts +79 -0
- package/src/internal/email-kernel.ts +1532 -0
- package/src/internal/mapping-error.ts +36 -0
- package/src/internal/passkey/admission.ts +362 -0
- package/src/internal/passkey/credentials.ts +511 -0
- package/src/internal/passkey/enrollment.ts +326 -0
- package/src/internal/passkey/flow.ts +1062 -0
- package/src/internal/passkey/management.ts +422 -0
- package/src/internal/passkey/registration-ceremony.ts +283 -0
- package/src/internal/passkey/registration-custody.ts +91 -0
- package/src/internal/passkey/registration-write.ts +426 -0
- package/src/internal/passkey/state.ts +354 -0
- package/src/internal/passkey/target.ts +586 -0
- package/src/internal/passkey/write-state.ts +681 -0
- package/src/internal/passkey/write-target.ts +452 -0
- package/src/internal/passkey-kernel.ts +102 -0
- package/src/internal/passkeys.ts +597 -0
- package/src/internal/password-kernel.ts +2122 -0
- package/src/internal/persistence.ts +590 -0
- package/src/internal/phone-kernel.ts +843 -0
- package/src/internal/proof-kernel.ts +1949 -0
- package/src/internal/query-operations.ts +26 -0
- package/src/internal/registration.ts +160 -0
- package/src/internal/session-kernel.ts +2210 -0
- package/src/internal/sql-persistence.ts +45 -0
- package/src/internal/sql-query.ts +298 -0
- package/src/internal/sql-table.ts +89 -0
- package/src/internal/storage-mapping.ts +706 -0
- package/src/internal/storage-tables.ts +408 -0
- package/src/internal/storage-validation.ts +117 -0
- package/src/internal/transaction-execution-kernel.ts +317 -0
- package/src/internal/transaction-kernel.ts +582 -0
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
|
|
2
|
+
import { type PasswordUnavailable, PasswordPersistence } from "@yielded/auth/Password";
|
|
3
|
+
/* oxlint-disable no-explicit-any -- proof mapping tables are independently typed by the proof owner; this driver forwards them unchanged to the shared target. */
|
|
4
|
+
import type { AnyRelations } from "drizzle-orm";
|
|
5
|
+
import type { EffectLibsqlDatabase } from "drizzle-orm/effect-libsql";
|
|
6
|
+
import type { EffectSQLiteBunDatabase } from "drizzle-orm/effect-sqlite-bun";
|
|
7
|
+
import type { EffectSQLiteDoDatabase as DODatabase } from "drizzle-orm/effect-sqlite-do";
|
|
8
|
+
import type { EffectSQLiteNodeDatabase as NodeDatabase } from "drizzle-orm/effect-sqlite-node";
|
|
9
|
+
import type { EffectSQLiteWasmDatabase as WasmDatabase } from "drizzle-orm/effect-sqlite-wasm";
|
|
10
|
+
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
11
|
+
import { Effect, Context } from "effect";
|
|
12
|
+
import type { SqlError } from "effect/unstable/sql/SqlError";
|
|
13
|
+
|
|
14
|
+
import type { PasswordPersistenceMapping, PasswordRegistrationMapping } from "./password-model";
|
|
15
|
+
import type { PasswordRegistrationAuthority } from "./password-registration";
|
|
16
|
+
import type { PasswordSqlQuery } from "./password-sql";
|
|
17
|
+
import {
|
|
18
|
+
coordinateTargetPasswordPersistence,
|
|
19
|
+
coordinateTargetPasswordRegistration,
|
|
20
|
+
makeTargetPasswordPersistenceServices,
|
|
21
|
+
makeTargetPasswordRegistrationServices,
|
|
22
|
+
type PasswordTargetConfiguration,
|
|
23
|
+
} from "./password-target";
|
|
24
|
+
import type { ProofPersistenceMapping } from "./proof-model";
|
|
25
|
+
import type { ProofSqlQuery } from "./proof-sql";
|
|
26
|
+
import type { SuppliedService } from "./SuppliedService";
|
|
27
|
+
|
|
28
|
+
export type SqlitePasswordDatabase =
|
|
29
|
+
| NodeDatabase<AnyRelations>
|
|
30
|
+
| EffectSQLiteBunDatabase<AnyRelations>
|
|
31
|
+
| EffectLibsqlDatabase<AnyRelations>
|
|
32
|
+
| WasmDatabase<AnyRelations>
|
|
33
|
+
| DODatabase<AnyRelations>;
|
|
34
|
+
|
|
35
|
+
type TransactionOf<D extends SqlitePasswordDatabase> = Parameters<
|
|
36
|
+
Parameters<D["transaction"]>[0]
|
|
37
|
+
>[0];
|
|
38
|
+
|
|
39
|
+
export const sqlitePasswordConfiguration = (
|
|
40
|
+
mode: "interactive" | "synchronous",
|
|
41
|
+
standaloneGuard: PasswordTargetConfiguration["standaloneGuard"],
|
|
42
|
+
proofStandaloneGuard: PasswordTargetConfiguration["proof"]["standaloneGuard"],
|
|
43
|
+
coordinatorGuard?: PasswordTargetConfiguration["coordinatorGuard"],
|
|
44
|
+
): PasswordTargetConfiguration => ({
|
|
45
|
+
mode,
|
|
46
|
+
locking: false,
|
|
47
|
+
standaloneGuard,
|
|
48
|
+
...(coordinatorGuard === undefined ? {} : { coordinatorGuard }),
|
|
49
|
+
insertIfAbsent: (query: PasswordSqlQuery) => query.onConflictDoNothing(),
|
|
50
|
+
generatedSubjectRows: (query: PasswordSqlQuery) => query.returning(),
|
|
51
|
+
proof: {
|
|
52
|
+
mode,
|
|
53
|
+
locking: false,
|
|
54
|
+
standaloneGuard: proofStandaloneGuard,
|
|
55
|
+
insertIfAbsent: (query: ProofSqlQuery) => query.onConflictDoNothing(),
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
type Mapping<
|
|
60
|
+
S extends AnySQLiteTable,
|
|
61
|
+
I extends AnySQLiteTable,
|
|
62
|
+
C extends AnySQLiteTable,
|
|
63
|
+
AC extends AnySQLiteTable,
|
|
64
|
+
A extends AnySQLiteTable,
|
|
65
|
+
RS extends AnySQLiteTable,
|
|
66
|
+
CE extends AnySQLiteTable,
|
|
67
|
+
M extends AnySQLiteTable,
|
|
68
|
+
NativeId,
|
|
69
|
+
> = PasswordPersistenceMapping<S, I, C, AC, A, RS, CE, M, NativeId>;
|
|
70
|
+
|
|
71
|
+
export const makeSqlitePasswordPersistenceServices = <
|
|
72
|
+
S extends AnySQLiteTable,
|
|
73
|
+
I extends AnySQLiteTable,
|
|
74
|
+
C extends AnySQLiteTable,
|
|
75
|
+
AC extends AnySQLiteTable,
|
|
76
|
+
A extends AnySQLiteTable,
|
|
77
|
+
RS extends AnySQLiteTable,
|
|
78
|
+
CE extends AnySQLiteTable,
|
|
79
|
+
M extends AnySQLiteTable,
|
|
80
|
+
NativeId,
|
|
81
|
+
>(
|
|
82
|
+
database: SqlitePasswordDatabase,
|
|
83
|
+
mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>,
|
|
84
|
+
configuration: PasswordTargetConfiguration,
|
|
85
|
+
proofMapping?: ProofPersistenceMapping<
|
|
86
|
+
any,
|
|
87
|
+
any,
|
|
88
|
+
any,
|
|
89
|
+
any,
|
|
90
|
+
any,
|
|
91
|
+
any,
|
|
92
|
+
any,
|
|
93
|
+
any,
|
|
94
|
+
any,
|
|
95
|
+
any,
|
|
96
|
+
any,
|
|
97
|
+
any
|
|
98
|
+
>,
|
|
99
|
+
) => makeTargetPasswordPersistenceServices(database, mapping, configuration, proofMapping);
|
|
100
|
+
|
|
101
|
+
export const coordinateSqlitePasswordPersistence = <
|
|
102
|
+
D extends SqlitePasswordDatabase,
|
|
103
|
+
S extends AnySQLiteTable,
|
|
104
|
+
I extends AnySQLiteTable,
|
|
105
|
+
C extends AnySQLiteTable,
|
|
106
|
+
AC extends AnySQLiteTable,
|
|
107
|
+
A extends AnySQLiteTable,
|
|
108
|
+
RS extends AnySQLiteTable,
|
|
109
|
+
CE extends AnySQLiteTable,
|
|
110
|
+
M extends AnySQLiteTable,
|
|
111
|
+
NativeId,
|
|
112
|
+
PM extends
|
|
113
|
+
| ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>
|
|
114
|
+
| undefined,
|
|
115
|
+
Out,
|
|
116
|
+
E,
|
|
117
|
+
R,
|
|
118
|
+
>(
|
|
119
|
+
database: D,
|
|
120
|
+
mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>,
|
|
121
|
+
configuration: PasswordTargetConfiguration,
|
|
122
|
+
proofMapping: PM,
|
|
123
|
+
owner: (
|
|
124
|
+
transaction: TransactionOf<D>,
|
|
125
|
+
services: { readonly passwordPersistence: PasswordPersistence["Service"] },
|
|
126
|
+
) => Effect.Effect<Out, E, R>,
|
|
127
|
+
) =>
|
|
128
|
+
coordinateTargetPasswordPersistence<TransactionOf<D>, Out, E, R>(
|
|
129
|
+
database,
|
|
130
|
+
mapping,
|
|
131
|
+
configuration,
|
|
132
|
+
proofMapping,
|
|
133
|
+
owner,
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
export const makeSqlitePasswordRegistrationServices = <
|
|
137
|
+
Registration,
|
|
138
|
+
S extends AnySQLiteTable,
|
|
139
|
+
I extends AnySQLiteTable,
|
|
140
|
+
C extends AnySQLiteTable,
|
|
141
|
+
AC extends AnySQLiteTable,
|
|
142
|
+
Rq extends AnySQLiteTable,
|
|
143
|
+
NativeId,
|
|
144
|
+
>(
|
|
145
|
+
database: SqlitePasswordDatabase,
|
|
146
|
+
mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
|
|
147
|
+
configuration: PasswordTargetConfiguration,
|
|
148
|
+
) => makeTargetPasswordRegistrationServices<Registration>(database, mapping, configuration);
|
|
149
|
+
|
|
150
|
+
export const coordinateSqlitePasswordRegistration = <
|
|
151
|
+
Registration,
|
|
152
|
+
D extends SqlitePasswordDatabase,
|
|
153
|
+
S extends AnySQLiteTable,
|
|
154
|
+
I extends AnySQLiteTable,
|
|
155
|
+
C extends AnySQLiteTable,
|
|
156
|
+
AC extends AnySQLiteTable,
|
|
157
|
+
Rq extends AnySQLiteTable,
|
|
158
|
+
NativeId,
|
|
159
|
+
Out,
|
|
160
|
+
E,
|
|
161
|
+
R,
|
|
162
|
+
>(
|
|
163
|
+
database: D,
|
|
164
|
+
mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
|
|
165
|
+
configuration: PasswordTargetConfiguration,
|
|
166
|
+
owner: (
|
|
167
|
+
transaction: TransactionOf<D>,
|
|
168
|
+
services: { readonly registrationAuthority: PasswordRegistrationAuthority<Registration> },
|
|
169
|
+
) => Effect.Effect<Out, E, R>,
|
|
170
|
+
) =>
|
|
171
|
+
coordinateTargetPasswordRegistration<Registration, TransactionOf<D>, Out, E, R>(
|
|
172
|
+
database,
|
|
173
|
+
mapping,
|
|
174
|
+
configuration,
|
|
175
|
+
owner,
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
export const makeSqlitePasswordTarget = <
|
|
179
|
+
D extends SqlitePasswordDatabase,
|
|
180
|
+
Synchronous extends boolean = false,
|
|
181
|
+
>(
|
|
182
|
+
configuration: PasswordTargetConfiguration | ((database: D) => PasswordTargetConfiguration),
|
|
183
|
+
) => {
|
|
184
|
+
const configurationFor = (database: D) =>
|
|
185
|
+
typeof configuration === "function" ? configuration(database) : configuration;
|
|
186
|
+
|
|
187
|
+
function coordinatePasswordPersistence<
|
|
188
|
+
Database extends D,
|
|
189
|
+
S extends AnySQLiteTable,
|
|
190
|
+
I extends AnySQLiteTable,
|
|
191
|
+
C extends AnySQLiteTable,
|
|
192
|
+
AC extends AnySQLiteTable,
|
|
193
|
+
A extends AnySQLiteTable,
|
|
194
|
+
RS extends AnySQLiteTable,
|
|
195
|
+
CE extends AnySQLiteTable,
|
|
196
|
+
M extends AnySQLiteTable,
|
|
197
|
+
NativeId,
|
|
198
|
+
PM extends
|
|
199
|
+
| ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>
|
|
200
|
+
| undefined,
|
|
201
|
+
Out,
|
|
202
|
+
E,
|
|
203
|
+
R,
|
|
204
|
+
DatabaseError,
|
|
205
|
+
DatabaseRequirements,
|
|
206
|
+
>(
|
|
207
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
208
|
+
options: {
|
|
209
|
+
readonly mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>;
|
|
210
|
+
readonly proofMapping?: PM;
|
|
211
|
+
readonly transaction?: never;
|
|
212
|
+
},
|
|
213
|
+
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<PasswordPersistence> : R>,
|
|
214
|
+
): Effect.Effect<
|
|
215
|
+
Out,
|
|
216
|
+
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
217
|
+
| (Synchronous extends true ? never : Exclude<R, PasswordPersistence>)
|
|
218
|
+
| LifecycleHooks
|
|
219
|
+
| DatabaseRequirements
|
|
220
|
+
>;
|
|
221
|
+
function coordinatePasswordPersistence<
|
|
222
|
+
Database extends D,
|
|
223
|
+
S extends AnySQLiteTable,
|
|
224
|
+
I extends AnySQLiteTable,
|
|
225
|
+
C extends AnySQLiteTable,
|
|
226
|
+
AC extends AnySQLiteTable,
|
|
227
|
+
A extends AnySQLiteTable,
|
|
228
|
+
RS extends AnySQLiteTable,
|
|
229
|
+
CE extends AnySQLiteTable,
|
|
230
|
+
M extends AnySQLiteTable,
|
|
231
|
+
NativeId,
|
|
232
|
+
PM extends
|
|
233
|
+
| ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>
|
|
234
|
+
| undefined,
|
|
235
|
+
Out,
|
|
236
|
+
E,
|
|
237
|
+
R,
|
|
238
|
+
DatabaseError,
|
|
239
|
+
DatabaseRequirements,
|
|
240
|
+
TxId,
|
|
241
|
+
TxShape,
|
|
242
|
+
>(
|
|
243
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
244
|
+
options: {
|
|
245
|
+
readonly mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>;
|
|
246
|
+
readonly proofMapping?: PM;
|
|
247
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
248
|
+
},
|
|
249
|
+
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<PasswordPersistence | TxId> : R>,
|
|
250
|
+
): Effect.Effect<
|
|
251
|
+
Out,
|
|
252
|
+
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
253
|
+
| (Synchronous extends true ? never : Exclude<R, PasswordPersistence | TxId>)
|
|
254
|
+
| LifecycleHooks
|
|
255
|
+
| DatabaseRequirements
|
|
256
|
+
>;
|
|
257
|
+
function coordinatePasswordPersistence<
|
|
258
|
+
Database extends D,
|
|
259
|
+
S extends AnySQLiteTable,
|
|
260
|
+
I extends AnySQLiteTable,
|
|
261
|
+
C extends AnySQLiteTable,
|
|
262
|
+
AC extends AnySQLiteTable,
|
|
263
|
+
A extends AnySQLiteTable,
|
|
264
|
+
RS extends AnySQLiteTable,
|
|
265
|
+
CE extends AnySQLiteTable,
|
|
266
|
+
M extends AnySQLiteTable,
|
|
267
|
+
NativeId,
|
|
268
|
+
PM extends
|
|
269
|
+
| ProofPersistenceMapping<any, any, any, any, any, any, any, any, any, any, any, any>
|
|
270
|
+
| undefined,
|
|
271
|
+
Out,
|
|
272
|
+
E,
|
|
273
|
+
R,
|
|
274
|
+
DatabaseError,
|
|
275
|
+
DatabaseRequirements,
|
|
276
|
+
TxId,
|
|
277
|
+
TxShape,
|
|
278
|
+
>(
|
|
279
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
280
|
+
options: {
|
|
281
|
+
readonly mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>;
|
|
282
|
+
readonly proofMapping?: PM;
|
|
283
|
+
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
284
|
+
},
|
|
285
|
+
body: Effect.Effect<Out, E, R>,
|
|
286
|
+
): Effect.Effect<
|
|
287
|
+
Out,
|
|
288
|
+
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
289
|
+
Exclude<R, PasswordPersistence> | LifecycleHooks | DatabaseRequirements
|
|
290
|
+
> {
|
|
291
|
+
return Effect.flatMap(acquire, (database) =>
|
|
292
|
+
coordinateSqlitePasswordPersistence(
|
|
293
|
+
database,
|
|
294
|
+
options.mapping,
|
|
295
|
+
configurationFor(database),
|
|
296
|
+
options.proofMapping,
|
|
297
|
+
(
|
|
298
|
+
transaction: TransactionOf<Database>,
|
|
299
|
+
services: { readonly passwordPersistence: PasswordPersistence["Service"] },
|
|
300
|
+
) => {
|
|
301
|
+
const provided = Context.make(PasswordPersistence, services.passwordPersistence);
|
|
302
|
+
const work = Effect.provideContext(body, provided);
|
|
303
|
+
|
|
304
|
+
return options.transaction === undefined
|
|
305
|
+
? work
|
|
306
|
+
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
307
|
+
},
|
|
308
|
+
),
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
function coordinatePasswordRegistration<
|
|
312
|
+
Database extends D,
|
|
313
|
+
TargetId,
|
|
314
|
+
Registration,
|
|
315
|
+
S extends AnySQLiteTable,
|
|
316
|
+
I extends AnySQLiteTable,
|
|
317
|
+
C extends AnySQLiteTable,
|
|
318
|
+
AC extends AnySQLiteTable,
|
|
319
|
+
Rq extends AnySQLiteTable,
|
|
320
|
+
NativeId,
|
|
321
|
+
Out,
|
|
322
|
+
E,
|
|
323
|
+
R,
|
|
324
|
+
DatabaseError,
|
|
325
|
+
DatabaseRequirements,
|
|
326
|
+
>(
|
|
327
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
328
|
+
options: {
|
|
329
|
+
readonly mapping: PasswordRegistrationMapping<
|
|
330
|
+
NoInfer<Registration>,
|
|
331
|
+
S,
|
|
332
|
+
I,
|
|
333
|
+
C,
|
|
334
|
+
AC,
|
|
335
|
+
Rq,
|
|
336
|
+
NativeId
|
|
337
|
+
>;
|
|
338
|
+
readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;
|
|
339
|
+
readonly transaction?: never;
|
|
340
|
+
},
|
|
341
|
+
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId> : R>,
|
|
342
|
+
): Effect.Effect<
|
|
343
|
+
Out,
|
|
344
|
+
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
345
|
+
| (Synchronous extends true ? never : Exclude<R, TargetId>)
|
|
346
|
+
| LifecycleHooks
|
|
347
|
+
| DatabaseRequirements
|
|
348
|
+
>;
|
|
349
|
+
function coordinatePasswordRegistration<
|
|
350
|
+
Database extends D,
|
|
351
|
+
TargetId,
|
|
352
|
+
Registration,
|
|
353
|
+
S extends AnySQLiteTable,
|
|
354
|
+
I extends AnySQLiteTable,
|
|
355
|
+
C extends AnySQLiteTable,
|
|
356
|
+
AC extends AnySQLiteTable,
|
|
357
|
+
Rq extends AnySQLiteTable,
|
|
358
|
+
NativeId,
|
|
359
|
+
Out,
|
|
360
|
+
E,
|
|
361
|
+
R,
|
|
362
|
+
DatabaseError,
|
|
363
|
+
DatabaseRequirements,
|
|
364
|
+
TxId,
|
|
365
|
+
TxShape,
|
|
366
|
+
>(
|
|
367
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
368
|
+
options: {
|
|
369
|
+
readonly mapping: PasswordRegistrationMapping<
|
|
370
|
+
NoInfer<Registration>,
|
|
371
|
+
S,
|
|
372
|
+
I,
|
|
373
|
+
C,
|
|
374
|
+
AC,
|
|
375
|
+
Rq,
|
|
376
|
+
NativeId
|
|
377
|
+
>;
|
|
378
|
+
readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;
|
|
379
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
380
|
+
},
|
|
381
|
+
body: Effect.Effect<Out, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,
|
|
382
|
+
): Effect.Effect<
|
|
383
|
+
Out,
|
|
384
|
+
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
385
|
+
| (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)
|
|
386
|
+
| LifecycleHooks
|
|
387
|
+
| DatabaseRequirements
|
|
388
|
+
>;
|
|
389
|
+
function coordinatePasswordRegistration<
|
|
390
|
+
Database extends D,
|
|
391
|
+
TargetId,
|
|
392
|
+
Registration,
|
|
393
|
+
S extends AnySQLiteTable,
|
|
394
|
+
I extends AnySQLiteTable,
|
|
395
|
+
C extends AnySQLiteTable,
|
|
396
|
+
AC extends AnySQLiteTable,
|
|
397
|
+
Rq extends AnySQLiteTable,
|
|
398
|
+
NativeId,
|
|
399
|
+
Out,
|
|
400
|
+
E,
|
|
401
|
+
R,
|
|
402
|
+
DatabaseError,
|
|
403
|
+
DatabaseRequirements,
|
|
404
|
+
TxId,
|
|
405
|
+
TxShape,
|
|
406
|
+
>(
|
|
407
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
408
|
+
options: {
|
|
409
|
+
readonly mapping: PasswordRegistrationMapping<
|
|
410
|
+
NoInfer<Registration>,
|
|
411
|
+
S,
|
|
412
|
+
I,
|
|
413
|
+
C,
|
|
414
|
+
AC,
|
|
415
|
+
Rq,
|
|
416
|
+
NativeId
|
|
417
|
+
>;
|
|
418
|
+
readonly target: SuppliedService<TargetId, PasswordRegistrationAuthority<Registration>>;
|
|
419
|
+
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
420
|
+
},
|
|
421
|
+
body: Effect.Effect<Out, E, R>,
|
|
422
|
+
): Effect.Effect<
|
|
423
|
+
Out,
|
|
424
|
+
E | PasswordUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
425
|
+
Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements
|
|
426
|
+
> {
|
|
427
|
+
return Effect.flatMap(acquire, (database) =>
|
|
428
|
+
coordinateSqlitePasswordRegistration(
|
|
429
|
+
database,
|
|
430
|
+
options.mapping,
|
|
431
|
+
configurationFor(database),
|
|
432
|
+
(
|
|
433
|
+
transaction: TransactionOf<Database>,
|
|
434
|
+
services: { readonly registrationAuthority: PasswordRegistrationAuthority<Registration> },
|
|
435
|
+
) => {
|
|
436
|
+
const provided = Context.make(options.target, services.registrationAuthority);
|
|
437
|
+
const work = Effect.provideContext(body, provided);
|
|
438
|
+
|
|
439
|
+
return options.transaction === undefined
|
|
440
|
+
? work
|
|
441
|
+
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
442
|
+
},
|
|
443
|
+
),
|
|
444
|
+
);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
return {
|
|
448
|
+
makePasswordPersistenceServices: <
|
|
449
|
+
S extends AnySQLiteTable,
|
|
450
|
+
I extends AnySQLiteTable,
|
|
451
|
+
C extends AnySQLiteTable,
|
|
452
|
+
AC extends AnySQLiteTable,
|
|
453
|
+
A extends AnySQLiteTable,
|
|
454
|
+
RS extends AnySQLiteTable,
|
|
455
|
+
CE extends AnySQLiteTable,
|
|
456
|
+
M extends AnySQLiteTable,
|
|
457
|
+
NativeId,
|
|
458
|
+
>(
|
|
459
|
+
database: D,
|
|
460
|
+
mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>,
|
|
461
|
+
proofMapping?: ProofPersistenceMapping<
|
|
462
|
+
any,
|
|
463
|
+
any,
|
|
464
|
+
any,
|
|
465
|
+
any,
|
|
466
|
+
any,
|
|
467
|
+
any,
|
|
468
|
+
any,
|
|
469
|
+
any,
|
|
470
|
+
any,
|
|
471
|
+
any,
|
|
472
|
+
any,
|
|
473
|
+
any
|
|
474
|
+
>,
|
|
475
|
+
) =>
|
|
476
|
+
makeSqlitePasswordPersistenceServices(
|
|
477
|
+
database,
|
|
478
|
+
mapping,
|
|
479
|
+
configurationFor(database),
|
|
480
|
+
proofMapping,
|
|
481
|
+
),
|
|
482
|
+
coordinatePasswordPersistence,
|
|
483
|
+
makePasswordRegistrationServices: <
|
|
484
|
+
Registration,
|
|
485
|
+
S extends AnySQLiteTable,
|
|
486
|
+
I extends AnySQLiteTable,
|
|
487
|
+
C extends AnySQLiteTable,
|
|
488
|
+
AC extends AnySQLiteTable,
|
|
489
|
+
Rq extends AnySQLiteTable,
|
|
490
|
+
NativeId,
|
|
491
|
+
>(
|
|
492
|
+
database: D,
|
|
493
|
+
mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
|
|
494
|
+
) => makeSqlitePasswordRegistrationServices(database, mapping, configurationFor(database)),
|
|
495
|
+
coordinatePasswordRegistration,
|
|
496
|
+
};
|
|
497
|
+
};
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import type { LifecycleHooks, HookConfigurationError } from "@yielded/auth/Hooks";
|
|
2
|
+
import { type ProofUnavailable, ProofPersistence } from "@yielded/auth/Proofs";
|
|
3
|
+
import type { AnyRelations } from "drizzle-orm";
|
|
4
|
+
import type { EffectLibsqlDatabase } from "drizzle-orm/effect-libsql";
|
|
5
|
+
import type { EffectSQLiteBunDatabase } from "drizzle-orm/effect-sqlite-bun";
|
|
6
|
+
import type { EffectSQLiteDoDatabase } from "drizzle-orm/effect-sqlite-do";
|
|
7
|
+
import type { EffectSQLiteNodeDatabase } from "drizzle-orm/effect-sqlite-node";
|
|
8
|
+
import type { EffectSQLiteWasmDatabase } from "drizzle-orm/effect-sqlite-wasm";
|
|
9
|
+
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
10
|
+
import { Effect, Context } from "effect";
|
|
11
|
+
import type { SqlError } from "effect/unstable/sql/SqlError";
|
|
12
|
+
|
|
13
|
+
import type { ProofPersistenceMapping } from "./proof-model";
|
|
14
|
+
import {
|
|
15
|
+
coordinateTargetProofPersistence,
|
|
16
|
+
makeTargetProofPersistenceServices,
|
|
17
|
+
type ProofTargetConfiguration,
|
|
18
|
+
} from "./proof-target";
|
|
19
|
+
import type { SuppliedService } from "./SuppliedService";
|
|
20
|
+
|
|
21
|
+
type Database =
|
|
22
|
+
| EffectLibsqlDatabase<AnyRelations>
|
|
23
|
+
| EffectSQLiteBunDatabase<AnyRelations>
|
|
24
|
+
| EffectSQLiteDoDatabase<AnyRelations>
|
|
25
|
+
| EffectSQLiteNodeDatabase<AnyRelations>
|
|
26
|
+
| EffectSQLiteWasmDatabase<AnyRelations>;
|
|
27
|
+
type TransactionOf<D extends Database> = Parameters<Parameters<D["transaction"]>[0]>[0];
|
|
28
|
+
type Mapping<
|
|
29
|
+
Rq extends AnySQLiteTable,
|
|
30
|
+
S extends AnySQLiteTable,
|
|
31
|
+
G extends AnySQLiteTable,
|
|
32
|
+
Cn extends AnySQLiteTable,
|
|
33
|
+
Rs extends AnySQLiteTable,
|
|
34
|
+
A extends AnySQLiteTable,
|
|
35
|
+
F extends AnySQLiteTable,
|
|
36
|
+
C extends AnySQLiteTable,
|
|
37
|
+
Sub extends AnySQLiteTable,
|
|
38
|
+
I extends AnySQLiteTable,
|
|
39
|
+
Cr extends AnySQLiteTable,
|
|
40
|
+
NativeId,
|
|
41
|
+
> = ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>;
|
|
42
|
+
|
|
43
|
+
export const sqliteProofConfiguration = (
|
|
44
|
+
mode: "interactive" | "synchronous",
|
|
45
|
+
standaloneGuard: Effect.Effect<void, ProofUnavailable>,
|
|
46
|
+
coordinatorGuard?: Effect.Effect<void, ProofUnavailable>,
|
|
47
|
+
): ProofTargetConfiguration => ({
|
|
48
|
+
mode,
|
|
49
|
+
locking: false,
|
|
50
|
+
standaloneGuard,
|
|
51
|
+
insertIfAbsent: (query) => query.onConflictDoNothing(),
|
|
52
|
+
...(coordinatorGuard === undefined ? {} : { coordinatorGuard }),
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
export const makeSqliteProofTarget = <D extends Database, Synchronous extends boolean = false>(
|
|
56
|
+
configuration: ProofTargetConfiguration | ((database: D) => ProofTargetConfiguration),
|
|
57
|
+
) => {
|
|
58
|
+
const configurationFor = (database: D) =>
|
|
59
|
+
typeof configuration === "function" ? configuration(database) : configuration;
|
|
60
|
+
|
|
61
|
+
function coordinateProofPersistence<
|
|
62
|
+
Database extends D,
|
|
63
|
+
Rq extends AnySQLiteTable,
|
|
64
|
+
S extends AnySQLiteTable,
|
|
65
|
+
G extends AnySQLiteTable,
|
|
66
|
+
Cn extends AnySQLiteTable,
|
|
67
|
+
Rs extends AnySQLiteTable,
|
|
68
|
+
Aev extends AnySQLiteTable,
|
|
69
|
+
F extends AnySQLiteTable,
|
|
70
|
+
C extends AnySQLiteTable,
|
|
71
|
+
Sub extends AnySQLiteTable,
|
|
72
|
+
I extends AnySQLiteTable,
|
|
73
|
+
Cr extends AnySQLiteTable,
|
|
74
|
+
NativeId,
|
|
75
|
+
A,
|
|
76
|
+
E,
|
|
77
|
+
R,
|
|
78
|
+
DatabaseError,
|
|
79
|
+
DatabaseRequirements,
|
|
80
|
+
>(
|
|
81
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
82
|
+
options: {
|
|
83
|
+
readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;
|
|
84
|
+
readonly transaction?: never;
|
|
85
|
+
},
|
|
86
|
+
body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<ProofPersistence> : R>,
|
|
87
|
+
): Effect.Effect<
|
|
88
|
+
A,
|
|
89
|
+
E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
90
|
+
| (Synchronous extends true ? never : Exclude<R, ProofPersistence>)
|
|
91
|
+
| LifecycleHooks
|
|
92
|
+
| DatabaseRequirements
|
|
93
|
+
>;
|
|
94
|
+
function coordinateProofPersistence<
|
|
95
|
+
Database extends D,
|
|
96
|
+
Rq extends AnySQLiteTable,
|
|
97
|
+
S extends AnySQLiteTable,
|
|
98
|
+
G extends AnySQLiteTable,
|
|
99
|
+
Cn extends AnySQLiteTable,
|
|
100
|
+
Rs extends AnySQLiteTable,
|
|
101
|
+
Aev extends AnySQLiteTable,
|
|
102
|
+
F extends AnySQLiteTable,
|
|
103
|
+
C extends AnySQLiteTable,
|
|
104
|
+
Sub extends AnySQLiteTable,
|
|
105
|
+
I extends AnySQLiteTable,
|
|
106
|
+
Cr extends AnySQLiteTable,
|
|
107
|
+
NativeId,
|
|
108
|
+
A,
|
|
109
|
+
E,
|
|
110
|
+
R,
|
|
111
|
+
DatabaseError,
|
|
112
|
+
DatabaseRequirements,
|
|
113
|
+
TxId,
|
|
114
|
+
TxShape,
|
|
115
|
+
>(
|
|
116
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
117
|
+
options: {
|
|
118
|
+
readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;
|
|
119
|
+
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
120
|
+
},
|
|
121
|
+
body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<ProofPersistence | TxId> : R>,
|
|
122
|
+
): Effect.Effect<
|
|
123
|
+
A,
|
|
124
|
+
E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
125
|
+
| (Synchronous extends true ? never : Exclude<R, ProofPersistence | TxId>)
|
|
126
|
+
| LifecycleHooks
|
|
127
|
+
| DatabaseRequirements
|
|
128
|
+
>;
|
|
129
|
+
function coordinateProofPersistence<
|
|
130
|
+
Database extends D,
|
|
131
|
+
Rq extends AnySQLiteTable,
|
|
132
|
+
S extends AnySQLiteTable,
|
|
133
|
+
G extends AnySQLiteTable,
|
|
134
|
+
Cn extends AnySQLiteTable,
|
|
135
|
+
Rs extends AnySQLiteTable,
|
|
136
|
+
Aev extends AnySQLiteTable,
|
|
137
|
+
F extends AnySQLiteTable,
|
|
138
|
+
C extends AnySQLiteTable,
|
|
139
|
+
Sub extends AnySQLiteTable,
|
|
140
|
+
I extends AnySQLiteTable,
|
|
141
|
+
Cr extends AnySQLiteTable,
|
|
142
|
+
NativeId,
|
|
143
|
+
A,
|
|
144
|
+
E,
|
|
145
|
+
R,
|
|
146
|
+
DatabaseError,
|
|
147
|
+
DatabaseRequirements,
|
|
148
|
+
TxId,
|
|
149
|
+
TxShape,
|
|
150
|
+
>(
|
|
151
|
+
acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,
|
|
152
|
+
options: {
|
|
153
|
+
readonly mapping: Mapping<Rq, S, G, Cn, Rs, Aev, F, C, Sub, I, Cr, NativeId>;
|
|
154
|
+
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;
|
|
155
|
+
},
|
|
156
|
+
body: Effect.Effect<A, E, R>,
|
|
157
|
+
): Effect.Effect<
|
|
158
|
+
A,
|
|
159
|
+
E | ProofUnavailable | HookConfigurationError | SqlError | DatabaseError,
|
|
160
|
+
Exclude<R, ProofPersistence> | LifecycleHooks | DatabaseRequirements
|
|
161
|
+
> {
|
|
162
|
+
return Effect.flatMap(acquire, (database) =>
|
|
163
|
+
coordinateTargetProofPersistence<TransactionOf<Database>, A, E, Exclude<R, ProofPersistence>>(
|
|
164
|
+
database,
|
|
165
|
+
options.mapping,
|
|
166
|
+
configurationFor(database),
|
|
167
|
+
(
|
|
168
|
+
transaction: TransactionOf<Database>,
|
|
169
|
+
services: { readonly proofPersistence: ProofPersistence["Service"] },
|
|
170
|
+
) => {
|
|
171
|
+
const provided = Context.make(ProofPersistence, services.proofPersistence);
|
|
172
|
+
const work = Effect.provideContext(body, provided);
|
|
173
|
+
|
|
174
|
+
return options.transaction === undefined
|
|
175
|
+
? work
|
|
176
|
+
: Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
177
|
+
},
|
|
178
|
+
),
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return {
|
|
183
|
+
makeProofPersistenceServices: <
|
|
184
|
+
Rq extends AnySQLiteTable,
|
|
185
|
+
S extends AnySQLiteTable,
|
|
186
|
+
G extends AnySQLiteTable,
|
|
187
|
+
Cn extends AnySQLiteTable,
|
|
188
|
+
Rs extends AnySQLiteTable,
|
|
189
|
+
A extends AnySQLiteTable,
|
|
190
|
+
F extends AnySQLiteTable,
|
|
191
|
+
C extends AnySQLiteTable,
|
|
192
|
+
Sub extends AnySQLiteTable,
|
|
193
|
+
I extends AnySQLiteTable,
|
|
194
|
+
Cr extends AnySQLiteTable,
|
|
195
|
+
NativeId,
|
|
196
|
+
>(
|
|
197
|
+
database: D,
|
|
198
|
+
mapping: Mapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>,
|
|
199
|
+
) => makeTargetProofPersistenceServices(database, mapping, configurationFor(database)),
|
|
200
|
+
coordinateProofPersistence,
|
|
201
|
+
};
|
|
202
|
+
};
|