@yielded/auth 0.1.0-beta.1
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/LICENSE +21 -0
- package/README.md +18 -0
- package/dist/Atom.d.mts +5 -0
- package/dist/Atom.mjs +5 -0
- package/dist/Auth.d.mts +9 -0
- package/dist/Auth.mjs +7 -0
- package/dist/AuthContract.d.mts +4 -0
- package/dist/AuthContract.mjs +4 -0
- package/dist/AuthSession.d.mts +82 -0
- package/dist/AuthSession.mjs +138 -0
- package/dist/AuthSession.mjs.map +1 -0
- package/dist/AuthStore.d.mts +68 -0
- package/dist/AuthStore.mjs +194 -0
- package/dist/AuthStore.mjs.map +1 -0
- package/dist/AuthTokenCodec.d.mts +40 -0
- package/dist/AuthTokenCodec.mjs +104 -0
- package/dist/AuthTokenCodec.mjs.map +1 -0
- package/dist/Client.d.mts +2 -0
- package/dist/Client.mjs +2 -0
- package/dist/Cloudflare.d.mts +89 -0
- package/dist/Cloudflare.mjs +166 -0
- package/dist/Cloudflare.mjs.map +1 -0
- package/dist/Drizzle.d.mts +28 -0
- package/dist/Drizzle.mjs +27 -0
- package/dist/DrizzleD1.d.mts +935 -0
- package/dist/DrizzleD1.mjs +29 -0
- package/dist/DrizzleD1.mjs.map +1 -0
- package/dist/DrizzleLibsql.d.mts +2288 -0
- package/dist/DrizzleLibsql.mjs +85 -0
- package/dist/DrizzleLibsql.mjs.map +1 -0
- package/dist/DrizzleMysql2.d.mts +1809 -0
- package/dist/DrizzleMysql2.mjs +55 -0
- package/dist/DrizzleMysql2.mjs.map +1 -0
- package/dist/DrizzlePglite.d.mts +1808 -0
- package/dist/DrizzlePglite.mjs +45 -0
- package/dist/DrizzlePglite.mjs.map +1 -0
- package/dist/DrizzlePostgres.d.mts +1808 -0
- package/dist/DrizzlePostgres.mjs +45 -0
- package/dist/DrizzlePostgres.mjs.map +1 -0
- package/dist/DrizzleSqliteBun.d.mts +2287 -0
- package/dist/DrizzleSqliteBun.mjs +62 -0
- package/dist/DrizzleSqliteBun.mjs.map +1 -0
- package/dist/DrizzleSqliteDo.d.mts +2343 -0
- package/dist/DrizzleSqliteDo.mjs +105 -0
- package/dist/DrizzleSqliteDo.mjs.map +1 -0
- package/dist/DrizzleSqliteNode.d.mts +2287 -0
- package/dist/DrizzleSqliteNode.mjs +62 -0
- package/dist/DrizzleSqliteNode.mjs.map +1 -0
- package/dist/DrizzleSqliteWasm.d.mts +2287 -0
- package/dist/DrizzleSqliteWasm.mjs +62 -0
- package/dist/DrizzleSqliteWasm.mjs.map +1 -0
- package/dist/Email.d.mts +12 -0
- package/dist/Email.mjs +11 -0
- package/dist/EmailOtp.d.mts +42 -0
- package/dist/EmailOtp.mjs +120 -0
- package/dist/EmailOtp.mjs.map +1 -0
- package/dist/EmailOtpSender.d.mts +22 -0
- package/dist/EmailOtpSender.mjs +18 -0
- package/dist/EmailOtpSender.mjs.map +1 -0
- package/dist/Errors.d.mts +55 -0
- package/dist/Errors.mjs +31 -0
- package/dist/Errors.mjs.map +1 -0
- package/dist/GitHub.d.mts +5 -0
- package/dist/GitHub.mjs +4 -0
- package/dist/Hooks.d.mts +6 -0
- package/dist/Hooks.mjs +6 -0
- package/dist/Http.d.mts +12 -0
- package/dist/Http.mjs +12 -0
- package/dist/HttpServer.d.mts +103 -0
- package/dist/HttpServer.mjs +326 -0
- package/dist/HttpServer.mjs.map +1 -0
- package/dist/Identity.d.mts +9 -0
- package/dist/Identity.mjs +9 -0
- package/dist/IdentityResolver.d.mts +16 -0
- package/dist/IdentityResolver.mjs +12 -0
- package/dist/IdentityResolver.mjs.map +1 -0
- package/dist/OAuth.d.mts +36 -0
- package/dist/OAuth.mjs +35 -0
- package/dist/OpenIdClient.d.mts +3 -0
- package/dist/OpenIdClient.mjs +3 -0
- package/dist/OpenIdClientConnected.d.mts +4 -0
- package/dist/OpenIdClientConnected.mjs +3 -0
- package/dist/OperationHttp.d.mts +3 -0
- package/dist/OperationHttp.mjs +3 -0
- package/dist/OperationHttpClient.d.mts +2 -0
- package/dist/OperationHttpClient.mjs +2 -0
- package/dist/OperationHttpServer.d.mts +5 -0
- package/dist/OperationHttpServer.mjs +4 -0
- package/dist/Operations.d.mts +8 -0
- package/dist/Operations.mjs +8 -0
- package/dist/Passkey.d.mts +12 -0
- package/dist/Passkey.mjs +12 -0
- package/dist/PasskeyBrowser.d.mts +4 -0
- package/dist/PasskeyBrowser.mjs +4 -0
- package/dist/PasskeyContract.d.mts +641 -0
- package/dist/PasskeyContract.mjs +174 -0
- package/dist/PasskeyContract.mjs.map +1 -0
- package/dist/PasskeyPassword.d.mts +412 -0
- package/dist/PasskeyPassword.mjs +174 -0
- package/dist/PasskeyPassword.mjs.map +1 -0
- package/dist/PasskeySimpleWebAuthn.d.mts +3 -0
- package/dist/PasskeySimpleWebAuthn.mjs +3 -0
- package/dist/Password.d.mts +19 -0
- package/dist/Password.mjs +17 -0
- package/dist/PasswordAuth.d.mts +45 -0
- package/dist/PasswordAuth.mjs +79 -0
- package/dist/PasswordAuth.mjs.map +1 -0
- package/dist/PasswordCredentialStore.d.mts +46 -0
- package/dist/PasswordCredentialStore.mjs +62 -0
- package/dist/PasswordCredentialStore.mjs.map +1 -0
- package/dist/PasswordHasher.d.mts +31 -0
- package/dist/PasswordHasher.mjs +76 -0
- package/dist/PasswordHasher.mjs.map +1 -0
- package/dist/PhoneOtp.d.mts +11 -0
- package/dist/PhoneOtp.mjs +11 -0
- package/dist/Policy.d.mts +52 -0
- package/dist/Policy.mjs +36 -0
- package/dist/Policy.mjs.map +1 -0
- package/dist/Proofs.d.mts +14 -0
- package/dist/Proofs.mjs +13 -0
- package/dist/Rpc.d.mts +12 -0
- package/dist/Rpc.mjs +11 -0
- package/dist/Rpc.mjs.map +1 -0
- package/dist/Schema.d.mts +160 -0
- package/dist/Schema.mjs +141 -0
- package/dist/Schema.mjs.map +1 -0
- package/dist/SessionContract.d.mts +3 -0
- package/dist/SessionContract.mjs +3 -0
- package/dist/Sessions.d.mts +14 -0
- package/dist/Sessions.mjs +12 -0
- package/dist/Testing.d.mts +7 -0
- package/dist/Testing.mjs +7 -0
- package/dist/Totp.d.mts +8 -0
- package/dist/Totp.mjs +8 -0
- package/dist/TotpContract.d.mts +318 -0
- package/dist/TotpContract.mjs +119 -0
- package/dist/TotpContract.mjs.map +1 -0
- package/dist/WebCrypto.d.mts +28 -0
- package/dist/WebCrypto.mjs +42 -0
- package/dist/WebCrypto.mjs.map +1 -0
- package/dist/Workflows.d.mts +16 -0
- package/dist/Workflows.mjs +11 -0
- package/dist/Workflows.mjs.map +1 -0
- package/dist/atom/AuthAtomLifetime.d.mts +35 -0
- package/dist/atom/AuthAtomLifetime.mjs +50 -0
- package/dist/atom/AuthAtomLifetime.mjs.map +1 -0
- package/dist/atom/AuthAtomWorkflow.d.mts +17 -0
- package/dist/atom/AuthAtomWorkflow.mjs +9 -0
- package/dist/atom/AuthAtomWorkflow.mjs.map +1 -0
- package/dist/atom/client.d.mts +43 -0
- package/dist/atom/client.mjs +168 -0
- package/dist/atom/client.mjs.map +1 -0
- package/dist/atom/operations.d.mts +35 -0
- package/dist/atom/operations.mjs +58 -0
- package/dist/atom/operations.mjs.map +1 -0
- package/dist/atom/scoped-runtime.mjs +151 -0
- package/dist/atom/scoped-runtime.mjs.map +1 -0
- package/dist/auth/Auth.d.mts +7806 -0
- package/dist/auth/Auth.mjs +141 -0
- package/dist/auth/Auth.mjs.map +1 -0
- package/dist/auth/AuthConfigurationError.d.mts +10 -0
- package/dist/auth/AuthConfigurationError.mjs +14 -0
- package/dist/auth/AuthConfigurationError.mjs.map +1 -0
- package/dist/auth/AuthRequest.d.mts +21 -0
- package/dist/auth/AuthRequest.mjs +10 -0
- package/dist/auth/AuthRequest.mjs.map +1 -0
- package/dist/auth/AuthStrategy.d.mts +23 -0
- package/dist/auth/AuthStrategy.mjs +33 -0
- package/dist/auth/AuthStrategy.mjs.map +1 -0
- package/dist/auth/ConsumeDecision.d.mts +11 -0
- package/dist/auth/actions.d.mts +18 -0
- package/dist/auth/actions.mjs +70 -0
- package/dist/auth/actions.mjs.map +1 -0
- package/dist/auth/defaults.mjs +12 -0
- package/dist/auth/defaults.mjs.map +1 -0
- package/dist/auth/definition.d.mts +46 -0
- package/dist/auth/session.d.mts +27 -0
- package/dist/auth/session.mjs +56 -0
- package/dist/auth/session.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 +68 -0
- package/dist/drizzle/d1-emails.mjs +580 -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 +33 -0
- package/dist/drizzle/d1-identity.mjs +120 -0
- package/dist/drizzle/d1-identity.mjs.map +1 -0
- package/dist/drizzle/d1-oauth.d.mts +316 -0
- package/dist/drizzle/d1-oauth.mjs +79 -0
- package/dist/drizzle/d1-oauth.mjs.map +1 -0
- package/dist/drizzle/d1-passkey.d.mts +52 -0
- package/dist/drizzle/d1-passkey.mjs +97 -0
- package/dist/drizzle/d1-passkey.mjs.map +1 -0
- package/dist/drizzle/d1-password-prepared.d.mts +27 -0
- package/dist/drizzle/d1-password-prepared.mjs +464 -0
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -0
- package/dist/drizzle/d1-passwords.d.mts +96 -0
- package/dist/drizzle/d1-passwords.mjs +1008 -0
- package/dist/drizzle/d1-passwords.mjs.map +1 -0
- package/dist/drizzle/d1-phone.d.mts +29 -0
- package/dist/drizzle/d1-phone.mjs +33 -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 +88 -0
- package/dist/drizzle/d1-proofs.mjs +833 -0
- package/dist/drizzle/d1-proofs.mjs.map +1 -0
- package/dist/drizzle/d1-sessions.d.mts +77 -0
- package/dist/drizzle/d1-sessions.mjs +970 -0
- package/dist/drizzle/d1-sessions.mjs.map +1 -0
- package/dist/drizzle/d1-totp.d.mts +27 -0
- package/dist/drizzle/d1-totp.mjs +28 -0
- package/dist/drizzle/d1-totp.mjs.map +1 -0
- package/dist/drizzle/email-model.d.mts +352 -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 +33 -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 +18 -0
- package/dist/drizzle/email-sql.mjs +473 -0
- package/dist/drizzle/email-sql.mjs.map +1 -0
- package/dist/drizzle/email-target.d.mts +28 -0
- package/dist/drizzle/email-target.mjs +75 -0
- package/dist/drizzle/email-target.mjs.map +1 -0
- package/dist/drizzle/model.d.mts +259 -0
- package/dist/drizzle/model.mjs +81 -0
- package/dist/drizzle/model.mjs.map +1 -0
- package/dist/drizzle/mysql-emails.d.mts +82 -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 +24 -0
- package/dist/drizzle/mysql-identity.mjs +95 -0
- package/dist/drizzle/mysql-identity.mjs.map +1 -0
- package/dist/drizzle/mysql-password-prepared.d.mts +32 -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 +102 -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 +83 -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 +250 -0
- package/dist/drizzle/mysql-sessions.mjs +53 -0
- package/dist/drizzle/mysql-sessions.mjs.map +1 -0
- package/dist/drizzle/mysql.d.mts +73 -0
- package/dist/drizzle/mysql.mjs +221 -0
- package/dist/drizzle/mysql.mjs.map +1 -0
- package/dist/drizzle/oauth-accounts.mjs +361 -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 +78 -0
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-flow.mjs +248 -0
- package/dist/drizzle/oauth-connected-flow.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-input.mjs +105 -0
- package/dist/drizzle/oauth-connected-input.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-maintenance.mjs +215 -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 +16 -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 +114 -0
- package/dist/drizzle/oauth-connected-target.mjs +94 -0
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -0
- package/dist/drizzle/oauth-drivers.mjs +53 -0
- package/dist/drizzle/oauth-drivers.mjs.map +1 -0
- package/dist/drizzle/oauth-flow.d.mts +7 -0
- package/dist/drizzle/oauth-flow.mjs +255 -0
- package/dist/drizzle/oauth-flow.mjs.map +1 -0
- package/dist/drizzle/oauth-input.mjs +130 -0
- package/dist/drizzle/oauth-input.mjs.map +1 -0
- package/dist/drizzle/oauth-model.d.mts +468 -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 +8 -0
- package/dist/drizzle/oauth-registration.mjs +375 -0
- package/dist/drizzle/oauth-registration.mjs.map +1 -0
- package/dist/drizzle/oauth-state.mjs +109 -0
- package/dist/drizzle/oauth-state.mjs.map +1 -0
- package/dist/drizzle/oauth-target.d.mts +125 -0
- package/dist/drizzle/oauth-target.mjs +252 -0
- package/dist/drizzle/oauth-target.mjs.map +1 -0
- package/dist/drizzle/passkey-admission.mjs +203 -0
- package/dist/drizzle/passkey-admission.mjs.map +1 -0
- package/dist/drizzle/passkey-credentials.mjs +239 -0
- package/dist/drizzle/passkey-credentials.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-enrollment.mjs +132 -0
- package/dist/drizzle/passkey-enrollment.mjs.map +1 -0
- package/dist/drizzle/passkey-flow.mjs +436 -0
- package/dist/drizzle/passkey-flow.mjs.map +1 -0
- package/dist/drizzle/passkey-management.mjs +225 -0
- package/dist/drizzle/passkey-management.mjs.map +1 -0
- package/dist/drizzle/passkey-model.d.mts +275 -0
- package/dist/drizzle/passkey-model.mjs +36 -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-registration-ceremony.mjs +124 -0
- package/dist/drizzle/passkey-registration-ceremony.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-custody.mjs +51 -0
- package/dist/drizzle/passkey-registration-custody.mjs.map +1 -0
- package/dist/drizzle/passkey-registration-write.mjs +205 -0
- package/dist/drizzle/passkey-registration-write.mjs.map +1 -0
- package/dist/drizzle/passkey-state.d.mts +5 -0
- package/dist/drizzle/passkey-state.mjs +207 -0
- package/dist/drizzle/passkey-state.mjs.map +1 -0
- package/dist/drizzle/passkey-target.d.mts +16 -0
- package/dist/drizzle/passkey-target.mjs +174 -0
- package/dist/drizzle/passkey-target.mjs.map +1 -0
- package/dist/drizzle/passkey-write-drivers.mjs +33 -0
- package/dist/drizzle/passkey-write-drivers.mjs.map +1 -0
- package/dist/drizzle/passkey-write-model.d.mts +192 -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-state.mjs +326 -0
- package/dist/drizzle/passkey-write-state.mjs.map +1 -0
- package/dist/drizzle/passkey-write-target.d.mts +14 -0
- package/dist/drizzle/passkey-write-target.mjs +185 -0
- package/dist/drizzle/passkey-write-target.mjs.map +1 -0
- package/dist/drizzle/password-model.d.mts +330 -0
- package/dist/drizzle/password-model.mjs +22 -0
- package/dist/drizzle/password-model.mjs.map +1 -0
- package/dist/drizzle/password-prepared-model.d.mts +93 -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 +394 -0
- package/dist/drizzle/password-prepared-sql.mjs.map +1 -0
- package/dist/drizzle/password-prepared-state.mjs +107 -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 +57 -0
- package/dist/drizzle/password-prepared-target.mjs.map +1 -0
- package/dist/drizzle/password-registration.d.mts +23 -0
- package/dist/drizzle/password-registration.mjs +136 -0
- package/dist/drizzle/password-registration.mjs.map +1 -0
- package/dist/drizzle/password-sql.d.mts +20 -0
- package/dist/drizzle/password-sql.mjs +702 -0
- package/dist/drizzle/password-sql.mjs.map +1 -0
- package/dist/drizzle/password-target.d.mts +25 -0
- package/dist/drizzle/password-target.mjs +63 -0
- package/dist/drizzle/password-target.mjs.map +1 -0
- package/dist/drizzle/pg-emails.d.mts +83 -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 +33 -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 +103 -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 +84 -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 +251 -0
- package/dist/drizzle/pg-sessions.mjs +53 -0
- package/dist/drizzle/pg-sessions.mjs.map +1 -0
- package/dist/drizzle/pg.d.mts +88 -0
- package/dist/drizzle/pg.mjs +294 -0
- package/dist/drizzle/pg.mjs.map +1 -0
- package/dist/drizzle/phone-model.d.mts +117 -0
- package/dist/drizzle/phone-model.mjs +39 -0
- package/dist/drizzle/phone-model.mjs.map +1 -0
- package/dist/drizzle/phone-state.mjs +426 -0
- package/dist/drizzle/phone-state.mjs.map +1 -0
- package/dist/drizzle/phone-target.d.mts +19 -0
- package/dist/drizzle/phone-target.mjs +171 -0
- package/dist/drizzle/phone-target.mjs.map +1 -0
- package/dist/drizzle/proof-model.d.mts +287 -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 +16 -0
- package/dist/drizzle/proof-sql.mjs +618 -0
- package/dist/drizzle/proof-sql.mjs.map +1 -0
- package/dist/drizzle/proof-target.d.mts +17 -0
- package/dist/drizzle/proof-target.mjs +38 -0
- package/dist/drizzle/proof-target.mjs.map +1 -0
- package/dist/drizzle/session-model.d.mts +201 -0
- package/dist/drizzle/session-model.mjs +19 -0
- package/dist/drizzle/session-model.mjs.map +1 -0
- package/dist/drizzle/session-sql.mjs +732 -0
- package/dist/drizzle/session-sql.mjs.map +1 -0
- package/dist/drizzle/session-target.d.mts +37 -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 +92 -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 +81 -0
- package/dist/drizzle/sqlite.mjs +220 -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 +34 -0
- package/dist/drizzle/step-up-state.mjs.map +1 -0
- package/dist/drizzle/totp-model.d.mts +85 -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 +39 -0
- package/dist/drizzle/totp-state.mjs +288 -0
- package/dist/drizzle/totp-state.mjs.map +1 -0
- package/dist/drizzle/totp-target.d.mts +16 -0
- package/dist/drizzle/totp-target.mjs +83 -0
- package/dist/drizzle/totp-target.mjs.map +1 -0
- package/dist/drizzle/transaction-execution.d.mts +20 -0
- package/dist/drizzle/transaction-execution.mjs +111 -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 +6 -0
- package/dist/drizzle/transaction-owner.mjs +252 -0
- package/dist/drizzle/transaction-owner.mjs.map +1 -0
- package/dist/email/EmailActionEvidence.d.mts +33 -0
- package/dist/email/EmailActionEvidence.mjs +15 -0
- package/dist/email/EmailActionEvidence.mjs.map +1 -0
- package/dist/email/EmailAddressPersistence.d.mts +63 -0
- package/dist/email/EmailAddressPersistence.mjs +19 -0
- package/dist/email/EmailAddressPersistence.mjs.map +1 -0
- package/dist/email/EmailIdentifierNotifier.d.mts +30 -0
- package/dist/email/EmailIdentifierNotifier.mjs +31 -0
- package/dist/email/EmailIdentifierNotifier.mjs.map +1 -0
- package/dist/email/EmailReturnTargets.d.mts +19 -0
- package/dist/email/EmailReturnTargets.mjs +29 -0
- package/dist/email/EmailReturnTargets.mjs.map +1 -0
- package/dist/email/EmailSignInTargets.d.mts +20 -0
- package/dist/email/EmailSignInTargets.mjs +12 -0
- package/dist/email/EmailSignInTargets.mjs.map +1 -0
- package/dist/email/addresses.d.mts +33 -0
- package/dist/email/addresses.mjs +404 -0
- package/dist/email/addresses.mjs.map +1 -0
- package/dist/email/definition.d.mts +10153 -0
- package/dist/email/definition.mjs +111 -0
- package/dist/email/definition.mjs.map +1 -0
- package/dist/email/errors.d.mts +15 -0
- package/dist/email/errors.mjs +11 -0
- package/dist/email/errors.mjs.map +1 -0
- package/dist/email/magicLink.d.mts +33 -0
- package/dist/email/magicLink.mjs +58 -0
- package/dist/email/magicLink.mjs.map +1 -0
- package/dist/email/models.d.mts +56 -0
- package/dist/email/models.mjs +31 -0
- package/dist/email/models.mjs.map +1 -0
- package/dist/email/module.d.mts +22296 -0
- package/dist/email/module.mjs +415 -0
- package/dist/email/module.mjs.map +1 -0
- package/dist/email/registration.d.mts +28 -0
- package/dist/email/registration.mjs +243 -0
- package/dist/email/registration.mjs.map +1 -0
- package/dist/email/snapshot.mjs +37 -0
- package/dist/email/snapshot.mjs.map +1 -0
- package/dist/hooks/LifecycleHooks.d.mts +34 -0
- package/dist/hooks/LifecycleHooks.mjs +74 -0
- package/dist/hooks/LifecycleHooks.mjs.map +1 -0
- package/dist/hooks/commit.d.mts +66 -0
- package/dist/hooks/commit.mjs +136 -0
- package/dist/hooks/commit.mjs.map +1 -0
- package/dist/hooks/models.d.mts +51 -0
- package/dist/hooks/models.mjs +87 -0
- package/dist/hooks/models.mjs.map +1 -0
- package/dist/hooks/plugins.d.mts +36 -0
- package/dist/hooks/plugins.mjs +60 -0
- package/dist/hooks/plugins.mjs.map +1 -0
- package/dist/hooks/transactions.d.mts +31 -0
- package/dist/hooks/transactions.mjs +38 -0
- package/dist/hooks/transactions.mjs.map +1 -0
- package/dist/http/auth-api.d.mts +9 -0
- package/dist/http/auth-api.mjs +13 -0
- package/dist/http/auth-api.mjs.map +1 -0
- package/dist/http/auth-contract.d.mts +84 -0
- package/dist/http/auth-contract.mjs +75 -0
- package/dist/http/auth-contract.mjs.map +1 -0
- package/dist/http/auth-http.d.mts +216 -0
- package/dist/http/auth-http.mjs +184 -0
- package/dist/http/auth-http.mjs.map +1 -0
- package/dist/http/endpoints/get-session.d.mts +8 -0
- package/dist/http/endpoints/get-session.mjs +12 -0
- package/dist/http/endpoints/get-session.mjs.map +1 -0
- package/dist/http/endpoints/password-sign-in.d.mts +8 -0
- package/dist/http/endpoints/password-sign-in.mjs +18 -0
- package/dist/http/endpoints/password-sign-in.mjs.map +1 -0
- package/dist/http/endpoints/request-email-otp.d.mts +8 -0
- package/dist/http/endpoints/request-email-otp.mjs +17 -0
- package/dist/http/endpoints/request-email-otp.mjs.map +1 -0
- package/dist/http/endpoints/set-password.d.mts +9 -0
- package/dist/http/endpoints/set-password.mjs +19 -0
- package/dist/http/endpoints/set-password.mjs.map +1 -0
- package/dist/http/endpoints/sign-out.d.mts +6 -0
- package/dist/http/endpoints/sign-out.mjs +7 -0
- package/dist/http/endpoints/sign-out.mjs.map +1 -0
- package/dist/http/endpoints/verify-email-otp.d.mts +9 -0
- package/dist/http/endpoints/verify-email-otp.mjs +18 -0
- package/dist/http/endpoints/verify-email-otp.mjs.map +1 -0
- package/dist/http/models.d.mts +49 -0
- package/dist/http/models.mjs +35 -0
- package/dist/http/models.mjs.map +1 -0
- package/dist/http/security.d.mts +91 -0
- package/dist/http/security.mjs +77 -0
- package/dist/http/security.mjs.map +1 -0
- package/dist/http/session-contract.d.mts +303 -0
- package/dist/http/session-contract.mjs +38 -0
- package/dist/http/session-contract.mjs.map +1 -0
- package/dist/http-operation/OperationHttpInvocation.d.mts +16 -0
- package/dist/http-operation/OperationHttpInvocation.mjs +11 -0
- package/dist/http-operation/OperationHttpInvocation.mjs.map +1 -0
- package/dist/http-operation/OperationHttpServerConfig.d.mts +18 -0
- package/dist/http-operation/OperationHttpServerConfig.mjs +72 -0
- package/dist/http-operation/OperationHttpServerConfig.mjs.map +1 -0
- package/dist/http-operation/auth-client.d.mts +75 -0
- package/dist/http-operation/auth-client.mjs +116 -0
- package/dist/http-operation/auth-client.mjs.map +1 -0
- package/dist/http-operation/client.d.mts +50 -0
- package/dist/http-operation/client.mjs +188 -0
- package/dist/http-operation/client.mjs.map +1 -0
- package/dist/http-operation/configuration-schema.mjs +19 -0
- package/dist/http-operation/configuration-schema.mjs.map +1 -0
- package/dist/http-operation/contract.d.mts +40 -0
- package/dist/http-operation/contract.mjs +37 -0
- package/dist/http-operation/contract.mjs.map +1 -0
- package/dist/http-operation/errors.d.mts +13 -0
- package/dist/http-operation/errors.mjs +31 -0
- package/dist/http-operation/errors.mjs.map +1 -0
- package/dist/http-operation/models.d.mts +32 -0
- package/dist/http-operation/models.mjs +14 -0
- package/dist/http-operation/models.mjs.map +1 -0
- package/dist/http-operation/private.mjs +35 -0
- package/dist/http-operation/private.mjs.map +1 -0
- package/dist/http-operation/security.mjs +58 -0
- package/dist/http-operation/security.mjs.map +1 -0
- package/dist/http-operation/server.d.mts +33 -0
- package/dist/http-operation/server.mjs +268 -0
- package/dist/http-operation/server.mjs.map +1 -0
- package/dist/identity/ExternalIdentityMutation.d.mts +15 -0
- package/dist/identity/ExternalIdentityMutation.mjs +11 -0
- package/dist/identity/ExternalIdentityMutation.mjs.map +1 -0
- package/dist/identity/IdentityMutation.d.mts +22 -0
- package/dist/identity/IdentityMutation.mjs +17 -0
- package/dist/identity/IdentityMutation.mjs.map +1 -0
- package/dist/identity/IdentityRepository.d.mts +20 -0
- package/dist/identity/IdentityRepository.mjs +11 -0
- package/dist/identity/IdentityRepository.mjs.map +1 -0
- package/dist/identity/SubjectLifecycle.d.mts +58 -0
- package/dist/identity/SubjectLifecycle.mjs +43 -0
- package/dist/identity/SubjectLifecycle.mjs.map +1 -0
- package/dist/identity/SubjectProvisioner.d.mts +37 -0
- package/dist/identity/SubjectProvisioner.mjs +20 -0
- package/dist/identity/SubjectProvisioner.mjs.map +1 -0
- package/dist/identity/codecs.d.mts +34 -0
- package/dist/identity/codecs.mjs +40 -0
- package/dist/identity/codecs.mjs.map +1 -0
- package/dist/identity/models.d.mts +62 -0
- package/dist/identity/models.mjs +51 -0
- package/dist/identity/models.mjs.map +1 -0
- package/dist/identity/operations.d.mts +118 -0
- package/dist/identity/operations.mjs +124 -0
- package/dist/identity/operations.mjs.map +1 -0
- package/dist/index.d.mts +23 -0
- package/dist/index.mjs +23 -0
- package/dist/internal/AuthStoreDecisions.d.mts +22 -0
- package/dist/internal/AuthStoreDecisions.mjs +8 -0
- package/dist/internal/AuthStoreDecisions.mjs.map +1 -0
- package/dist/internal/CurrentSession.d.mts +9 -0
- package/dist/internal/CurrentSession.mjs +8 -0
- package/dist/internal/CurrentSession.mjs.map +1 -0
- package/dist/internal/diagnostics.mjs +23 -0
- package/dist/internal/diagnostics.mjs.map +1 -0
- package/dist/oauth/GithubOAuthProvider.d.mts +43 -0
- package/dist/oauth/GithubOAuthProvider.mjs +66 -0
- package/dist/oauth/GithubOAuthProvider.mjs.map +1 -0
- package/dist/oauth/OAuth.d.mts +73 -0
- package/dist/oauth/OAuth.mjs +180 -0
- package/dist/oauth/OAuth.mjs.map +1 -0
- package/dist/oauth/OAuthAccountsPersistence.d.mts +109 -0
- package/dist/oauth/OAuthAccountsPersistence.mjs +12 -0
- package/dist/oauth/OAuthAccountsPersistence.mjs.map +1 -0
- package/dist/oauth/OAuthActionEvidence.d.mts +28 -0
- package/dist/oauth/OAuthActionEvidence.mjs +15 -0
- package/dist/oauth/OAuthActionEvidence.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedActionEvidence.d.mts +22 -0
- package/dist/oauth/OAuthConnectedActionEvidence.mjs +9 -0
- package/dist/oauth/OAuthConnectedActionEvidence.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedPersistence.d.mts +129 -0
- package/dist/oauth/OAuthConnectedPersistence.mjs +12 -0
- package/dist/oauth/OAuthConnectedPersistence.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedProtocol.d.mts +41 -0
- package/dist/oauth/OAuthConnectedProtocol.mjs +13 -0
- package/dist/oauth/OAuthConnectedProtocol.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedRevocations.d.mts +167 -0
- package/dist/oauth/OAuthConnectedRevocations.mjs +21 -0
- package/dist/oauth/OAuthConnectedRevocations.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedTokenProtector.d.mts +24 -0
- package/dist/oauth/OAuthConnectedTokenProtector.mjs +153 -0
- package/dist/oauth/OAuthConnectedTokenProtector.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedTransactionProtector.d.mts +23 -0
- package/dist/oauth/OAuthConnectedTransactionProtector.mjs +37 -0
- package/dist/oauth/OAuthConnectedTransactionProtector.mjs.map +1 -0
- package/dist/oauth/OAuthConnectedUseAuthority.d.mts +22 -0
- package/dist/oauth/OAuthConnectedUseAuthority.mjs +10 -0
- package/dist/oauth/OAuthConnectedUseAuthority.mjs.map +1 -0
- package/dist/oauth/OAuthConnectionStore.d.mts +33 -0
- package/dist/oauth/OAuthConnectionStore.mjs +38 -0
- package/dist/oauth/OAuthConnectionStore.mjs.map +1 -0
- package/dist/oauth/OAuthLinkTransactionProtector.d.mts +25 -0
- package/dist/oauth/OAuthLinkTransactionProtector.mjs +39 -0
- package/dist/oauth/OAuthLinkTransactionProtector.mjs.map +1 -0
- package/dist/oauth/OAuthProtocol.d.mts +33 -0
- package/dist/oauth/OAuthProtocol.mjs +16 -0
- package/dist/oauth/OAuthProtocol.mjs.map +1 -0
- package/dist/oauth/OAuthProvider.d.mts +70 -0
- package/dist/oauth/OAuthProvider.mjs +39 -0
- package/dist/oauth/OAuthProvider.mjs.map +1 -0
- package/dist/oauth/OAuthProviders.d.mts +27 -0
- package/dist/oauth/OAuthProviders.mjs +33 -0
- package/dist/oauth/OAuthProviders.mjs.map +1 -0
- package/dist/oauth/OAuthRegistrationIntents.d.mts +87 -0
- package/dist/oauth/OAuthRegistrationIntents.mjs +19 -0
- package/dist/oauth/OAuthRegistrationIntents.mjs.map +1 -0
- package/dist/oauth/OAuthReturnTargets.d.mts +15 -0
- package/dist/oauth/OAuthReturnTargets.mjs +24 -0
- package/dist/oauth/OAuthReturnTargets.mjs.map +1 -0
- package/dist/oauth/OAuthSignInPersistence.d.mts +68 -0
- package/dist/oauth/OAuthSignInPersistence.mjs +12 -0
- package/dist/oauth/OAuthSignInPersistence.mjs.map +1 -0
- package/dist/oauth/OAuthStateDecisions.d.mts +14 -0
- package/dist/oauth/OAuthStateDecisions.mjs +8 -0
- package/dist/oauth/OAuthStateDecisions.mjs.map +1 -0
- package/dist/oauth/OAuthStateStore.d.mts +35 -0
- package/dist/oauth/OAuthStateStore.mjs +64 -0
- package/dist/oauth/OAuthStateStore.mjs.map +1 -0
- package/dist/oauth/OAuthTransactionProtector.d.mts +26 -0
- package/dist/oauth/OAuthTransactionProtector.mjs +78 -0
- package/dist/oauth/OAuthTransactionProtector.mjs.map +1 -0
- package/dist/oauth/accounts.d.mts +29 -0
- package/dist/oauth/accounts.mjs +515 -0
- package/dist/oauth/accounts.mjs.map +1 -0
- package/dist/oauth/accountsModels.d.mts +463 -0
- package/dist/oauth/accountsModels.mjs +155 -0
- package/dist/oauth/accountsModels.mjs.map +1 -0
- package/dist/oauth/connected.d.mts +442 -0
- package/dist/oauth/connected.mjs +526 -0
- package/dist/oauth/connected.mjs.map +1 -0
- package/dist/oauth/connectedAccess.d.mts +20 -0
- package/dist/oauth/connectedAccess.mjs +279 -0
- package/dist/oauth/connectedAccess.mjs.map +1 -0
- package/dist/oauth/connectedMaintenance.d.mts +19 -0
- package/dist/oauth/connectedMaintenance.mjs +133 -0
- package/dist/oauth/connectedMaintenance.mjs.map +1 -0
- package/dist/oauth/connectedModels.d.mts +2023 -0
- package/dist/oauth/connectedModels.mjs +375 -0
- package/dist/oauth/connectedModels.mjs.map +1 -0
- package/dist/oauth/definition.d.mts +4396 -0
- package/dist/oauth/definition.mjs +120 -0
- package/dist/oauth/definition.mjs.map +1 -0
- package/dist/oauth/errors.d.mts +49 -0
- package/dist/oauth/errors.mjs +42 -0
- package/dist/oauth/errors.mjs.map +1 -0
- package/dist/oauth/github/identity.d.mts +8 -0
- package/dist/oauth/github/identity.mjs +24 -0
- package/dist/oauth/github/identity.mjs.map +1 -0
- package/dist/oauth/github/models.d.mts +34 -0
- package/dist/oauth/github/protocol.d.mts +54 -0
- package/dist/oauth/github/protocol.mjs +204 -0
- package/dist/oauth/github/protocol.mjs.map +1 -0
- package/dist/oauth/openid-client/ProviderRevocation.d.mts +4 -0
- package/dist/oauth/openid-client/ProviderRevocation.mjs +11 -0
- package/dist/oauth/openid-client/ProviderRevocation.mjs.map +1 -0
- package/dist/oauth/openid-client/compatibility.d.mts +1 -0
- package/dist/oauth/openid-client/compatibility.mjs +6 -0
- package/dist/oauth/openid-client/compatibility.mjs.map +1 -0
- package/dist/oauth/openid-client/configuration.mjs +305 -0
- package/dist/oauth/openid-client/configuration.mjs.map +1 -0
- package/dist/oauth/openid-client/connected/configuration.mjs +338 -0
- package/dist/oauth/openid-client/connected/configuration.mjs.map +1 -0
- package/dist/oauth/openid-client/connected/models.d.mts +42 -0
- package/dist/oauth/openid-client/connected/protocol.d.mts +16 -0
- package/dist/oauth/openid-client/connected/protocol.mjs +402 -0
- package/dist/oauth/openid-client/connected/protocol.mjs.map +1 -0
- package/dist/oauth/openid-client/models.d.mts +67 -0
- package/dist/oauth/openid-client/models.mjs +16 -0
- package/dist/oauth/openid-client/models.mjs.map +1 -0
- package/dist/oauth/openid-client/protocol.d.mts +27 -0
- package/dist/oauth/openid-client/protocol.mjs +218 -0
- package/dist/oauth/openid-client/protocol.mjs.map +1 -0
- package/dist/oauth/openid-client/transport.mjs +59 -0
- package/dist/oauth/openid-client/transport.mjs.map +1 -0
- package/dist/oauth/policy.d.mts +18 -0
- package/dist/oauth/policy.mjs +16 -0
- package/dist/oauth/policy.mjs.map +1 -0
- package/dist/oauth/registration.d.mts +24 -0
- package/dist/oauth/registration.mjs +177 -0
- package/dist/oauth/registration.mjs.map +1 -0
- package/dist/oauth/registrationModels.d.mts +152 -0
- package/dist/oauth/registrationModels.mjs +93 -0
- package/dist/oauth/registrationModels.mjs.map +1 -0
- package/dist/oauth/registrationSecrets.mjs +70 -0
- package/dist/oauth/registrationSecrets.mjs.map +1 -0
- package/dist/oauth/schema.d.mts +86 -0
- package/dist/oauth/schema.mjs +81 -0
- package/dist/oauth/schema.mjs.map +1 -0
- package/dist/oauth/signInErrors.d.mts +17 -0
- package/dist/oauth/signInErrors.mjs +16 -0
- package/dist/oauth/signInErrors.mjs.map +1 -0
- package/dist/oauth/signInModels.d.mts +343 -0
- package/dist/oauth/signInModels.mjs +181 -0
- package/dist/oauth/signInModels.mjs.map +1 -0
- package/dist/oauth/signInModule.d.mts +1546 -0
- package/dist/oauth/signInModule.mjs +430 -0
- package/dist/oauth/signInModule.mjs.map +1 -0
- package/dist/oauth/signInSnapshot.mjs +29 -0
- package/dist/oauth/signInSnapshot.mjs.map +1 -0
- package/dist/oauth/transactionEncryption.d.mts +14 -0
- package/dist/oauth/transactionEncryption.mjs +129 -0
- package/dist/oauth/transactionEncryption.mjs.map +1 -0
- package/dist/operations/RequestBindingConfig.d.mts +11 -0
- package/dist/operations/RequestBindingConfig.mjs +10 -0
- package/dist/operations/RequestBindingConfig.mjs.map +1 -0
- package/dist/operations/actions.d.mts +947 -0
- package/dist/operations/actions.mjs +148 -0
- package/dist/operations/actions.mjs.map +1 -0
- package/dist/operations/context.d.mts +63 -0
- package/dist/operations/context.mjs +55 -0
- package/dist/operations/context.mjs.map +1 -0
- package/dist/operations/credentials.d.mts +39 -0
- package/dist/operations/credentials.mjs +60 -0
- package/dist/operations/credentials.mjs.map +1 -0
- package/dist/operations/errors.d.mts +24 -0
- package/dist/operations/errors.mjs +31 -0
- package/dist/operations/errors.mjs.map +1 -0
- package/dist/operations/operation.d.mts +124 -0
- package/dist/operations/operation.mjs +220 -0
- package/dist/operations/operation.mjs.map +1 -0
- package/dist/operations/requestBinding.d.mts +46 -0
- package/dist/operations/requestBinding.mjs +130 -0
- package/dist/operations/requestBinding.mjs.map +1 -0
- package/dist/operations/requestBindingModels.d.mts +13 -0
- package/dist/operations/requestBindingModels.mjs +12 -0
- package/dist/operations/requestBindingModels.mjs.map +1 -0
- package/dist/operations/reveals.d.mts +28 -0
- package/dist/operations/reveals.mjs +88 -0
- package/dist/operations/reveals.mjs.map +1 -0
- package/dist/passkey/PasskeyActionEvidence.d.mts +22 -0
- package/dist/passkey/PasskeyActionEvidence.mjs +9 -0
- package/dist/passkey/PasskeyActionEvidence.mjs.map +1 -0
- package/dist/passkey/PasskeyCredentials.d.mts +16 -0
- package/dist/passkey/PasskeyCredentials.mjs +9 -0
- package/dist/passkey/PasskeyCredentials.mjs.map +1 -0
- package/dist/passkey/PasskeyEnrollmentContext.d.mts +22 -0
- package/dist/passkey/PasskeyEnrollmentContext.mjs +9 -0
- package/dist/passkey/PasskeyEnrollmentContext.mjs.map +1 -0
- package/dist/passkey/PasskeyManagementPersistence.d.mts +106 -0
- package/dist/passkey/PasskeyManagementPersistence.mjs +9 -0
- package/dist/passkey/PasskeyManagementPersistence.mjs.map +1 -0
- package/dist/passkey/PasskeyPersistence.d.mts +63 -0
- package/dist/passkey/PasskeyPersistence.mjs +10 -0
- package/dist/passkey/PasskeyPersistence.mjs.map +1 -0
- package/dist/passkey/PasskeyProtocol.d.mts +38 -0
- package/dist/passkey/PasskeyProtocol.mjs +11 -0
- package/dist/passkey/PasskeyProtocol.mjs.map +1 -0
- package/dist/passkey/actions.d.mts +50 -0
- package/dist/passkey/actions.mjs +376 -0
- package/dist/passkey/actions.mjs.map +1 -0
- package/dist/passkey/browser/PasskeyBrowser.d.mts +18 -0
- package/dist/passkey/browser/PasskeyBrowser.mjs +9 -0
- package/dist/passkey/browser/PasskeyBrowser.mjs.map +1 -0
- package/dist/passkey/browser/models.d.mts +38 -0
- package/dist/passkey/browser/models.mjs +41 -0
- package/dist/passkey/browser/models.mjs.map +1 -0
- package/dist/passkey/browser/simplewebauthn.d.mts +17 -0
- package/dist/passkey/browser/simplewebauthn.mjs +411 -0
- package/dist/passkey/browser/simplewebauthn.mjs.map +1 -0
- package/dist/passkey/definition.d.mts +5626 -0
- package/dist/passkey/definition.mjs +114 -0
- package/dist/passkey/definition.mjs.map +1 -0
- package/dist/passkey/errors.d.mts +20 -0
- package/dist/passkey/errors.mjs +20 -0
- package/dist/passkey/errors.mjs.map +1 -0
- package/dist/passkey/management.mjs +276 -0
- package/dist/passkey/management.mjs.map +1 -0
- package/dist/passkey/models.d.mts +1245 -0
- package/dist/passkey/models.mjs +301 -0
- package/dist/passkey/models.mjs.map +1 -0
- package/dist/passkey/module.d.mts +2132 -0
- package/dist/passkey/module.mjs +174 -0
- package/dist/passkey/module.mjs.map +1 -0
- package/dist/passkey/pending.mjs +99 -0
- package/dist/passkey/pending.mjs.map +1 -0
- package/dist/passkey/policy.d.mts +48 -0
- package/dist/passkey/policy.mjs +77 -0
- package/dist/passkey/policy.mjs.map +1 -0
- package/dist/passkey/registration.mjs +107 -0
- package/dist/passkey/registration.mjs.map +1 -0
- package/dist/passkey/simplewebauthn/configuration.mjs +45 -0
- package/dist/passkey/simplewebauthn/configuration.mjs.map +1 -0
- package/dist/passkey/simplewebauthn/models.d.mts +21 -0
- package/dist/passkey/simplewebauthn/models.mjs +8 -0
- package/dist/passkey/simplewebauthn/models.mjs.map +1 -0
- package/dist/passkey/simplewebauthn/protocol.d.mts +62 -0
- package/dist/passkey/simplewebauthn/protocol.mjs +402 -0
- package/dist/passkey/simplewebauthn/protocol.mjs.map +1 -0
- package/dist/passkey/snapshot.mjs +31 -0
- package/dist/passkey/snapshot.mjs.map +1 -0
- package/dist/passkey/stepUp.mjs +101 -0
- package/dist/passkey/stepUp.mjs.map +1 -0
- package/dist/password/CompromisedPasswords.d.mts +26 -0
- package/dist/password/CompromisedPasswords.mjs +23 -0
- package/dist/password/CompromisedPasswords.mjs.map +1 -0
- package/dist/password/NewPasswordCheck.d.mts +21 -0
- package/dist/password/NewPasswordCheck.mjs +39 -0
- package/dist/password/NewPasswordCheck.mjs.map +1 -0
- package/dist/password/PasswordHashing.d.mts +24 -0
- package/dist/password/PasswordHashing.mjs +96 -0
- package/dist/password/PasswordHashing.mjs.map +1 -0
- package/dist/password/PasswordKdfAdmission.d.mts +19 -0
- package/dist/password/PasswordKdfAdmission.mjs +25 -0
- package/dist/password/PasswordKdfAdmission.mjs.map +1 -0
- package/dist/password/configuration.d.mts +43 -0
- package/dist/password/configuration.mjs +64 -0
- package/dist/password/configuration.mjs.map +1 -0
- package/dist/password/defaults.mjs +13 -0
- package/dist/password/defaults.mjs.map +1 -0
- package/dist/password/encoding.mjs +64 -0
- package/dist/password/encoding.mjs.map +1 -0
- package/dist/password/errors.d.mts +28 -0
- package/dist/password/errors.mjs +25 -0
- package/dist/password/errors.mjs.map +1 -0
- package/dist/password/methods/PasswordActionEvidence.d.mts +38 -0
- package/dist/password/methods/PasswordActionEvidence.mjs +22 -0
- package/dist/password/methods/PasswordActionEvidence.mjs.map +1 -0
- package/dist/password/methods/PasswordPersistence.d.mts +102 -0
- package/dist/password/methods/PasswordPersistence.mjs +13 -0
- package/dist/password/methods/PasswordPersistence.mjs.map +1 -0
- package/dist/password/methods/PasswordPreparedPersistence.d.mts +111 -0
- package/dist/password/methods/contracts.d.mts +43 -0
- package/dist/password/methods/contracts.mjs +33 -0
- package/dist/password/methods/contracts.mjs.map +1 -0
- package/dist/password/methods/definition.d.mts +3813 -0
- package/dist/password/methods/definition.mjs +56 -0
- package/dist/password/methods/definition.mjs.map +1 -0
- package/dist/password/methods/errors.d.mts +15 -0
- package/dist/password/methods/errors.mjs +11 -0
- package/dist/password/methods/errors.mjs.map +1 -0
- package/dist/password/methods/models.d.mts +70 -0
- package/dist/password/methods/models.mjs +44 -0
- package/dist/password/methods/models.mjs.map +1 -0
- package/dist/password/methods/module.d.mts +3567 -0
- package/dist/password/methods/module.mjs +553 -0
- package/dist/password/methods/module.mjs.map +1 -0
- package/dist/password/methods/policy.d.mts +84 -0
- package/dist/password/methods/policy.mjs +80 -0
- package/dist/password/methods/policy.mjs.map +1 -0
- package/dist/password/methods/preparation.mjs +54 -0
- package/dist/password/methods/preparation.mjs.map +1 -0
- package/dist/password/methods/prepared.d.mts +53 -0
- package/dist/password/methods/prepared.mjs +610 -0
- package/dist/password/methods/prepared.mjs.map +1 -0
- package/dist/password/methods/preparedModels.d.mts +1295 -0
- package/dist/password/methods/preparedModels.mjs +278 -0
- package/dist/password/methods/preparedModels.mjs.map +1 -0
- package/dist/password/methods/signIn.d.mts +180 -0
- package/dist/password/methods/signIn.mjs +73 -0
- package/dist/password/methods/signIn.mjs.map +1 -0
- package/dist/password/methods/snapshot.mjs +38 -0
- package/dist/password/methods/snapshot.mjs.map +1 -0
- package/dist/password/methods/verification.mjs +138 -0
- package/dist/password/methods/verification.mjs.map +1 -0
- package/dist/password/models.d.mts +13 -0
- package/dist/password/models.mjs +12 -0
- package/dist/password/models.mjs.map +1 -0
- package/dist/password/policy.d.mts +33 -0
- package/dist/password/policy.mjs +37 -0
- package/dist/password/policy.mjs.map +1 -0
- package/dist/phone/PhoneActionEvidence.d.mts +23 -0
- package/dist/phone/PhoneActionEvidence.mjs +10 -0
- package/dist/phone/PhoneActionEvidence.mjs.map +1 -0
- package/dist/phone/PhoneAdmission.d.mts +29 -0
- package/dist/phone/PhoneAdmission.mjs +10 -0
- package/dist/phone/PhoneAdmission.mjs.map +1 -0
- package/dist/phone/PhoneDeliveryEligibility.d.mts +11 -0
- package/dist/phone/PhoneDeliveryEligibility.mjs +8 -0
- package/dist/phone/PhoneDeliveryEligibility.mjs.map +1 -0
- package/dist/phone/PhonePersistence.d.mts +33 -0
- package/dist/phone/PhonePersistence.mjs +10 -0
- package/dist/phone/PhonePersistence.mjs.map +1 -0
- package/dist/phone/PhoneRequestContext.d.mts +10 -0
- package/dist/phone/PhoneRequestContext.mjs +8 -0
- package/dist/phone/PhoneRequestContext.mjs.map +1 -0
- package/dist/phone/PhoneSignInTargets.d.mts +19 -0
- package/dist/phone/PhoneSignInTargets.mjs +13 -0
- package/dist/phone/PhoneSignInTargets.mjs.map +1 -0
- package/dist/phone/definition.d.mts +7190 -0
- package/dist/phone/definition.mjs +28 -0
- package/dist/phone/definition.mjs.map +1 -0
- package/dist/phone/failure.mjs +23 -0
- package/dist/phone/failure.mjs.map +1 -0
- package/dist/phone/lifecycle.mjs +427 -0
- package/dist/phone/lifecycle.mjs.map +1 -0
- package/dist/phone/lifecycleModels.d.mts +164 -0
- package/dist/phone/lifecycleModels.mjs +91 -0
- package/dist/phone/lifecycleModels.mjs.map +1 -0
- package/dist/phone/models.d.mts +41 -0
- package/dist/phone/models.mjs +29 -0
- package/dist/phone/models.mjs.map +1 -0
- package/dist/phone/module.d.mts +6027 -0
- package/dist/phone/module.mjs +293 -0
- package/dist/phone/module.mjs.map +1 -0
- package/dist/proofs/EmailProofDelivery.d.mts +13 -0
- package/dist/proofs/EmailProofDelivery.mjs +11 -0
- package/dist/proofs/EmailProofDelivery.mjs.map +1 -0
- package/dist/proofs/HostIngressLimiter.d.mts +20 -0
- package/dist/proofs/HostIngressLimiter.mjs +13 -0
- package/dist/proofs/HostIngressLimiter.mjs.map +1 -0
- package/dist/proofs/ProofPersistence.d.mts +140 -0
- package/dist/proofs/ProofPersistence.mjs +13 -0
- package/dist/proofs/ProofPersistence.mjs.map +1 -0
- package/dist/proofs/SmsProofDelivery.d.mts +13 -0
- package/dist/proofs/SmsProofDelivery.mjs +11 -0
- package/dist/proofs/SmsProofDelivery.mjs.map +1 -0
- package/dist/proofs/abuse.d.mts +15 -0
- package/dist/proofs/abuse.mjs +12 -0
- package/dist/proofs/abuse.mjs.map +1 -0
- package/dist/proofs/completion.d.mts +22 -0
- package/dist/proofs/crypto.d.mts +196 -0
- package/dist/proofs/crypto.mjs +189 -0
- package/dist/proofs/crypto.mjs.map +1 -0
- package/dist/proofs/definition.d.mts +335 -0
- package/dist/proofs/definition.mjs +10 -0
- package/dist/proofs/definition.mjs.map +1 -0
- package/dist/proofs/delivery.d.mts +30 -0
- package/dist/proofs/delivery.mjs +26 -0
- package/dist/proofs/delivery.mjs.map +1 -0
- package/dist/proofs/dispatch.d.mts +20 -0
- package/dist/proofs/dispatch.mjs +54 -0
- package/dist/proofs/dispatch.mjs.map +1 -0
- package/dist/proofs/errors.d.mts +21 -0
- package/dist/proofs/errors.mjs +25 -0
- package/dist/proofs/errors.mjs.map +1 -0
- package/dist/proofs/models.d.mts +141 -0
- package/dist/proofs/models.mjs +93 -0
- package/dist/proofs/models.mjs.map +1 -0
- package/dist/proofs/module.d.mts +344 -0
- package/dist/proofs/module.mjs +350 -0
- package/dist/proofs/module.mjs.map +1 -0
- package/dist/proofs/policy.d.mts +152 -0
- package/dist/proofs/policy.mjs +51 -0
- package/dist/proofs/policy.mjs.map +1 -0
- package/dist/sessions/AuthenticationAuthority.d.mts +31 -0
- package/dist/sessions/AuthenticationAuthority.mjs +8 -0
- package/dist/sessions/AuthenticationAuthority.mjs.map +1 -0
- package/dist/sessions/PendingAuthentication.d.mts +108 -0
- package/dist/sessions/PendingAuthentication.mjs +40 -0
- package/dist/sessions/PendingAuthentication.mjs.map +1 -0
- package/dist/sessions/SessionStepUpPersistence.d.mts +152 -0
- package/dist/sessions/SessionStepUpPersistence.mjs +63 -0
- package/dist/sessions/SessionStepUpPersistence.mjs.map +1 -0
- package/dist/sessions/assurance.d.mts +163 -0
- package/dist/sessions/assurance.mjs +95 -0
- package/dist/sessions/assurance.mjs.map +1 -0
- package/dist/sessions/commit.d.mts +13 -0
- package/dist/sessions/configuration.d.mts +46 -0
- package/dist/sessions/configuration.mjs +55 -0
- package/dist/sessions/configuration.mjs.map +1 -0
- package/dist/sessions/contract.d.mts +663 -0
- package/dist/sessions/contract.mjs +174 -0
- package/dist/sessions/contract.mjs.map +1 -0
- package/dist/sessions/crypto.d.mts +24 -0
- package/dist/sessions/crypto.mjs +106 -0
- package/dist/sessions/crypto.mjs.map +1 -0
- package/dist/sessions/definition.d.mts +11 -0
- package/dist/sessions/definition.mjs +10 -0
- package/dist/sessions/definition.mjs.map +1 -0
- package/dist/sessions/errors.d.mts +35 -0
- package/dist/sessions/errors.mjs +34 -0
- package/dist/sessions/errors.mjs.map +1 -0
- package/dist/sessions/invalidation.d.mts +23 -0
- package/dist/sessions/invalidation.mjs +33 -0
- package/dist/sessions/invalidation.mjs.map +1 -0
- package/dist/sessions/models.d.mts +143 -0
- package/dist/sessions/models.mjs +94 -0
- package/dist/sessions/models.mjs.map +1 -0
- package/dist/sessions/module.d.mts +1091 -0
- package/dist/sessions/module.mjs +943 -0
- package/dist/sessions/module.mjs.map +1 -0
- package/dist/sessions/persistence.d.mts +93 -0
- package/dist/sessions/policy.d.mts +80 -0
- package/dist/sessions/policy.mjs +66 -0
- package/dist/sessions/policy.mjs.map +1 -0
- package/dist/testing/conformance/AuthStore.d.mts +11 -0
- package/dist/testing/conformance/AuthStore.mjs +173 -0
- package/dist/testing/conformance/AuthStore.mjs.map +1 -0
- package/dist/testing/conformance/OAuthConnectionStore.d.mts +11 -0
- package/dist/testing/conformance/OAuthConnectionStore.mjs +102 -0
- package/dist/testing/conformance/OAuthConnectionStore.mjs.map +1 -0
- package/dist/testing/conformance/OAuthStateStore.d.mts +11 -0
- package/dist/testing/conformance/OAuthStateStore.mjs +45 -0
- package/dist/testing/conformance/OAuthStateStore.mjs.map +1 -0
- package/dist/testing/conformance/PasswordCredentialStore.d.mts +20 -0
- package/dist/testing/conformance/PasswordCredentialStore.mjs +103 -0
- package/dist/testing/conformance/PasswordCredentialStore.mjs.map +1 -0
- package/dist/testing/conformance/support.mjs +17 -0
- package/dist/testing/conformance/support.mjs.map +1 -0
- package/dist/testing/crypto.d.mts +11 -0
- package/dist/testing/crypto.mjs +41 -0
- package/dist/testing/crypto.mjs.map +1 -0
- package/dist/testing/keyring.d.mts +9 -0
- package/dist/testing/keyring.mjs +17 -0
- package/dist/testing/keyring.mjs.map +1 -0
- package/dist/totp/TotpActionEvidence.d.mts +18 -0
- package/dist/totp/TotpActionEvidence.mjs +8 -0
- package/dist/totp/TotpActionEvidence.mjs.map +1 -0
- package/dist/totp/TotpPersistence.d.mts +19 -0
- package/dist/totp/TotpPersistence.mjs +8 -0
- package/dist/totp/TotpPersistence.mjs.map +1 -0
- package/dist/totp/TotpSecretKeys.d.mts +15 -0
- package/dist/totp/TotpSecretKeys.mjs +8 -0
- package/dist/totp/TotpSecretKeys.mjs.map +1 -0
- package/dist/totp/crypto.mjs +96 -0
- package/dist/totp/crypto.mjs.map +1 -0
- package/dist/totp/definition.d.mts +764 -0
- package/dist/totp/definition.mjs +24 -0
- package/dist/totp/definition.mjs.map +1 -0
- package/dist/totp/errors.d.mts +16 -0
- package/dist/totp/errors.mjs +18 -0
- package/dist/totp/errors.mjs.map +1 -0
- package/dist/totp/models.d.mts +377 -0
- package/dist/totp/models.mjs +137 -0
- package/dist/totp/models.mjs.map +1 -0
- package/dist/totp/module.d.mts +737 -0
- package/dist/totp/module.mjs +355 -0
- package/dist/totp/module.mjs.map +1 -0
- package/package.json +1 -0
- package/src/Atom.ts +4 -0
- package/src/Auth.ts +16 -0
- package/src/AuthContract.ts +17 -0
- package/src/AuthSession.ts +298 -0
- package/src/AuthStore.ts +367 -0
- package/src/AuthTokenCodec.ts +226 -0
- package/src/Client.ts +9 -0
- package/src/Cloudflare.ts +345 -0
- package/src/Drizzle.ts +378 -0
- package/src/DrizzleD1.ts +136 -0
- package/src/DrizzleLibsql.ts +288 -0
- package/src/DrizzleMysql2.ts +184 -0
- package/src/DrizzlePglite.ts +160 -0
- package/src/DrizzlePostgres.ts +160 -0
- package/src/DrizzleSqliteBun.ts +244 -0
- package/src/DrizzleSqliteDo.ts +473 -0
- package/src/DrizzleSqliteNode.ts +245 -0
- package/src/DrizzleSqliteWasm.ts +245 -0
- package/src/Email.ts +55 -0
- package/src/EmailOtp.ts +250 -0
- package/src/EmailOtpSender.ts +28 -0
- package/src/Errors.ts +103 -0
- package/src/GitHub.ts +16 -0
- package/src/Hooks.ts +50 -0
- package/src/Http.ts +47 -0
- package/src/HttpServer.ts +742 -0
- package/src/Identity.ts +53 -0
- package/src/IdentityResolver.ts +18 -0
- package/src/OAuth.ts +242 -0
- package/src/OpenIdClient.ts +13 -0
- package/src/OpenIdClientConnected.ts +18 -0
- package/src/OperationHttp.ts +14 -0
- package/src/OperationHttpClient.ts +6 -0
- package/src/OperationHttpServer.ts +15 -0
- package/src/Operations.ts +69 -0
- package/src/Passkey.ts +81 -0
- package/src/PasskeyBrowser.ts +19 -0
- package/src/PasskeyContract.ts +212 -0
- package/src/PasskeyPassword.ts +319 -0
- package/src/PasskeySimpleWebAuthn.ts +6 -0
- package/src/Password.ts +113 -0
- package/src/PasswordAuth.ts +197 -0
- package/src/PasswordCredentialStore.ts +140 -0
- package/src/PasswordHasher.ts +147 -0
- package/src/PhoneOtp.ts +32 -0
- package/src/Policy.ts +95 -0
- package/src/Proofs.ts +71 -0
- package/src/Rpc.ts +15 -0
- package/src/Schema.ts +235 -0
- package/src/SessionContract.ts +2 -0
- package/src/Sessions.ts +105 -0
- package/src/Testing.ts +24 -0
- package/src/Totp.ts +28 -0
- package/src/TotpContract.ts +147 -0
- package/src/WebCrypto.ts +61 -0
- package/src/Workflows.ts +12 -0
- package/src/atom/AuthAtomLifetime.ts +87 -0
- package/src/atom/AuthAtomWorkflow.ts +27 -0
- package/src/atom/client.ts +364 -0
- package/src/atom/operations.ts +183 -0
- package/src/atom/scoped-runtime.ts +249 -0
- package/src/auth/Auth.ts +482 -0
- package/src/auth/AuthConfigurationError.ts +9 -0
- package/src/auth/AuthRequest.ts +21 -0
- package/src/auth/AuthStrategy.ts +116 -0
- package/src/auth/ConsumeDecision.ts +4 -0
- package/src/auth/actions.ts +220 -0
- package/src/auth/defaults.ts +23 -0
- package/src/auth/definition.ts +88 -0
- package/src/auth/session.ts +146 -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 +1808 -0
- package/src/drizzle/d1-generated-statement.ts +129 -0
- package/src/drizzle/d1-identity.ts +374 -0
- package/src/drizzle/d1-oauth.ts +338 -0
- package/src/drizzle/d1-passkey.ts +371 -0
- package/src/drizzle/d1-password-prepared.ts +1273 -0
- package/src/drizzle/d1-passwords.ts +2661 -0
- package/src/drizzle/d1-phone.ts +94 -0
- package/src/drizzle/d1-planning.ts +105 -0
- package/src/drizzle/d1-proofs.ts +2305 -0
- package/src/drizzle/d1-sessions.ts +2867 -0
- package/src/drizzle/d1-totp.ts +79 -0
- package/src/drizzle/email-model.ts +512 -0
- package/src/drizzle/email-registration.ts +696 -0
- package/src/drizzle/email-sql.ts +1468 -0
- package/src/drizzle/email-target.ts +243 -0
- package/src/drizzle/model.ts +492 -0
- package/src/drizzle/mysql-emails.ts +323 -0
- package/src/drizzle/mysql-identity.ts +323 -0
- package/src/drizzle/mysql-password-prepared.ts +206 -0
- package/src/drizzle/mysql-passwords.ts +341 -0
- package/src/drizzle/mysql-proofs.ts +183 -0
- package/src/drizzle/mysql-sessions.ts +742 -0
- package/src/drizzle/mysql.ts +686 -0
- package/src/drizzle/oauth-accounts.ts +801 -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 +463 -0
- package/src/drizzle/oauth-connected-flow.ts +439 -0
- package/src/drizzle/oauth-connected-input.ts +128 -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 +846 -0
- package/src/drizzle/oauth-connected-target.ts +264 -0
- package/src/drizzle/oauth-drivers.ts +567 -0
- package/src/drizzle/oauth-flow.ts +461 -0
- package/src/drizzle/oauth-input.ts +205 -0
- package/src/drizzle/oauth-model.ts +610 -0
- package/src/drizzle/oauth-mysql.ts +10 -0
- package/src/drizzle/oauth-owner.ts +29 -0
- package/src/drizzle/oauth-registration.ts +638 -0
- package/src/drizzle/oauth-state.ts +213 -0
- package/src/drizzle/oauth-target.ts +751 -0
- package/src/drizzle/passkey-admission.ts +333 -0
- package/src/drizzle/passkey-credentials.ts +465 -0
- package/src/drizzle/passkey-drivers.ts +385 -0
- package/src/drizzle/passkey-enrollment.ts +280 -0
- package/src/drizzle/passkey-flow.ts +983 -0
- package/src/drizzle/passkey-management.ts +369 -0
- package/src/drizzle/passkey-model.ts +350 -0
- package/src/drizzle/passkey-registration-ceremony-model.ts +69 -0
- package/src/drizzle/passkey-registration-ceremony.ts +254 -0
- package/src/drizzle/passkey-registration-custody.ts +82 -0
- package/src/drizzle/passkey-registration-write.ts +378 -0
- package/src/drizzle/passkey-state.ts +307 -0
- package/src/drizzle/passkey-target.ts +528 -0
- package/src/drizzle/passkey-write-drivers.ts +396 -0
- package/src/drizzle/passkey-write-model.ts +265 -0
- package/src/drizzle/passkey-write-state.ts +627 -0
- package/src/drizzle/passkey-write-target.ts +406 -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 +1198 -0
- package/src/drizzle/password-prepared-state.ts +232 -0
- package/src/drizzle/password-prepared-target.ts +158 -0
- package/src/drizzle/password-registration.ts +372 -0
- package/src/drizzle/password-sql.ts +2082 -0
- package/src/drizzle/password-target.ts +223 -0
- package/src/drizzle/pg-emails.ts +323 -0
- package/src/drizzle/pg-password-prepared.ts +207 -0
- package/src/drizzle/pg-passwords.ts +340 -0
- package/src/drizzle/pg-proofs.ts +193 -0
- package/src/drizzle/pg-sessions.ts +751 -0
- package/src/drizzle/pg.ts +982 -0
- package/src/drizzle/phone-model.ts +185 -0
- package/src/drizzle/phone-state.ts +802 -0
- package/src/drizzle/phone-target.ts +471 -0
- package/src/drizzle/proof-model.ts +398 -0
- package/src/drizzle/proof-sql.ts +1912 -0
- package/src/drizzle/proof-target.ts +120 -0
- package/src/drizzle/session-model.ts +368 -0
- package/src/drizzle/session-sql.ts +2152 -0
- package/src/drizzle/session-target.ts +335 -0
- package/src/drizzle/sqlite-emails.ts +368 -0
- package/src/drizzle/sqlite-identity.ts +343 -0
- package/src/drizzle/sqlite-password-prepared.ts +262 -0
- package/src/drizzle/sqlite-passwords.ts +499 -0
- package/src/drizzle/sqlite-proofs.ts +204 -0
- package/src/drizzle/sqlite-sessions.ts +972 -0
- package/src/drizzle/sqlite.ts +704 -0
- package/src/drizzle/standalone-guard.ts +38 -0
- package/src/drizzle/step-up-model.ts +129 -0
- package/src/drizzle/step-up-state.ts +141 -0
- package/src/drizzle/totp-model.ts +91 -0
- package/src/drizzle/totp-state.ts +520 -0
- package/src/drizzle/totp-target.ts +304 -0
- package/src/drizzle/transaction-execution.ts +290 -0
- package/src/drizzle/transaction-mysql.ts +104 -0
- package/src/drizzle/transaction-owner.ts +570 -0
- package/src/email/EmailActionEvidence.ts +37 -0
- package/src/email/EmailAddressPersistence.ts +71 -0
- package/src/email/EmailIdentifierNotifier.ts +48 -0
- package/src/email/EmailReturnTargets.ts +50 -0
- package/src/email/EmailSignInTargets.ts +20 -0
- package/src/email/addresses.ts +630 -0
- package/src/email/definition.ts +309 -0
- package/src/email/errors.ts +23 -0
- package/src/email/magicLink.ts +84 -0
- package/src/email/models.ts +50 -0
- package/src/email/module.ts +664 -0
- package/src/email/registration.ts +415 -0
- package/src/email/snapshot.ts +51 -0
- package/src/hooks/LifecycleHooks.ts +136 -0
- package/src/hooks/commit.ts +271 -0
- package/src/hooks/models.ts +111 -0
- package/src/hooks/plugins.ts +87 -0
- package/src/hooks/transactions.ts +51 -0
- package/src/http/auth-api.ts +17 -0
- package/src/http/auth-contract.ts +148 -0
- package/src/http/auth-http.ts +467 -0
- package/src/http/endpoints/get-session.ts +9 -0
- package/src/http/endpoints/password-sign-in.ts +19 -0
- package/src/http/endpoints/request-email-otp.ts +10 -0
- package/src/http/endpoints/set-password.ts +18 -0
- package/src/http/endpoints/sign-out.ts +5 -0
- package/src/http/endpoints/verify-email-otp.ts +15 -0
- package/src/http/models.ts +80 -0
- package/src/http/security.ts +102 -0
- package/src/http/session-contract.ts +92 -0
- package/src/http-operation/OperationHttpInvocation.ts +39 -0
- package/src/http-operation/OperationHttpServerConfig.ts +124 -0
- package/src/http-operation/auth-client.ts +273 -0
- package/src/http-operation/client.ts +453 -0
- package/src/http-operation/configuration-schema.ts +19 -0
- package/src/http-operation/contract.ts +116 -0
- package/src/http-operation/errors.ts +38 -0
- package/src/http-operation/models.ts +42 -0
- package/src/http-operation/private.ts +50 -0
- package/src/http-operation/security.ts +93 -0
- package/src/http-operation/server.ts +544 -0
- package/src/identity/ExternalIdentityMutation.ts +18 -0
- package/src/identity/IdentityMutation.ts +41 -0
- package/src/identity/IdentityRepository.ts +37 -0
- package/src/identity/SubjectLifecycle.ts +80 -0
- package/src/identity/SubjectProvisioner.ts +40 -0
- package/src/identity/codecs.ts +54 -0
- package/src/identity/models.ts +82 -0
- package/src/identity/operations.ts +182 -0
- package/src/index.ts +23 -0
- package/src/internal/AuthStoreDecisions.ts +23 -0
- package/src/internal/CurrentSession.ts +8 -0
- package/src/internal/diagnostics.ts +71 -0
- package/src/oauth/GithubOAuthProvider.ts +106 -0
- package/src/oauth/OAuth.ts +436 -0
- package/src/oauth/OAuthAccountsPersistence.ts +142 -0
- package/src/oauth/OAuthActionEvidence.ts +31 -0
- package/src/oauth/OAuthConnectedActionEvidence.ts +28 -0
- package/src/oauth/OAuthConnectedPersistence.ts +163 -0
- package/src/oauth/OAuthConnectedProtocol.ts +54 -0
- package/src/oauth/OAuthConnectedRevocations.ts +48 -0
- package/src/oauth/OAuthConnectedTokenProtector.ts +240 -0
- package/src/oauth/OAuthConnectedTransactionProtector.ts +56 -0
- package/src/oauth/OAuthConnectedUseAuthority.ts +26 -0
- package/src/oauth/OAuthConnectionStore.ts +59 -0
- package/src/oauth/OAuthLinkTransactionProtector.ts +58 -0
- package/src/oauth/OAuthProtocol.ts +39 -0
- package/src/oauth/OAuthProvider.ts +126 -0
- package/src/oauth/OAuthProviders.ts +53 -0
- package/src/oauth/OAuthRegistrationIntents.ts +42 -0
- package/src/oauth/OAuthReturnTargets.ts +44 -0
- package/src/oauth/OAuthSignInPersistence.ts +91 -0
- package/src/oauth/OAuthStateDecisions.ts +16 -0
- package/src/oauth/OAuthStateStore.ts +102 -0
- package/src/oauth/OAuthTransactionProtector.ts +103 -0
- package/src/oauth/accounts.ts +987 -0
- package/src/oauth/accountsModels.ts +214 -0
- package/src/oauth/connected.ts +995 -0
- package/src/oauth/connectedAccess.ts +644 -0
- package/src/oauth/connectedMaintenance.ts +248 -0
- package/src/oauth/connectedModels.ts +495 -0
- package/src/oauth/definition.ts +414 -0
- package/src/oauth/errors.ts +78 -0
- package/src/oauth/github/identity.ts +26 -0
- package/src/oauth/github/models.ts +37 -0
- package/src/oauth/github/protocol.ts +329 -0
- package/src/oauth/openid-client/ProviderRevocation.ts +22 -0
- package/src/oauth/openid-client/compatibility.ts +47 -0
- package/src/oauth/openid-client/configuration.ts +472 -0
- package/src/oauth/openid-client/connected/configuration.ts +565 -0
- package/src/oauth/openid-client/connected/models.ts +58 -0
- package/src/oauth/openid-client/connected/protocol.ts +866 -0
- package/src/oauth/openid-client/models.ts +78 -0
- package/src/oauth/openid-client/protocol.ts +437 -0
- package/src/oauth/openid-client/transport.ts +67 -0
- package/src/oauth/policy.ts +26 -0
- package/src/oauth/registration.ts +410 -0
- package/src/oauth/registrationModels.ts +115 -0
- package/src/oauth/registrationSecrets.ts +127 -0
- package/src/oauth/schema.ts +102 -0
- package/src/oauth/signInErrors.ts +23 -0
- package/src/oauth/signInModels.ts +266 -0
- package/src/oauth/signInModule.ts +875 -0
- package/src/oauth/signInSnapshot.ts +37 -0
- package/src/oauth/transactionEncryption.ts +198 -0
- package/src/operations/RequestBindingConfig.ts +12 -0
- package/src/operations/actions.ts +342 -0
- package/src/operations/context.ts +130 -0
- package/src/operations/credentials.ts +121 -0
- package/src/operations/errors.ts +53 -0
- package/src/operations/operation.ts +740 -0
- package/src/operations/requestBinding.ts +237 -0
- package/src/operations/requestBindingModels.ts +18 -0
- package/src/operations/reveals.ts +147 -0
- package/src/passkey/PasskeyActionEvidence.ts +25 -0
- package/src/passkey/PasskeyCredentials.ts +16 -0
- package/src/passkey/PasskeyEnrollmentContext.ts +26 -0
- package/src/passkey/PasskeyManagementPersistence.ts +124 -0
- package/src/passkey/PasskeyPersistence.ts +85 -0
- package/src/passkey/PasskeyProtocol.ts +48 -0
- package/src/passkey/actions.ts +905 -0
- package/src/passkey/browser/PasskeyBrowser.ts +26 -0
- package/src/passkey/browser/models.ts +67 -0
- package/src/passkey/browser/simplewebauthn.ts +621 -0
- package/src/passkey/definition.ts +386 -0
- package/src/passkey/errors.ts +39 -0
- package/src/passkey/management.ts +552 -0
- package/src/passkey/models.ts +414 -0
- package/src/passkey/module.ts +367 -0
- package/src/passkey/pending.ts +203 -0
- package/src/passkey/policy.ts +88 -0
- package/src/passkey/registration.ts +251 -0
- package/src/passkey/simplewebauthn/configuration.ts +97 -0
- package/src/passkey/simplewebauthn/models.ts +9 -0
- package/src/passkey/simplewebauthn/protocol.ts +729 -0
- package/src/passkey/snapshot.ts +48 -0
- package/src/passkey/stepUp.ts +212 -0
- package/src/password/CompromisedPasswords.ts +36 -0
- package/src/password/NewPasswordCheck.ts +89 -0
- package/src/password/PasswordHashing.ts +209 -0
- package/src/password/PasswordKdfAdmission.ts +44 -0
- package/src/password/configuration.ts +52 -0
- package/src/password/defaults.ts +15 -0
- package/src/password/encoding.ts +137 -0
- package/src/password/errors.ts +43 -0
- package/src/password/methods/PasswordActionEvidence.ts +41 -0
- package/src/password/methods/PasswordPersistence.ts +128 -0
- package/src/password/methods/PasswordPreparedPersistence.ts +123 -0
- package/src/password/methods/contracts.ts +47 -0
- package/src/password/methods/definition.ts +199 -0
- package/src/password/methods/errors.ts +26 -0
- package/src/password/methods/models.ts +80 -0
- package/src/password/methods/module.ts +986 -0
- package/src/password/methods/policy.ts +68 -0
- package/src/password/methods/preparation.ts +73 -0
- package/src/password/methods/prepared.ts +1199 -0
- package/src/password/methods/preparedModels.ts +496 -0
- package/src/password/methods/signIn.ts +136 -0
- package/src/password/methods/snapshot.ts +53 -0
- package/src/password/methods/verification.ts +266 -0
- package/src/password/models.ts +15 -0
- package/src/password/policy.ts +41 -0
- package/src/phone/PhoneActionEvidence.ts +26 -0
- package/src/phone/PhoneAdmission.ts +29 -0
- package/src/phone/PhoneDeliveryEligibility.ts +9 -0
- package/src/phone/PhonePersistence.ts +43 -0
- package/src/phone/PhoneRequestContext.ts +7 -0
- package/src/phone/PhoneSignInTargets.ts +19 -0
- package/src/phone/definition.ts +87 -0
- package/src/phone/failure.ts +40 -0
- package/src/phone/lifecycle.ts +662 -0
- package/src/phone/lifecycleModels.ts +108 -0
- package/src/phone/models.ts +41 -0
- package/src/phone/module.ts +433 -0
- package/src/proofs/EmailProofDelivery.ts +19 -0
- package/src/proofs/HostIngressLimiter.ts +20 -0
- package/src/proofs/ProofPersistence.ts +172 -0
- package/src/proofs/SmsProofDelivery.ts +19 -0
- package/src/proofs/abuse.ts +23 -0
- package/src/proofs/completion.ts +23 -0
- package/src/proofs/crypto.ts +326 -0
- package/src/proofs/definition.ts +39 -0
- package/src/proofs/delivery.ts +73 -0
- package/src/proofs/dispatch.ts +99 -0
- package/src/proofs/errors.ts +46 -0
- package/src/proofs/models.ts +131 -0
- package/src/proofs/module.ts +620 -0
- package/src/proofs/policy.ts +77 -0
- package/src/sessions/AuthenticationAuthority.ts +51 -0
- package/src/sessions/PendingAuthentication.ts +121 -0
- package/src/sessions/SessionStepUpPersistence.ts +164 -0
- package/src/sessions/assurance.ts +192 -0
- package/src/sessions/commit.ts +13 -0
- package/src/sessions/configuration.ts +133 -0
- package/src/sessions/contract.ts +203 -0
- package/src/sessions/crypto.ts +181 -0
- package/src/sessions/definition.ts +25 -0
- package/src/sessions/errors.ts +68 -0
- package/src/sessions/invalidation.ts +46 -0
- package/src/sessions/models.ts +138 -0
- package/src/sessions/module.ts +1991 -0
- package/src/sessions/persistence.ts +135 -0
- package/src/sessions/policy.ts +103 -0
- package/src/testing/conformance/AuthStore.ts +314 -0
- package/src/testing/conformance/OAuthConnectionStore.ts +167 -0
- package/src/testing/conformance/OAuthStateStore.ts +105 -0
- package/src/testing/conformance/PasswordCredentialStore.ts +205 -0
- package/src/testing/conformance/support.ts +38 -0
- package/src/testing/crypto.ts +55 -0
- package/src/testing/keyring.ts +17 -0
- package/src/totp/TotpActionEvidence.ts +18 -0
- package/src/totp/TotpPersistence.ts +26 -0
- package/src/totp/TotpSecretKeys.ts +15 -0
- package/src/totp/crypto.ts +160 -0
- package/src/totp/definition.ts +78 -0
- package/src/totp/errors.ts +25 -0
- package/src/totp/models.ts +164 -0
- package/src/totp/module.ts +717 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { make as make$1 } from "../operations/actions.mjs";
|
|
2
|
+
import { cryptoLayer, hooksLayer } from "./defaults.mjs";
|
|
3
|
+
import { configuredLayer } from "../sessions/configuration.mjs";
|
|
4
|
+
import { makeSessionModule } from "../sessions/module.mjs";
|
|
5
|
+
import { AuthConfigurationError } from "./AuthConfigurationError.mjs";
|
|
6
|
+
import { makeActionApi } from "./actions.mjs";
|
|
7
|
+
import { makeSessionApi } from "./session.mjs";
|
|
8
|
+
import { Context, Effect, Exit, Layer, Option, Schema, Scope } from "effect";
|
|
9
|
+
//#region src/auth/Auth.ts
|
|
10
|
+
const withConstructionLayer = (create, layer) => Effect.gen(function* () {
|
|
11
|
+
const current = yield* Effect.serviceOption(Layer.CurrentMemoMap);
|
|
12
|
+
const memoMap = Option.isSome(current) ? current.value : yield* Layer.makeMemoMap;
|
|
13
|
+
const scope = yield* Scope.fork(yield* Effect.scope);
|
|
14
|
+
return yield* Effect.gen(function* () {
|
|
15
|
+
const services = yield* Layer.buildWithMemoMap(layer, memoMap, scope);
|
|
16
|
+
return yield* create.pipe(Effect.provide(services), Scope.provide(scope), Effect.provideService(Layer.CurrentMemoMap, memoMap));
|
|
17
|
+
}).pipe(Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))));
|
|
18
|
+
});
|
|
19
|
+
const build = Effect.fn("Auth.make")(function* (strategies, defaultStrategy) {
|
|
20
|
+
const entries = Object.entries(strategies);
|
|
21
|
+
const current = yield* Effect.serviceOption(Layer.CurrentMemoMap);
|
|
22
|
+
const memoMap = Option.isSome(current) ? current.value : yield* Layer.makeMemoMap;
|
|
23
|
+
const scope = yield* Scope.fork(yield* Effect.scope);
|
|
24
|
+
return yield* Effect.gen(function* () {
|
|
25
|
+
const built = yield* Effect.forEach(entries, ([name, strategy]) => Effect.map(strategy.make, (api) => [name, api]));
|
|
26
|
+
const methodsByStrategy = new Map(built);
|
|
27
|
+
const names = new Set([...methodsByStrategy.values()].flatMap((api) => Object.keys(api)));
|
|
28
|
+
if ([
|
|
29
|
+
"then",
|
|
30
|
+
"getSession",
|
|
31
|
+
"requireSession",
|
|
32
|
+
"verifySession",
|
|
33
|
+
"signOut",
|
|
34
|
+
"renewSession"
|
|
35
|
+
].some((name) => names.has(name))) return yield* AuthConfigurationError.make({ reason: "method" });
|
|
36
|
+
const api = Object.fromEntries([...names].map((name) => [name, (...args) => Effect.suspend(() => {
|
|
37
|
+
const selected = args.length === 2 ? args[0] : defaultStrategy;
|
|
38
|
+
const input = args.length === 2 ? args[1] : args[0];
|
|
39
|
+
const methods = typeof selected === "string" ? methodsByStrategy.get(selected) : void 0;
|
|
40
|
+
if (args.length > 2 || methods === void 0 || !Object.hasOwn(methods, name)) return Effect.die(AuthConfigurationError.make({ reason: "method" }));
|
|
41
|
+
return methods[name](input);
|
|
42
|
+
})]));
|
|
43
|
+
return {
|
|
44
|
+
api: Object.freeze(api),
|
|
45
|
+
strategies: Object.freeze(Object.fromEntries(built))
|
|
46
|
+
};
|
|
47
|
+
}).pipe(Effect.provideService(Layer.CurrentMemoMap, memoMap), Scope.provide(scope), Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))));
|
|
48
|
+
});
|
|
49
|
+
const namespaceSchema = Schema.NonEmptyString.check(Schema.isMaxLength(128), Schema.isPattern(/^[A-Za-z0-9._:/-]+$/));
|
|
50
|
+
const strategyNameSchema = Schema.NonEmptyString.check(Schema.isMaxLength(64), Schema.isPattern(/^[A-Za-z0-9._-]+$/));
|
|
51
|
+
const configurationError = (strategies, defaultStrategy, namespace, sessionNamespace) => {
|
|
52
|
+
if (!Schema.is(namespaceSchema)(namespace) || !Schema.is(namespaceSchema)(sessionNamespace)) return AuthConfigurationError.make({ reason: "namespace" });
|
|
53
|
+
const entries = Object.entries(strategies);
|
|
54
|
+
if (entries.some(([key]) => !Schema.is(strategyNameSchema)(key))) return AuthConfigurationError.make({ reason: "strategies" });
|
|
55
|
+
if (defaultStrategy !== void 0 && !Object.hasOwn(strategies, defaultStrategy)) return AuthConfigurationError.make({ reason: "default-strategy" });
|
|
56
|
+
if (entries.flatMap(([key, strategy]) => "bind" in strategy ? [strategy.namespace ?? `${namespace}/${key}`] : []).some((id) => !Schema.is(namespaceSchema)(id))) return AuthConfigurationError.make({ reason: "namespace" });
|
|
57
|
+
};
|
|
58
|
+
/** Bind schemas and service keys once, before choosing the application's adapter Layers. */
|
|
59
|
+
const bind = (options, shared) => {
|
|
60
|
+
const strategies = { ...options.strategies };
|
|
61
|
+
const defaultStrategy = options.defaultStrategy;
|
|
62
|
+
const namespace = options.namespace ?? "effect-auth";
|
|
63
|
+
const sessionNamespace = options.sessionNamespace ?? `${namespace}/sessions`;
|
|
64
|
+
const invalid = configurationError(strategies, defaultStrategy, namespace, sessionNamespace);
|
|
65
|
+
if (invalid !== void 0) throw invalid;
|
|
66
|
+
const sessions = makeSessionModule(sessionNamespace, options.claims);
|
|
67
|
+
const modules = Object.fromEntries(Object.entries(strategies).map(([key, strategy]) => [key, "bind" in strategy ? strategy.bind({
|
|
68
|
+
claims: options.claims,
|
|
69
|
+
namespace: strategy.namespace ?? `${namespace}/${key}`,
|
|
70
|
+
sessionNamespace,
|
|
71
|
+
sessions
|
|
72
|
+
}) : { strategy }]));
|
|
73
|
+
const selected = Object.fromEntries(Object.entries(modules).map(([key, module]) => [key, module.strategy]));
|
|
74
|
+
const contract = shared ?? make$1(namespace, { claims: options.claims });
|
|
75
|
+
const create = Effect.gen(function* () {
|
|
76
|
+
const built = yield* build(selected, defaultStrategy);
|
|
77
|
+
const sessionApi = yield* makeSessionApi(sessions);
|
|
78
|
+
const raw = {
|
|
79
|
+
...built.api,
|
|
80
|
+
...sessionApi
|
|
81
|
+
};
|
|
82
|
+
const actions = yield* makeActionApi(sessionApi, built.strategies, defaultStrategy, contract.actions);
|
|
83
|
+
return Object.freeze({
|
|
84
|
+
...raw,
|
|
85
|
+
...actions
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
const completing = Object.values(selected).some((strategy) => strategy.completion === true);
|
|
89
|
+
const make = options.sessions === void 0 ? create : !completing ? withConstructionLayer(create, configuredLayer(sessions, options.sessions)) : withConstructionLayer(create, sessions.completionLayer().pipe(Layer.provideMerge(configuredLayer(sessions, options.sessions)), Layer.provide([cryptoLayer, hooksLayer])));
|
|
90
|
+
return Object.freeze({
|
|
91
|
+
claims: options.claims,
|
|
92
|
+
contract,
|
|
93
|
+
namespace,
|
|
94
|
+
sessions,
|
|
95
|
+
strategies: Object.freeze(modules),
|
|
96
|
+
make
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
const service = () => (id, definition, create) => {
|
|
100
|
+
const Auth = Context.Service()(id);
|
|
101
|
+
const layer = Layer.effect(Auth, create);
|
|
102
|
+
return Object.assign(Auth, definition, { layer });
|
|
103
|
+
};
|
|
104
|
+
/** Define one yieldable auth service, its schemas, extension ports and runtime Layer. */
|
|
105
|
+
const makeService = (id, options, contract) => {
|
|
106
|
+
if (!Schema.is(Schema.NonEmptyString)(id)) throw AuthConfigurationError.make({ reason: "id" });
|
|
107
|
+
const definition = bind({
|
|
108
|
+
...options,
|
|
109
|
+
namespace: options.namespace ?? id
|
|
110
|
+
}, contract);
|
|
111
|
+
return service()(id, definition, definition.make);
|
|
112
|
+
};
|
|
113
|
+
function make(definition, options) {
|
|
114
|
+
if (typeof definition !== "string") return makeService(definition.namespace, {
|
|
115
|
+
...options,
|
|
116
|
+
namespace: definition.namespace,
|
|
117
|
+
sessionNamespace: `${definition.namespace}/sessions`,
|
|
118
|
+
claims: definition.claims
|
|
119
|
+
}, definition);
|
|
120
|
+
if (options.claims === void 0) throw AuthConfigurationError.make({ reason: "method" });
|
|
121
|
+
const namespace = options.namespace ?? definition;
|
|
122
|
+
return makeService(definition, {
|
|
123
|
+
...options,
|
|
124
|
+
namespace,
|
|
125
|
+
sessionNamespace: options.sessionNamespace ?? `${namespace}/sessions`,
|
|
126
|
+
claims: options.claims
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/** Class form of the same auth definition, for applications using named service classes. */
|
|
130
|
+
const Service = () => (id, options) => {
|
|
131
|
+
if (!Schema.is(Schema.NonEmptyString)(id)) throw AuthConfigurationError.make({ reason: "id" });
|
|
132
|
+
const definition = bind({
|
|
133
|
+
...options,
|
|
134
|
+
namespace: options.namespace ?? id
|
|
135
|
+
});
|
|
136
|
+
return service()(id, definition, definition.make);
|
|
137
|
+
};
|
|
138
|
+
//#endregion
|
|
139
|
+
export { Service, make };
|
|
140
|
+
|
|
141
|
+
//# sourceMappingURL=Auth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Auth.mjs","names":["makeContract"],"sources":["../../src/auth/Auth.ts"],"sourcesContent":["import { Context, Effect, Exit, Layer, Option, Schema, Scope, type Types } from \"effect\";\n\nimport { make as makeContract, type AnyAuthContract } from \"../operations/actions\";\nimport type { AuthenticationAuthority } from \"../sessions/AuthenticationAuthority\";\nimport {\n configuredLayer,\n type SessionConfiguration,\n type SessionRequirements,\n} from \"../sessions/configuration\";\nimport type { SessionConfigurationError } from \"../sessions/errors\";\nimport { makeSessionModule, type ModuleService } from \"../sessions/module\";\nimport { makeActionApi } from \"./actions\";\nimport { AuthConfigurationError } from \"./AuthConfigurationError\";\nimport { cryptoLayer, hooksLayer } from \"./defaults\";\nimport type {\n BoundSelection,\n BoundStrategies,\n BuiltStrategy as Strategy,\n ClaimsCodec,\n StrategySelection,\n} from \"./definition\";\nimport { makeSessionApi } from \"./session\";\n\ntype Strategies = Readonly<Record<string, Strategy>>;\ntype CompletionOf<S> = S extends { readonly completion: infer C } ? C : false;\n\nconst withConstructionLayer = <A, E, R, Provided, E2, R2>(\n create: Effect.Effect<A, E, R>,\n layer: Layer.Layer<Provided, E2, R2>,\n) =>\n Effect.gen(function* () {\n const current = yield* Effect.serviceOption(Layer.CurrentMemoMap);\n const memoMap = Option.isSome(current) ? current.value : yield* Layer.makeMemoMap;\n const scope = yield* Scope.fork(yield* Effect.scope);\n\n return yield* Effect.gen(function* () {\n const services = yield* Layer.buildWithMemoMap(layer, memoMap, scope);\n\n return yield* create.pipe(\n Effect.provide(services),\n Scope.provide(scope),\n Effect.provideService(Layer.CurrentMemoMap, memoMap),\n );\n }).pipe(Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))));\n });\n\ntype Api<S extends Strategy> = Effect.Success<S[\"make\"]>;\ntype StrategyMethod<S extends Strategy> = S extends Strategy ? Api<S>[keyof Api<S>] : never;\ntype MethodNames<S extends Strategies> = S[keyof S] extends infer Strategy\n ? Strategy extends { readonly make: Effect.Effect<infer Api, unknown, unknown> }\n ? keyof Api\n : never\n : never;\ntype Selected<S extends Strategies, M extends PropertyKey> = {\n [K in keyof S]: M extends keyof Api<S[K]>\n ? (strategy: K, input: Parameters<Api<S[K]>[M]>[0]) => ReturnType<Api<S[K]>[M]>\n : never;\n}[keyof S];\n\nexport type AuthApi<S extends Strategies, Default extends keyof S | undefined> = {\n readonly [M in MethodNames<S>]: Types.UnionToIntersection<Selected<S, M>> &\n (Default extends keyof S\n ? M extends keyof Api<S[Default]>\n ? Api<S[Default]>[M]\n : unknown\n : unknown);\n};\n\ntype DefaultedName<Key extends string, Value extends string, Default extends string> = [\n Value,\n Default,\n] extends [Default, Value]\n ? { readonly [K in Key]?: Value }\n : { readonly [K in Key]: Value };\n\ntype Names<Id extends string, SessionId extends string, Default extends string> = DefaultedName<\n \"namespace\",\n Id,\n Default\n> &\n DefaultedName<\"sessionNamespace\", SessionId, `${Id}/sessions`>;\n\nexport type Options<\n Claims extends ClaimsCodec,\n S extends StrategySelection,\n Default extends keyof S | undefined = undefined,\n Id extends string = \"effect-auth\",\n SessionId extends string = `${Id}/sessions`,\n DefaultId extends string = \"effect-auth\",\n Sessions extends SessionConfiguration | undefined = undefined,\n> = {\n readonly claims: Claims;\n readonly strategies?: S & Record<Exclude<keyof S, string>, never>;\n /** Omit when supplying a custom SessionStrategy and completion through Layers. */\n readonly sessions?: Sessions;\n readonly defaultStrategy?: Default;\n} & Names<Id, SessionId, DefaultId>;\n\nconst build = Effect.fn(\"Auth.make\")(function* <\n S extends Strategies,\n Default extends keyof S | undefined,\n>(strategies: S, defaultStrategy: Default | undefined) {\n type Build = S[keyof S][\"make\"];\n\n const entries = Object.entries(strategies) as Array<\n [\n string,\n {\n readonly make: Effect.Effect<\n Effect.Success<Build>,\n Effect.Error<Build>,\n Effect.Services<Build>\n >;\n },\n ]\n >;\n\n const current = yield* Effect.serviceOption(Layer.CurrentMemoMap);\n const memoMap = Option.isSome(current) ? current.value : yield* Layer.makeMemoMap;\n const scope = yield* Scope.fork(yield* Effect.scope);\n\n return yield* Effect.gen(function* () {\n type Result = ReturnType<StrategyMethod<S[keyof S]>>;\n type Callable = (\n input: never,\n ) => Effect.Effect<Effect.Success<Result>, Effect.Error<Result>, Effect.Services<Result>>;\n\n const built = yield* Effect.forEach(entries, ([name, strategy]) =>\n Effect.map(strategy.make, (api) => [name, api] as const),\n );\n\n const methodsByStrategy = new Map(\n built as ReadonlyArray<readonly [string, Readonly<Record<string, Callable>>]>,\n );\n\n const names = new Set([...methodsByStrategy.values()].flatMap((api) => Object.keys(api)));\n\n if (\n [\"then\", \"getSession\", \"requireSession\", \"verifySession\", \"signOut\", \"renewSession\"].some(\n (name) => names.has(name),\n )\n )\n return yield* AuthConfigurationError.make({ reason: \"method\" });\n\n const api = Object.fromEntries(\n [...names].map((name) => [\n name,\n (...args: readonly unknown[]) =>\n Effect.suspend(() => {\n const selected = args.length === 2 ? args[0] : defaultStrategy;\n const input = args.length === 2 ? args[1] : args[0];\n\n const methods =\n typeof selected === \"string\" ? methodsByStrategy.get(selected) : undefined;\n\n if (args.length > 2 || methods === undefined || !Object.hasOwn(methods, name))\n return Effect.die(AuthConfigurationError.make({ reason: \"method\" }));\n\n return methods[name](input as never);\n }),\n ]),\n );\n\n // The dispatch table is assembled from these exact strategy/method pairs.\n return {\n api: Object.freeze(api) as AuthApi<S, Default>,\n strategies: Object.freeze(Object.fromEntries(built)) as {\n readonly [Name in keyof S]: Api<S[Name]>;\n },\n };\n }).pipe(\n Effect.provideService(Layer.CurrentMemoMap, memoMap),\n Scope.provide(scope),\n Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))),\n );\n});\n\nconst namespaceSchema = Schema.NonEmptyString.check(\n Schema.isMaxLength(128),\n Schema.isPattern(/^[A-Za-z0-9._:/-]+$/),\n);\n\nconst strategyNameSchema = Schema.NonEmptyString.check(\n Schema.isMaxLength(64),\n Schema.isPattern(/^[A-Za-z0-9._-]+$/),\n);\n\nconst configurationError = (\n strategies: StrategySelection,\n defaultStrategy: PropertyKey | undefined,\n namespace: string,\n sessionNamespace: string,\n) => {\n if (!Schema.is(namespaceSchema)(namespace) || !Schema.is(namespaceSchema)(sessionNamespace))\n return AuthConfigurationError.make({ reason: \"namespace\" });\n const entries = Object.entries(strategies);\n\n if (entries.some(([key]) => !Schema.is(strategyNameSchema)(key)))\n return AuthConfigurationError.make({ reason: \"strategies\" });\n if (defaultStrategy !== undefined && !Object.hasOwn(strategies, defaultStrategy))\n return AuthConfigurationError.make({ reason: \"default-strategy\" });\n\n const namespaces = entries.flatMap(([key, strategy]) =>\n \"bind\" in strategy ? [strategy.namespace ?? `${namespace}/${key}`] : [],\n );\n\n if (namespaces.some((id) => !Schema.is(namespaceSchema)(id)))\n return AuthConfigurationError.make({ reason: \"namespace\" });\n\n return undefined;\n};\n\n/** Bind schemas and service keys once, before choosing the application's adapter Layers. */\nconst bind = <\n Claims extends ClaimsCodec,\n const S extends StrategySelection = {},\n const Default extends keyof S | undefined = undefined,\n const Id extends string = \"effect-auth\",\n const SessionId extends string = `${Id}/sessions`,\n const Sessions extends SessionConfiguration | undefined = undefined,\n Contract extends AnyAuthContract | undefined = undefined,\n>(\n options: Options<Claims, S, Default, Id, SessionId, \"effect-auth\", Sessions>,\n shared?: Contract,\n) => {\n const strategies = { ...options.strategies };\n const defaultStrategy = options.defaultStrategy;\n // Defaults are fixed credential namespaces, never process-local random identities.\n const namespace = (options.namespace ?? \"effect-auth\") as Id;\n const sessionNamespace = (options.sessionNamespace ?? `${namespace}/sessions`) as SessionId;\n const invalid = configurationError(strategies, defaultStrategy, namespace, sessionNamespace);\n\n if (invalid !== undefined) throw invalid;\n const sessions = makeSessionModule(sessionNamespace, options.claims);\n\n const modules = Object.fromEntries(\n Object.entries(strategies).map(([key, strategy]) => [\n key,\n \"bind\" in strategy\n ? strategy.bind({\n claims: options.claims,\n namespace: strategy.namespace ?? `${namespace}/${key}`,\n sessionNamespace,\n sessions,\n })\n : { strategy },\n ]),\n // Each descriptor is bound to these exact claims, namespace and selection key.\n ) as BoundStrategies<S, Claims, Id, SessionId>;\n\n const selected = Object.fromEntries(\n Object.entries(modules).map(([key, module]) => [key, module.strategy]),\n ) as BoundSelection<typeof modules>;\n\n type ContractDefinition = Contract extends AnyAuthContract\n ? Contract\n : ReturnType<typeof makeContract<Id, Claims>>;\n\n const contract = (shared ??\n makeContract(namespace, { claims: options.claims })) as ContractDefinition;\n\n const create = Effect.gen(function* () {\n const built = yield* build(selected, defaultStrategy);\n const sessionApi = yield* makeSessionApi(sessions);\n\n const raw = { ...built.api, ...sessionApi };\n\n const actions = yield* makeActionApi<\n typeof sessionApi,\n typeof built.strategies,\n Default,\n ContractDefinition[\"actions\"]\n >(sessionApi, built.strategies, defaultStrategy, contract.actions);\n\n return Object.freeze({ ...raw, ...actions }) as Omit<typeof raw, keyof typeof actions> &\n typeof actions;\n });\n\n const completing = Object.values<Strategy>(selected).some(\n (strategy) => strategy.completion === true,\n );\n\n const configured =\n options.sessions === undefined\n ? create\n : !completing\n ? withConstructionLayer(create, configuredLayer(sessions, options.sessions))\n : withConstructionLayer(\n create,\n sessions\n .completionLayer()\n .pipe(\n Layer.provideMerge(configuredLayer(sessions, options.sessions)),\n Layer.provide([cryptoLayer, hooksLayer]),\n ),\n );\n\n type SelectedStrategies = (typeof selected)[keyof typeof selected];\n type Completes = true extends CompletionOf<SelectedStrategies> ? true : false;\n type ConfigurationRequirements = Sessions extends SessionConfiguration\n ?\n | SessionRequirements<Sessions, SessionId, Claims>\n | (Completes extends true ? AuthenticationAuthority : never)\n : never;\n type Provided = Sessions extends SessionConfiguration\n ?\n | ModuleService<SessionId, \"strategy\", Claims[\"Type\"]>\n | (Completes extends true ? ModuleService<SessionId, \"completion\", Claims[\"Type\"]> : never)\n : never;\n\n // Runtime selection mirrors the session mode and presence of selected methods.\n // Unconfigured definitions retain their explicit strategy/completion requirements.\n const make = configured as Effect.Effect<\n Effect.Success<typeof create>,\n | Effect.Error<typeof create>\n | (Sessions extends SessionConfiguration ? SessionConfigurationError : never),\n Exclude<Effect.Services<typeof create>, Provided> | ConfigurationRequirements\n >;\n\n return Object.freeze({\n claims: options.claims,\n contract,\n namespace,\n sessions,\n strategies: Object.freeze(modules),\n make,\n });\n};\n\n/** Identifier for a constant auth service. The stable name also isolates its credentials. */\nexport interface AuthService<Id extends string, Claims> {\n readonly id: Id;\n readonly claims: Types.Invariant<Claims>;\n}\n\nconst service =\n <Self>() =>\n <const Id extends string, A, E, R, Definition>(\n id: Id,\n definition: Definition,\n create: Effect.Effect<A, E, R>,\n ) => {\n const Auth = Context.Service<Self, A>()(id);\n const layer = Layer.effect(Auth, create);\n\n return Object.assign(Auth, definition, { layer });\n };\n\n/** Define one yieldable auth service, its schemas, extension ports and runtime Layer. */\nconst makeService = <\n const Id extends string,\n Claims extends ClaimsCodec,\n const S extends StrategySelection = {},\n const Default extends keyof S | undefined = undefined,\n const Namespace extends string = Id,\n const SessionId extends string = `${Namespace}/sessions`,\n const Sessions extends SessionConfiguration | undefined = undefined,\n Contract extends AnyAuthContract | undefined = undefined,\n>(\n id: Id,\n options: Options<Claims, S, Default, Namespace, SessionId, Id, Sessions>,\n contract?: Contract,\n) => {\n if (!Schema.is(Schema.NonEmptyString)(id)) throw AuthConfigurationError.make({ reason: \"id\" });\n\n const definition = bind<Claims, S, Default, Namespace, SessionId, Sessions, Contract>(\n {\n ...options,\n namespace: options.namespace ?? id,\n } as Options<Claims, S, Default, Namespace, SessionId, \"effect-auth\", Sessions>,\n contract,\n );\n\n return service<AuthService<Id, Claims[\"Type\"]>>()(id, definition, definition.make);\n};\n\n/** Create a yieldable auth service from a shared contract or service identifier.\n * Use its Layer for provisioning, or yield its make Effect for direct construction.\n * AuthRequest is resolved when a method executes. */\nexport function make<\n Contract extends AnyAuthContract,\n const S extends StrategySelection = {},\n const Default extends keyof S | undefined = undefined,\n const Sessions extends SessionConfiguration | undefined = undefined,\n>(\n contract: Contract,\n options: Omit<\n Options<\n Contract[\"claims\"],\n S,\n Default,\n Contract[\"namespace\"],\n `${Contract[\"namespace\"]}/sessions`,\n Contract[\"namespace\"],\n Sessions\n >,\n \"claims\" | \"namespace\" | \"sessionNamespace\"\n >,\n): ReturnType<\n typeof makeService<\n Contract[\"namespace\"],\n Contract[\"claims\"],\n S,\n Default,\n Contract[\"namespace\"],\n `${Contract[\"namespace\"]}/sessions`,\n Sessions,\n Contract\n >\n>;\n\nexport function make<\n const Id extends string,\n Claims extends ClaimsCodec,\n const S extends StrategySelection = {},\n const Default extends keyof S | undefined = undefined,\n const Namespace extends string = Id,\n const SessionId extends string = `${Namespace}/sessions`,\n const Sessions extends SessionConfiguration | undefined = undefined,\n>(\n id: Id,\n options: Options<Claims, S, Default, Namespace, SessionId, Id, Sessions>,\n): ReturnType<typeof makeService<Id, Claims, S, Default, Namespace, SessionId, Sessions>>;\n\nexport function make(\n definition: string | AnyAuthContract,\n options: {\n readonly claims?: ClaimsCodec;\n readonly strategies?: StrategySelection;\n readonly sessions?: SessionConfiguration;\n readonly defaultStrategy?: string;\n readonly namespace?: string;\n readonly sessionNamespace?: string;\n },\n): unknown {\n if (typeof definition !== \"string\") {\n return makeService(\n definition.namespace,\n {\n ...options,\n namespace: definition.namespace,\n sessionNamespace: `${definition.namespace}/sessions`,\n claims: definition.claims,\n },\n definition,\n );\n }\n if (options.claims === undefined) throw AuthConfigurationError.make({ reason: \"method\" });\n const namespace = options.namespace ?? definition;\n\n return makeService(definition, {\n ...options,\n namespace,\n sessionNamespace: options.sessionNamespace ?? `${namespace}/sessions`,\n claims: options.claims,\n });\n}\n\n/** Class form of the same auth definition, for applications using named service classes. */\nexport const Service =\n <Self>() =>\n <\n const Id extends string,\n Claims extends ClaimsCodec,\n const S extends StrategySelection = {},\n const Default extends keyof S | undefined = undefined,\n const Namespace extends string = Id,\n const SessionId extends string = `${Namespace}/sessions`,\n const Sessions extends SessionConfiguration | undefined = undefined,\n >(\n id: Id,\n options: Options<Claims, S, Default, Namespace, SessionId, Id, Sessions>,\n ) => {\n if (!Schema.is(Schema.NonEmptyString)(id)) throw AuthConfigurationError.make({ reason: \"id\" });\n\n const definition = bind<Claims, S, Default, Namespace, SessionId, Sessions>({\n ...options,\n namespace: options.namespace ?? id,\n } as Options<Claims, S, Default, Namespace, SessionId, \"effect-auth\", Sessions>);\n\n return service<Self>()(id, definition, definition.make);\n };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
//#region src/auth/AuthConfigurationError.d.ts
|
|
3
|
+
declare const AuthConfigurationError_base: Schema.Class<AuthConfigurationError, Schema.TaggedStruct<"AuthConfigurationError", {
|
|
4
|
+
readonly reason: Schema.Literals<readonly ["id", "namespace", "strategies", "default-strategy", "method"]>;
|
|
5
|
+
}>, import("effect/Cause").YieldableError>;
|
|
6
|
+
/** Invalid auth composition, separate from an authentication failure. */
|
|
7
|
+
declare class AuthConfigurationError extends AuthConfigurationError_base {}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { AuthConfigurationError };
|
|
10
|
+
//# sourceMappingURL=AuthConfigurationError.d.mts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
//#region src/auth/AuthConfigurationError.ts
|
|
3
|
+
/** Invalid auth composition, separate from an authentication failure. */
|
|
4
|
+
var AuthConfigurationError = class extends Schema.TaggedError()("AuthConfigurationError", { reason: Schema.Literals([
|
|
5
|
+
"id",
|
|
6
|
+
"namespace",
|
|
7
|
+
"strategies",
|
|
8
|
+
"default-strategy",
|
|
9
|
+
"method"
|
|
10
|
+
]) }) {};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { AuthConfigurationError };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=AuthConfigurationError.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthConfigurationError.mjs","names":[],"sources":["../../src/auth/AuthConfigurationError.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\n/** Invalid auth composition, separate from an authentication failure. */\nexport class AuthConfigurationError extends Schema.TaggedError<AuthConfigurationError>()(\n \"AuthConfigurationError\",\n {\n reason: Schema.Literals([\"id\", \"namespace\", \"strategies\", \"default-strategy\", \"method\"]),\n },\n) {}\n"],"mappings":";;;AAGA,IAAa,yBAAb,cAA4C,OAAO,YAAoC,CAAC,CACtF,0BACA,EACE,QAAQ,OAAO,SAAS;CAAC;CAAM;CAAa;CAAc;CAAoB;AAAQ,CAAC,EACzF,CACF,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AuthInvocation } from "../operations/context.mjs";
|
|
2
|
+
import { AuthResolvedCall } from "../operations/credentials.mjs";
|
|
3
|
+
import { HookDenied } from "../hooks/models.mjs";
|
|
4
|
+
import { SessionApiError } from "./session.mjs";
|
|
5
|
+
import { Context, Effect } from "effect";
|
|
6
|
+
//#region src/auth/AuthRequest.d.ts
|
|
7
|
+
declare const AuthRequest_base: Context.ServiceClass<AuthRequest, "effect-auth/AuthRequest", AuthResolvedCall & {
|
|
8
|
+
/** Set by the trusted named action declaration while its implementation executes. */
|
|
9
|
+
readonly actionMode?: "query" | "mutation";
|
|
10
|
+
/** Host admission runs before mutation side effects; absent for trusted local callers. */
|
|
11
|
+
readonly beforeMutation?: Effect.Effect<void, HookDenied>;
|
|
12
|
+
/** HTTP adapters resolve caller authority only when an authentication method needs it. */
|
|
13
|
+
readonly resolveInvocation?: Effect.Effect<AuthInvocation, SessionApiError>;
|
|
14
|
+
}>;
|
|
15
|
+
/** Supplied by the host for one request or native workflow, never a shared auth Layer.
|
|
16
|
+
* @effect-leakable-service
|
|
17
|
+
*/
|
|
18
|
+
declare class AuthRequest extends AuthRequest_base {}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { AuthRequest };
|
|
21
|
+
//# sourceMappingURL=AuthRequest.d.mts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Context } from "effect";
|
|
2
|
+
//#region src/auth/AuthRequest.ts
|
|
3
|
+
/** Supplied by the host for one request or native workflow, never a shared auth Layer.
|
|
4
|
+
* @effect-leakable-service
|
|
5
|
+
*/
|
|
6
|
+
var AuthRequest = class extends Context.Service()("effect-auth/AuthRequest") {};
|
|
7
|
+
//#endregion
|
|
8
|
+
export { AuthRequest };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=AuthRequest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthRequest.mjs","names":[],"sources":["../../src/auth/AuthRequest.ts"],"sourcesContent":["import { Context, type Effect } from \"effect\";\n\nimport type { HookDenied } from \"../hooks/models\";\nimport type { AuthInvocation } from \"../operations/context\";\nimport type { AuthResolvedCall } from \"../operations/credentials\";\nimport type { SessionApiError } from \"./session\";\n\n/** Supplied by the host for one request or native workflow, never a shared auth Layer.\n * @effect-leakable-service\n */\nexport class AuthRequest extends Context.Service<\n AuthRequest,\n AuthResolvedCall & {\n /** Set by the trusted named action declaration while its implementation executes. */\n readonly actionMode?: \"query\" | \"mutation\";\n /** Host admission runs before mutation side effects; absent for trusted local callers. */\n readonly beforeMutation?: Effect.Effect<void, HookDenied>;\n /** HTTP adapters resolve caller authority only when an authentication method needs it. */\n readonly resolveInvocation?: Effect.Effect<AuthInvocation, SessionApiError>;\n }\n>()(\"effect-auth/AuthRequest\") {}\n"],"mappings":";;;;;AAUA,IAAa,cAAb,cAAiC,QAAQ,QAUvC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AuthInvocation } from "../operations/context.mjs";
|
|
2
|
+
import { AuthCredentialCommandCollector, AuthRevealCommandCollectorService } from "../operations/credentials.mjs";
|
|
3
|
+
import { SessionApiError } from "./session.mjs";
|
|
4
|
+
import { AuthRequest } from "./AuthRequest.mjs";
|
|
5
|
+
import { AuthConfigurationError } from "./AuthConfigurationError.mjs";
|
|
6
|
+
import { Effect, Layer, Scope } from "effect";
|
|
7
|
+
//#region src/auth/AuthStrategy.d.ts
|
|
8
|
+
/** The same validated invocations used by local and transport callers. */
|
|
9
|
+
type AuthMethod = (invocation: AuthInvocation, input: never) => Effect.Effect<unknown, unknown, unknown>;
|
|
10
|
+
type RequestCollectorServices = AuthCredentialCommandCollector | AuthRevealCommandCollectorService;
|
|
11
|
+
type BoundMethod<M extends AuthMethod, Provided> = (...args: [Parameters<M>[1]] extends [void] ? [input?: Parameters<M>[1]] : [input: Parameters<M>[1]]) => Effect.Effect<Effect.Success<ReturnType<M>>, Effect.Error<ReturnType<M>> | SessionApiError, AuthRequest | Exclude<Effect.Services<ReturnType<M>>, Exclude<Provided | RequestCollectorServices, AuthRequest | Scope.Scope>>>;
|
|
12
|
+
/** Pair a selected, named API with its implementing Layer, preserving every method's types. */
|
|
13
|
+
declare const makeAuthStrategy: <const Methods extends Readonly<Record<string, AuthMethod>>, Provided, E, R, const Completion extends boolean = false>(methods: Methods & {
|
|
14
|
+
readonly then?: never;
|
|
15
|
+
} & Record<Exclude<keyof Methods, string>, never>, layer: Layer.Layer<Provided, E, R>, options?: {
|
|
16
|
+
readonly completion: Completion;
|
|
17
|
+
}) => Readonly<{
|
|
18
|
+
completion: false | NoInfer<Completion>;
|
|
19
|
+
make: Effect.Effect<{ readonly [K in keyof Methods]: BoundMethod<Methods[K], Provided>; }, E | AuthConfigurationError, R | Layer.CurrentMemoMap | Scope.Scope>;
|
|
20
|
+
}>;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { AuthMethod, makeAuthStrategy };
|
|
23
|
+
//# sourceMappingURL=AuthStrategy.d.mts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AuthCredentialCommandCollector, AuthRevealCommandCollectorService } from "../operations/credentials.mjs";
|
|
2
|
+
import { AuthConfigurationError } from "./AuthConfigurationError.mjs";
|
|
3
|
+
import { AuthRequest } from "./AuthRequest.mjs";
|
|
4
|
+
import { Context, Effect, Layer, Scope } from "effect";
|
|
5
|
+
//#region src/auth/AuthStrategy.ts
|
|
6
|
+
const unsupportedRevealCollector = Object.freeze({
|
|
7
|
+
supportedKinds: Object.freeze([]),
|
|
8
|
+
accept: () => Effect.void
|
|
9
|
+
});
|
|
10
|
+
/** Pair a selected, named API with its implementing Layer, preserving every method's types. */
|
|
11
|
+
const makeAuthStrategy = (methods, layer, options) => {
|
|
12
|
+
const entries = Object.entries(methods);
|
|
13
|
+
return Object.freeze({
|
|
14
|
+
completion: options?.completion ?? false,
|
|
15
|
+
make: Effect.gen(function* () {
|
|
16
|
+
if (entries.some(([name]) => name === "then")) return yield* AuthConfigurationError.make({ reason: "method" });
|
|
17
|
+
const built = yield* Layer.buildWithMemoMap(layer, yield* Layer.CurrentMemoMap, yield* Effect.scope);
|
|
18
|
+
const services = Context.omit(AuthRequest, Scope.Scope, AuthCredentialCommandCollector, AuthRevealCommandCollectorService)(built);
|
|
19
|
+
const bound = Object.fromEntries(entries.map(([name, invoke]) => [name, Effect.fn(`Auth.${name}`)(function* (input) {
|
|
20
|
+
const request = yield* AuthRequest;
|
|
21
|
+
if (request.actionMode !== "query" && request.beforeMutation !== void 0) yield* request.beforeMutation;
|
|
22
|
+
const invocation = yield* request.resolveInvocation ?? Effect.succeed(request.invocation);
|
|
23
|
+
const revealCollector = request.revealCommandCollector ?? unsupportedRevealCollector;
|
|
24
|
+
return yield* invoke(invocation, input).pipe(Effect.provideService(AuthCredentialCommandCollector, request.credentialCommandSink), Effect.provideService(AuthRevealCommandCollectorService, revealCollector), Effect.provide(services));
|
|
25
|
+
})]));
|
|
26
|
+
return Object.freeze(bound);
|
|
27
|
+
})
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
export { makeAuthStrategy };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=AuthStrategy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthStrategy.mjs","names":[],"sources":["../../src/auth/AuthStrategy.ts"],"sourcesContent":["import { Context, Effect, Layer, Scope } from \"effect\";\n\nimport type { AuthInvocation } from \"../operations/context\";\nimport {\n AuthCredentialCommandCollector,\n AuthRevealCommandCollectorService,\n} from \"../operations/credentials\";\nimport { AuthConfigurationError } from \"./AuthConfigurationError\";\nimport { AuthRequest } from \"./AuthRequest\";\nimport type { SessionApiError } from \"./session\";\n\n/** The same validated invocations used by local and transport callers. */\nexport type AuthMethod = (\n invocation: AuthInvocation,\n input: never,\n) => Effect.Effect<unknown, unknown, unknown>;\n\ntype RequestCollectorServices = AuthCredentialCommandCollector | AuthRevealCommandCollectorService;\n\nconst unsupportedRevealCollector = Object.freeze({\n supportedKinds: Object.freeze([]),\n accept: () => Effect.void,\n});\n\ntype BoundMethod<M extends AuthMethod, Provided> = (\n ...args: [Parameters<M>[1]] extends [void]\n ? [input?: Parameters<M>[1]]\n : [input: Parameters<M>[1]]\n) => Effect.Effect<\n Effect.Success<ReturnType<M>>,\n Effect.Error<ReturnType<M>> | SessionApiError,\n | AuthRequest\n | Exclude<\n Effect.Services<ReturnType<M>>,\n Exclude<Provided | RequestCollectorServices, AuthRequest | Scope.Scope>\n >\n>;\n\n/** Pair a selected, named API with its implementing Layer, preserving every method's types. */\nexport const makeAuthStrategy = <\n const Methods extends Readonly<Record<string, AuthMethod>>,\n Provided,\n E,\n R,\n const Completion extends boolean = false,\n>(\n methods: Methods & { readonly then?: never } & Record<Exclude<keyof Methods, string>, never>,\n layer: Layer.Layer<Provided, E, R>,\n options?: { readonly completion: Completion },\n) => {\n type Result = ReturnType<Methods[keyof Methods]>;\n\n // A heterogeneous method table loses its key correlation during iteration.\n const entries = Object.entries(methods) as Array<\n [\n string,\n (\n invocation: AuthInvocation,\n input: never,\n ) => Effect.Effect<Effect.Success<Result>, Effect.Error<Result>, Effect.Services<Result>>,\n ]\n >;\n\n return Object.freeze({\n completion: (options?.completion ?? false) as false | NoInfer<Completion>,\n make: Effect.gen(function* () {\n if (entries.some(([name]) => name === \"then\"))\n return yield* AuthConfigurationError.make({ reason: \"method\" });\n\n const built = yield* Layer.buildWithMemoMap(\n layer,\n yield* Layer.CurrentMemoMap,\n yield* Effect.scope,\n );\n\n const services = Context.omit(\n AuthRequest,\n Scope.Scope,\n AuthCredentialCommandCollector,\n AuthRevealCommandCollectorService,\n )(built);\n\n const bound = Object.fromEntries(\n entries.map(([name, invoke]) => [\n name,\n Effect.fn(`Auth.${name}`)(function* (input: never) {\n // Resolve before providing the shared handler context: callers never get captured.\n const request = yield* AuthRequest;\n\n // Raw strategy methods are conservatively mutations. Only a trusted\n // named query declaration can admit a read without mutation policy.\n if (request.actionMode !== \"query\" && request.beforeMutation !== undefined)\n yield* request.beforeMutation;\n\n const invocation = yield* (\n request.resolveInvocation ?? Effect.succeed(request.invocation)\n );\n\n const revealCollector = request.revealCommandCollector ?? unsupportedRevealCollector;\n\n return yield* invoke(invocation, input).pipe(\n Effect.provideService(AuthCredentialCommandCollector, request.credentialCommandSink),\n Effect.provideService(AuthRevealCommandCollectorService, revealCollector),\n Effect.provide(services),\n );\n }),\n ]),\n );\n\n // Object.entries loses the key/signature correlation; each method above retains its invoke.\n return Object.freeze(bound) as {\n readonly [K in keyof Methods]: BoundMethod<Methods[K], Provided>;\n };\n }),\n });\n};\n"],"mappings":";;;;;AAmBA,MAAM,6BAA6B,OAAO,OAAO;CAC/C,gBAAgB,OAAO,OAAO,CAAC,CAAC;CAChC,cAAc,OAAO;AACvB,CAAC;;AAiBD,MAAa,oBAOX,SACA,OACA,YACG;CAIH,MAAM,UAAU,OAAO,QAAQ,OAAO;CAUtC,OAAO,OAAO,OAAO;EACnB,YAAa,SAAS,cAAc;EACpC,MAAM,OAAO,IAAI,aAAa;GAC5B,IAAI,QAAQ,MAAM,CAAC,UAAU,SAAS,MAAM,GAC1C,OAAO,OAAO,uBAAuB,KAAK,EAAE,QAAQ,SAAS,CAAC;GAEhE,MAAM,QAAQ,OAAO,MAAM,iBACzB,OACA,OAAO,MAAM,gBACb,OAAO,OAAO,KAChB;GAEA,MAAM,WAAW,QAAQ,KACvB,aACA,MAAM,OACN,gCACA,iCACF,CAAC,CAAC,KAAK;GAEP,MAAM,QAAQ,OAAO,YACnB,QAAQ,KAAK,CAAC,MAAM,YAAY,CAC9B,MACA,OAAO,GAAG,QAAQ,MAAM,CAAC,CAAC,WAAW,OAAc;IAEjD,MAAM,UAAU,OAAO;IAIvB,IAAI,QAAQ,eAAe,WAAW,QAAQ,mBAAmB,KAAA,GAC/D,OAAO,QAAQ;IAEjB,MAAM,aAAa,OACjB,QAAQ,qBAAqB,OAAO,QAAQ,QAAQ,UAAU;IAGhE,MAAM,kBAAkB,QAAQ,0BAA0B;IAE1D,OAAO,OAAO,OAAO,YAAY,KAAK,CAAC,CAAC,KACtC,OAAO,eAAe,gCAAgC,QAAQ,qBAAqB,GACnF,OAAO,eAAe,mCAAmC,eAAe,GACxE,OAAO,QAAQ,QAAQ,CACzB;GACF,CAAC,CACH,CAAC,CACH;GAGA,OAAO,OAAO,OAAO,KAAK;EAG5B,CAAC;CACH,CAAC;AACH"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/auth/ConsumeDecision.d.ts
|
|
2
|
+
/** Rejection stays a value until the physical owner commits its accounting. */
|
|
3
|
+
type ConsumeDecision<A> = {
|
|
4
|
+
readonly _tag: "accepted";
|
|
5
|
+
readonly value: A;
|
|
6
|
+
} | {
|
|
7
|
+
readonly _tag: "rejected";
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { ConsumeDecision };
|
|
11
|
+
//# sourceMappingURL=ConsumeDecision.d.mts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AuthRequest } from "./AuthRequest.mjs";
|
|
2
|
+
import "./AuthConfigurationError.mjs";
|
|
3
|
+
import { ActionError, ActionInput, ActionSuccess, AnyAuthAction, AuthActions } from "../operations/actions.mjs";
|
|
4
|
+
import { Effect } from "effect";
|
|
5
|
+
//#region src/auth/actions.d.ts
|
|
6
|
+
type Method = (...input: never[]) => Effect.Effect<unknown, unknown, unknown>;
|
|
7
|
+
type Methods = Readonly<Record<string, Method>>;
|
|
8
|
+
type Implementations = Readonly<Record<string, Methods>>;
|
|
9
|
+
type Lookup<Table, Key> = Table extends unknown ? string extends Key ? Table[keyof Table] : Key extends keyof Table ? Table[Key] : never : never;
|
|
10
|
+
type Selection<Action extends AnyAuthAction, Default> = Exclude<Action["strategy"], undefined> | (undefined extends Action["strategy"] ? Default : never);
|
|
11
|
+
type Implementation<Action extends AnyAuthAction, Sessions extends Methods, Strategies extends Implementations, Default> = Lookup<Sessions, Action["method"]> | Lookup<Lookup<Strategies, Selection<Action, Default>>, Action["method"]>;
|
|
12
|
+
type Requirements<Method> = Method extends ((...args: never[]) => Effect.Effect<unknown, unknown, infer R>) ? R : never;
|
|
13
|
+
type Codecs<Action extends AnyAuthAction> = Action["route"]["operation"]["rpc"]["payloadSchema" | "successSchema" | "errorSchema"];
|
|
14
|
+
type SchemaServices<Action extends AnyAuthAction> = Codecs<Action>["DecodingServices" | "EncodingServices"];
|
|
15
|
+
type LocalActionApi<Actions extends AuthActions, Sessions extends Methods, Strategies extends Implementations, Default> = { readonly [Name in keyof Actions]: (...args: [ActionInput<Actions[Name]>] extends [void] ? [input?: ActionInput<Actions[Name]>] : [input: ActionInput<Actions[Name]>]) => Effect.Effect<ActionSuccess<Actions[Name]>, ActionError<Actions[Name]>, AuthRequest | SchemaServices<Actions[Name]> | Requirements<Implementation<Actions[Name], Sessions, Strategies, Default>>>; };
|
|
16
|
+
//#endregion
|
|
17
|
+
export { LocalActionApi };
|
|
18
|
+
//# sourceMappingURL=actions.d.mts.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { AuthCredentialCommandCollector, AuthRevealCommandCollectorService } from "../operations/credentials.mjs";
|
|
2
|
+
import { InvalidOperationInput } from "../operations/errors.mjs";
|
|
3
|
+
import { guest } from "../operations/context.mjs";
|
|
4
|
+
import { AuthConfigurationError } from "./AuthConfigurationError.mjs";
|
|
5
|
+
import { AuthRequest } from "./AuthRequest.mjs";
|
|
6
|
+
import { Effect, Predicate, Redacted, Schema } from "effect";
|
|
7
|
+
//#region src/auth/actions.ts
|
|
8
|
+
/** Bind shared schemas to local capabilities. The chosen implementation is fixed
|
|
9
|
+
* at construction; credentials and all execution services are resolved per call. */
|
|
10
|
+
const makeActionApi = Effect.fn("Auth.makeActionApi")(function* (sessions, strategies, defaultStrategy, actions) {
|
|
11
|
+
const entries = [];
|
|
12
|
+
for (const [name, action] of Object.entries(actions)) {
|
|
13
|
+
const selected = action.strategy ?? defaultStrategy;
|
|
14
|
+
const methods = Object.hasOwn(sessions, action.method) ? sessions : typeof selected === "string" && Object.hasOwn(strategies, selected) ? strategies[selected] : void 0;
|
|
15
|
+
if (methods === void 0 || !Object.hasOwn(methods, action.method)) return yield* AuthConfigurationError.make({ reason: "method" });
|
|
16
|
+
const method = methods[action.method];
|
|
17
|
+
if (!Predicate.isFunction(method)) return yield* AuthConfigurationError.make({ reason: "method" });
|
|
18
|
+
const run = Effect.fn(`Auth.action.${name}`)(function* (input) {
|
|
19
|
+
const request = yield* AuthRequest;
|
|
20
|
+
const encoded = yield* Schema.encodeEffect(action.route.operation.rpc.payloadSchema)(input).pipe(Effect.mapError(() => InvalidOperationInput.make({})));
|
|
21
|
+
const fields = Object.entries(action.requestFields);
|
|
22
|
+
if (fields.length > 0 && !Predicate.isObject(encoded)) return yield* InvalidOperationInput.make({});
|
|
23
|
+
const payload = fields.length === 0 ? encoded : { ...encoded };
|
|
24
|
+
for (const [field, slot] of fields) {
|
|
25
|
+
const credential = request.credentials[slot];
|
|
26
|
+
if (credential === void 0) return yield* InvalidOperationInput.make({});
|
|
27
|
+
payload[field] = Redacted.value(credential);
|
|
28
|
+
}
|
|
29
|
+
const credentialCommands = [];
|
|
30
|
+
const revealCommands = [];
|
|
31
|
+
const sink = (commands) => Effect.sync(() => {
|
|
32
|
+
credentialCommands.push(...commands);
|
|
33
|
+
});
|
|
34
|
+
const collector = {
|
|
35
|
+
supportedKinds: action.route.reveals,
|
|
36
|
+
accept: (commands) => Effect.sync(() => {
|
|
37
|
+
revealCommands.push(...commands);
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
const value = yield* method(payload).pipe(Effect.provideService(AuthRequest, {
|
|
41
|
+
...request,
|
|
42
|
+
actionMode: action.mode,
|
|
43
|
+
credentialCommandSink: sink,
|
|
44
|
+
revealCommandCollector: collector
|
|
45
|
+
}), Effect.provideService(AuthCredentialCommandCollector, sink), Effect.provideService(AuthRevealCommandCollectorService, collector));
|
|
46
|
+
if (!action.route.operation.credentials && credentialCommands.length > 0 || action.route.reveals.length === 0 && revealCommands.length > 0) return yield* Effect.die(AuthConfigurationError.make({ reason: "method" }));
|
|
47
|
+
return {
|
|
48
|
+
value,
|
|
49
|
+
credentialCommands,
|
|
50
|
+
revealCommands
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
const operation = action.route.operation;
|
|
54
|
+
const layer = operation.credentials || operation.reveals.length > 0 ? operation.privateHandlerLayer(run) : operation.handlerLayer((input) => run(input).pipe(Effect.map((result) => result.value)));
|
|
55
|
+
entries.push([name, Effect.fn(`Auth.${name}`)(function* (input) {
|
|
56
|
+
const request = yield* AuthRequest;
|
|
57
|
+
if (action.mode === "mutation" && request.beforeMutation !== void 0) yield* request.beforeMutation;
|
|
58
|
+
if (Predicate.isObject(input) && Object.keys(action.requestFields).some((field) => Object.hasOwn(input, field))) return yield* InvalidOperationInput.make({});
|
|
59
|
+
return yield* operation.invokeUnknown(guest, input).pipe(Effect.provide(layer, { local: true }), Effect.provideService(AuthCredentialCommandCollector, request.credentialCommandSink), Effect.provideService(AuthRevealCommandCollectorService, request.revealCommandCollector ?? {
|
|
60
|
+
supportedKinds: [],
|
|
61
|
+
accept: () => Effect.void
|
|
62
|
+
}));
|
|
63
|
+
})]);
|
|
64
|
+
}
|
|
65
|
+
return Object.freeze(Object.fromEntries(entries));
|
|
66
|
+
});
|
|
67
|
+
//#endregion
|
|
68
|
+
export { makeActionApi };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=actions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.mjs","names":[],"sources":["../../src/auth/actions.ts"],"sourcesContent":["import { Effect, Predicate, Redacted, Schema } from \"effect\";\n\nimport type {\n ActionError,\n ActionInput,\n ActionSuccess,\n AnyAuthAction,\n AuthActions,\n} from \"../operations/actions\";\nimport { guest } from \"../operations/context\";\nimport {\n type AuthCredentialCommand,\n AuthCredentialCommandCollector,\n AuthRevealCommandCollectorService,\n} from \"../operations/credentials\";\nimport { InvalidOperationInput } from \"../operations/errors\";\nimport type { makeOperation } from \"../operations/operation\";\nimport type { AuthRevealCommand } from \"../operations/reveals\";\nimport { AuthConfigurationError } from \"./AuthConfigurationError\";\nimport { AuthRequest } from \"./AuthRequest\";\n\ntype Method = (...input: never[]) => Effect.Effect<unknown, unknown, unknown>;\ntype Methods = Readonly<Record<string, Method>>;\ntype Implementations = Readonly<Record<string, Methods>>;\ntype Lookup<Table, Key> = Table extends unknown\n ? string extends Key\n ? Table[keyof Table]\n : Key extends keyof Table\n ? Table[Key]\n : never\n : never;\ntype Selection<Action extends AnyAuthAction, Default> =\n | Exclude<Action[\"strategy\"], undefined>\n | (undefined extends Action[\"strategy\"] ? Default : never);\ntype Implementation<\n Action extends AnyAuthAction,\n Sessions extends Methods,\n Strategies extends Implementations,\n Default,\n> =\n | Lookup<Sessions, Action[\"method\"]>\n | Lookup<Lookup<Strategies, Selection<Action, Default>>, Action[\"method\"]>;\ntype Requirements<Method> = Method extends (\n ...args: never[]\n) => Effect.Effect<unknown, unknown, infer R>\n ? R\n : never;\ntype Codecs<Action extends AnyAuthAction> = Action[\"route\"][\"operation\"][\"rpc\"][\n | \"payloadSchema\"\n | \"successSchema\"\n | \"errorSchema\"];\ntype SchemaServices<Action extends AnyAuthAction> = Codecs<Action>[\n | \"DecodingServices\"\n | \"EncodingServices\"];\n\nexport type LocalActionApi<\n Actions extends AuthActions,\n Sessions extends Methods,\n Strategies extends Implementations,\n Default,\n> = {\n readonly [Name in keyof Actions]: (\n ...args: [ActionInput<Actions[Name]>] extends [void]\n ? [input?: ActionInput<Actions[Name]>]\n : [input: ActionInput<Actions[Name]>]\n ) => Effect.Effect<\n ActionSuccess<Actions[Name]>,\n ActionError<Actions[Name]>,\n | AuthRequest\n | SchemaServices<Actions[Name]>\n | Requirements<Implementation<Actions[Name], Sessions, Strategies, Default>>\n >;\n};\n\n/** Bind shared schemas to local capabilities. The chosen implementation is fixed\n * at construction; credentials and all execution services are resolved per call. */\nexport const makeActionApi = Effect.fn(\"Auth.makeActionApi\")(function* <\n Sessions extends Methods,\n Strategies extends Implementations,\n Default extends keyof Strategies | undefined,\n Actions extends AuthActions,\n>(\n sessions: Sessions,\n strategies: Strategies,\n defaultStrategy: Default | undefined,\n actions: Actions,\n) {\n type RawMethod = Sessions[keyof Sessions] | Strategies[keyof Strategies][string];\n type R = Requirements<RawMethod>;\n\n const entries: Array<\n readonly [string, (input: unknown) => Effect.Effect<unknown, unknown, R | AuthRequest>]\n > = [];\n\n for (const [name, action] of Object.entries(actions)) {\n const selected = action.strategy ?? defaultStrategy;\n\n const methods = Object.hasOwn(sessions, action.method)\n ? sessions\n : typeof selected === \"string\" && Object.hasOwn(strategies, selected)\n ? strategies[selected]\n : undefined;\n\n if (methods === undefined || !Object.hasOwn(methods, action.method))\n return yield* AuthConfigurationError.make({ reason: \"method\" });\n\n // Indexed iteration hides the paired input/result types, but keeps the union\n // of implementation requirements. The shared operation validates both sides.\n const method = methods[action.method] as (input: unknown) => Effect.Effect<unknown, unknown, R>;\n\n if (!Predicate.isFunction(method))\n return yield* AuthConfigurationError.make({ reason: \"method\" });\n\n const run = Effect.fn(`Auth.action.${name}`)(function* (input: unknown) {\n const request = yield* AuthRequest;\n\n // The action has decoded and validated the complete public codec. Existing\n // strategy methods accept encoded inputs at their own operation boundary.\n const encoded = yield* Schema.encodeEffect(action.route.operation.rpc.payloadSchema)(\n input,\n ).pipe(Effect.mapError(() => InvalidOperationInput.make({})));\n\n const fields = Object.entries(action.requestFields);\n\n if (fields.length > 0 && !Predicate.isObject(encoded))\n return yield* InvalidOperationInput.make({});\n\n const payload = fields.length === 0 ? encoded : { ...(encoded as Record<string, unknown>) };\n\n for (const [field, slot] of fields) {\n const credential = request.credentials[slot];\n\n if (credential === undefined) return yield* InvalidOperationInput.make({});\n (payload as Record<string, unknown>)[field] = Redacted.value(credential);\n }\n\n const credentialCommands: AuthCredentialCommand[] = [];\n const revealCommands: AuthRevealCommand[] = [];\n\n const sink = (commands: ReadonlyArray<AuthCredentialCommand>) =>\n Effect.sync(() => {\n credentialCommands.push(...commands);\n });\n\n const collector = {\n supportedKinds: action.route.reveals,\n accept: (commands: ReadonlyArray<AuthRevealCommand>) =>\n Effect.sync(() => {\n revealCommands.push(...commands);\n }),\n };\n\n const value = yield* method(payload).pipe(\n Effect.provideService(AuthRequest, {\n ...request,\n actionMode: action.mode,\n credentialCommandSink: sink,\n revealCommandCollector: collector,\n }),\n Effect.provideService(AuthCredentialCommandCollector, sink),\n Effect.provideService(AuthRevealCommandCollectorService, collector),\n );\n\n if (\n (!action.route.operation.credentials && credentialCommands.length > 0) ||\n (action.route.reveals.length === 0 && revealCommands.length > 0)\n )\n return yield* Effect.die(AuthConfigurationError.make({ reason: \"method\" }));\n\n return { value, credentialCommands, revealCommands };\n });\n\n // Restore the handler constructors hidden by the heterogeneous descriptor.\n const operation = action.route.operation as unknown as ReturnType<\n typeof makeOperation<string, Schema.Top, Schema.Top, Schema.Top>\n >;\n\n const layer =\n operation.credentials || operation.reveals.length > 0\n ? operation.privateHandlerLayer(run)\n : operation.handlerLayer((input) => run(input).pipe(Effect.map((result) => result.value)));\n\n entries.push([\n name,\n Effect.fn(`Auth.${name}`)(function* (input: unknown) {\n const request = yield* AuthRequest;\n\n if (action.mode === \"mutation\" && request.beforeMutation !== undefined)\n yield* request.beforeMutation;\n\n // Reject private input before schema projection can remove unknown fields.\n if (\n Predicate.isObject(input) &&\n Object.keys(action.requestFields).some((field) => Object.hasOwn(input, field))\n )\n return yield* InvalidOperationInput.make({});\n\n return yield* operation.invokeUnknown(guest, input).pipe(\n Effect.provide(layer, { local: true }),\n Effect.provideService(AuthCredentialCommandCollector, request.credentialCommandSink),\n Effect.provideService(\n AuthRevealCommandCollectorService,\n request.revealCommandCollector ?? {\n supportedKinds: [],\n accept: () => Effect.void,\n },\n ),\n );\n }) as (input: unknown) => Effect.Effect<unknown, unknown, R | AuthRequest>,\n ]);\n }\n\n // Every entry invokes the exact operation and implementation selected above.\n return Object.freeze(Object.fromEntries(entries)) as LocalActionApi<\n Actions,\n Sessions,\n Strategies,\n Default\n >;\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LifecycleHooks } from "../hooks/LifecycleHooks.mjs";
|
|
2
|
+
import { SubtleCrypto, layerCryptoWeb } from "../WebCrypto.mjs";
|
|
3
|
+
import { Crypto, Effect, Layer, Option } from "effect";
|
|
4
|
+
//#region src/auth/defaults.ts
|
|
5
|
+
/** Keep explicitly supplied services. Shared Layer values also share their resources. */
|
|
6
|
+
const defaultLayer = (service, fallback) => Layer.unwrap(Effect.map(Effect.serviceOption(service), (current) => Option.isSome(current) ? Layer.succeed(service, current.value) : fallback));
|
|
7
|
+
const cryptoLayer = Layer.mergeAll(defaultLayer(Crypto.Crypto, layerCryptoWeb), defaultLayer(SubtleCrypto, SubtleCrypto.layerWeb));
|
|
8
|
+
const hooksLayer = defaultLayer(LifecycleHooks, LifecycleHooks.empty);
|
|
9
|
+
//#endregion
|
|
10
|
+
export { cryptoLayer, defaultLayer, hooksLayer };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=defaults.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.mjs","names":[],"sources":["../../src/auth/defaults.ts"],"sourcesContent":["import type { Context } from \"effect\";\nimport { Crypto, Effect, Layer, Option } from \"effect\";\n\nimport { LifecycleHooks } from \"../hooks/LifecycleHooks\";\nimport { layerCryptoWeb, SubtleCrypto } from \"../WebCrypto\";\n\n/** Keep explicitly supplied services. Shared Layer values also share their resources. */\nexport const defaultLayer = <I, S, E, R>(\n service: Context.Key<I, S>,\n fallback: Layer.Layer<I, E, R>,\n): Layer.Layer<I, E, R> =>\n Layer.unwrap(\n Effect.map(Effect.serviceOption(service), (current) =>\n Option.isSome(current) ? Layer.succeed(service, current.value) : fallback,\n ),\n );\n\nexport const cryptoLayer = Layer.mergeAll(\n defaultLayer(Crypto.Crypto, layerCryptoWeb),\n defaultLayer(SubtleCrypto, SubtleCrypto.layerWeb),\n);\n\nexport const hooksLayer = defaultLayer(LifecycleHooks, LifecycleHooks.empty);\n"],"mappings":";;;;;AAOA,MAAa,gBACX,SACA,aAEA,MAAM,OACJ,OAAO,IAAI,OAAO,cAAc,OAAO,IAAI,YACzC,OAAO,OAAO,OAAO,IAAI,MAAM,QAAQ,SAAS,QAAQ,KAAK,IAAI,QACnE,CACF;AAEF,MAAa,cAAc,MAAM,SAC/B,aAAa,OAAO,QAAQ,cAAc,GAC1C,aAAa,cAAc,aAAa,QAAQ,CAClD;AAEA,MAAa,aAAa,aAAa,gBAAgB,eAAe,KAAK"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { makeSessionModule } from "../sessions/module.mjs";
|
|
2
|
+
import { Effect, HKT, Schema } from "effect";
|
|
3
|
+
//#region src/auth/definition.d.ts
|
|
4
|
+
type ClaimsCodec = Schema.Codec<unknown, unknown, unknown, unknown>;
|
|
5
|
+
type AuthMethod = (...args: never[]) => Effect.Effect<unknown, unknown, unknown>;
|
|
6
|
+
interface BuiltStrategy {
|
|
7
|
+
/** This method bundle completes authentication through the shared session authority. */
|
|
8
|
+
readonly completion?: boolean;
|
|
9
|
+
readonly make: Effect.Effect<Readonly<Record<string, AuthMethod>>, unknown, unknown>;
|
|
10
|
+
}
|
|
11
|
+
/** Static contracts and service keys shared by one auth definition. Implementations come from Layers. */
|
|
12
|
+
interface StrategyBinding<Claims extends ClaimsCodec, Id extends string, SessionId extends string> {
|
|
13
|
+
readonly claims: Claims;
|
|
14
|
+
readonly namespace: Id;
|
|
15
|
+
readonly sessions: ReturnType<typeof makeSessionModule<SessionId, Claims>>;
|
|
16
|
+
readonly sessionNamespace: SessionId;
|
|
17
|
+
}
|
|
18
|
+
interface StrategyTypeLambda extends HKT.TypeLambda {
|
|
19
|
+
readonly type: {
|
|
20
|
+
readonly strategy: BuiltStrategy;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
type BindingOf<F extends HKT.TypeLambda> = Extract<F["Target"], {
|
|
24
|
+
readonly claims: ClaimsCodec;
|
|
25
|
+
readonly namespace: string;
|
|
26
|
+
readonly sessionNamespace: string;
|
|
27
|
+
}>;
|
|
28
|
+
interface StrategyDefinition<F extends StrategyTypeLambda, Namespace extends string | undefined = undefined> {
|
|
29
|
+
readonly _TypeLambda?: F;
|
|
30
|
+
/** Override only when an existing credential or operation namespace must be retained. */
|
|
31
|
+
readonly namespace: Namespace;
|
|
32
|
+
readonly bind: <Claims extends ClaimsCodec, const Id extends string, const SessionId extends string>(binding: StrategyBinding<Claims, Id, SessionId>) => HKT.Kind<F, never, never, never, StrategyBinding<Claims, Id, SessionId>>;
|
|
33
|
+
}
|
|
34
|
+
type StrategySelection = Readonly<Record<string, StrategyDefinition<StrategyTypeLambda, string | undefined> | BuiltStrategy>>;
|
|
35
|
+
type NamespaceOf<S, Root extends string, Key extends string> = S extends {
|
|
36
|
+
readonly namespace: infer Id extends string | undefined;
|
|
37
|
+
} ? undefined extends Id ? Exclude<Id, undefined> | `${Root}/${Key}` : Id : `${Root}/${Key}`;
|
|
38
|
+
type BoundStrategies<S extends StrategySelection, Claims extends ClaimsCodec, Id extends string, SessionId extends string> = { readonly [K in keyof S]: S[K] extends StrategyDefinition<infer F, string | undefined> ? HKT.Kind<F, never, never, never, StrategyBinding<Claims, NamespaceOf<S[K], Id, Extract<K, string>>, SessionId>> : {
|
|
39
|
+
readonly strategy: S[K];
|
|
40
|
+
}; };
|
|
41
|
+
type BoundSelection<S> = { readonly [K in keyof S]: S[K] extends {
|
|
42
|
+
readonly strategy: infer Strategy extends BuiltStrategy;
|
|
43
|
+
} ? Strategy : never; };
|
|
44
|
+
//#endregion
|
|
45
|
+
export { AuthMethod, BindingOf, BoundSelection, BoundStrategies, BuiltStrategy, ClaimsCodec, StrategyBinding, StrategyDefinition, StrategySelection, StrategyTypeLambda };
|
|
46
|
+
//# sourceMappingURL=definition.d.mts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { OperationBoundaryError } from "../operations/errors.mjs";
|
|
2
|
+
import "../operations/credentials.mjs";
|
|
3
|
+
import { SessionSignOut } from "../sessions/models.mjs";
|
|
4
|
+
import { HookDenied } from "../hooks/models.mjs";
|
|
5
|
+
import { SessionError, SessionSignOutUnavailable } from "../sessions/errors.mjs";
|
|
6
|
+
import "../Operations.mjs";
|
|
7
|
+
import { AuthRequest } from "./AuthRequest.mjs";
|
|
8
|
+
import "../sessions/module.mjs";
|
|
9
|
+
import "../Sessions.mjs";
|
|
10
|
+
import { Effect, Redacted, Schema, Scope } from "effect";
|
|
11
|
+
//#region src/auth/session.d.ts
|
|
12
|
+
type SessionApiError = SessionError | HookDenied | OperationBoundaryError;
|
|
13
|
+
/** Session actions share implementations across HTTP, native and local callers. */
|
|
14
|
+
interface SessionApi<Session, R = never> {
|
|
15
|
+
/** Explicit credential verification; does not read a request or renew credentials. */
|
|
16
|
+
readonly verifySession: (credential: Redacted.Redacted<string>) => Effect.Effect<Session, SessionApiError>;
|
|
17
|
+
/** Missing or invalid credentials are anonymous; availability failures remain failures. */
|
|
18
|
+
readonly getSession: () => Effect.Effect<Session | null, SessionApiError, AuthRequest | R>;
|
|
19
|
+
readonly requireSession: () => Effect.Effect<Session, SessionApiError, AuthRequest | R>;
|
|
20
|
+
/** Does not preverify. Local clearing and server invalidation have distinct outcomes. */
|
|
21
|
+
readonly signOut: () => Effect.Effect<SessionSignOut | SessionSignOutUnavailable, SessionApiError, AuthRequest | R>;
|
|
22
|
+
/** Explicit renewal; ordinary session reads never rotate credentials. */
|
|
23
|
+
readonly renewSession: () => Effect.Effect<Session, SessionApiError, AuthRequest | R>;
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { SessionApi, SessionApiError };
|
|
27
|
+
//# sourceMappingURL=session.d.mts.map
|