@yielded/auth-persistence-drizzle 0.1.0-beta.0
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 +17 -0
- package/dist/D1.d.mts +963 -0
- package/dist/D1.mjs +29 -0
- package/dist/D1.mjs.map +1 -0
- package/dist/Libsql.d.mts +2134 -0
- package/dist/Libsql.mjs +77 -0
- package/dist/Libsql.mjs.map +1 -0
- package/dist/Mysql2.d.mts +1817 -0
- package/dist/Mysql2.mjs +55 -0
- package/dist/Mysql2.mjs.map +1 -0
- package/dist/Pglite.d.mts +1821 -0
- package/dist/Pglite.mjs +53 -0
- package/dist/Pglite.mjs.map +1 -0
- package/dist/Postgres.d.mts +1821 -0
- package/dist/Postgres.mjs +53 -0
- package/dist/Postgres.mjs.map +1 -0
- package/dist/SqliteBun.d.mts +2129 -0
- package/dist/SqliteBun.mjs +70 -0
- package/dist/SqliteBun.mjs.map +1 -0
- package/dist/SqliteDo.d.mts +2181 -0
- package/dist/SqliteDo.mjs +105 -0
- package/dist/SqliteDo.mjs.map +1 -0
- package/dist/SqliteNode.d.mts +2129 -0
- package/dist/SqliteNode.mjs +70 -0
- package/dist/SqliteNode.mjs.map +1 -0
- package/dist/SqliteWasm.d.mts +2132 -0
- package/dist/SqliteWasm.mjs +70 -0
- package/dist/SqliteWasm.mjs.map +1 -0
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/drizzle/D1BatchStatements.d.mts +10 -0
- package/dist/drizzle/D1BatchStatements.mjs +8 -0
- package/dist/drizzle/D1BatchStatements.mjs.map +1 -0
- package/dist/drizzle/SuppliedService.d.mts +9 -0
- package/dist/drizzle/d1-emails.d.mts +61 -0
- package/dist/drizzle/d1-emails.mjs +578 -0
- package/dist/drizzle/d1-emails.mjs.map +1 -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 +30 -0
- package/dist/drizzle/d1-identity.mjs +118 -0
- package/dist/drizzle/d1-identity.mjs.map +1 -0
- package/dist/drizzle/d1-oauth.d.mts +300 -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 +47 -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 +24 -0
- package/dist/drizzle/d1-password-prepared.mjs +460 -0
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -0
- package/dist/drizzle/d1-passwords.d.mts +86 -0
- package/dist/drizzle/d1-passwords.mjs +1003 -0
- package/dist/drizzle/d1-passwords.mjs.map +1 -0
- package/dist/drizzle/d1-phone.d.mts +23 -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 +11 -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 +79 -0
- package/dist/drizzle/d1-proofs.mjs +829 -0
- package/dist/drizzle/d1-proofs.mjs.map +1 -0
- package/dist/drizzle/d1-sessions.d.mts +66 -0
- package/dist/drizzle/d1-sessions.mjs +965 -0
- package/dist/drizzle/d1-sessions.mjs.map +1 -0
- package/dist/drizzle/d1-totp.d.mts +23 -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 +30 -0
- package/dist/drizzle/email-model.mjs +2 -0
- package/dist/drizzle/email-registration.d.mts +29 -0
- package/dist/drizzle/email-registration.mjs +236 -0
- package/dist/drizzle/email-registration.mjs.map +1 -0
- package/dist/drizzle/email-sql.d.mts +1 -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 +19 -0
- package/dist/drizzle/email-target.mjs +72 -0
- package/dist/drizzle/email-target.mjs.map +1 -0
- package/dist/drizzle/model.d.mts +245 -0
- package/dist/drizzle/model.mjs +55 -0
- package/dist/drizzle/model.mjs.map +1 -0
- package/dist/drizzle/mysql-emails.d.mts +70 -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 +21 -0
- package/dist/drizzle/mysql-identity.mjs +93 -0
- package/dist/drizzle/mysql-identity.mjs.map +1 -0
- package/dist/drizzle/mysql-password-prepared.d.mts +29 -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 +85 -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 +74 -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 +91 -0
- package/dist/drizzle/mysql-sessions.mjs +53 -0
- package/dist/drizzle/mysql-sessions.mjs.map +1 -0
- package/dist/drizzle/mysql.d.mts +69 -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 +277 -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 +16 -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 +1954 -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 +752 -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 +22 -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 +461 -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 +10 -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 +5 -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 +109 -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 +43 -0
- package/dist/drizzle/passkey-model.mjs +8 -0
- package/dist/drizzle/passkey-model.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-ceremony-model.d.mts +12 -0
- package/dist/drizzle/passkey-registration-ceremony-model.mjs +2 -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 +2 -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 +20 -0
- package/dist/drizzle/passkey-write-model.mjs +9 -0
- package/dist/drizzle/passkey-write-model.mjs.map +1 -0
- package/dist/drizzle/passkey-write-target.d.mts +5 -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 +24 -0
- package/dist/drizzle/password-model.mjs +2 -0
- package/dist/drizzle/password-prepared-model.d.mts +92 -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 +389 -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 +11 -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 +7 -0
- package/dist/drizzle/password-registration.mjs +134 -0
- package/dist/drizzle/password-registration.mjs.map +1 -0
- package/dist/drizzle/password-sql.d.mts +1 -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 +16 -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 +71 -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 +30 -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 +86 -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 +75 -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 +92 -0
- package/dist/drizzle/pg-sessions.mjs +53 -0
- package/dist/drizzle/pg-sessions.mjs.map +1 -0
- package/dist/drizzle/pg.d.mts +80 -0
- package/dist/drizzle/pg.mjs +289 -0
- package/dist/drizzle/pg.mjs.map +1 -0
- package/dist/drizzle/phone-model.d.mts +113 -0
- package/dist/drizzle/phone-model.mjs +39 -0
- package/dist/drizzle/phone-model.mjs.map +1 -0
- package/dist/drizzle/phone-state.mjs +14 -0
- package/dist/drizzle/phone-state.mjs.map +1 -0
- package/dist/drizzle/phone-target.d.mts +14 -0
- package/dist/drizzle/phone-target.mjs +168 -0
- package/dist/drizzle/phone-target.mjs.map +1 -0
- package/dist/drizzle/proof-model.d.mts +21 -0
- package/dist/drizzle/proof-model.mjs +2 -0
- package/dist/drizzle/proof-sql.d.mts +1 -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 +11 -0
- package/dist/drizzle/proof-target.mjs +36 -0
- package/dist/drizzle/proof-target.mjs.map +1 -0
- package/dist/drizzle/query-operations.mjs +27 -0
- package/dist/drizzle/query-operations.mjs.map +1 -0
- package/dist/drizzle/session-model.d.mts +31 -0
- package/dist/drizzle/session-model.mjs +2 -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 +27 -0
- package/dist/drizzle/session-target.mjs +46 -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 +90 -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 +77 -0
- package/dist/drizzle/sqlite.mjs +217 -0
- package/dist/drizzle/sqlite.mjs.map +1 -0
- package/dist/drizzle/standalone-guard.mjs +17 -0
- package/dist/drizzle/standalone-guard.mjs.map +1 -0
- package/dist/drizzle/step-up-model.d.mts +16 -0
- package/dist/drizzle/step-up-model.mjs +2 -0
- package/dist/drizzle/table-model.d.mts +11 -0
- package/dist/drizzle/totp-model.d.mts +82 -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 +37 -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 +14 -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 +2 -0
- package/dist/drizzle/transaction-execution.mjs +11 -0
- package/dist/drizzle/transaction-execution.mjs.map +1 -0
- package/dist/drizzle/transaction-mysql.mjs +47 -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 +27 -0
- package/dist/index.mjs +27 -0
- package/dist/internal/drizzle-migrations.mjs +19 -0
- package/dist/internal/drizzle-migrations.mjs.map +1 -0
- package/dist/internal/drizzle-postgres.mjs +37 -0
- package/dist/internal/drizzle-postgres.mjs.map +1 -0
- package/dist/internal/drizzle-sqlite.mjs +35 -0
- package/dist/internal/drizzle-sqlite.mjs.map +1 -0
- package/package.json +1 -0
- package/src/D1.ts +136 -0
- package/src/Libsql.ts +257 -0
- package/src/Mysql2.ts +184 -0
- package/src/Pglite.ts +174 -0
- package/src/Postgres.ts +174 -0
- package/src/SqliteBun.ts +258 -0
- package/src/SqliteDo.ts +473 -0
- package/src/SqliteNode.ts +259 -0
- package/src/SqliteWasm.ts +263 -0
- package/src/drizzle/D1BatchStatements.ts +10 -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 +202 -0
- package/src/drizzle/email-registration.ts +698 -0
- package/src/drizzle/email-sql.ts +25 -0
- package/src/drizzle/email-target.ts +243 -0
- package/src/drizzle/model.ts +459 -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 +4 -0
- package/src/drizzle/passkey-model.ts +153 -0
- package/src/drizzle/passkey-registration-ceremony-model.ts +32 -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 +103 -0
- package/src/drizzle/passkey-write-target.ts +9 -0
- package/src/drizzle/password-model.ts +169 -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 +363 -0
- package/src/drizzle/password-sql.ts +13 -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 +139 -0
- package/src/drizzle/proof-sql.ts +10 -0
- package/src/drizzle/proof-target.ts +122 -0
- package/src/drizzle/query-operations.ts +43 -0
- package/src/drizzle/session-model.ts +215 -0
- package/src/drizzle/session-sql.ts +14 -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 +32 -0
- package/src/drizzle/step-up-model.ts +73 -0
- package/src/drizzle/table-model.ts +9 -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 +13 -0
- package/src/drizzle/transaction-mysql.ts +106 -0
- package/src/drizzle/transaction-owner.ts +11 -0
- package/src/index.ts +378 -0
- package/src/internal/drizzle-migrations.ts +29 -0
- package/src/internal/drizzle-postgres.ts +83 -0
- package/src/internal/drizzle-sqlite.ts +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey-drivers.mjs","names":[],"sources":["../../src/drizzle/passkey-drivers.ts"],"sourcesContent":["import type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport { PasskeyPersistence } from \"@yielded/auth/Passkey\";\nimport type { Table } from \"drizzle-orm\";\nimport { Effect, Context } from \"effect\";\n\nimport type {\n PasskeyCredentialMapping,\n PasskeyEnrollmentContextMapping,\n PasskeyMappingSource,\n PasskeyPersistenceMapping,\n PasskeyPersistenceServices,\n} from \"./passkey-model\";\nimport type {\n PasskeyRegistrationCeremonyMapping,\n PasskeyRegistrationCeremonyServices,\n} from \"./passkey-registration-ceremony-model\";\nimport {\n type PasskeyCoordinatorError,\n coordinateTargetPasskey,\n coordinateTargetPasskeyRegistration,\n makeTargetPasskeyCredentials,\n makeTargetPasskeyEnrollmentContext,\n makeTargetPasskeyPersistence,\n makeTargetPasskeyRegistration,\n type PasskeyTargetConfiguration,\n} from \"./passkey-target\";\nimport { makePasskeyWriteTarget } from \"./passkey-write-drivers\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\n// oxlint-disable-next-line no-explicit-any -- inspect only the concrete database's installed generic transaction callback.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\nexport const makePasskeyTarget = <\n D,\n T extends Table,\n Extra = unknown,\n Synchronous extends boolean = false,\n>(\n configuration: PasskeyTargetConfiguration,\n) => {\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<\n PasskeyCredentialMapping<S, C, F, O, H, N>,\n M,\n Flow,\n Admission,\n Charge,\n N\n > &\n Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<PasskeyPersistence> : R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<\n PasskeyCredentialMapping<S, C, F, O, H, N>,\n M,\n Flow,\n Admission,\n Charge,\n N\n > &\n Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<PasskeyPersistence | TxId> : R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyPersistence<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<\n PasskeyCredentialMapping<S, C, F, O, H, N>,\n M,\n Flow,\n Admission,\n Charge,\n N\n > &\n Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n Exclude<R, PasskeyPersistence> | LifecycleHooks | DatabaseRequirements | RSetup\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetPasskey(\n database,\n options.mapping,\n configuration,\n (transaction: TransactionOf<Database>, services: PasskeyPersistenceServices) => {\n const provided = Context.make(PasskeyPersistence, services.passkeyPersistence);\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 coordinatePasskeyRegistrationCeremony<\n Database extends D,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n H extends T,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<M, Flow, Admission, Charge, Intent, H> & Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<PasskeyPersistence> : R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyRegistrationCeremony<\n Database extends D,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n H extends T,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<M, Flow, Admission, Charge, Intent, H> & Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<PasskeyPersistence | TxId> : R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n | RSetup\n >;\n function coordinatePasskeyRegistrationCeremony<\n Database extends D,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n H extends T,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<M, Flow, Admission, Charge, Intent, H> & Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n Exclude<R, PasskeyPersistence> | LifecycleHooks | DatabaseRequirements | RSetup\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetPasskeyRegistration(\n database,\n options.mapping,\n configuration,\n (transaction: TransactionOf<Database>, services: PasskeyRegistrationCeremonyServices) => {\n const provided = Context.make(PasskeyPersistence, services.passkeyPersistence);\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 ...makePasskeyWriteTarget<D, T, Extra, Synchronous>(configuration),\n makePasskeyCredentialServices: <\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n N,\n RSetup = never,\n >(\n database: Database,\n mapping: PasskeyMappingSource<PasskeyCredentialMapping<S, C, F, O, H, N> & Extra, RSetup>,\n ) => makeTargetPasskeyCredentials(database, mapping, configuration),\n makePasskeyEnrollmentContextServices: <\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n N,\n RSetup = never,\n >(\n database: Database,\n mapping: PasskeyMappingSource<\n PasskeyEnrollmentContextMapping<PasskeyCredentialMapping<S, C, F, O, H, N>, M, N> & Extra,\n RSetup\n >,\n ) => makeTargetPasskeyEnrollmentContext(database, mapping, configuration),\n makePasskeyPersistenceServices: <\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n N,\n RSetup = never,\n >(\n database: Database,\n mapping: PasskeyMappingSource<\n PasskeyPersistenceMapping<\n PasskeyCredentialMapping<S, C, F, O, H, N>,\n M,\n Flow,\n Admission,\n Charge,\n N\n > &\n Extra,\n RSetup\n >,\n ) => makeTargetPasskeyPersistence(database, mapping, configuration),\n makePasskeyRegistrationCeremonyServices: <\n Database extends D,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n H extends T,\n RSetup = never,\n >(\n database: Database,\n mapping: PasskeyMappingSource<\n PasskeyRegistrationCeremonyMapping<M, Flow, Admission, Charge, Intent, H> & Extra,\n RSetup\n >,\n ) => makeTargetPasskeyRegistration(database, mapping, configuration),\n coordinatePasskeyPersistence,\n coordinatePasskeyRegistrationCeremony,\n };\n};\n"],"mappings":";;;;;AAkCA,MAAa,qBAMX,kBACG;CA2FH,SAAS,6BAqBP,SACA,SAeA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,wBACE,UACA,QAAQ,SACR,gBACC,aAAsC,aAAyC;GAC9E,MAAM,WAAW,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB;GAC7E,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,sCAiBP,SACA,SAOA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,oCACE,UACA,QAAQ,SACR,gBACC,aAAsC,aAAkD;GACvF,MAAM,WAAW,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB;GAC7E,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,uBAAiD,aAAa;EACjE,gCAUE,UACA,YACG,6BAA6B,UAAU,SAAS,aAAa;EAClE,uCAWE,UACA,YAIG,mCAAmC,UAAU,SAAS,aAAa;EACxE,iCAcE,UACA,YAYG,6BAA6B,UAAU,SAAS,aAAa;EAClE,0CAUE,UACA,YAIG,8BAA8B,UAAU,SAAS,aAAa;EACnE;EACA;CACF;AACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { drizzleQueryOperations } from "./query-operations.mjs";
|
|
2
|
+
import { makePasskeyKernel } from "@yielded/auth-persistence/Adapter";
|
|
3
|
+
//#region src/drizzle/passkey-kernel.ts
|
|
4
|
+
const passkeyKernel = makePasskeyKernel(drizzleQueryOperations);
|
|
5
|
+
//#endregion
|
|
6
|
+
export { passkeyKernel };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=passkey-kernel.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey-kernel.mjs","names":[],"sources":["../../src/drizzle/passkey-kernel.ts"],"sourcesContent":["import { type PasskeyKernel, makePasskeyKernel } from \"@yielded/auth-persistence/Adapter\";\n\nimport { drizzleQueryOperations } from \"./query-operations\";\nexport const passkeyKernel: PasskeyKernel = makePasskeyKernel(drizzleQueryOperations);\n"],"mappings":";;;AAGA,MAAa,gBAA+B,kBAAkB,sBAAsB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { DrizzleTableModel } from "./table-model.mjs";
|
|
2
|
+
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
3
|
+
import { D1PasskeyMapping, PasskeyChargeInsert, PasskeyChargeKind, PasskeyCredentialServices, PasskeyEnrollmentContextServices, PasskeyFlowInsert, PasskeyFlowState, PasskeyMappingSource, PasskeyPersistenceServices, PasskeySubjectIdCodec, passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints } from "@yielded/auth-persistence/Adapter";
|
|
4
|
+
import { SQL, Table } from "drizzle-orm";
|
|
5
|
+
//#region src/drizzle/passkey-model.d.ts
|
|
6
|
+
export type PasskeyColumn<T extends Table> = Shared.PasskeyColumn<DrizzleTableModel<T>>;
|
|
7
|
+
export type PasskeyClock = Shared.PasskeyClock<SQL>;
|
|
8
|
+
export type PasskeySubjectReadTable<T extends Table, N> = Shared.PasskeySubjectReadTable<DrizzleTableModel<T>, N, SQL>;
|
|
9
|
+
export type PasskeyFactorReadTable<T extends Table> = Shared.PasskeyFactorReadTable<DrizzleTableModel<T>, SQL>;
|
|
10
|
+
/** decode uses only these declared columns. Counter columns are native integral
|
|
11
|
+
* numbers; BS may use a consumer enum. Name/creation metadata is not required. */
|
|
12
|
+
export type PasskeyCredentialReadTable<T extends Table, N> = Shared.PasskeyCredentialReadTable<DrizzleTableModel<T>, N, SQL>;
|
|
13
|
+
export type PasskeyCredentialOwnershipTable<T extends Table, N> = Shared.PasskeyCredentialOwnershipTable<DrizzleTableModel<T>, N, SQL>;
|
|
14
|
+
/** Reservations do not manufacture a subject; bound handles are RP-global. */
|
|
15
|
+
export type PasskeyHandleReadTable<T extends Table> = Shared.PasskeyHandleReadTable<DrizzleTableModel<T>>;
|
|
16
|
+
export type PasskeyHandleReservationTable<T extends Table> = Shared.PasskeyHandleReservationTable<DrizzleTableModel<T>, SQL>;
|
|
17
|
+
export type PasskeyHandleOwnershipTable<T extends Table, N> = Shared.PasskeyHandleOwnershipTable<DrizzleTableModel<T>, N, SQL>;
|
|
18
|
+
export type PasskeyCredentialMapping<S extends Table, C extends Table, F extends Table, Ownership extends Table, Handle extends Table, N> = Shared.PasskeyCredentialMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<Ownership>, DrizzleTableModel<Handle>, N, SQL>;
|
|
19
|
+
export type PasskeyPolicyGuard = Shared.PasskeyPolicyGuard<SQL>;
|
|
20
|
+
export declare const passkeyPolicyGuard: <T extends Table>(input: {
|
|
21
|
+
readonly scope: string;
|
|
22
|
+
readonly table: T;
|
|
23
|
+
readonly columns: ReadonlyArray<PasskeyColumn<T>>;
|
|
24
|
+
readonly where: (moduleId: string) => SQL;
|
|
25
|
+
readonly condition: (moduleId: string) => SQL;
|
|
26
|
+
}) => PasskeyPolicyGuard;
|
|
27
|
+
export type PasskeyModuleTable<T extends Table> = Shared.PasskeyModuleTable<DrizzleTableModel<T>, SQL>;
|
|
28
|
+
export type PasskeyFlowTable<T extends Table> = Shared.PasskeyFlowTable<DrizzleTableModel<T>>;
|
|
29
|
+
export type PasskeyAdmissionTable<T extends Table> = Shared.PasskeyAdmissionTable<DrizzleTableModel<T>>;
|
|
30
|
+
/** Charge scope is canonical core identity text; this subject-free descriptor
|
|
31
|
+
* can count all purposes without decoding any unrelated native subject. */
|
|
32
|
+
export type PasskeyChargeTable<T extends Table> = Shared.PasskeyChargeTable<DrizzleTableModel<T>>;
|
|
33
|
+
export type PasskeyCeremonyMapping<Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table> = Shared.PasskeyCeremonyMapping<DrizzleTableModel<Module>, DrizzleTableModel<Flow>, DrizzleTableModel<Admission>, DrizzleTableModel<Charge>, SQL>;
|
|
34
|
+
type CredentialTable<Read> = Read extends {
|
|
35
|
+
readonly credential: {
|
|
36
|
+
readonly table: infer T extends Table;
|
|
37
|
+
};
|
|
38
|
+
} ? T : never;
|
|
39
|
+
export type PasskeyPersistenceMapping<Read, Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table, N> = Shared.PasskeyPersistenceMapping<Read, DrizzleTableModel<Module>, DrizzleTableModel<Flow>, DrizzleTableModel<Admission>, DrizzleTableModel<Charge>, N, SQL, DrizzleTableModel<CredentialTable<Read>>>;
|
|
40
|
+
export type PasskeyEnrollmentContextMapping<Read, Module extends Table, N> = Shared.PasskeyEnrollmentContextMapping<Read, DrizzleTableModel<Module>, N, SQL>;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { type D1PasskeyMapping, type PasskeyChargeInsert, type PasskeyChargeKind, type PasskeyCredentialServices, type PasskeyEnrollmentContextServices, type PasskeyFlowInsert, type PasskeyFlowState, type PasskeyMappingSource, type PasskeyPersistenceServices, type PasskeySubjectIdCodec, passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints };
|
|
43
|
+
//# sourceMappingURL=passkey-model.d.mts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
2
|
+
import { passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints } from "@yielded/auth-persistence/Adapter";
|
|
3
|
+
//#region src/drizzle/passkey-model.ts
|
|
4
|
+
const passkeyPolicyGuard = (input) => Shared.passkeyPolicyGuard(input);
|
|
5
|
+
//#endregion
|
|
6
|
+
export { passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, passkeyPolicyGuard, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=passkey-model.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey-model.mjs","names":[],"sources":["../../src/drizzle/passkey-model.ts"],"sourcesContent":["import * as Shared from \"@yielded/auth-persistence/Adapter\";\nimport type { SQL, Table } from \"drizzle-orm\";\n\nimport type { DrizzleTableModel } from \"./table-model\";\n\nexport {\n type PasskeyMappingSource,\n type PasskeyCredentialServices,\n type PasskeyPersistenceServices,\n type PasskeyEnrollmentContextServices,\n passkeyCredentialsLayer,\n passkeyPersistenceLayer,\n passkeyEnrollmentContextLayer,\n type PasskeySubjectIdCodec,\n requiredPasskeyCredentialConstraints,\n type PasskeyFlowState,\n type PasskeyFlowInsert,\n type PasskeyChargeKind,\n type PasskeyChargeInsert,\n requiredPasskeyPersistenceConstraints,\n type D1PasskeyMapping,\n} from \"@yielded/auth-persistence/Adapter\";\n\nexport type PasskeyColumn<T extends Table> = Shared.PasskeyColumn<DrizzleTableModel<T>>;\n\nexport type PasskeyClock = Shared.PasskeyClock<SQL>;\n\nexport type PasskeySubjectReadTable<T extends Table, N> = Shared.PasskeySubjectReadTable<\n DrizzleTableModel<T>,\n N,\n SQL\n>;\n\nexport type PasskeyFactorReadTable<T extends Table> = Shared.PasskeyFactorReadTable<\n DrizzleTableModel<T>,\n SQL\n>;\n\n/** decode uses only these declared columns. Counter columns are native integral\n * numbers; BS may use a consumer enum. Name/creation metadata is not required. */\nexport type PasskeyCredentialReadTable<T extends Table, N> = Shared.PasskeyCredentialReadTable<\n DrizzleTableModel<T>,\n N,\n SQL\n>;\n\nexport type PasskeyCredentialOwnershipTable<\n T extends Table,\n N,\n> = Shared.PasskeyCredentialOwnershipTable<DrizzleTableModel<T>, N, SQL>;\n\n/** Reservations do not manufacture a subject; bound handles are RP-global. */\nexport type PasskeyHandleReadTable<T extends Table> = Shared.PasskeyHandleReadTable<\n DrizzleTableModel<T>\n>;\n\nexport type PasskeyHandleReservationTable<T extends Table> = Shared.PasskeyHandleReservationTable<\n DrizzleTableModel<T>,\n SQL\n>;\n\nexport type PasskeyHandleOwnershipTable<T extends Table, N> = Shared.PasskeyHandleOwnershipTable<\n DrizzleTableModel<T>,\n N,\n SQL\n>;\n\nexport type PasskeyCredentialMapping<\n S extends Table,\n C extends Table,\n F extends Table,\n Ownership extends Table,\n Handle extends Table,\n N,\n> = Shared.PasskeyCredentialMapping<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<Ownership>,\n DrizzleTableModel<Handle>,\n N,\n SQL\n>;\n\nexport type PasskeyPolicyGuard = Shared.PasskeyPolicyGuard<SQL>;\n\nexport const passkeyPolicyGuard = <T extends Table>(input: {\n readonly scope: string;\n readonly table: T;\n readonly columns: ReadonlyArray<PasskeyColumn<T>>;\n readonly where: (moduleId: string) => SQL;\n readonly condition: (moduleId: string) => SQL;\n}): PasskeyPolicyGuard => Shared.passkeyPolicyGuard<DrizzleTableModel<T>, SQL>(input);\n\nexport type PasskeyModuleTable<T extends Table> = Shared.PasskeyModuleTable<\n DrizzleTableModel<T>,\n SQL\n>;\n\nexport type PasskeyFlowTable<T extends Table> = Shared.PasskeyFlowTable<DrizzleTableModel<T>>;\n\nexport type PasskeyAdmissionTable<T extends Table> = Shared.PasskeyAdmissionTable<\n DrizzleTableModel<T>\n>;\n\n/** Charge scope is canonical core identity text; this subject-free descriptor\n * can count all purposes without decoding any unrelated native subject. */\nexport type PasskeyChargeTable<T extends Table> = Shared.PasskeyChargeTable<DrizzleTableModel<T>>;\n\nexport type PasskeyCeremonyMapping<\n Module extends Table,\n Flow extends Table,\n Admission extends Table,\n Charge extends Table,\n> = Shared.PasskeyCeremonyMapping<\n DrizzleTableModel<Module>,\n DrizzleTableModel<Flow>,\n DrizzleTableModel<Admission>,\n DrizzleTableModel<Charge>,\n SQL\n>;\n\ntype CredentialTable<Read> = Read extends {\n readonly credential: {\n readonly table: infer T extends Table;\n };\n}\n ? T\n : never;\n\nexport type PasskeyPersistenceMapping<\n Read,\n Module extends Table,\n Flow extends Table,\n Admission extends Table,\n Charge extends Table,\n N,\n> = Shared.PasskeyPersistenceMapping<\n Read,\n DrizzleTableModel<Module>,\n DrizzleTableModel<Flow>,\n DrizzleTableModel<Admission>,\n DrizzleTableModel<Charge>,\n N,\n SQL,\n DrizzleTableModel<CredentialTable<Read>>\n>;\n\nexport type PasskeyEnrollmentContextMapping<\n Read,\n Module extends Table,\n N,\n> = Shared.PasskeyEnrollmentContextMapping<Read, DrizzleTableModel<Module>, N, SQL>;\n"],"mappings":";;;AAsFA,MAAa,sBAAuC,UAM1B,OAAO,mBAA8C,KAAK"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DrizzleTableModel } from "./table-model.mjs";
|
|
2
|
+
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
3
|
+
import { PasskeyRegistrationCeremonyCapabilities, PasskeyRegistrationCeremonyServices, requiredPasskeyRegistrationCeremonyConstraints } from "@yielded/auth-persistence/Adapter";
|
|
4
|
+
import { SQL, Table } from "drizzle-orm";
|
|
5
|
+
//#region src/drizzle/passkey-registration-ceremony-model.d.ts
|
|
6
|
+
/** Read-only custody supplied by a separate registration issuance authority.
|
|
7
|
+
* No application payload codec, subject codec or provisioning callback runs here. */
|
|
8
|
+
export type PasskeyRegistrationIntentReadTable<T extends Table> = Shared.PasskeyRegistrationIntentReadTable<DrizzleTableModel<T>, SQL>;
|
|
9
|
+
export type PasskeyRegistrationCeremonyMapping<Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table, Intent extends Table, Handle extends Table> = Shared.PasskeyRegistrationCeremonyMapping<DrizzleTableModel<Module>, DrizzleTableModel<Flow>, DrizzleTableModel<Admission>, DrizzleTableModel<Charge>, DrizzleTableModel<Intent>, DrizzleTableModel<Handle>, SQL>;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { type PasskeyRegistrationCeremonyCapabilities, type PasskeyRegistrationCeremonyServices, requiredPasskeyRegistrationCeremonyConstraints };
|
|
12
|
+
//# sourceMappingURL=passkey-registration-ceremony-model.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey-state.mjs","names":[],"sources":["../../src/drizzle/passkey-state.ts"],"sourcesContent":["import { passkeyKernel } from \"./passkey-kernel\";\nexport type { PasskeyOwner } from \"@yielded/auth-persistence/Adapter\";\nexport const { unavailable } = passkeyKernel.state;\n"],"mappings":";;AAEA,MAAa,EAAE,gBAAgB,cAAc"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { passkeyKernel } from "./passkey-kernel.mjs";
|
|
2
|
+
//#region src/drizzle/passkey-target.ts
|
|
3
|
+
const { sqlClientPasskeyStandaloneGuard, makePasskeyExecution, capturedService, prepareValue, observationalContext, makePasskeyPersistence, capturedMapping, makeTargetPasskeyCredentials, makeTargetPasskeyEnrollmentContext, makeTargetPasskeyPersistence, makeTargetPasskeyRegistration, coordinateTargetPasskey, coordinateTargetPasskeyRegistration } = passkeyKernel.target;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { coordinateTargetPasskey, coordinateTargetPasskeyRegistration, makeTargetPasskeyCredentials, makeTargetPasskeyEnrollmentContext, makeTargetPasskeyPersistence, makeTargetPasskeyRegistration, sqlClientPasskeyStandaloneGuard };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=passkey-target.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey-target.mjs","names":[],"sources":["../../src/drizzle/passkey-target.ts"],"sourcesContent":["import { passkeyKernel } from \"./passkey-kernel\";\n\nexport type {\n PasskeyTargetConfiguration,\n PasskeyCoordinatorError,\n PasskeyExecution,\n} from \"@yielded/auth-persistence/Adapter\";\n\nexport const {\n sqlClientPasskeyStandaloneGuard,\n makePasskeyExecution,\n capturedService,\n prepareValue,\n observationalContext,\n makePasskeyPersistence,\n capturedMapping,\n makeTargetPasskeyCredentials,\n makeTargetPasskeyEnrollmentContext,\n makeTargetPasskeyPersistence,\n makeTargetPasskeyRegistration,\n coordinateTargetPasskey,\n coordinateTargetPasskeyRegistration,\n} = passkeyKernel.target;\n"],"mappings":";;AAQA,MAAa,EACX,iCACA,sBACA,iBACA,cACA,sBACA,wBACA,iBACA,8BACA,oCACA,8BACA,+BACA,yBACA,wCACE,cAAc"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { coordinateTargetPasskeyManagement, coordinateTargetPasskeyRegistrationWriter, makeTargetPasskeyManagement, makeTargetPasskeyRegistrationWriter } from "./passkey-write-target.mjs";
|
|
2
|
+
import { Context, Effect } from "effect";
|
|
3
|
+
import { PasskeyManagementPersistence, PasskeyPersistence } from "@yielded/auth/Passkey";
|
|
4
|
+
//#region src/drizzle/passkey-write-drivers.ts
|
|
5
|
+
const makePasskeyWriteTarget = (configuration) => {
|
|
6
|
+
function coordinatePasskeyManagement(acquire, options, body) {
|
|
7
|
+
return Effect.flatMap(acquire, (database) => coordinateTargetPasskeyManagement(database, options.mapping, configuration, (transaction, services) => {
|
|
8
|
+
const context = Context.make(PasskeyPersistence, services.passkeyPersistence).pipe(Context.add(PasskeyManagementPersistence, services.passkeyManagementPersistence));
|
|
9
|
+
const work = Effect.provideContext(body, context);
|
|
10
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
const makePasskeyManagementServices = (database, mapping) => makeTargetPasskeyManagement(database, mapping, configuration);
|
|
14
|
+
function coordinatePasskeyRegistration(acquire, options, body) {
|
|
15
|
+
return Effect.flatMap(acquire, (database) => coordinateTargetPasskeyRegistrationWriter(database, options.mapping, configuration, (transaction, services) => {
|
|
16
|
+
const context = Context.make(PasskeyPersistence, services.passkeyPersistence).pipe(Context.add(options.authority, services.passkeyRegistrationAuthority));
|
|
17
|
+
const work = Effect.provideContext(body, context);
|
|
18
|
+
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
const makePasskeyRegistrationServices = (database, mapping) => makeTargetPasskeyRegistrationWriter(database, mapping, configuration);
|
|
22
|
+
return {
|
|
23
|
+
makePasskeyManagementServices,
|
|
24
|
+
makePasskeyRegistrationServices,
|
|
25
|
+
coordinatePasskeyManagement,
|
|
26
|
+
coordinatePasskeyRegistration
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
export { makePasskeyWriteTarget };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=passkey-write-drivers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey-write-drivers.mjs","names":[],"sources":["../../src/drizzle/passkey-write-drivers.ts"],"sourcesContent":["import type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport { PasskeyManagementPersistence, PasskeyPersistence } from \"@yielded/auth/Passkey\";\nimport type { Table } from \"drizzle-orm\";\nimport { Context, Effect } from \"effect\";\n\nimport type { PasskeyMappingSource } from \"./passkey-model\";\nimport type { PasskeyCoordinatorError, PasskeyTargetConfiguration } from \"./passkey-target\";\nimport type {\n PasskeyManagementMapping,\n PasskeyRegistrationMapping,\n PasskeyRegistrationWriter,\n} from \"./passkey-write-model\";\nimport {\n coordinateTargetPasskeyManagement,\n coordinateTargetPasskeyRegistrationWriter,\n makeTargetPasskeyManagement,\n makeTargetPasskeyRegistrationWriter,\n} from \"./passkey-write-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n// oxlint-disable-next-line no-explicit-any -- inspect the installed concrete transaction callback.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\nexport const makePasskeyWriteTarget = <\n D,\n T extends Table,\n Extra = unknown,\n Synchronous extends boolean = false,\n>(\n configuration: PasskeyTargetConfiguration,\n) => {\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Command extends T,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, O, H, M, Flow, Admission, Charge, Command, N> & Extra,\n RSetup\n >;\n readonly transaction?: never;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<PasskeyPersistence | PasskeyManagementPersistence> : R\n >,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true\n ? never\n : Exclude<R, PasskeyPersistence | PasskeyManagementPersistence>)\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Command extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, O, H, M, Flow, Admission, Charge, Command, N> & Extra,\n RSetup\n >;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true\n ? NoInfer<PasskeyPersistence | PasskeyManagementPersistence | TxId>\n : R\n >,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true\n ? never\n : Exclude<R, PasskeyPersistence | PasskeyManagementPersistence | TxId>)\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyManagement<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Command extends T,\n N,\n A,\n E,\n R,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, O, H, M, Flow, Admission, Charge, Command, N> & Extra,\n RSetup\n >;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | Exclude<R, PasskeyPersistence | PasskeyManagementPersistence>\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetPasskeyManagement(\n database,\n options.mapping,\n configuration,\n (transaction: TransactionOf<Database>, services) => {\n const context = Context.make(PasskeyPersistence, services.passkeyPersistence).pipe(\n Context.add(PasskeyManagementPersistence, services.passkeyManagementPersistence),\n );\n\n const work = Effect.provideContext(body, context);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n\n const makePasskeyManagementServices = <\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Command extends T,\n N,\n RSetup = never,\n >(\n database: Database,\n mapping: PasskeyMappingSource<\n PasskeyManagementMapping<S, C, F, O, H, M, Flow, Admission, Charge, Command, N> & Extra,\n RSetup\n >,\n ) => makeTargetPasskeyManagement(database, mapping, configuration);\n\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<PasskeyPersistence | AuthorityId> : R\n >,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence | AuthorityId>)\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<PasskeyPersistence | AuthorityId | TxId> : R\n >,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, PasskeyPersistence | AuthorityId | TxId>)\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n >;\n function coordinatePasskeyRegistration<\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n N,\n Value,\n A,\n E,\n R,\n AuthorityId,\n TxId,\n TxShape,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n RSetup\n >;\n readonly authority: Context.Key<AuthorityId, PasskeyRegistrationWriter<Value>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n PasskeyCoordinatorError<E> | DatabaseError,\n Exclude<R, PasskeyPersistence | AuthorityId> | LifecycleHooks | RSetup | DatabaseRequirements\n > {\n return Effect.flatMap(acquire, (database) =>\n coordinateTargetPasskeyRegistrationWriter(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: import(\"./passkey-write-model\").PasskeyRegistrationServices<Value>,\n ) => {\n const context = Context.make(PasskeyPersistence, services.passkeyPersistence).pipe(\n Context.add(options.authority, services.passkeyRegistrationAuthority),\n );\n\n const work = Effect.provideContext(body, context);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ),\n );\n }\n\n const makePasskeyRegistrationServices = <\n Database extends D,\n S extends T,\n C extends T,\n F extends T,\n O extends T,\n H extends T,\n M extends T,\n Flow extends T,\n Admission extends T,\n Charge extends T,\n Intent extends T,\n N,\n Value,\n RSetup = never,\n >(\n database: Database,\n mapping: PasskeyMappingSource<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n RSetup\n >,\n ) =>\n makeTargetPasskeyRegistrationWriter<\n PasskeyRegistrationMapping<S, C, F, O, H, M, Flow, Admission, Charge, Intent, N, Value> &\n Extra,\n Value,\n RSetup\n >(database, mapping, configuration);\n\n return {\n makePasskeyManagementServices,\n makePasskeyRegistrationServices,\n coordinatePasskeyManagement,\n coordinatePasskeyRegistration,\n };\n};\n"],"mappings":";;;;AAwBA,MAAa,0BAMX,kBACG;CA2FH,SAAS,4BAsBP,SACA,SAOA,MAQA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,kCACE,UACA,QAAQ,SACR,gBACC,aAAsC,aAAa;GAClD,MAAM,UAAU,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB,CAAC,CAAC,KAC5E,QAAQ,IAAI,8BAA8B,SAAS,4BAA4B,CACjF;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,OAAO;GAEhD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAEA,MAAM,iCAeJ,UACA,YAIG,4BAA4B,UAAU,SAAS,aAAa;CA8FjE,SAAS,8BAwBP,SACA,SASA,MAKA;EACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,0CACE,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,UAAU,QAAQ,KAAK,oBAAoB,SAAS,kBAAkB,CAAC,CAAC,KAC5E,QAAQ,IAAI,QAAQ,WAAW,SAAS,4BAA4B,CACtE;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,OAAO;GAEhD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CACF;CACF;CAEA,MAAM,mCAgBJ,UACA,YAMA,oCAKE,UAAU,SAAS,aAAa;CAEpC,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DrizzleTableModel } from "./table-model.mjs";
|
|
2
|
+
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
3
|
+
import { PasskeyCredentialInsert, PasskeyInvalidationInput, PasskeyManagementServices, PasskeyRegistrationServices, PasskeyRegistrationWriter, requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints } from "@yielded/auth-persistence/Adapter";
|
|
4
|
+
import { InferInsertModel, SQL, Table } from "drizzle-orm";
|
|
5
|
+
//#region src/drizzle/passkey-write-model.d.ts
|
|
6
|
+
export type PasskeyWriteTables<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, N> = Shared.PasskeyWriteTables<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<O>, DrizzleTableModel<H>, N, SQL>;
|
|
7
|
+
export type PasskeyInvalidationMutation<N> = Shared.PasskeyInvalidationMutation<N, SQL>;
|
|
8
|
+
/** Same-owner updates for consumer session/pending tables. No external effects or callbacks after commit. */
|
|
9
|
+
export declare const passkeyInvalidationMutation: <T extends Table, N>(input: {
|
|
10
|
+
readonly table: T;
|
|
11
|
+
readonly where: (input: Shared.PasskeyInvalidationInput<N>) => SQL;
|
|
12
|
+
readonly values: (input: Shared.PasskeyInvalidationInput<N>) => Partial<InferInsertModel<T>>;
|
|
13
|
+
readonly postcondition: (input: Shared.PasskeyInvalidationInput<N>) => SQL;
|
|
14
|
+
}) => PasskeyInvalidationMutation<N>;
|
|
15
|
+
export type PasskeyCommandTable<T extends Table, N> = Shared.PasskeyCommandTable<DrizzleTableModel<T>, N>;
|
|
16
|
+
export type PasskeyManagementMapping<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, M extends Table, Flow extends Table, A extends Table, Charge extends Table, Command extends Table, N> = Shared.PasskeyManagementMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<O>, DrizzleTableModel<H>, DrizzleTableModel<M>, DrizzleTableModel<Flow>, DrizzleTableModel<A>, DrizzleTableModel<Charge>, DrizzleTableModel<Command>, N, SQL>;
|
|
17
|
+
export type PasskeyRegistrationMapping<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, M extends Table, Flow extends Table, A extends Table, Charge extends Table, Intent extends Table, N, R> = Shared.PasskeyRegistrationMapping<DrizzleTableModel<S>, DrizzleTableModel<C>, DrizzleTableModel<F>, DrizzleTableModel<O>, DrizzleTableModel<H>, DrizzleTableModel<M>, DrizzleTableModel<Flow>, DrizzleTableModel<A>, DrizzleTableModel<Charge>, DrizzleTableModel<Intent>, N, R, SQL>;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { type PasskeyCredentialInsert, type PasskeyInvalidationInput, type PasskeyManagementServices, type PasskeyRegistrationServices, type PasskeyRegistrationWriter, requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints };
|
|
20
|
+
//# sourceMappingURL=passkey-write-model.d.mts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
2
|
+
import { requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints } from "@yielded/auth-persistence/Adapter";
|
|
3
|
+
//#region src/drizzle/passkey-write-model.ts
|
|
4
|
+
/** Same-owner updates for consumer session/pending tables. No external effects or callbacks after commit. */
|
|
5
|
+
const passkeyInvalidationMutation = (input) => Shared.passkeyInvalidationMutation(input);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { passkeyInvalidationMutation, requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=passkey-write-model.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey-write-model.mjs","names":[],"sources":["../../src/drizzle/passkey-write-model.ts"],"sourcesContent":["import * as Shared from \"@yielded/auth-persistence/Adapter\";\nimport type { InferInsertModel, SQL, Table } from \"drizzle-orm\";\n\nimport type { DrizzleTableModel } from \"./table-model\";\n\nexport {\n type PasskeyCredentialInsert,\n type PasskeyInvalidationInput,\n requiredPasskeyManagementConstraints,\n type PasskeyManagementServices,\n type PasskeyRegistrationWriter,\n type PasskeyRegistrationServices,\n requiredPasskeyRegistrationWriteConstraints,\n} from \"@yielded/auth-persistence/Adapter\";\n\nexport type PasskeyWriteTables<\n S extends Table,\n C extends Table,\n F extends Table,\n O extends Table,\n H extends Table,\n N,\n> = Shared.PasskeyWriteTables<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<O>,\n DrizzleTableModel<H>,\n N,\n SQL\n>;\n\nexport type PasskeyInvalidationMutation<N> = Shared.PasskeyInvalidationMutation<N, SQL>;\n\n/** Same-owner updates for consumer session/pending tables. No external effects or callbacks after commit. */\nexport const passkeyInvalidationMutation = <T extends Table, N>(input: {\n readonly table: T;\n readonly where: (input: Shared.PasskeyInvalidationInput<N>) => SQL;\n readonly values: (input: Shared.PasskeyInvalidationInput<N>) => Partial<InferInsertModel<T>>;\n readonly postcondition: (input: Shared.PasskeyInvalidationInput<N>) => SQL;\n}): PasskeyInvalidationMutation<N> =>\n Shared.passkeyInvalidationMutation<DrizzleTableModel<T>, N, SQL>(input);\n\nexport type PasskeyCommandTable<T extends Table, N> = Shared.PasskeyCommandTable<\n DrizzleTableModel<T>,\n N\n>;\n\nexport type PasskeyManagementMapping<\n S extends Table,\n C extends Table,\n F extends Table,\n O extends Table,\n H extends Table,\n M extends Table,\n Flow extends Table,\n A extends Table,\n Charge extends Table,\n Command extends Table,\n N,\n> = Shared.PasskeyManagementMapping<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<O>,\n DrizzleTableModel<H>,\n DrizzleTableModel<M>,\n DrizzleTableModel<Flow>,\n DrizzleTableModel<A>,\n DrizzleTableModel<Charge>,\n DrizzleTableModel<Command>,\n N,\n SQL\n>;\n\nexport type PasskeyRegistrationMapping<\n S extends Table,\n C extends Table,\n F extends Table,\n O extends Table,\n H extends Table,\n M extends Table,\n Flow extends Table,\n A extends Table,\n Charge extends Table,\n Intent extends Table,\n N,\n R,\n> = Shared.PasskeyRegistrationMapping<\n DrizzleTableModel<S>,\n DrizzleTableModel<C>,\n DrizzleTableModel<F>,\n DrizzleTableModel<O>,\n DrizzleTableModel<H>,\n DrizzleTableModel<M>,\n DrizzleTableModel<Flow>,\n DrizzleTableModel<A>,\n DrizzleTableModel<Charge>,\n DrizzleTableModel<Intent>,\n N,\n R,\n SQL\n>;\n"],"mappings":";;;;AAmCA,MAAa,+BAAmD,UAM9D,OAAO,4BAA0D,KAAK"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
//#region src/drizzle/passkey-write-target.d.ts
|
|
2
|
+
declare const passkeyManagementPersistenceLayer: <E, R>(services: import("effect/Effect").Effect<import("@yielded/auth-persistence/Adapter").PasskeyManagementServices, E, R>) => import("effect/Layer").Layer<import("@yielded/auth/Passkey").PasskeyManagementPersistence, E, Exclude<R, import("effect/Scope").Scope>>, makeTargetPasskeyManagement: <M, RSetup>(database: any, source: import("@yielded/auth-persistence/Adapter").PasskeyMappingSource<M, RSetup>, configuration: import("@yielded/auth-persistence/Adapter").PasskeyTargetConfiguration) => import("effect/Effect").Effect<import("@yielded/auth-persistence/Adapter").PasskeyManagementServices, import("@yielded/auth/Passkey").PasskeyConfigurationError | import("@yielded/auth-persistence/Adapter").PersistenceMappingError, RSetup | import("@yielded/auth/Hooks").LifecycleHooks>, makeTargetPasskeyRegistrationWriter: <M, R, RSetup>(database: any, source: import("@yielded/auth-persistence/Adapter").PasskeyMappingSource<M, RSetup>, configuration: import("@yielded/auth-persistence/Adapter").PasskeyTargetConfiguration) => import("effect/Effect").Effect<import("@yielded/auth-persistence/Adapter").PasskeyRegistrationServices<R>, import("@yielded/auth/Passkey").PasskeyConfigurationError | import("@yielded/auth-persistence/Adapter").PersistenceMappingError, RSetup | import("@yielded/auth/Hooks").LifecycleHooks>, coordinateTargetPasskeyManagement: <M, RSetup, Transaction, A, E, R>(database: any, source: import("@yielded/auth-persistence/Adapter").PasskeyMappingSource<M, RSetup>, configuration: import("@yielded/auth-persistence/Adapter").PasskeyTargetConfiguration, body: (transaction: Transaction, services: import("@yielded/auth-persistence/Adapter").PasskeyManagementServices, append: (statement: import("effect/unstable/sql/Statement").Statement<unknown>) => void) => import("effect/Effect").Effect<A, E, R>) => import("effect/Effect").Effect<A, import("@yielded/auth-persistence/Adapter").PasskeyCoordinatorError<E>, R | RSetup | import("@yielded/auth/Hooks").LifecycleHooks>, coordinateTargetPasskeyRegistrationWriter: <M, Value, RSetup, Transaction, A, E, R>(database: any, source: import("@yielded/auth-persistence/Adapter").PasskeyMappingSource<M, RSetup>, configuration: import("@yielded/auth-persistence/Adapter").PasskeyTargetConfiguration, body: (transaction: Transaction, services: import("@yielded/auth-persistence/Adapter").PasskeyRegistrationServices<Value>, append: (statement: import("effect/unstable/sql/Statement").Statement<unknown>) => void) => import("effect/Effect").Effect<A, E, R>) => import("effect/Effect").Effect<A, import("@yielded/auth-persistence/Adapter").PasskeyCoordinatorError<E>, R | RSetup | import("@yielded/auth/Hooks").LifecycleHooks>;
|
|
3
|
+
//#endregion
|
|
4
|
+
export { passkeyManagementPersistenceLayer };
|
|
5
|
+
//# sourceMappingURL=passkey-write-target.d.mts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { passkeyKernel } from "./passkey-kernel.mjs";
|
|
2
|
+
//#region src/drizzle/passkey-write-target.ts
|
|
3
|
+
const { passkeyManagementPersistenceLayer, makeTargetPasskeyManagement, makeTargetPasskeyRegistrationWriter, coordinateTargetPasskeyManagement, coordinateTargetPasskeyRegistrationWriter } = passkeyKernel.writeTarget;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { coordinateTargetPasskeyManagement, coordinateTargetPasskeyRegistrationWriter, makeTargetPasskeyManagement, makeTargetPasskeyRegistrationWriter, passkeyManagementPersistenceLayer };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=passkey-write-target.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey-write-target.mjs","names":[],"sources":["../../src/drizzle/passkey-write-target.ts"],"sourcesContent":["import { passkeyKernel } from \"./passkey-kernel\";\n\nexport const {\n passkeyManagementPersistenceLayer,\n makeTargetPasskeyManagement,\n makeTargetPasskeyRegistrationWriter,\n coordinateTargetPasskeyManagement,\n coordinateTargetPasskeyRegistrationWriter,\n} = passkeyKernel.writeTarget;\n"],"mappings":";;AAEA,MAAa,EACX,mCACA,6BACA,qCACA,mCACA,8CACE,cAAc"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DrizzleTableModel } from "./table-model.mjs";
|
|
2
|
+
import * as Shared from "@yielded/auth-persistence/Adapter";
|
|
3
|
+
import { PasswordAttemptAction, PasswordAttemptRecord, PasswordAttemptState, PasswordConstraintClassifier, PasswordRateScopeKind, PasswordRegistrationConstraintClassifier, PasswordRegistrationIntent, PasswordRegistrationState, PasswordScopeKeys, RequiredPasswordConstraints, RequiredPasswordRegistrationConstraints, requiredPasswordConstraints, requiredPasswordRegistrationConstraints } from "@yielded/auth-persistence/Adapter";
|
|
4
|
+
import { SQL, Table } from "drizzle-orm";
|
|
5
|
+
//#region src/drizzle/password-model.d.ts
|
|
6
|
+
export type PasswordSubjectTable<Subject extends Table, _NativeSubjectId> = Shared.PasswordSubjectTable<DrizzleTableModel<Subject>, _NativeSubjectId>;
|
|
7
|
+
export type PasswordIdentifierTable<Identifier extends Table, NativeSubjectId> = Shared.PasswordIdentifierTable<DrizzleTableModel<Identifier>, NativeSubjectId, SQL>;
|
|
8
|
+
export type PasswordAuthorityCredentialTable<Credential extends Table, NativeSubjectId> = Shared.PasswordAuthorityCredentialTable<DrizzleTableModel<Credential>, NativeSubjectId>;
|
|
9
|
+
export type PasswordCredentialTable<Subject extends Table, Identifier extends Table, Credential extends Table, NativeSubjectId> = Shared.PasswordCredentialTable<DrizzleTableModel<Subject>, DrizzleTableModel<Identifier>, DrizzleTableModel<Credential>, NativeSubjectId>;
|
|
10
|
+
export type PasswordAttemptTable<Attempt extends Table, NativeSubjectId> = Shared.PasswordAttemptTable<DrizzleTableModel<Attempt>, NativeSubjectId>;
|
|
11
|
+
export type PasswordRateScopeTable<RateScope extends Table> = Shared.PasswordRateScopeTable<DrizzleTableModel<RateScope>>;
|
|
12
|
+
export type PasswordChargeTable<Charge extends Table> = Shared.PasswordChargeTable<DrizzleTableModel<Charge>>;
|
|
13
|
+
export type PasswordCommandTable<Command extends Table> = Shared.PasswordCommandTable<DrizzleTableModel<Command>>;
|
|
14
|
+
export type PasswordD1Clock = Shared.PasswordD1Clock<SQL>;
|
|
15
|
+
export type PasswordPersistenceMapping<Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Attempt extends Table, RateScope extends Table, Charge extends Table, Command extends Table, NativeSubjectId> = Shared.PasswordPersistenceMapping<DrizzleTableModel<Subject>, DrizzleTableModel<Identifier>, DrizzleTableModel<Credential>, DrizzleTableModel<AuthorityCredential>, DrizzleTableModel<Attempt>, DrizzleTableModel<RateScope>, DrizzleTableModel<Charge>, DrizzleTableModel<Command>, NativeSubjectId, SQL>;
|
|
16
|
+
export type D1PasswordPersistenceMapping<Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Attempt extends Table, RateScope extends Table, Charge extends Table, Command extends Table, NativeSubjectId> = Shared.D1PasswordPersistenceMapping<DrizzleTableModel<Subject>, DrizzleTableModel<Identifier>, DrizzleTableModel<Credential>, DrizzleTableModel<AuthorityCredential>, DrizzleTableModel<Attempt>, DrizzleTableModel<RateScope>, DrizzleTableModel<Charge>, DrizzleTableModel<Command>, NativeSubjectId, SQL>;
|
|
17
|
+
export type PasswordRegistrationTable<Registration, Request extends Table, NativeSubjectId> = Shared.PasswordRegistrationTable<Registration, DrizzleTableModel<Request>, NativeSubjectId>;
|
|
18
|
+
export type PasswordRegistrationProvisioning<Registration, Subject extends Table, NativeSubjectId> = Shared.PasswordRegistrationProvisioning<Registration, DrizzleTableModel<Subject>, NativeSubjectId>;
|
|
19
|
+
export type PasswordRegistrationMapping<Registration, Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Request extends Table, NativeSubjectId> = Shared.PasswordRegistrationMapping<Registration, DrizzleTableModel<Subject>, DrizzleTableModel<Identifier>, DrizzleTableModel<Credential>, DrizzleTableModel<AuthorityCredential>, DrizzleTableModel<Request>, NativeSubjectId, SQL>;
|
|
20
|
+
export type AnyPasswordPersistenceMapping = PasswordPersistenceMapping<Table, Table, Table, Table, Table, Table, Table, Table, unknown>;
|
|
21
|
+
export type AnyPasswordRegistrationMapping<Registration = unknown> = PasswordRegistrationMapping<Registration, Table, Table, Table, Table, Table, unknown>;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { type PasswordAttemptAction, type PasswordAttemptRecord, type PasswordAttemptState, type PasswordConstraintClassifier, type PasswordRateScopeKind, type PasswordRegistrationConstraintClassifier, type PasswordRegistrationIntent, type PasswordRegistrationState, type PasswordScopeKeys, type RequiredPasswordConstraints, type RequiredPasswordRegistrationConstraints, requiredPasswordConstraints, requiredPasswordRegistrationConstraints };
|
|
24
|
+
//# sourceMappingURL=password-model.d.mts.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { D1PasswordPersistenceMapping, PasswordPersistenceMapping } from "./password-model.mjs";
|
|
2
|
+
import { PersistenceMappingError } from "./model.mjs";
|
|
3
|
+
import { D1ProofPersistenceMapping, ProofPersistenceMapping, RequiredProofConstraints } from "./proof-model.mjs";
|
|
4
|
+
import { InferInsertModel, InferSelectModel, SQL, Table } from "drizzle-orm";
|
|
5
|
+
import { Effect } from "effect";
|
|
6
|
+
import { PasswordPreparedReady, PasswordPreparedReservation, PasswordPreparedVersion } from "@yielded/auth/Password";
|
|
7
|
+
//#region src/drizzle/password-prepared-model.d.ts
|
|
8
|
+
type ColumnKey<T extends Table> = Extract<keyof T["_"]["columns"], string>;
|
|
9
|
+
export type PasswordPreparedState = "Preparing" | "Ready" | "Consumed" | "Cancelled" | "Expired";
|
|
10
|
+
/** The retained intent is also its nonrefundable admission charge. Scalar identity,
|
|
11
|
+
* scope and timing columns survive sensitive snapshot/digest erasure. */
|
|
12
|
+
export interface PasswordPreparedIntentTable<Intent extends Table, NativeSubjectId> {
|
|
13
|
+
readonly table: Intent;
|
|
14
|
+
readonly moduleId: ColumnKey<Intent>;
|
|
15
|
+
readonly intentId: ColumnKey<Intent>;
|
|
16
|
+
readonly commandId: ColumnKey<Intent>;
|
|
17
|
+
readonly subjectId: ColumnKey<Intent>;
|
|
18
|
+
readonly action: ColumnKey<Intent>;
|
|
19
|
+
readonly generation: ColumnKey<Intent>;
|
|
20
|
+
readonly version: ColumnKey<Intent>;
|
|
21
|
+
readonly state: ColumnKey<Intent>;
|
|
22
|
+
readonly digest: ColumnKey<Intent>;
|
|
23
|
+
readonly snapshot: ColumnKey<Intent>;
|
|
24
|
+
readonly identifierScope: ColumnKey<Intent>;
|
|
25
|
+
readonly createdAt: ColumnKey<Intent>;
|
|
26
|
+
readonly admittedAt: ColumnKey<Intent>;
|
|
27
|
+
readonly admissionRetainUntil: ColumnKey<Intent>;
|
|
28
|
+
readonly preparationExpiresAt: ColumnKey<Intent>;
|
|
29
|
+
readonly expiresAt: ColumnKey<Intent>;
|
|
30
|
+
readonly retainUntil: ColumnKey<Intent>;
|
|
31
|
+
readonly states: Readonly<Record<PasswordPreparedState, InferSelectModel<Intent>[ColumnKey<Intent>]>>;
|
|
32
|
+
readonly encodeInsert: (input: {
|
|
33
|
+
readonly reservation: PasswordPreparedReservation;
|
|
34
|
+
readonly nativeSubjectId: NativeSubjectId;
|
|
35
|
+
readonly identifierScope: string;
|
|
36
|
+
readonly admittedAtMillis: number;
|
|
37
|
+
readonly admissionRetainUntilMillis: number;
|
|
38
|
+
/** Bounded private core codec output; contains a salted verifier for Change/Reset. */
|
|
39
|
+
readonly snapshot: string;
|
|
40
|
+
}) => InferInsertModel<Intent>;
|
|
41
|
+
readonly encodeReady: (input: {
|
|
42
|
+
readonly ready: PasswordPreparedReady;
|
|
43
|
+
readonly snapshot: string;
|
|
44
|
+
}) => Partial<InferInsertModel<Intent>>;
|
|
45
|
+
/** Erase snapshot and digest, preserving every identity/scope/time column. */
|
|
46
|
+
readonly encodeTerminal: (state: Exclude<PasswordPreparedState, "Preparing" | "Ready">) => Partial<InferInsertModel<Intent>>;
|
|
47
|
+
}
|
|
48
|
+
/** One permanent row per configured module; never one row per attacker input.
|
|
49
|
+
* Native owners lock this before subject → identifier → sorted credentials → intent.
|
|
50
|
+
* It serializes admission and maintenance without process-local locks. */
|
|
51
|
+
export interface PasswordPreparedAdmissionTable<Admission extends Table> {
|
|
52
|
+
readonly table: Admission;
|
|
53
|
+
readonly moduleId: ColumnKey<Admission>;
|
|
54
|
+
readonly intentId: ColumnKey<Admission>;
|
|
55
|
+
readonly admittedAt: ColumnKey<Admission>;
|
|
56
|
+
readonly admissionRetainUntil: ColumnKey<Admission>;
|
|
57
|
+
readonly encodeInsert: (moduleId: string) => InferInsertModel<Admission>;
|
|
58
|
+
}
|
|
59
|
+
export declare const requiredPasswordPreparedConstraints: {
|
|
60
|
+
readonly admission: "unique(admission.moduleId)";
|
|
61
|
+
readonly intent: "unique(intent.moduleId,intent.intentId)";
|
|
62
|
+
readonly command: "unique(intent.moduleId,intent.commandId)";
|
|
63
|
+
readonly digest: "unique(intent.digest)";
|
|
64
|
+
};
|
|
65
|
+
export type RequiredPasswordPreparedConstraints = typeof requiredPasswordPreparedConstraints;
|
|
66
|
+
export interface PasswordPreparedPersistenceMapping<Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Attempt extends Table, RateScope extends Table, Charge extends Table, Command extends Table, Intent extends Table, Admission extends Table, NativeSubjectId> {
|
|
67
|
+
readonly password: PasswordPersistenceMapping<Subject, Identifier, Credential, AuthorityCredential, Attempt, RateScope, Charge, Command, NativeSubjectId>;
|
|
68
|
+
readonly intent: PasswordPreparedIntentTable<Intent, NativeSubjectId>;
|
|
69
|
+
readonly admission: PasswordPreparedAdmissionTable<Admission>;
|
|
70
|
+
readonly constraints: RequiredPasswordPreparedConstraints;
|
|
71
|
+
readonly allocateVersion?: Effect.Effect<PasswordPreparedVersion, PersistenceMappingError>;
|
|
72
|
+
/** Required by synchronous owners, invoked inside their actual transactionSync. */
|
|
73
|
+
readonly allocateVersionSync?: () => PasswordPreparedVersion;
|
|
74
|
+
}
|
|
75
|
+
export type D1PasswordPreparedPersistenceMapping<Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Attempt extends Table, RateScope extends Table, Charge extends Table, Command extends Table, Intent extends Table, Admission extends Table, NativeSubjectId> = PasswordPreparedPersistenceMapping<Subject, Identifier, Credential, AuthorityCredential, Attempt, RateScope, Charge, Command, Intent, Admission, NativeSubjectId> & {
|
|
76
|
+
/** Convert a stored native instant to epoch milliseconds in the same SQL engine. */
|
|
77
|
+
readonly admissionClock: {
|
|
78
|
+
readonly toMillis: (instant: SQL) => SQL;
|
|
79
|
+
};
|
|
80
|
+
readonly password: D1PasswordPersistenceMapping<Subject, Identifier, Credential, AuthorityCredential, Attempt, RateScope, Charge, Command, NativeSubjectId>;
|
|
81
|
+
};
|
|
82
|
+
/** Optional real proof completion authority. Request/delivery/abuse capabilities
|
|
83
|
+
* are not required to complete the original continuation. */
|
|
84
|
+
export type PasswordPreparedProofMapping<Series extends Table, Continuation extends Table, Command extends Table, Subject extends Table, Identifier extends Table, Credential extends Table, NativeSubjectId> = Pick<ProofPersistenceMapping<Table, Series, Table, Continuation, Table, Table, Table, Command, Subject, Identifier, Credential, NativeSubjectId>, "series" | "continuation" | "command" | "authority" | "scopeKeys" | "encodeInstant" | "decodeInstant" | "allocateVersion" | "allocateVersionSync" | "isSeriesConflict" | "isCommandConflict" | "d1"> & {
|
|
85
|
+
readonly constraints: Pick<RequiredProofConstraints, "series" | "continuationId" | "continuationDigest" | "command">;
|
|
86
|
+
};
|
|
87
|
+
export type D1PasswordPreparedProofMapping<Series extends Table, Continuation extends Table, Command extends Table, Subject extends Table, Identifier extends Table, Credential extends Table, NativeSubjectId> = Pick<D1ProofPersistenceMapping<Table, Series, Table, Continuation, Table, Table, Table, Command, Subject, Identifier, Credential, NativeSubjectId>, Exclude<keyof PasswordPreparedProofMapping<Series, Continuation, Command, Subject, Identifier, Credential, NativeSubjectId>, "constraints">> & {
|
|
88
|
+
readonly constraints: PasswordPreparedProofMapping<Series, Continuation, Command, Subject, Identifier, Credential, NativeSubjectId>["constraints"];
|
|
89
|
+
};
|
|
90
|
+
export type AnyPasswordPreparedPersistenceMapping = PasswordPreparedPersistenceMapping<Table, Table, Table, Table, Table, Table, Table, Table, Table, Table, unknown>;
|
|
91
|
+
//#endregion
|
|
92
|
+
//# sourceMappingURL=password-prepared-model.d.mts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/drizzle/password-prepared-model.ts
|
|
2
|
+
const requiredPasswordPreparedConstraints = {
|
|
3
|
+
admission: "unique(admission.moduleId)",
|
|
4
|
+
intent: "unique(intent.moduleId,intent.intentId)",
|
|
5
|
+
command: "unique(intent.moduleId,intent.commandId)",
|
|
6
|
+
digest: "unique(intent.digest)"
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { requiredPasswordPreparedConstraints };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=password-prepared-model.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password-prepared-model.mjs","names":[],"sources":["../../src/drizzle/password-prepared-model.ts"],"sourcesContent":["import type {\n PasswordPreparedReady,\n PasswordPreparedReservation,\n PasswordPreparedVersion,\n} from \"@yielded/auth/Password\";\nimport type { InferInsertModel, InferSelectModel, SQL, Table } from \"drizzle-orm\";\nimport type { Effect } from \"effect\";\n\nimport type { PersistenceMappingError } from \"./model\";\nimport type { D1PasswordPersistenceMapping, PasswordPersistenceMapping } from \"./password-model\";\nimport type {\n D1ProofPersistenceMapping,\n ProofPersistenceMapping,\n RequiredProofConstraints,\n} from \"./proof-model\";\n\ntype ColumnKey<T extends Table> = Extract<keyof T[\"_\"][\"columns\"], string>;\nexport type PasswordPreparedState = \"Preparing\" | \"Ready\" | \"Consumed\" | \"Cancelled\" | \"Expired\";\n\n/** The retained intent is also its nonrefundable admission charge. Scalar identity,\n * scope and timing columns survive sensitive snapshot/digest erasure. */\nexport interface PasswordPreparedIntentTable<Intent extends Table, NativeSubjectId> {\n readonly table: Intent;\n readonly moduleId: ColumnKey<Intent>;\n readonly intentId: ColumnKey<Intent>;\n readonly commandId: ColumnKey<Intent>;\n readonly subjectId: ColumnKey<Intent>;\n readonly action: ColumnKey<Intent>;\n readonly generation: ColumnKey<Intent>;\n readonly version: ColumnKey<Intent>;\n readonly state: ColumnKey<Intent>;\n readonly digest: ColumnKey<Intent>;\n readonly snapshot: ColumnKey<Intent>;\n readonly identifierScope: ColumnKey<Intent>;\n readonly createdAt: ColumnKey<Intent>;\n readonly admittedAt: ColumnKey<Intent>;\n readonly admissionRetainUntil: ColumnKey<Intent>;\n readonly preparationExpiresAt: ColumnKey<Intent>;\n readonly expiresAt: ColumnKey<Intent>;\n readonly retainUntil: ColumnKey<Intent>;\n readonly states: Readonly<\n Record<PasswordPreparedState, InferSelectModel<Intent>[ColumnKey<Intent>]>\n >;\n readonly encodeInsert: (input: {\n readonly reservation: PasswordPreparedReservation;\n readonly nativeSubjectId: NativeSubjectId;\n readonly identifierScope: string;\n readonly admittedAtMillis: number;\n readonly admissionRetainUntilMillis: number;\n /** Bounded private core codec output; contains a salted verifier for Change/Reset. */\n readonly snapshot: string;\n }) => InferInsertModel<Intent>;\n readonly encodeReady: (input: {\n readonly ready: PasswordPreparedReady;\n readonly snapshot: string;\n }) => Partial<InferInsertModel<Intent>>;\n /** Erase snapshot and digest, preserving every identity/scope/time column. */\n readonly encodeTerminal: (\n state: Exclude<PasswordPreparedState, \"Preparing\" | \"Ready\">,\n ) => Partial<InferInsertModel<Intent>>;\n}\n\n/** One permanent row per configured module; never one row per attacker input.\n * Native owners lock this before subject → identifier → sorted credentials → intent.\n * It serializes admission and maintenance without process-local locks. */\nexport interface PasswordPreparedAdmissionTable<Admission extends Table> {\n readonly table: Admission;\n readonly moduleId: ColumnKey<Admission>;\n readonly intentId: ColumnKey<Admission>;\n readonly admittedAt: ColumnKey<Admission>;\n readonly admissionRetainUntil: ColumnKey<Admission>;\n readonly encodeInsert: (moduleId: string) => InferInsertModel<Admission>;\n}\n\nexport const requiredPasswordPreparedConstraints = {\n admission: \"unique(admission.moduleId)\",\n intent: \"unique(intent.moduleId,intent.intentId)\",\n command: \"unique(intent.moduleId,intent.commandId)\",\n digest: \"unique(intent.digest)\",\n} as const;\n\nexport type RequiredPasswordPreparedConstraints = typeof requiredPasswordPreparedConstraints;\n\nexport interface PasswordPreparedPersistenceMapping<\n Subject extends Table,\n Identifier extends Table,\n Credential extends Table,\n AuthorityCredential extends Table,\n Attempt extends Table,\n RateScope extends Table,\n Charge extends Table,\n Command extends Table,\n Intent extends Table,\n Admission extends Table,\n NativeSubjectId,\n> {\n readonly password: PasswordPersistenceMapping<\n Subject,\n Identifier,\n Credential,\n AuthorityCredential,\n Attempt,\n RateScope,\n Charge,\n Command,\n NativeSubjectId\n >;\n readonly intent: PasswordPreparedIntentTable<Intent, NativeSubjectId>;\n readonly admission: PasswordPreparedAdmissionTable<Admission>;\n readonly constraints: RequiredPasswordPreparedConstraints;\n readonly allocateVersion?: Effect.Effect<PasswordPreparedVersion, PersistenceMappingError>;\n /** Required by synchronous owners, invoked inside their actual transactionSync. */\n readonly allocateVersionSync?: () => PasswordPreparedVersion;\n}\n\nexport type D1PasswordPreparedPersistenceMapping<\n Subject extends Table,\n Identifier extends Table,\n Credential extends Table,\n AuthorityCredential extends Table,\n Attempt extends Table,\n RateScope extends Table,\n Charge extends Table,\n Command extends Table,\n Intent extends Table,\n Admission extends Table,\n NativeSubjectId,\n> = PasswordPreparedPersistenceMapping<\n Subject,\n Identifier,\n Credential,\n AuthorityCredential,\n Attempt,\n RateScope,\n Charge,\n Command,\n Intent,\n Admission,\n NativeSubjectId\n> & {\n /** Convert a stored native instant to epoch milliseconds in the same SQL engine. */\n readonly admissionClock: { readonly toMillis: (instant: SQL) => SQL };\n readonly password: D1PasswordPersistenceMapping<\n Subject,\n Identifier,\n Credential,\n AuthorityCredential,\n Attempt,\n RateScope,\n Charge,\n Command,\n NativeSubjectId\n >;\n};\n\n/** Optional real proof completion authority. Request/delivery/abuse capabilities\n * are not required to complete the original continuation. */\nexport type PasswordPreparedProofMapping<\n Series extends Table,\n Continuation extends Table,\n Command extends Table,\n Subject extends Table,\n Identifier extends Table,\n Credential extends Table,\n NativeSubjectId,\n> = Pick<\n ProofPersistenceMapping<\n Table,\n Series,\n Table,\n Continuation,\n Table,\n Table,\n Table,\n Command,\n Subject,\n Identifier,\n Credential,\n NativeSubjectId\n >,\n | \"series\"\n | \"continuation\"\n | \"command\"\n | \"authority\"\n | \"scopeKeys\"\n | \"encodeInstant\"\n | \"decodeInstant\"\n | \"allocateVersion\"\n | \"allocateVersionSync\"\n | \"isSeriesConflict\"\n | \"isCommandConflict\"\n | \"d1\"\n> & {\n readonly constraints: Pick<\n RequiredProofConstraints,\n \"series\" | \"continuationId\" | \"continuationDigest\" | \"command\"\n >;\n};\n\nexport type D1PasswordPreparedProofMapping<\n Series extends Table,\n Continuation extends Table,\n Command extends Table,\n Subject extends Table,\n Identifier extends Table,\n Credential extends Table,\n NativeSubjectId,\n> = Pick<\n D1ProofPersistenceMapping<\n Table,\n Series,\n Table,\n Continuation,\n Table,\n Table,\n Table,\n Command,\n Subject,\n Identifier,\n Credential,\n NativeSubjectId\n >,\n Exclude<\n keyof PasswordPreparedProofMapping<\n Series,\n Continuation,\n Command,\n Subject,\n Identifier,\n Credential,\n NativeSubjectId\n >,\n \"constraints\"\n >\n> & {\n readonly constraints: PasswordPreparedProofMapping<\n Series,\n Continuation,\n Command,\n Subject,\n Identifier,\n Credential,\n NativeSubjectId\n >[\"constraints\"];\n};\n\nexport type AnyPasswordPreparedPersistenceMapping = PasswordPreparedPersistenceMapping<\n Table,\n Table,\n Table,\n Table,\n Table,\n Table,\n Table,\n Table,\n Table,\n Table,\n unknown\n>;\n"],"mappings":";AA0EA,MAAa,sCAAsC;CACjD,WAAW;CACX,QAAQ;CACR,SAAS;CACT,QAAQ;AACV"}
|