@yielded/auth-persistence 0.1.0-beta.24 → 0.1.0-beta.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -8
- package/dist/Adapter.d.mts +47 -33
- package/dist/Adapter.mjs +36 -23
- package/dist/OAuthPersistence.d.mts +35 -51
- package/dist/OAuthPersistence.mjs +60 -68
- package/dist/OAuthPersistence.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/internal/browser-login.d.mts +1 -1
- package/dist/internal/browser-login.mjs +29 -9
- package/dist/internal/browser-login.mjs.map +1 -1
- package/dist/internal/configuration.d.mts +13 -8
- package/dist/internal/configuration.mjs.map +1 -1
- package/dist/internal/crypto.d.mts +1 -0
- package/dist/internal/crypto.mjs +1 -1
- package/dist/internal/d1-planning.mjs +8 -0
- package/dist/internal/d1-planning.mjs.map +1 -0
- package/dist/internal/email-native-state.mjs +135 -0
- package/dist/internal/email-native-state.mjs.map +1 -0
- package/dist/internal/email-native.d.mts +17 -0
- package/dist/internal/email-native.mjs +245 -0
- package/dist/internal/email-native.mjs.map +1 -0
- package/dist/internal/email-policy.mjs +92 -0
- package/dist/internal/email-policy.mjs.map +1 -0
- package/dist/internal/email-registration-native.d.mts +38 -0
- package/dist/internal/email-registration-native.mjs +171 -0
- package/dist/internal/email-registration-native.mjs.map +1 -0
- package/dist/internal/models/email-model.d.mts +40 -104
- package/dist/internal/models/email-model.mjs +3 -5
- package/dist/internal/models/email-model.mjs.map +1 -1
- package/dist/internal/models/oauth-connected-model.d.mts +44 -213
- package/dist/internal/models/oauth-connected-model.mjs +6 -14
- package/dist/internal/models/oauth-connected-model.mjs.map +1 -1
- package/dist/internal/models/oauth-model.d.mts +95 -244
- package/dist/internal/models/oauth-model.mjs +28 -22
- package/dist/internal/models/oauth-model.mjs.map +1 -1
- package/dist/internal/models/passkey-model.d.mts +11 -147
- package/dist/internal/models/passkey-model.mjs +5 -24
- package/dist/internal/models/passkey-model.mjs.map +1 -1
- package/dist/internal/models/passkey-registration-ceremony-model.d.mts +5 -39
- package/dist/internal/models/passkey-write-model.d.mts +17 -75
- package/dist/internal/models/passkey-write-model.mjs +1 -7
- package/dist/internal/models/passkey-write-model.mjs.map +1 -1
- package/dist/internal/models/password-model.d.mts +16 -82
- package/dist/internal/models/password-model.mjs +1 -4
- package/dist/internal/models/password-model.mjs.map +1 -1
- package/dist/internal/models/phone-model.d.mts +86 -0
- package/dist/internal/models/phone-model.mjs +10 -0
- package/dist/internal/models/phone-model.mjs.map +1 -0
- package/dist/internal/models/proof-model.d.mts +43 -272
- package/dist/internal/models/proof-model.mjs +2 -10
- package/dist/internal/models/proof-model.mjs.map +1 -1
- package/dist/internal/models/session-model.d.mts +74 -93
- package/dist/internal/models/session-model.mjs +3 -11
- package/dist/internal/models/session-model.mjs.map +1 -1
- package/dist/internal/models/step-up-model.d.mts +12 -50
- package/dist/internal/models/step-up-model.mjs +2 -4
- package/dist/internal/models/step-up-model.mjs.map +1 -1
- package/dist/internal/models/totp-model.d.mts +76 -0
- package/dist/internal/models/totp-model.mjs +10 -0
- package/dist/internal/models/totp-model.mjs.map +1 -0
- package/dist/internal/native-sql-table.d.mts +21 -4
- package/dist/internal/native-sql-table.mjs +9 -5
- package/dist/internal/native-sql-table.mjs.map +1 -1
- package/dist/internal/oauth/native-accounts.d.mts +17 -0
- package/dist/internal/oauth/native-accounts.mjs +290 -0
- package/dist/internal/oauth/native-accounts.mjs.map +1 -0
- package/dist/internal/oauth/native-connected-state.d.mts +11 -0
- package/dist/internal/oauth/native-connected-state.mjs +146 -0
- package/dist/internal/oauth/native-connected-state.mjs.map +1 -0
- package/dist/internal/oauth/native-connected.d.mts +15 -0
- package/dist/internal/oauth/native-connected.mjs +462 -0
- package/dist/internal/oauth/native-connected.mjs.map +1 -0
- package/dist/internal/oauth/native-flow.mjs +138 -0
- package/dist/internal/oauth/native-flow.mjs.map +1 -0
- package/dist/internal/oauth/native-layers.d.mts +24 -0
- package/dist/internal/oauth/native-layers.mjs +13 -0
- package/dist/internal/oauth/native-layers.mjs.map +1 -0
- package/dist/internal/oauth/native-mutation.mjs +122 -0
- package/dist/internal/oauth/native-mutation.mjs.map +1 -0
- package/dist/internal/oauth/native-registration.d.mts +24 -0
- package/dist/internal/oauth/native-registration.mjs +328 -0
- package/dist/internal/oauth/native-registration.mjs.map +1 -0
- package/dist/internal/oauth/native-revocations.d.mts +17 -0
- package/dist/internal/oauth/native-revocations.mjs +106 -0
- package/dist/internal/oauth/native-revocations.mjs.map +1 -0
- package/dist/internal/oauth/native-sign-in.d.mts +17 -0
- package/dist/internal/oauth/native-sign-in.mjs +50 -0
- package/dist/internal/oauth/native-sign-in.mjs.map +1 -0
- package/dist/internal/oauth/native-state.d.mts +10 -0
- package/dist/internal/oauth/native-state.mjs +214 -0
- package/dist/internal/oauth/native-state.mjs.map +1 -0
- package/dist/internal/oauth/state.d.mts +10 -0
- package/dist/internal/oauth/state.mjs +3 -27
- package/dist/internal/oauth/state.mjs.map +1 -1
- package/dist/internal/passkey-actions.mjs +55 -0
- package/dist/internal/passkey-actions.mjs.map +1 -0
- package/dist/internal/passkey-inputs.mjs +73 -0
- package/dist/internal/passkey-inputs.mjs.map +1 -0
- package/dist/internal/passkey-managed.mjs +224 -0
- package/dist/internal/passkey-managed.mjs.map +1 -0
- package/dist/internal/passkey-native-ceremony.d.mts +35 -0
- package/dist/internal/passkey-native-ceremony.mjs +38 -0
- package/dist/internal/passkey-native-ceremony.mjs.map +1 -0
- package/dist/internal/passkey-native-flow.mjs +91 -0
- package/dist/internal/passkey-native-flow.mjs.map +1 -0
- package/dist/internal/passkey-native-registration.d.mts +10 -0
- package/dist/internal/passkey-native-registration.mjs +114 -0
- package/dist/internal/passkey-native-registration.mjs.map +1 -0
- package/dist/internal/passkey-native-state.d.mts +15 -0
- package/dist/internal/passkey-native-state.mjs +186 -0
- package/dist/internal/passkey-native-state.mjs.map +1 -0
- package/dist/internal/passkey-native-write.d.mts +82 -0
- package/dist/internal/passkey-native-write.mjs +330 -0
- package/dist/internal/passkey-native-write.mjs.map +1 -0
- package/dist/internal/passkey-native.d.mts +835 -0
- package/dist/internal/passkey-native.mjs +175 -0
- package/dist/internal/passkey-native.mjs.map +1 -0
- package/dist/internal/passkey-policy.mjs +115 -0
- package/dist/internal/passkey-policy.mjs.map +1 -0
- package/dist/internal/password-credentials.mjs +38 -9
- package/dist/internal/password-credentials.mjs.map +1 -1
- package/dist/internal/password-native.d.mts +14 -0
- package/dist/internal/password-native.mjs +292 -0
- package/dist/internal/password-native.mjs.map +1 -0
- package/dist/internal/password-policy.mjs +93 -0
- package/dist/internal/password-policy.mjs.map +1 -0
- package/dist/internal/password-registration-native.d.mts +22 -0
- package/dist/internal/password-registration-native.mjs +142 -0
- package/dist/internal/password-registration-native.mjs.map +1 -0
- package/dist/internal/persistence.d.mts +6 -19
- package/dist/internal/persistence.mjs +199 -166
- package/dist/internal/persistence.mjs.map +1 -1
- package/dist/internal/phone-composed.mjs +79 -0
- package/dist/internal/phone-composed.mjs.map +1 -0
- package/dist/internal/phone-native.d.mts +15 -0
- package/dist/internal/phone-native.mjs +354 -0
- package/dist/internal/phone-native.mjs.map +1 -0
- package/dist/internal/proof-native.d.mts +15 -0
- package/dist/internal/proof-native.mjs +289 -0
- package/dist/internal/proof-native.mjs.map +1 -0
- package/dist/internal/registration.mjs +50 -60
- package/dist/internal/registration.mjs.map +1 -1
- package/dist/internal/session-native-authority.d.mts +15 -0
- package/dist/internal/session-native-authority.mjs +91 -0
- package/dist/internal/session-native-authority.mjs.map +1 -0
- package/dist/internal/session-native-cleanup.d.mts +14 -0
- package/dist/internal/session-native-cleanup.mjs +48 -0
- package/dist/internal/session-native-cleanup.mjs.map +1 -0
- package/dist/internal/session-native-login.d.mts +15 -0
- package/dist/internal/session-native-login.mjs +87 -0
- package/dist/internal/session-native-login.mjs.map +1 -0
- package/dist/internal/session-native-pending-read.mjs +42 -0
- package/dist/internal/session-native-pending-read.mjs.map +1 -0
- package/dist/internal/session-native-pending.mjs +134 -0
- package/dist/internal/session-native-pending.mjs.map +1 -0
- package/dist/internal/session-native-record.mjs +79 -0
- package/dist/internal/session-native-record.mjs.map +1 -0
- package/dist/internal/session-native-state.mjs +130 -0
- package/dist/internal/session-native-state.mjs.map +1 -0
- package/dist/internal/session-native-stateful.d.mts +16 -0
- package/dist/internal/session-native-stateful.mjs +225 -0
- package/dist/internal/session-native-stateful.mjs.map +1 -0
- package/dist/internal/session-native-step-up.d.mts +15 -0
- package/dist/internal/session-native-step-up.mjs +212 -0
- package/dist/internal/session-native-step-up.mjs.map +1 -0
- package/dist/internal/session-native-validity.d.mts +15 -0
- package/dist/internal/session-native-validity.mjs +97 -0
- package/dist/internal/session-native-validity.mjs.map +1 -0
- package/dist/internal/session-policy.mjs +29 -0
- package/dist/internal/session-policy.mjs.map +1 -0
- package/dist/internal/sql-authority.d.mts +16 -0
- package/dist/internal/sql-authority.mjs +32 -0
- package/dist/internal/sql-authority.mjs.map +1 -0
- package/dist/internal/sql-change.mjs +21 -0
- package/dist/internal/sql-change.mjs.map +1 -0
- package/dist/internal/sql-cleanup.mjs +35 -0
- package/dist/internal/sql-cleanup.mjs.map +1 -0
- package/dist/internal/sql-commit.d.mts +72 -0
- package/dist/internal/sql-commit.mjs +176 -0
- package/dist/internal/sql-commit.mjs.map +1 -0
- package/dist/internal/sql-expression.d.mts +17 -0
- package/dist/internal/sql-expression.mjs +49 -0
- package/dist/internal/sql-expression.mjs.map +1 -0
- package/dist/internal/sql-oauth-connected-model.d.mts +7 -23
- package/dist/internal/sql-oauth-model.d.mts +27 -52
- package/dist/internal/sql-oauth-model.mjs +3 -4
- package/dist/internal/sql-oauth-model.mjs.map +1 -1
- package/dist/internal/sql-persistence.mjs +5 -9
- package/dist/internal/sql-persistence.mjs.map +1 -1
- package/dist/internal/sql-storage-validation.mjs +1 -2
- package/dist/internal/sql-storage-validation.mjs.map +1 -1
- package/dist/internal/sql-table.d.mts +3 -16
- package/dist/internal/sql-table.mjs +21 -42
- package/dist/internal/sql-table.mjs.map +1 -1
- package/dist/internal/standalone.mjs +2 -3
- package/dist/internal/standalone.mjs.map +1 -1
- package/dist/internal/step-up-state.mjs +5 -8
- package/dist/internal/step-up-state.mjs.map +1 -1
- package/dist/internal/storage-clock.mjs +44 -0
- package/dist/internal/storage-clock.mjs.map +1 -0
- package/dist/internal/storage-mapping.d.mts +11 -8
- package/dist/internal/storage-mapping.mjs +88 -302
- package/dist/internal/storage-mapping.mjs.map +1 -1
- package/dist/internal/storage-plans.mjs +15 -73
- package/dist/internal/storage-plans.mjs.map +1 -1
- package/dist/internal/storage-tables.d.mts +37 -520
- package/dist/internal/storage-tables.mjs +31 -211
- package/dist/internal/storage-tables.mjs.map +1 -1
- package/dist/internal/storage-validation.d.mts +1 -6
- package/dist/internal/storage-validation.mjs +1 -42
- package/dist/internal/storage-validation.mjs.map +1 -1
- package/dist/internal/table-model.d.mts +21 -0
- package/dist/internal/totp-native.d.mts +15 -0
- package/dist/internal/totp-native.mjs +401 -0
- package/dist/internal/totp-native.mjs.map +1 -0
- package/package.json +1 -1
- package/src/Adapter.ts +143 -199
- package/src/OAuthPersistence.ts +128 -271
- package/src/index.ts +1 -1
- package/src/internal/browser-login.ts +54 -24
- package/src/internal/configuration.ts +16 -31
- package/src/internal/d1-planning.ts +7 -0
- package/src/internal/email-native-state.ts +247 -0
- package/src/internal/email-native.ts +514 -0
- package/src/internal/email-policy.ts +235 -0
- package/src/internal/email-registration-native.ts +386 -0
- package/src/internal/models/email-model.ts +76 -214
- package/src/internal/models/oauth-connected-model.ts +50 -288
- package/src/internal/models/oauth-model.ts +147 -368
- package/src/internal/models/passkey-model.ts +11 -208
- package/src/internal/models/passkey-registration-ceremony-model.ts +6 -60
- package/src/internal/models/passkey-write-model.ts +14 -95
- package/src/internal/models/password-model.ts +28 -148
- package/src/internal/models/phone-model.ts +110 -0
- package/src/internal/models/proof-model.ts +48 -404
- package/src/internal/models/session-model.ts +102 -200
- package/src/internal/models/step-up-model.ts +17 -96
- package/src/internal/models/totp-model.ts +82 -0
- package/src/internal/native-sql-table.ts +32 -11
- package/src/internal/oauth/native-accounts.ts +576 -0
- package/src/internal/oauth/native-connected-state.ts +288 -0
- package/src/internal/oauth/native-connected.ts +888 -0
- package/src/internal/oauth/native-flow.ts +253 -0
- package/src/internal/oauth/native-layers.ts +83 -0
- package/src/internal/oauth/native-mutation.ts +222 -0
- package/src/internal/oauth/native-registration.ts +545 -0
- package/src/internal/oauth/native-revocations.ts +190 -0
- package/src/internal/oauth/native-sign-in.ts +111 -0
- package/src/internal/oauth/native-state.ts +346 -0
- package/src/internal/oauth/state.ts +2 -70
- package/src/internal/passkey-actions.ts +70 -0
- package/src/internal/passkey-inputs.ts +56 -0
- package/src/internal/passkey-managed.ts +360 -0
- package/src/internal/passkey-native-ceremony.ts +66 -0
- package/src/internal/passkey-native-flow.ts +140 -0
- package/src/internal/passkey-native-registration.ts +221 -0
- package/src/internal/passkey-native-state.ts +335 -0
- package/src/internal/passkey-native-write.ts +611 -0
- package/src/internal/passkey-native.ts +372 -0
- package/src/internal/passkey-policy.ts +246 -0
- package/src/internal/password-credentials.ts +52 -10
- package/src/internal/password-native.ts +571 -0
- package/src/internal/password-policy.ts +307 -0
- package/src/internal/password-registration-native.ts +322 -0
- package/src/internal/persistence.ts +336 -290
- package/src/internal/phone-composed.ts +86 -0
- package/src/internal/phone-native.ts +659 -0
- package/src/internal/proof-native.ts +448 -0
- package/src/internal/registration.ts +96 -143
- package/src/internal/session-native-authority.ts +247 -0
- package/src/internal/session-native-cleanup.ts +65 -0
- package/src/internal/session-native-login.ts +205 -0
- package/src/internal/session-native-pending-read.ts +68 -0
- package/src/internal/session-native-pending.ts +223 -0
- package/src/internal/session-native-record.ts +141 -0
- package/src/internal/session-native-state.ts +259 -0
- package/src/internal/session-native-stateful.ts +512 -0
- package/src/internal/session-native-step-up.ts +450 -0
- package/src/internal/session-native-validity.ts +208 -0
- package/src/internal/session-policy.ts +59 -0
- package/src/internal/sql-authority.ts +56 -0
- package/src/internal/sql-change.ts +38 -0
- package/src/internal/sql-cleanup.ts +56 -0
- package/src/internal/sql-commit.ts +435 -0
- package/src/internal/sql-expression.ts +94 -0
- package/src/internal/sql-metadata.ts +100 -0
- package/src/internal/sql-oauth-connected-model.ts +6 -95
- package/src/internal/sql-oauth-model.ts +31 -134
- package/src/internal/sql-persistence.ts +2 -6
- package/src/internal/sql-storage-validation.ts +1 -2
- package/src/internal/sql-table.ts +19 -52
- package/src/internal/standalone.ts +2 -11
- package/src/internal/step-up-state.ts +4 -17
- package/src/internal/storage-clock.ts +58 -0
- package/src/internal/storage-mapping.ts +125 -340
- package/src/internal/storage-plans.ts +14 -80
- package/src/internal/storage-tables.ts +28 -212
- package/src/internal/storage-validation.ts +0 -58
- package/src/internal/table-model.ts +24 -0
- package/src/internal/totp-native.ts +701 -0
- package/dist/internal/PasswordPreparedPostconditions.d.mts +0 -22
- package/dist/internal/PasswordPreparedPostconditions.mjs +0 -12
- package/dist/internal/PasswordPreparedPostconditions.mjs.map +0 -1
- package/dist/internal/authority-snapshot.mjs +0 -53
- package/dist/internal/authority-snapshot.mjs.map +0 -1
- package/dist/internal/email-kernel.d.mts +0 -276
- package/dist/internal/email-kernel.mjs +0 -497
- package/dist/internal/email-kernel.mjs.map +0 -1
- package/dist/internal/models/passkey-registration-ceremony-model.mjs +0 -18
- package/dist/internal/models/passkey-registration-ceremony-model.mjs.map +0 -1
- package/dist/internal/oauth/accounts.d.mts +0 -8
- package/dist/internal/oauth/accounts.mjs +0 -379
- package/dist/internal/oauth/accounts.mjs.map +0 -1
- package/dist/internal/oauth/connected-access.d.mts +0 -9
- package/dist/internal/oauth/connected-access.mjs +0 -229
- package/dist/internal/oauth/connected-access.mjs.map +0 -1
- package/dist/internal/oauth/connected-collection.d.mts +0 -7
- package/dist/internal/oauth/connected-collection.mjs +0 -214
- package/dist/internal/oauth/connected-collection.mjs.map +0 -1
- package/dist/internal/oauth/connected-custody.d.mts +0 -6
- package/dist/internal/oauth/connected-custody.mjs +0 -165
- package/dist/internal/oauth/connected-custody.mjs.map +0 -1
- package/dist/internal/oauth/connected-flow.d.mts +0 -7
- package/dist/internal/oauth/connected-flow.mjs +0 -324
- package/dist/internal/oauth/connected-flow.mjs.map +0 -1
- package/dist/internal/oauth/connected-input.mjs +0 -122
- package/dist/internal/oauth/connected-input.mjs.map +0 -1
- package/dist/internal/oauth/connected-keys.d.mts +0 -2
- package/dist/internal/oauth/connected-keys.mjs +0 -22
- package/dist/internal/oauth/connected-keys.mjs.map +0 -1
- package/dist/internal/oauth/connected-maintenance.d.mts +0 -9
- package/dist/internal/oauth/connected-maintenance.mjs +0 -226
- package/dist/internal/oauth/connected-maintenance.mjs.map +0 -1
- package/dist/internal/oauth/connected-management.d.mts +0 -9
- package/dist/internal/oauth/connected-management.mjs +0 -243
- package/dist/internal/oauth/connected-management.mjs.map +0 -1
- package/dist/internal/oauth/connected-reference.mjs +0 -63
- package/dist/internal/oauth/connected-reference.mjs.map +0 -1
- package/dist/internal/oauth/connected-settlement.d.mts +0 -8
- package/dist/internal/oauth/connected-settlement.mjs +0 -141
- package/dist/internal/oauth/connected-settlement.mjs.map +0 -1
- package/dist/internal/oauth/connected-sign-in.d.mts +0 -10
- package/dist/internal/oauth/connected-sign-in.mjs +0 -281
- package/dist/internal/oauth/connected-sign-in.mjs.map +0 -1
- package/dist/internal/oauth/connected-state.d.mts +0 -14
- package/dist/internal/oauth/connected-state.mjs +0 -469
- package/dist/internal/oauth/connected-state.mjs.map +0 -1
- package/dist/internal/oauth/connected-target.d.mts +0 -21
- package/dist/internal/oauth/connected-target.mjs +0 -117
- package/dist/internal/oauth/connected-target.mjs.map +0 -1
- package/dist/internal/oauth/flow.d.mts +0 -5
- package/dist/internal/oauth/flow.mjs +0 -279
- package/dist/internal/oauth/flow.mjs.map +0 -1
- package/dist/internal/oauth/input.mjs +0 -127
- package/dist/internal/oauth/input.mjs.map +0 -1
- package/dist/internal/oauth/owner.d.mts +0 -10
- package/dist/internal/oauth/owner.mjs +0 -10
- package/dist/internal/oauth/owner.mjs.map +0 -1
- package/dist/internal/oauth/query-compiler.d.mts +0 -7
- package/dist/internal/oauth/query-compiler.mjs +0 -9
- package/dist/internal/oauth/query-compiler.mjs.map +0 -1
- package/dist/internal/oauth/registration.d.mts +0 -7
- package/dist/internal/oauth/registration.mjs +0 -393
- package/dist/internal/oauth/registration.mjs.map +0 -1
- package/dist/internal/oauth/target.d.mts +0 -31
- package/dist/internal/oauth/target.mjs +0 -273
- package/dist/internal/oauth/target.mjs.map +0 -1
- package/dist/internal/oauth-kernel.d.mts +0 -1423
- package/dist/internal/oauth-kernel.mjs +0 -187
- package/dist/internal/oauth-kernel.mjs.map +0 -1
- package/dist/internal/passkey/admission.d.mts +0 -6
- package/dist/internal/passkey/admission.mjs +0 -220
- package/dist/internal/passkey/admission.mjs.map +0 -1
- package/dist/internal/passkey/credentials.d.mts +0 -14
- package/dist/internal/passkey/credentials.mjs +0 -249
- package/dist/internal/passkey/credentials.mjs.map +0 -1
- package/dist/internal/passkey/enrollment.mjs +0 -138
- package/dist/internal/passkey/enrollment.mjs.map +0 -1
- package/dist/internal/passkey/flow.d.mts +0 -21
- package/dist/internal/passkey/flow.mjs +0 -452
- package/dist/internal/passkey/flow.mjs.map +0 -1
- package/dist/internal/passkey/management.mjs +0 -231
- package/dist/internal/passkey/management.mjs.map +0 -1
- package/dist/internal/passkey/registration-ceremony.d.mts +0 -9
- package/dist/internal/passkey/registration-ceremony.mjs +0 -129
- package/dist/internal/passkey/registration-ceremony.mjs.map +0 -1
- package/dist/internal/passkey/registration-custody.d.mts +0 -2
- package/dist/internal/passkey/registration-custody.mjs +0 -52
- package/dist/internal/passkey/registration-custody.mjs.map +0 -1
- package/dist/internal/passkey/registration-write.mjs +0 -211
- package/dist/internal/passkey/registration-write.mjs.map +0 -1
- package/dist/internal/passkey/state.d.mts +0 -10
- package/dist/internal/passkey/state.mjs +0 -234
- package/dist/internal/passkey/state.mjs.map +0 -1
- package/dist/internal/passkey/target.d.mts +0 -20
- package/dist/internal/passkey/target.mjs +0 -200
- package/dist/internal/passkey/target.mjs.map +0 -1
- package/dist/internal/passkey/write-state.d.mts +0 -17
- package/dist/internal/passkey/write-state.mjs +0 -346
- package/dist/internal/passkey/write-state.mjs.map +0 -1
- package/dist/internal/passkey/write-target.mjs +0 -192
- package/dist/internal/passkey/write-target.mjs.map +0 -1
- package/dist/internal/passkey-kernel.d.mts +0 -6045
- package/dist/internal/passkey-kernel.mjs +0 -49
- package/dist/internal/passkey-kernel.mjs.map +0 -1
- package/dist/internal/passkeys.d.mts +0 -7
- package/dist/internal/passkeys.mjs +0 -387
- package/dist/internal/passkeys.mjs.map +0 -1
- package/dist/internal/password-credentials.d.mts +0 -11
- package/dist/internal/password-kernel.d.mts +0 -278
- package/dist/internal/password-kernel.mjs +0 -508
- package/dist/internal/password-kernel.mjs.map +0 -1
- package/dist/internal/phone-kernel.d.mts +0 -162
- package/dist/internal/phone-kernel.mjs +0 -437
- package/dist/internal/phone-kernel.mjs.map +0 -1
- package/dist/internal/proof-kernel.d.mts +0 -94
- package/dist/internal/proof-kernel.mjs +0 -624
- package/dist/internal/proof-kernel.mjs.map +0 -1
- package/dist/internal/query-operations.d.mts +0 -68
- package/dist/internal/session-kernel.d.mts +0 -62
- package/dist/internal/session-kernel.mjs +0 -820
- package/dist/internal/session-kernel.mjs.map +0 -1
- package/dist/internal/sql-oauth-connected-model.mjs +0 -7
- package/dist/internal/sql-oauth-connected-model.mjs.map +0 -1
- package/dist/internal/sql-query.d.mts +0 -12
- package/dist/internal/sql-query.mjs +0 -206
- package/dist/internal/sql-query.mjs.map +0 -1
- package/dist/internal/step-up-state.d.mts +0 -49
- package/dist/internal/transaction-execution-kernel.d.mts +0 -37
- package/dist/internal/transaction-execution-kernel.mjs +0 -120
- package/dist/internal/transaction-execution-kernel.mjs.map +0 -1
- package/dist/internal/transaction-kernel.d.mts +0 -81
- package/dist/internal/transaction-kernel.mjs +0 -264
- package/dist/internal/transaction-kernel.mjs.map +0 -1
- package/src/internal/PasswordPreparedPostconditions.ts +0 -30
- package/src/internal/authority-snapshot.ts +0 -91
- package/src/internal/email-kernel.ts +0 -1555
- package/src/internal/oauth/accounts.ts +0 -838
- package/src/internal/oauth/connected-access.ts +0 -388
- package/src/internal/oauth/connected-collection.ts +0 -345
- package/src/internal/oauth/connected-custody.ts +0 -308
- package/src/internal/oauth/connected-flow.ts +0 -562
- package/src/internal/oauth/connected-input.ts +0 -147
- package/src/internal/oauth/connected-keys.ts +0 -31
- package/src/internal/oauth/connected-maintenance.ts +0 -379
- package/src/internal/oauth/connected-management.ts +0 -391
- package/src/internal/oauth/connected-reference.ts +0 -135
- package/src/internal/oauth/connected-settlement.ts +0 -278
- package/src/internal/oauth/connected-sign-in.ts +0 -472
- package/src/internal/oauth/connected-state.ts +0 -924
- package/src/internal/oauth/connected-target.ts +0 -307
- package/src/internal/oauth/flow.ts +0 -505
- package/src/internal/oauth/input.ts +0 -201
- package/src/internal/oauth/owner.ts +0 -22
- package/src/internal/oauth/query-compiler.ts +0 -15
- package/src/internal/oauth/registration.ts +0 -676
- package/src/internal/oauth/target.ts +0 -803
- package/src/internal/oauth-kernel.ts +0 -294
- package/src/internal/passkey/admission.ts +0 -368
- package/src/internal/passkey/credentials.ts +0 -511
- package/src/internal/passkey/enrollment.ts +0 -326
- package/src/internal/passkey/flow.ts +0 -1062
- package/src/internal/passkey/management.ts +0 -426
- package/src/internal/passkey/registration-ceremony.ts +0 -283
- package/src/internal/passkey/registration-custody.ts +0 -91
- package/src/internal/passkey/registration-write.ts +0 -426
- package/src/internal/passkey/state.ts +0 -351
- package/src/internal/passkey/target.ts +0 -598
- package/src/internal/passkey/write-state.ts +0 -678
- package/src/internal/passkey/write-target.ts +0 -450
- package/src/internal/passkey-kernel.ts +0 -112
- package/src/internal/passkeys.ts +0 -652
- package/src/internal/password-kernel.ts +0 -1522
- package/src/internal/phone-kernel.ts +0 -872
- package/src/internal/proof-kernel.ts +0 -1992
- package/src/internal/query-operations.ts +0 -91
- package/src/internal/session-kernel.ts +0 -2406
- package/src/internal/sql-query.ts +0 -304
- package/src/internal/transaction-execution-kernel.ts +0 -335
- package/src/internal/transaction-kernel.ts +0 -603
|
@@ -0,0 +1,835 @@
|
|
|
1
|
+
import { PersistenceMappingError } from "./mapping-error.mjs";
|
|
2
|
+
import { NativeSqlTables, SqlTable, sqlMapping } from "./native-sql-table.mjs";
|
|
3
|
+
import { CurrentSqlCommit, SqlBatchCommit, SqlCommitExecutor, SqlCommitOwnerError } from "./sql-commit.mjs";
|
|
4
|
+
import { PasskeyNativeMapping, PasskeyNativeRead, PasskeyNativeRow } from "./passkey-native-state.mjs";
|
|
5
|
+
import { Crypto, Effect, Schema } from "effect";
|
|
6
|
+
import { CurrentCommitJournal } from "@yielded/auth/Hooks";
|
|
7
|
+
import * as M from "@yielded/auth/Passkey";
|
|
8
|
+
import { SqlError } from "effect/sql/SqlError";
|
|
9
|
+
//#region src/internal/passkey-native.d.ts
|
|
10
|
+
export declare const makeNativePasskeyServices: (tables: NativeSqlTables, mapping: PasskeyNativeMapping) => Effect.Effect<{
|
|
11
|
+
batch: boolean;
|
|
12
|
+
state: {
|
|
13
|
+
sql: import("effect/sql/SqlClient").SqlClient;
|
|
14
|
+
tables: NativeSqlTables;
|
|
15
|
+
subject: SqlTable;
|
|
16
|
+
credential: SqlTable;
|
|
17
|
+
factor: SqlTable;
|
|
18
|
+
now: import("effect/sql/Statement").Fragment;
|
|
19
|
+
storedNow: import("effect/sql/Statement").Fragment;
|
|
20
|
+
millis: (expression: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Fragment;
|
|
21
|
+
active: (table: "subject" | "credential" | "authority") => import("effect/sql/Statement").Fragment;
|
|
22
|
+
native: (id: M.PasskeyCredential["revision"]["subjectId"]) => unknown;
|
|
23
|
+
sameId: (nativeId: unknown, value: unknown) => boolean;
|
|
24
|
+
revision: (row: PasskeyNativeRow, factors: ReadonlyArray<PasskeyNativeRow>) => {
|
|
25
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
26
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
27
|
+
readonly credentials: readonly {
|
|
28
|
+
readonly credentialId: string;
|
|
29
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
30
|
+
}[];
|
|
31
|
+
};
|
|
32
|
+
decodeCredential: (row: Readonly<Record<string, unknown>>, current: {
|
|
33
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
34
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
35
|
+
readonly credentials: readonly {
|
|
36
|
+
readonly credentialId: string;
|
|
37
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
38
|
+
}[];
|
|
39
|
+
}, subjectRow: Readonly<Record<string, unknown>>) => Effect.Effect<{
|
|
40
|
+
readonly requirement: {
|
|
41
|
+
readonly alternatives: readonly [{
|
|
42
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
43
|
+
readonly userVerified: boolean;
|
|
44
|
+
readonly phishingResistant: boolean;
|
|
45
|
+
readonly minimumCredentials: number;
|
|
46
|
+
}, ...{
|
|
47
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
48
|
+
readonly userVerified: boolean;
|
|
49
|
+
readonly phishingResistant: boolean;
|
|
50
|
+
readonly minimumCredentials: number;
|
|
51
|
+
}[]];
|
|
52
|
+
readonly maximumAgeMillis: number;
|
|
53
|
+
};
|
|
54
|
+
readonly credentialId: string;
|
|
55
|
+
readonly rpId: string;
|
|
56
|
+
readonly protocolCredentialId: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
|
|
57
|
+
readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
|
|
58
|
+
readonly publicKey: string;
|
|
59
|
+
readonly algorithm: -257 | -7;
|
|
60
|
+
readonly profile: {
|
|
61
|
+
readonly profileId: string;
|
|
62
|
+
readonly rpId: string;
|
|
63
|
+
readonly rpName: string;
|
|
64
|
+
readonly origins: readonly [string, ...string[]];
|
|
65
|
+
readonly developmentLocalhost: boolean;
|
|
66
|
+
readonly residentKey: "discouraged" | "preferred" | "required";
|
|
67
|
+
readonly userVerification: "preferred" | "required";
|
|
68
|
+
readonly primarySignIn: boolean;
|
|
69
|
+
readonly attestation: "none";
|
|
70
|
+
readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
|
|
71
|
+
};
|
|
72
|
+
readonly revision: {
|
|
73
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
74
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
75
|
+
readonly credentials: readonly {
|
|
76
|
+
readonly credentialId: string;
|
|
77
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
78
|
+
}[];
|
|
79
|
+
};
|
|
80
|
+
readonly active: boolean;
|
|
81
|
+
readonly primarySignIn: boolean;
|
|
82
|
+
readonly enrollmentUserVerified: boolean;
|
|
83
|
+
readonly backupEligible: boolean;
|
|
84
|
+
readonly backupState: boolean;
|
|
85
|
+
readonly counter: number;
|
|
86
|
+
} | undefined, PersistenceMappingError, never>;
|
|
87
|
+
readAuthority: (nativeId: unknown, lock: boolean, credentialId?: string | undefined) => Effect.Effect<{
|
|
88
|
+
row: Record<string, unknown>;
|
|
89
|
+
credential: Record<string, unknown> | undefined;
|
|
90
|
+
revision: {
|
|
91
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
92
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
93
|
+
readonly credentials: readonly {
|
|
94
|
+
readonly credentialId: string;
|
|
95
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
96
|
+
}[];
|
|
97
|
+
};
|
|
98
|
+
nowMillis: number;
|
|
99
|
+
} | undefined, Schema.SchemaError | SqlError, never>;
|
|
100
|
+
lookup: (rpId: string, protocolCredentialId: string) => Effect.Effect<{
|
|
101
|
+
readonly requirement: {
|
|
102
|
+
readonly alternatives: readonly [{
|
|
103
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
104
|
+
readonly userVerified: boolean;
|
|
105
|
+
readonly phishingResistant: boolean;
|
|
106
|
+
readonly minimumCredentials: number;
|
|
107
|
+
}, ...{
|
|
108
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
109
|
+
readonly userVerified: boolean;
|
|
110
|
+
readonly phishingResistant: boolean;
|
|
111
|
+
readonly minimumCredentials: number;
|
|
112
|
+
}[]];
|
|
113
|
+
readonly maximumAgeMillis: number;
|
|
114
|
+
};
|
|
115
|
+
readonly credentialId: string;
|
|
116
|
+
readonly rpId: string;
|
|
117
|
+
readonly protocolCredentialId: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
|
|
118
|
+
readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
|
|
119
|
+
readonly publicKey: string;
|
|
120
|
+
readonly algorithm: -257 | -7;
|
|
121
|
+
readonly profile: {
|
|
122
|
+
readonly profileId: string;
|
|
123
|
+
readonly rpId: string;
|
|
124
|
+
readonly rpName: string;
|
|
125
|
+
readonly origins: readonly [string, ...string[]];
|
|
126
|
+
readonly developmentLocalhost: boolean;
|
|
127
|
+
readonly residentKey: "discouraged" | "preferred" | "required";
|
|
128
|
+
readonly userVerification: "preferred" | "required";
|
|
129
|
+
readonly primarySignIn: boolean;
|
|
130
|
+
readonly attestation: "none";
|
|
131
|
+
readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
|
|
132
|
+
};
|
|
133
|
+
readonly revision: {
|
|
134
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
135
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
136
|
+
readonly credentials: readonly {
|
|
137
|
+
readonly credentialId: string;
|
|
138
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
139
|
+
}[];
|
|
140
|
+
};
|
|
141
|
+
readonly active: boolean;
|
|
142
|
+
readonly primarySignIn: boolean;
|
|
143
|
+
readonly enrollmentUserVerified: boolean;
|
|
144
|
+
readonly backupEligible: boolean;
|
|
145
|
+
readonly backupState: boolean;
|
|
146
|
+
readonly counter: number;
|
|
147
|
+
} | undefined, PersistenceMappingError | import("effect/PlatformError").PlatformError | Schema.SchemaError | SqlError, Crypto.Crypto>;
|
|
148
|
+
joinedSubject: SqlTable;
|
|
149
|
+
joinedFactor: SqlTable;
|
|
150
|
+
joinedCredential: SqlTable;
|
|
151
|
+
selected: (kind: "subject" | "authority" | "credential", alias: string) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
|
|
152
|
+
mapped: typeof sqlMapping;
|
|
153
|
+
mapping: PasskeyNativeMapping;
|
|
154
|
+
ceremony: {
|
|
155
|
+
sql: import("effect/sql/SqlClient").SqlClient;
|
|
156
|
+
flow: SqlTable;
|
|
157
|
+
now: import("effect/sql/Statement").Fragment;
|
|
158
|
+
millis: (expression: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Fragment;
|
|
159
|
+
exact: (key: string, value: unknown) => import("effect/sql/Statement").Fragment;
|
|
160
|
+
module: (moduleId: string) => import("effect/sql/Statement").Fragment;
|
|
161
|
+
validModule: (moduleId: string) => boolean;
|
|
162
|
+
access: (input: M.PasskeyAccess, ceremony?: M.PasskeyCeremony) => import("effect/sql/Statement").Fragment;
|
|
163
|
+
insert: (ceremony: M.PasskeyCeremony, extra?: Readonly<Record<string, unknown>>) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
|
|
164
|
+
consume: (input: M.PasskeyAccess, ceremony: M.PasskeyCeremony, condition?: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
|
|
165
|
+
absent: (input: M.PasskeyAccess) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
|
|
166
|
+
context: (input: {
|
|
167
|
+
readonly moduleId: string;
|
|
168
|
+
readonly purpose: "action" | "enrollment" | "pending" | "registration" | "sign-in" | "step-up";
|
|
169
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
|
|
170
|
+
readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
171
|
+
readonly requestBindingExpiresAtMillis: number;
|
|
172
|
+
}) => Effect.Effect<{
|
|
173
|
+
readonly moduleId: string;
|
|
174
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
|
|
175
|
+
readonly commandId: string;
|
|
176
|
+
readonly purpose: "action" | "enrollment" | "pending" | "registration" | "sign-in" | "step-up";
|
|
177
|
+
readonly profile: {
|
|
178
|
+
readonly profileId: string;
|
|
179
|
+
readonly rpId: string;
|
|
180
|
+
readonly rpName: string;
|
|
181
|
+
readonly origins: readonly [string, ...string[]];
|
|
182
|
+
readonly developmentLocalhost: boolean;
|
|
183
|
+
readonly residentKey: "discouraged" | "preferred" | "required";
|
|
184
|
+
readonly userVerification: "preferred" | "required";
|
|
185
|
+
readonly primarySignIn: boolean;
|
|
186
|
+
readonly attestation: "none";
|
|
187
|
+
readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
|
|
188
|
+
};
|
|
189
|
+
readonly challenge: string;
|
|
190
|
+
readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
191
|
+
readonly requestBindingExpiresAtMillis: number;
|
|
192
|
+
readonly issuedAtMillis: number;
|
|
193
|
+
readonly expiresAtMillis: number;
|
|
194
|
+
readonly allowedCredentials: readonly {
|
|
195
|
+
readonly type: "public-key";
|
|
196
|
+
readonly id: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
|
|
197
|
+
}[];
|
|
198
|
+
readonly context: {
|
|
199
|
+
readonly _tag: "SignIn";
|
|
200
|
+
} | {
|
|
201
|
+
readonly _tag: "Registration";
|
|
202
|
+
readonly fingerprint: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
203
|
+
readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
|
|
204
|
+
readonly name: string;
|
|
205
|
+
readonly displayName: string;
|
|
206
|
+
} | {
|
|
207
|
+
readonly _tag: "Enrollment";
|
|
208
|
+
readonly revision: {
|
|
209
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
210
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
211
|
+
readonly credentials: readonly {
|
|
212
|
+
readonly credentialId: string;
|
|
213
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
214
|
+
}[];
|
|
215
|
+
};
|
|
216
|
+
readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
|
|
217
|
+
readonly name: string;
|
|
218
|
+
readonly authorization: {
|
|
219
|
+
readonly challenge: {
|
|
220
|
+
readonly moduleId: string;
|
|
221
|
+
readonly action: "enroll-begin" | "remove";
|
|
222
|
+
readonly commandId: string;
|
|
223
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
|
|
224
|
+
readonly revision: {
|
|
225
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
226
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
227
|
+
readonly credentials: readonly {
|
|
228
|
+
readonly credentialId: string;
|
|
229
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
230
|
+
}[];
|
|
231
|
+
};
|
|
232
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
233
|
+
};
|
|
234
|
+
readonly evidence: {
|
|
235
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
236
|
+
readonly revision: {
|
|
237
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
238
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
239
|
+
readonly credentials: readonly {
|
|
240
|
+
readonly credentialId: string;
|
|
241
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
242
|
+
}[];
|
|
243
|
+
};
|
|
244
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
245
|
+
readonly proofs: readonly [{
|
|
246
|
+
readonly userVerified: boolean;
|
|
247
|
+
readonly phishingResistant: boolean;
|
|
248
|
+
readonly verifiedAt: import("effect/DateTime").Utc;
|
|
249
|
+
readonly method: string;
|
|
250
|
+
readonly credentialId: string;
|
|
251
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
252
|
+
}, ...{
|
|
253
|
+
readonly userVerified: boolean;
|
|
254
|
+
readonly phishingResistant: boolean;
|
|
255
|
+
readonly verifiedAt: import("effect/DateTime").Utc;
|
|
256
|
+
readonly method: string;
|
|
257
|
+
readonly credentialId: string;
|
|
258
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
259
|
+
}[]];
|
|
260
|
+
};
|
|
261
|
+
readonly requirement: {
|
|
262
|
+
readonly maximumAgeMillis: number;
|
|
263
|
+
readonly alternatives: readonly [{
|
|
264
|
+
readonly userVerified: boolean;
|
|
265
|
+
readonly phishingResistant: boolean;
|
|
266
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
267
|
+
readonly minimumCredentials: number;
|
|
268
|
+
}, ...{
|
|
269
|
+
readonly userVerified: boolean;
|
|
270
|
+
readonly phishingResistant: boolean;
|
|
271
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
272
|
+
readonly minimumCredentials: number;
|
|
273
|
+
}[]];
|
|
274
|
+
};
|
|
275
|
+
};
|
|
276
|
+
} | {
|
|
277
|
+
readonly _tag: "Pending";
|
|
278
|
+
readonly target: {
|
|
279
|
+
readonly moduleId: string;
|
|
280
|
+
readonly kind: string;
|
|
281
|
+
readonly commandId: string;
|
|
282
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
283
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
284
|
+
readonly revision: {
|
|
285
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
286
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
287
|
+
readonly credentials: readonly {
|
|
288
|
+
readonly credentialId: string;
|
|
289
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
290
|
+
}[];
|
|
291
|
+
};
|
|
292
|
+
readonly requirement?: {
|
|
293
|
+
readonly maximumAgeMillis: number;
|
|
294
|
+
readonly alternatives: readonly [{
|
|
295
|
+
readonly userVerified: boolean;
|
|
296
|
+
readonly phishingResistant: boolean;
|
|
297
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
298
|
+
readonly minimumCredentials: number;
|
|
299
|
+
}, ...{
|
|
300
|
+
readonly userVerified: boolean;
|
|
301
|
+
readonly phishingResistant: boolean;
|
|
302
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
303
|
+
readonly minimumCredentials: number;
|
|
304
|
+
}[]];
|
|
305
|
+
};
|
|
306
|
+
readonly expiresAtMillis: number;
|
|
307
|
+
};
|
|
308
|
+
} | {
|
|
309
|
+
readonly _tag: "StepUp";
|
|
310
|
+
readonly target: {
|
|
311
|
+
readonly moduleId: string;
|
|
312
|
+
readonly kind: string;
|
|
313
|
+
readonly commandId: string;
|
|
314
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
315
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
316
|
+
readonly revision: {
|
|
317
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
318
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
319
|
+
readonly credentials: readonly {
|
|
320
|
+
readonly credentialId: string;
|
|
321
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
322
|
+
}[];
|
|
323
|
+
};
|
|
324
|
+
readonly requirement?: {
|
|
325
|
+
readonly maximumAgeMillis: number;
|
|
326
|
+
readonly alternatives: readonly [{
|
|
327
|
+
readonly userVerified: boolean;
|
|
328
|
+
readonly phishingResistant: boolean;
|
|
329
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
330
|
+
readonly minimumCredentials: number;
|
|
331
|
+
}, ...{
|
|
332
|
+
readonly userVerified: boolean;
|
|
333
|
+
readonly phishingResistant: boolean;
|
|
334
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
335
|
+
readonly minimumCredentials: number;
|
|
336
|
+
}[]];
|
|
337
|
+
};
|
|
338
|
+
readonly expiresAtMillis: number;
|
|
339
|
+
};
|
|
340
|
+
} | {
|
|
341
|
+
readonly _tag: "Action";
|
|
342
|
+
readonly target: {
|
|
343
|
+
readonly moduleId: string;
|
|
344
|
+
readonly kind: string;
|
|
345
|
+
readonly commandId: string;
|
|
346
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
347
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
348
|
+
readonly revision: {
|
|
349
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
350
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
351
|
+
readonly credentials: readonly {
|
|
352
|
+
readonly credentialId: string;
|
|
353
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
354
|
+
}[];
|
|
355
|
+
};
|
|
356
|
+
readonly requirement?: {
|
|
357
|
+
readonly maximumAgeMillis: number;
|
|
358
|
+
readonly alternatives: readonly [{
|
|
359
|
+
readonly userVerified: boolean;
|
|
360
|
+
readonly phishingResistant: boolean;
|
|
361
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
362
|
+
readonly minimumCredentials: number;
|
|
363
|
+
}, ...{
|
|
364
|
+
readonly userVerified: boolean;
|
|
365
|
+
readonly phishingResistant: boolean;
|
|
366
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
367
|
+
readonly minimumCredentials: number;
|
|
368
|
+
}[]];
|
|
369
|
+
};
|
|
370
|
+
readonly expiresAtMillis: number;
|
|
371
|
+
};
|
|
372
|
+
};
|
|
373
|
+
} | undefined, Schema.SchemaError | SqlError, never>;
|
|
374
|
+
cleanup: (moduleId: string, limit: number, batch?: boolean) => Effect.Effect<{
|
|
375
|
+
readonly removed: number;
|
|
376
|
+
readonly hasMore: boolean;
|
|
377
|
+
}, Schema.SchemaError | SqlCommitOwnerError | SqlError, CurrentSqlCommit | import("effect/sql/SqlClient").SqlClient>;
|
|
378
|
+
stage: (statement: import("effect/sql/Statement").Fragment, count: number) => Effect.Effect<void, SqlCommitOwnerError, CurrentSqlCommit>;
|
|
379
|
+
change: (statement: import("effect/sql/Statement").Fragment) => Effect.Effect<number, Schema.SchemaError | SqlError, never>;
|
|
380
|
+
};
|
|
381
|
+
flow: SqlTable;
|
|
382
|
+
access: (input: M.PasskeyAccess, ceremony?: M.PasskeyCeremony) => import("effect/sql/Statement").Fragment;
|
|
383
|
+
};
|
|
384
|
+
executor: SqlCommitExecutor<M.PasskeyUnavailable>;
|
|
385
|
+
run: <A, E, R>(effect: Effect.Effect<A, E, R>, mode?: "transaction" | "statement") => Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<Exclude<Exclude<R, Crypto.Crypto>, CurrentSqlCommit>, CurrentCommitJournal>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>> | Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<Exclude<Exclude<Exclude<R, Crypto.Crypto>, CurrentSqlCommit>, CurrentCommitJournal>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>, SqlBatchCommit>>;
|
|
386
|
+
advisory: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<R, Crypto.Crypto>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>>;
|
|
387
|
+
passkeyPersistence: {
|
|
388
|
+
readonly issue: <A>(input: {
|
|
389
|
+
readonly ceremony: M.PasskeyCeremony;
|
|
390
|
+
}, prepare: M.PreparePasskeyCommit<M.PasskeyIssueDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
|
|
391
|
+
readonly context: (input: M.PasskeyAccess) => Effect.Effect<M.PasskeyCeremony | undefined, M.PasskeyUnavailable>;
|
|
392
|
+
readonly consume: <A>(input: {
|
|
393
|
+
readonly access: M.PasskeyAccess;
|
|
394
|
+
readonly ceremony: M.PasskeyCeremony;
|
|
395
|
+
readonly credential: M.PasskeyCredential;
|
|
396
|
+
readonly assertion: M.PasskeyAssertionVerified;
|
|
397
|
+
}, prepare: M.PreparePasskeyCommit<M.PasskeyConsumeDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
|
|
398
|
+
readonly cleanup: <A>(input: {
|
|
399
|
+
readonly moduleId: string;
|
|
400
|
+
readonly limit: import("@yielded/auth/Persistence").CleanupLimit;
|
|
401
|
+
}, prepare: M.PreparePasskeyCommit<import("@yielded/auth/Persistence").CleanupResult, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
|
|
402
|
+
};
|
|
403
|
+
passkeyCredentials: {
|
|
404
|
+
readonly listForSubject: (input: {
|
|
405
|
+
readonly moduleId: string;
|
|
406
|
+
readonly rpId: string;
|
|
407
|
+
readonly subjectId: import("@yielded/auth/Schema").SubjectId;
|
|
408
|
+
}) => Effect.Effect<M.PasskeyEnrollmentSnapshot | undefined, M.PasskeyUnavailable>;
|
|
409
|
+
readonly lookup: (input: {
|
|
410
|
+
readonly rpId: string;
|
|
411
|
+
readonly protocolCredentialId: M.PasskeyProtocolCredentialId;
|
|
412
|
+
}) => Effect.Effect<M.PasskeyCredential | undefined, M.PasskeyUnavailable>;
|
|
413
|
+
};
|
|
414
|
+
}, never, Crypto.Crypto | import("@yielded/auth/Hooks").LifecycleHooks | import("effect/sql/SqlClient").SqlClient>;
|
|
415
|
+
export declare const makeBatchPasskeyServices: (tables: NativeSqlTables, mapping: PasskeyNativeMapping) => Effect.Effect<{
|
|
416
|
+
batch: boolean;
|
|
417
|
+
state: {
|
|
418
|
+
sql: import("effect/sql/SqlClient").SqlClient;
|
|
419
|
+
tables: NativeSqlTables;
|
|
420
|
+
subject: SqlTable;
|
|
421
|
+
credential: SqlTable;
|
|
422
|
+
factor: SqlTable;
|
|
423
|
+
now: import("effect/sql/Statement").Fragment;
|
|
424
|
+
storedNow: import("effect/sql/Statement").Fragment;
|
|
425
|
+
millis: (expression: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Fragment;
|
|
426
|
+
active: (table: "subject" | "credential" | "authority") => import("effect/sql/Statement").Fragment;
|
|
427
|
+
native: (id: M.PasskeyCredential["revision"]["subjectId"]) => unknown;
|
|
428
|
+
sameId: (nativeId: unknown, value: unknown) => boolean;
|
|
429
|
+
revision: (row: PasskeyNativeRow, factors: ReadonlyArray<PasskeyNativeRow>) => {
|
|
430
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
431
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
432
|
+
readonly credentials: readonly {
|
|
433
|
+
readonly credentialId: string;
|
|
434
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
435
|
+
}[];
|
|
436
|
+
};
|
|
437
|
+
decodeCredential: (row: Readonly<Record<string, unknown>>, current: {
|
|
438
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
439
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
440
|
+
readonly credentials: readonly {
|
|
441
|
+
readonly credentialId: string;
|
|
442
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
443
|
+
}[];
|
|
444
|
+
}, subjectRow: Readonly<Record<string, unknown>>) => Effect.Effect<{
|
|
445
|
+
readonly requirement: {
|
|
446
|
+
readonly alternatives: readonly [{
|
|
447
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
448
|
+
readonly userVerified: boolean;
|
|
449
|
+
readonly phishingResistant: boolean;
|
|
450
|
+
readonly minimumCredentials: number;
|
|
451
|
+
}, ...{
|
|
452
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
453
|
+
readonly userVerified: boolean;
|
|
454
|
+
readonly phishingResistant: boolean;
|
|
455
|
+
readonly minimumCredentials: number;
|
|
456
|
+
}[]];
|
|
457
|
+
readonly maximumAgeMillis: number;
|
|
458
|
+
};
|
|
459
|
+
readonly credentialId: string;
|
|
460
|
+
readonly rpId: string;
|
|
461
|
+
readonly protocolCredentialId: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
|
|
462
|
+
readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
|
|
463
|
+
readonly publicKey: string;
|
|
464
|
+
readonly algorithm: -257 | -7;
|
|
465
|
+
readonly profile: {
|
|
466
|
+
readonly profileId: string;
|
|
467
|
+
readonly rpId: string;
|
|
468
|
+
readonly rpName: string;
|
|
469
|
+
readonly origins: readonly [string, ...string[]];
|
|
470
|
+
readonly developmentLocalhost: boolean;
|
|
471
|
+
readonly residentKey: "discouraged" | "preferred" | "required";
|
|
472
|
+
readonly userVerification: "preferred" | "required";
|
|
473
|
+
readonly primarySignIn: boolean;
|
|
474
|
+
readonly attestation: "none";
|
|
475
|
+
readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
|
|
476
|
+
};
|
|
477
|
+
readonly revision: {
|
|
478
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
479
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
480
|
+
readonly credentials: readonly {
|
|
481
|
+
readonly credentialId: string;
|
|
482
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
483
|
+
}[];
|
|
484
|
+
};
|
|
485
|
+
readonly active: boolean;
|
|
486
|
+
readonly primarySignIn: boolean;
|
|
487
|
+
readonly enrollmentUserVerified: boolean;
|
|
488
|
+
readonly backupEligible: boolean;
|
|
489
|
+
readonly backupState: boolean;
|
|
490
|
+
readonly counter: number;
|
|
491
|
+
} | undefined, PersistenceMappingError, never>;
|
|
492
|
+
readAuthority: (nativeId: unknown, lock: boolean, credentialId?: string | undefined) => Effect.Effect<{
|
|
493
|
+
row: Record<string, unknown>;
|
|
494
|
+
credential: Record<string, unknown> | undefined;
|
|
495
|
+
revision: {
|
|
496
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
497
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
498
|
+
readonly credentials: readonly {
|
|
499
|
+
readonly credentialId: string;
|
|
500
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
501
|
+
}[];
|
|
502
|
+
};
|
|
503
|
+
nowMillis: number;
|
|
504
|
+
} | undefined, Schema.SchemaError | SqlError, never>;
|
|
505
|
+
lookup: (rpId: string, protocolCredentialId: string) => Effect.Effect<{
|
|
506
|
+
readonly requirement: {
|
|
507
|
+
readonly alternatives: readonly [{
|
|
508
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
509
|
+
readonly userVerified: boolean;
|
|
510
|
+
readonly phishingResistant: boolean;
|
|
511
|
+
readonly minimumCredentials: number;
|
|
512
|
+
}, ...{
|
|
513
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
514
|
+
readonly userVerified: boolean;
|
|
515
|
+
readonly phishingResistant: boolean;
|
|
516
|
+
readonly minimumCredentials: number;
|
|
517
|
+
}[]];
|
|
518
|
+
readonly maximumAgeMillis: number;
|
|
519
|
+
};
|
|
520
|
+
readonly credentialId: string;
|
|
521
|
+
readonly rpId: string;
|
|
522
|
+
readonly protocolCredentialId: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
|
|
523
|
+
readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
|
|
524
|
+
readonly publicKey: string;
|
|
525
|
+
readonly algorithm: -257 | -7;
|
|
526
|
+
readonly profile: {
|
|
527
|
+
readonly profileId: string;
|
|
528
|
+
readonly rpId: string;
|
|
529
|
+
readonly rpName: string;
|
|
530
|
+
readonly origins: readonly [string, ...string[]];
|
|
531
|
+
readonly developmentLocalhost: boolean;
|
|
532
|
+
readonly residentKey: "discouraged" | "preferred" | "required";
|
|
533
|
+
readonly userVerification: "preferred" | "required";
|
|
534
|
+
readonly primarySignIn: boolean;
|
|
535
|
+
readonly attestation: "none";
|
|
536
|
+
readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
|
|
537
|
+
};
|
|
538
|
+
readonly revision: {
|
|
539
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
540
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
541
|
+
readonly credentials: readonly {
|
|
542
|
+
readonly credentialId: string;
|
|
543
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
544
|
+
}[];
|
|
545
|
+
};
|
|
546
|
+
readonly active: boolean;
|
|
547
|
+
readonly primarySignIn: boolean;
|
|
548
|
+
readonly enrollmentUserVerified: boolean;
|
|
549
|
+
readonly backupEligible: boolean;
|
|
550
|
+
readonly backupState: boolean;
|
|
551
|
+
readonly counter: number;
|
|
552
|
+
} | undefined, PersistenceMappingError | import("effect/PlatformError").PlatformError | Schema.SchemaError | SqlError, Crypto.Crypto>;
|
|
553
|
+
joinedSubject: SqlTable;
|
|
554
|
+
joinedFactor: SqlTable;
|
|
555
|
+
joinedCredential: SqlTable;
|
|
556
|
+
selected: (kind: "subject" | "authority" | "credential", alias: string) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
|
|
557
|
+
mapped: typeof sqlMapping;
|
|
558
|
+
mapping: PasskeyNativeMapping;
|
|
559
|
+
ceremony: {
|
|
560
|
+
sql: import("effect/sql/SqlClient").SqlClient;
|
|
561
|
+
flow: SqlTable;
|
|
562
|
+
now: import("effect/sql/Statement").Fragment;
|
|
563
|
+
millis: (expression: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Fragment;
|
|
564
|
+
exact: (key: string, value: unknown) => import("effect/sql/Statement").Fragment;
|
|
565
|
+
module: (moduleId: string) => import("effect/sql/Statement").Fragment;
|
|
566
|
+
validModule: (moduleId: string) => boolean;
|
|
567
|
+
access: (input: M.PasskeyAccess, ceremony?: M.PasskeyCeremony) => import("effect/sql/Statement").Fragment;
|
|
568
|
+
insert: (ceremony: M.PasskeyCeremony, extra?: Readonly<Record<string, unknown>>) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
|
|
569
|
+
consume: (input: M.PasskeyAccess, ceremony: M.PasskeyCeremony, condition?: import("effect/sql/Statement").Fragment) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
|
|
570
|
+
absent: (input: M.PasskeyAccess) => import("effect/sql/Statement").Statement<import("effect/sql/SqlConnection").Row>;
|
|
571
|
+
context: (input: {
|
|
572
|
+
readonly moduleId: string;
|
|
573
|
+
readonly purpose: "action" | "enrollment" | "pending" | "registration" | "sign-in" | "step-up";
|
|
574
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
|
|
575
|
+
readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
576
|
+
readonly requestBindingExpiresAtMillis: number;
|
|
577
|
+
}) => Effect.Effect<{
|
|
578
|
+
readonly moduleId: string;
|
|
579
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
|
|
580
|
+
readonly commandId: string;
|
|
581
|
+
readonly purpose: "action" | "enrollment" | "pending" | "registration" | "sign-in" | "step-up";
|
|
582
|
+
readonly profile: {
|
|
583
|
+
readonly profileId: string;
|
|
584
|
+
readonly rpId: string;
|
|
585
|
+
readonly rpName: string;
|
|
586
|
+
readonly origins: readonly [string, ...string[]];
|
|
587
|
+
readonly developmentLocalhost: boolean;
|
|
588
|
+
readonly residentKey: "discouraged" | "preferred" | "required";
|
|
589
|
+
readonly userVerification: "preferred" | "required";
|
|
590
|
+
readonly primarySignIn: boolean;
|
|
591
|
+
readonly attestation: "none";
|
|
592
|
+
readonly algorithms: readonly [-257 | -7, ...(-257 | -7)[]];
|
|
593
|
+
};
|
|
594
|
+
readonly challenge: string;
|
|
595
|
+
readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
596
|
+
readonly requestBindingExpiresAtMillis: number;
|
|
597
|
+
readonly issuedAtMillis: number;
|
|
598
|
+
readonly expiresAtMillis: number;
|
|
599
|
+
readonly allowedCredentials: readonly {
|
|
600
|
+
readonly type: "public-key";
|
|
601
|
+
readonly id: string & import("effect/Brand").Brand<"effect-auth/PasskeyProtocolCredentialId">;
|
|
602
|
+
}[];
|
|
603
|
+
readonly context: {
|
|
604
|
+
readonly _tag: "SignIn";
|
|
605
|
+
} | {
|
|
606
|
+
readonly _tag: "Registration";
|
|
607
|
+
readonly fingerprint: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
608
|
+
readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
|
|
609
|
+
readonly name: string;
|
|
610
|
+
readonly displayName: string;
|
|
611
|
+
} | {
|
|
612
|
+
readonly _tag: "Enrollment";
|
|
613
|
+
readonly revision: {
|
|
614
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
615
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
616
|
+
readonly credentials: readonly {
|
|
617
|
+
readonly credentialId: string;
|
|
618
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
619
|
+
}[];
|
|
620
|
+
};
|
|
621
|
+
readonly userHandle: string & import("effect/Brand").Brand<"effect-auth/PasskeyUserHandle">;
|
|
622
|
+
readonly name: string;
|
|
623
|
+
readonly authorization: {
|
|
624
|
+
readonly challenge: {
|
|
625
|
+
readonly moduleId: string;
|
|
626
|
+
readonly action: "enroll-begin" | "remove";
|
|
627
|
+
readonly commandId: string;
|
|
628
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/RequestBindingFlowId">;
|
|
629
|
+
readonly revision: {
|
|
630
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
631
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
632
|
+
readonly credentials: readonly {
|
|
633
|
+
readonly credentialId: string;
|
|
634
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
635
|
+
}[];
|
|
636
|
+
};
|
|
637
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
638
|
+
};
|
|
639
|
+
readonly evidence: {
|
|
640
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
641
|
+
readonly revision: {
|
|
642
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
643
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
644
|
+
readonly credentials: readonly {
|
|
645
|
+
readonly credentialId: string;
|
|
646
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
647
|
+
}[];
|
|
648
|
+
};
|
|
649
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
650
|
+
readonly proofs: readonly [{
|
|
651
|
+
readonly userVerified: boolean;
|
|
652
|
+
readonly phishingResistant: boolean;
|
|
653
|
+
readonly verifiedAt: import("effect/DateTime").Utc;
|
|
654
|
+
readonly method: string;
|
|
655
|
+
readonly credentialId: string;
|
|
656
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
657
|
+
}, ...{
|
|
658
|
+
readonly userVerified: boolean;
|
|
659
|
+
readonly phishingResistant: boolean;
|
|
660
|
+
readonly verifiedAt: import("effect/DateTime").Utc;
|
|
661
|
+
readonly method: string;
|
|
662
|
+
readonly credentialId: string;
|
|
663
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
664
|
+
}[]];
|
|
665
|
+
};
|
|
666
|
+
readonly requirement: {
|
|
667
|
+
readonly maximumAgeMillis: number;
|
|
668
|
+
readonly alternatives: readonly [{
|
|
669
|
+
readonly userVerified: boolean;
|
|
670
|
+
readonly phishingResistant: boolean;
|
|
671
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
672
|
+
readonly minimumCredentials: number;
|
|
673
|
+
}, ...{
|
|
674
|
+
readonly userVerified: boolean;
|
|
675
|
+
readonly phishingResistant: boolean;
|
|
676
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
677
|
+
readonly minimumCredentials: number;
|
|
678
|
+
}[]];
|
|
679
|
+
};
|
|
680
|
+
};
|
|
681
|
+
} | {
|
|
682
|
+
readonly _tag: "Pending";
|
|
683
|
+
readonly target: {
|
|
684
|
+
readonly moduleId: string;
|
|
685
|
+
readonly kind: string;
|
|
686
|
+
readonly commandId: string;
|
|
687
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
688
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
689
|
+
readonly revision: {
|
|
690
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
691
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
692
|
+
readonly credentials: readonly {
|
|
693
|
+
readonly credentialId: string;
|
|
694
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
695
|
+
}[];
|
|
696
|
+
};
|
|
697
|
+
readonly requirement?: {
|
|
698
|
+
readonly maximumAgeMillis: number;
|
|
699
|
+
readonly alternatives: readonly [{
|
|
700
|
+
readonly userVerified: boolean;
|
|
701
|
+
readonly phishingResistant: boolean;
|
|
702
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
703
|
+
readonly minimumCredentials: number;
|
|
704
|
+
}, ...{
|
|
705
|
+
readonly userVerified: boolean;
|
|
706
|
+
readonly phishingResistant: boolean;
|
|
707
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
708
|
+
readonly minimumCredentials: number;
|
|
709
|
+
}[]];
|
|
710
|
+
};
|
|
711
|
+
readonly expiresAtMillis: number;
|
|
712
|
+
};
|
|
713
|
+
} | {
|
|
714
|
+
readonly _tag: "StepUp";
|
|
715
|
+
readonly target: {
|
|
716
|
+
readonly moduleId: string;
|
|
717
|
+
readonly kind: string;
|
|
718
|
+
readonly commandId: string;
|
|
719
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
720
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
721
|
+
readonly revision: {
|
|
722
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
723
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
724
|
+
readonly credentials: readonly {
|
|
725
|
+
readonly credentialId: string;
|
|
726
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
727
|
+
}[];
|
|
728
|
+
};
|
|
729
|
+
readonly requirement?: {
|
|
730
|
+
readonly maximumAgeMillis: number;
|
|
731
|
+
readonly alternatives: readonly [{
|
|
732
|
+
readonly userVerified: boolean;
|
|
733
|
+
readonly phishingResistant: boolean;
|
|
734
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
735
|
+
readonly minimumCredentials: number;
|
|
736
|
+
}, ...{
|
|
737
|
+
readonly userVerified: boolean;
|
|
738
|
+
readonly phishingResistant: boolean;
|
|
739
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
740
|
+
readonly minimumCredentials: number;
|
|
741
|
+
}[]];
|
|
742
|
+
};
|
|
743
|
+
readonly expiresAtMillis: number;
|
|
744
|
+
};
|
|
745
|
+
} | {
|
|
746
|
+
readonly _tag: "Action";
|
|
747
|
+
readonly target: {
|
|
748
|
+
readonly moduleId: string;
|
|
749
|
+
readonly kind: string;
|
|
750
|
+
readonly commandId: string;
|
|
751
|
+
readonly flowId: string & import("effect/Brand").Brand<"effect-auth/AuthenticationFlowId">;
|
|
752
|
+
readonly bindingDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
|
|
753
|
+
readonly revision: {
|
|
754
|
+
readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
|
|
755
|
+
readonly securityRevision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
756
|
+
readonly credentials: readonly {
|
|
757
|
+
readonly credentialId: string;
|
|
758
|
+
readonly revision: string & import("effect/Brand").Brand<"effect-auth/SecurityRevision">;
|
|
759
|
+
}[];
|
|
760
|
+
};
|
|
761
|
+
readonly requirement?: {
|
|
762
|
+
readonly maximumAgeMillis: number;
|
|
763
|
+
readonly alternatives: readonly [{
|
|
764
|
+
readonly userVerified: boolean;
|
|
765
|
+
readonly phishingResistant: boolean;
|
|
766
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
767
|
+
readonly minimumCredentials: number;
|
|
768
|
+
}, ...{
|
|
769
|
+
readonly userVerified: boolean;
|
|
770
|
+
readonly phishingResistant: boolean;
|
|
771
|
+
readonly factors: readonly ("inherence" | "knowledge" | "possession")[];
|
|
772
|
+
readonly minimumCredentials: number;
|
|
773
|
+
}[]];
|
|
774
|
+
};
|
|
775
|
+
readonly expiresAtMillis: number;
|
|
776
|
+
};
|
|
777
|
+
};
|
|
778
|
+
} | undefined, Schema.SchemaError | SqlError, never>;
|
|
779
|
+
cleanup: (moduleId: string, limit: number, batch?: boolean) => Effect.Effect<{
|
|
780
|
+
readonly removed: number;
|
|
781
|
+
readonly hasMore: boolean;
|
|
782
|
+
}, Schema.SchemaError | SqlCommitOwnerError | SqlError, CurrentSqlCommit | import("effect/sql/SqlClient").SqlClient>;
|
|
783
|
+
stage: (statement: import("effect/sql/Statement").Fragment, count: number) => Effect.Effect<void, SqlCommitOwnerError, CurrentSqlCommit>;
|
|
784
|
+
change: (statement: import("effect/sql/Statement").Fragment) => Effect.Effect<number, Schema.SchemaError | SqlError, never>;
|
|
785
|
+
};
|
|
786
|
+
flow: SqlTable;
|
|
787
|
+
access: (input: M.PasskeyAccess, ceremony?: M.PasskeyCeremony) => import("effect/sql/Statement").Fragment;
|
|
788
|
+
};
|
|
789
|
+
executor: SqlCommitExecutor<M.PasskeyUnavailable>;
|
|
790
|
+
run: <A, E, R>(effect: Effect.Effect<A, E, R>, mode?: "transaction" | "statement") => Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<Exclude<Exclude<R, Crypto.Crypto>, CurrentSqlCommit>, CurrentCommitJournal>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>> | Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<Exclude<Exclude<Exclude<R, Crypto.Crypto>, CurrentSqlCommit>, CurrentCommitJournal>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>, SqlBatchCommit>>;
|
|
791
|
+
advisory: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, M.PasskeyUnavailable, Exclude<Exclude<Exclude<R, Crypto.Crypto>, import("effect/sql/SqlClient").SqlClient>, import("@yielded/auth/Hooks").LifecycleHooks>>;
|
|
792
|
+
passkeyPersistence: {
|
|
793
|
+
readonly issue: <A>(input: {
|
|
794
|
+
readonly ceremony: M.PasskeyCeremony;
|
|
795
|
+
}, prepare: M.PreparePasskeyCommit<M.PasskeyIssueDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
|
|
796
|
+
readonly context: (input: M.PasskeyAccess) => Effect.Effect<M.PasskeyCeremony | undefined, M.PasskeyUnavailable>;
|
|
797
|
+
readonly consume: <A>(input: {
|
|
798
|
+
readonly access: M.PasskeyAccess;
|
|
799
|
+
readonly ceremony: M.PasskeyCeremony;
|
|
800
|
+
readonly credential: M.PasskeyCredential;
|
|
801
|
+
readonly assertion: M.PasskeyAssertionVerified;
|
|
802
|
+
}, prepare: M.PreparePasskeyCommit<M.PasskeyConsumeDecision, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
|
|
803
|
+
readonly cleanup: <A>(input: {
|
|
804
|
+
readonly moduleId: string;
|
|
805
|
+
readonly limit: import("@yielded/auth/Persistence").CleanupLimit;
|
|
806
|
+
}, prepare: M.PreparePasskeyCommit<import("@yielded/auth/Persistence").CleanupResult, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.PasskeyUnavailable>;
|
|
807
|
+
};
|
|
808
|
+
passkeyCredentials: {
|
|
809
|
+
readonly listForSubject: (input: {
|
|
810
|
+
readonly moduleId: string;
|
|
811
|
+
readonly rpId: string;
|
|
812
|
+
readonly subjectId: import("@yielded/auth/Schema").SubjectId;
|
|
813
|
+
}) => Effect.Effect<M.PasskeyEnrollmentSnapshot | undefined, M.PasskeyUnavailable>;
|
|
814
|
+
readonly lookup: (input: {
|
|
815
|
+
readonly rpId: string;
|
|
816
|
+
readonly protocolCredentialId: M.PasskeyProtocolCredentialId;
|
|
817
|
+
}) => Effect.Effect<M.PasskeyCredential | undefined, M.PasskeyUnavailable>;
|
|
818
|
+
};
|
|
819
|
+
}, never, Crypto.Crypto | import("@yielded/auth/Hooks").LifecycleHooks | SqlBatchCommit | import("effect/sql/SqlClient").SqlClient>;
|
|
820
|
+
export type NativePasskeyServices = Effect.Success<ReturnType<typeof makeNativePasskeyServices>>;
|
|
821
|
+
export declare const makeNativePasskeyCredentialServices: (tables: NativeSqlTables, mapping: PasskeyNativeRead) => Effect.Effect<{
|
|
822
|
+
passkeyCredentials: {
|
|
823
|
+
readonly listForSubject: (input: {
|
|
824
|
+
readonly moduleId: string;
|
|
825
|
+
readonly rpId: string;
|
|
826
|
+
readonly subjectId: import("@yielded/auth/Schema").SubjectId;
|
|
827
|
+
}) => Effect.Effect<M.PasskeyEnrollmentSnapshot | undefined, M.PasskeyUnavailable>;
|
|
828
|
+
readonly lookup: (input: {
|
|
829
|
+
readonly rpId: string;
|
|
830
|
+
readonly protocolCredentialId: M.PasskeyProtocolCredentialId;
|
|
831
|
+
}) => Effect.Effect<M.PasskeyCredential | undefined, M.PasskeyUnavailable>;
|
|
832
|
+
};
|
|
833
|
+
}, never, Crypto.Crypto | import("@yielded/auth/Hooks").LifecycleHooks | import("effect/sql/SqlClient").SqlClient>;
|
|
834
|
+
//#endregion
|
|
835
|
+
//# sourceMappingURL=passkey-native.d.mts.map
|