@yielded/auth-persistence 0.1.0-beta.25 → 0.1.0-beta.27
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 +14 -81
- 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 +26 -147
- 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 -354
- 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 -1556
- package/src/internal/oauth/accounts.ts +0 -839
- 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 -692
- 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 -1523
- 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
|
@@ -3,7 +3,6 @@ import type {
|
|
|
3
3
|
OAuthActionAuthorization,
|
|
4
4
|
OAuthAccountRevision,
|
|
5
5
|
OAuthRegistrationIntent,
|
|
6
|
-
OAuthCredentialSnapshot,
|
|
7
6
|
OAuthExternalIdentity,
|
|
8
7
|
OAuthRegistrationAccess,
|
|
9
8
|
OAuthRegistrationInspection,
|
|
@@ -13,33 +12,18 @@ import type {
|
|
|
13
12
|
OAuthRegistrationDecision,
|
|
14
13
|
OAuthCleanupInput,
|
|
15
14
|
} from "@yielded/auth/OAuth";
|
|
16
|
-
import
|
|
15
|
+
import { AuthenticationFactor } from "@yielded/auth/Operations";
|
|
16
|
+
import type { CleanupResult } from "@yielded/auth/Persistence";
|
|
17
17
|
import type { TokenDigest } from "@yielded/auth/Schema";
|
|
18
|
-
import type
|
|
19
|
-
import
|
|
18
|
+
import { type AuthenticationRequirement, SecurityRevision } from "@yielded/auth/Sessions";
|
|
19
|
+
import { type Effect, Schema } from "effect";
|
|
20
20
|
|
|
21
|
-
import type { TableModel as Table, SqlExpression } from "../
|
|
21
|
+
import type { TableModel as Table, SqlExpression } from "../table-model";
|
|
22
22
|
import type { PersistenceMappingError, SubjectIdCodec } from "./common";
|
|
23
23
|
|
|
24
24
|
type Column<T extends Table> = T["column"];
|
|
25
|
-
|
|
26
|
-
export type OAuthFlowState =
|
|
27
|
-
| "Pending"
|
|
28
|
-
| "Claimed"
|
|
29
|
-
| "Verified"
|
|
30
|
-
| "RegistrationIssued"
|
|
31
|
-
| "Linked"
|
|
32
|
-
| "Cancelled"
|
|
33
|
-
| "Rejected"
|
|
34
|
-
| "Ambiguous"
|
|
35
|
-
| "Conflict";
|
|
36
|
-
|
|
37
|
-
export type OAuthTupleState = "Unowned" | "Reserved" | "Owned";
|
|
38
|
-
export type OAuthRegistrationState = "Unbound" | "Registered" | "ProvisioningPending" | "Rejected";
|
|
39
25
|
export type OAuthAction = OAuthActionAuthorization["challenge"]["action"];
|
|
40
26
|
|
|
41
|
-
/** The engine writes every critical column explicitly after applying the pure
|
|
42
|
-
* consumer encoder. Native instant values must roundtrip without precision loss. */
|
|
43
27
|
export interface OAuthClock<Expression extends SqlExpression = SqlExpression> {
|
|
44
28
|
readonly encodeInstant: (millis: number) => unknown;
|
|
45
29
|
readonly decodeInstant: (value: unknown) => number;
|
|
@@ -47,6 +31,9 @@ export interface OAuthClock<Expression extends SqlExpression = SqlExpression> {
|
|
|
47
31
|
* PostgreSQL uses clock_timestamp(), never now()/CURRENT_TIMESTAMP. D1 repeats
|
|
48
32
|
* its primary-engine sample bounds in final guards. Return integer milliseconds. */
|
|
49
33
|
readonly engineNowMillis: Expression;
|
|
34
|
+
/** Convert a stored timestamp expression to integer milliseconds. */
|
|
35
|
+
readonly toMillis: (expression: Expression) => Expression;
|
|
36
|
+
readonly fromMillis: (expression: Expression) => Expression;
|
|
50
37
|
}
|
|
51
38
|
|
|
52
39
|
export interface OAuthSubjectReadTable<
|
|
@@ -59,41 +46,27 @@ export interface OAuthSubjectReadTable<
|
|
|
59
46
|
readonly securityRevision: Column<S>;
|
|
60
47
|
readonly isActiveStatus: (value: unknown) => boolean;
|
|
61
48
|
readonly activeCondition: Expression;
|
|
49
|
+
readonly decodeAuthenticationRequirement: (row: S["select"]) => AuthenticationRequirement;
|
|
62
50
|
}
|
|
63
51
|
|
|
64
52
|
export interface OAuthSubjectTable<
|
|
65
53
|
S extends Table,
|
|
66
54
|
Expression extends SqlExpression = SqlExpression,
|
|
67
55
|
> extends OAuthSubjectReadTable<S, Expression> {
|
|
68
|
-
readonly decodeActionRequirement: (
|
|
69
|
-
row: S["select"],
|
|
70
|
-
action: OAuthAction,
|
|
71
|
-
) => AuthenticationRequirement;
|
|
72
|
-
readonly decodeAuthenticationRequirement: (row: S["select"]) => AuthenticationRequirement;
|
|
73
56
|
readonly nextSecurityRevision: (current: SecurityRevision) => SecurityRevision;
|
|
74
57
|
}
|
|
75
58
|
|
|
76
|
-
export interface OAuthOwnershipReadTable<
|
|
77
|
-
O extends Table,
|
|
78
|
-
N,
|
|
79
|
-
Expression extends SqlExpression = SqlExpression,
|
|
80
|
-
> {
|
|
59
|
+
export interface OAuthOwnershipReadTable<O extends Table, N> {
|
|
81
60
|
readonly table: O["table"];
|
|
82
61
|
readonly identityKey: Column<O>;
|
|
83
62
|
readonly provider: Column<O>;
|
|
84
63
|
readonly issuer: Column<O>;
|
|
85
64
|
readonly externalSubject: Column<O>;
|
|
86
65
|
readonly subjectId: Column<O>;
|
|
87
|
-
/** Includes Owned state when authority and ownership share a physical table. */
|
|
88
|
-
readonly ownedCondition: Expression;
|
|
89
66
|
readonly decodeSubjectId: (row: O["select"]) => N;
|
|
90
67
|
}
|
|
91
68
|
|
|
92
|
-
export interface OAuthOwnershipTable<
|
|
93
|
-
O extends Table,
|
|
94
|
-
N,
|
|
95
|
-
Expression extends SqlExpression = SqlExpression,
|
|
96
|
-
> extends OAuthOwnershipReadTable<O, N, Expression> {
|
|
69
|
+
export interface OAuthOwnershipTable<O extends Table, N> extends OAuthOwnershipReadTable<O, N> {
|
|
97
70
|
readonly encodeInsert: (input: {
|
|
98
71
|
readonly identity: typeof OAuthExternalIdentity.Type;
|
|
99
72
|
readonly identityKey: string;
|
|
@@ -157,117 +130,42 @@ export interface OAuthAuthorityTable<
|
|
|
157
130
|
}) => C["insert"];
|
|
158
131
|
}
|
|
159
132
|
|
|
160
|
-
/**
|
|
161
|
-
*
|
|
162
|
-
* codec; terminal writes erase it, while identity, claim and retention columns remain. */
|
|
133
|
+
/** Live ceremonies only. Predicate columns enforce access before deletion; the
|
|
134
|
+
* snapshot retains the exact authenticated context and encrypted protocol data. */
|
|
163
135
|
export interface OAuthFlowTable<F extends Table> {
|
|
164
136
|
readonly table: F["table"];
|
|
165
137
|
readonly moduleId: Column<F>;
|
|
166
138
|
readonly flowId: Column<F>;
|
|
167
|
-
readonly commandId: Column<F>;
|
|
168
139
|
readonly purpose: Column<F>;
|
|
169
140
|
readonly generation: Column<F>;
|
|
170
|
-
readonly
|
|
171
|
-
readonly
|
|
141
|
+
readonly provider: Column<F>;
|
|
142
|
+
readonly callbackId: Column<F>;
|
|
143
|
+
readonly issuer: Column<F>;
|
|
144
|
+
readonly responseIssuerMode: Column<F>;
|
|
145
|
+
readonly subjectId: Column<F>;
|
|
172
146
|
readonly stateDigest: Column<F>;
|
|
173
147
|
readonly binderVerifier: Column<F>;
|
|
174
148
|
readonly binderExpiresAt: Column<F>;
|
|
175
149
|
readonly snapshot: Column<F>;
|
|
176
150
|
readonly issuedAt: Column<F>;
|
|
177
151
|
readonly expiresAt: Column<F>;
|
|
178
|
-
readonly claimId: Column<F>;
|
|
179
|
-
readonly claimedAt: Column<F>;
|
|
180
|
-
readonly claimExpiresAt: Column<F>;
|
|
181
|
-
readonly retentionUntil: Column<F>;
|
|
182
152
|
readonly encodeInsert: (input: {
|
|
183
153
|
readonly moduleId: string;
|
|
184
154
|
readonly flowId: string;
|
|
185
|
-
readonly purpose: "sign-in" | "link";
|
|
155
|
+
readonly purpose: "sign-in" | "link" | "connect";
|
|
186
156
|
}) => F["insert"];
|
|
187
157
|
}
|
|
188
158
|
|
|
189
|
-
export
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
readonly subjectId: Column<T>;
|
|
198
|
-
/** Exact reservation identity; no application payload or bearer. */
|
|
199
|
-
readonly reservation: Column<T>;
|
|
200
|
-
readonly encodeInsert: (input: {
|
|
201
|
-
readonly identityKey: string;
|
|
202
|
-
readonly identity: typeof OAuthExternalIdentity.Type;
|
|
203
|
-
readonly subjectId?: N;
|
|
204
|
-
}) => T["insert"];
|
|
205
|
-
}
|
|
159
|
+
export const OAuthEligibilityFact = Schema.Struct({
|
|
160
|
+
credentialId: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
|
|
161
|
+
revision: SecurityRevision,
|
|
162
|
+
usablePrimary: Schema.Boolean,
|
|
163
|
+
factors: Schema.Array(AuthenticationFactor).check(Schema.isMaxLength(8)),
|
|
164
|
+
userVerified: Schema.Boolean,
|
|
165
|
+
phishingResistant: Schema.Boolean,
|
|
166
|
+
});
|
|
206
167
|
|
|
207
|
-
export
|
|
208
|
-
readonly table: I["table"];
|
|
209
|
-
readonly moduleId: Column<I>;
|
|
210
|
-
readonly reference: Column<I>;
|
|
211
|
-
readonly flowId: Column<I>;
|
|
212
|
-
readonly claimId: Column<I>;
|
|
213
|
-
readonly identityKey: Column<I>;
|
|
214
|
-
readonly version: Column<I>;
|
|
215
|
-
readonly state: Column<I>;
|
|
216
|
-
readonly snapshot: Column<I>;
|
|
217
|
-
readonly commandId: Column<I>;
|
|
218
|
-
readonly fingerprint: Column<I>;
|
|
219
|
-
readonly pendingReference: Column<I>;
|
|
220
|
-
readonly expiresAt: Column<I>;
|
|
221
|
-
readonly retentionUntil: Column<I>;
|
|
222
|
-
readonly encodeInsert: (intent: OAuthRegistrationIntent) => I["insert"];
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
export interface OAuthRegistrationCommandTable<R extends Table, Registration> {
|
|
226
|
-
readonly table: R["table"];
|
|
227
|
-
readonly moduleId: Column<R>;
|
|
228
|
-
readonly commandId: Column<R>;
|
|
229
|
-
readonly reference: Column<R>;
|
|
230
|
-
readonly identityKey: Column<R>;
|
|
231
|
-
readonly fingerprint: Column<R>;
|
|
232
|
-
readonly intentSnapshot: Column<R>;
|
|
233
|
-
readonly applicationSnapshot: Column<R>;
|
|
234
|
-
readonly provisioningIdentity: Column<R>;
|
|
235
|
-
readonly decision: Column<R>;
|
|
236
|
-
readonly retentionUntil: Column<R>;
|
|
237
|
-
/** Persists exact detached Type before protected pending work can start. */
|
|
238
|
-
readonly encodeInsert: (input: {
|
|
239
|
-
readonly intent: OAuthRegistrationIntent;
|
|
240
|
-
readonly commandId: string;
|
|
241
|
-
readonly fingerprint: string;
|
|
242
|
-
readonly registration: Registration;
|
|
243
|
-
readonly provisioningIdentity: string;
|
|
244
|
-
}) => R["insert"];
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
export interface OAuthUnlinkCommandTable<U extends Table> {
|
|
248
|
-
readonly table: U["table"];
|
|
249
|
-
readonly moduleId: Column<U>;
|
|
250
|
-
readonly commandId: Column<U>;
|
|
251
|
-
readonly subjectId: Column<U>;
|
|
252
|
-
readonly credentialId: Column<U>;
|
|
253
|
-
readonly intentSnapshot: Column<U>;
|
|
254
|
-
readonly decision: Column<U>;
|
|
255
|
-
readonly retentionUntil: Column<U>;
|
|
256
|
-
readonly encodeInsert: (input: {
|
|
257
|
-
readonly moduleId: string;
|
|
258
|
-
readonly commandId: string;
|
|
259
|
-
readonly credential: OAuthCredentialSnapshot;
|
|
260
|
-
}) => U["insert"];
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
export interface OAuthEligibilityFact {
|
|
264
|
-
readonly credentialId: string;
|
|
265
|
-
readonly revision: SecurityRevision;
|
|
266
|
-
readonly usablePrimary: boolean;
|
|
267
|
-
readonly factors: ReadonlyArray<AuthenticationFactor>;
|
|
268
|
-
readonly userVerified: boolean;
|
|
269
|
-
readonly phishingResistant: boolean;
|
|
270
|
-
}
|
|
168
|
+
export type OAuthEligibilityFact = typeof OAuthEligibilityFact.Type;
|
|
271
169
|
|
|
272
170
|
/** Each descriptor reads only its own subject-scoped method rows. The native row
|
|
273
171
|
* projector and SQL condition must express the same installed method eligibility.
|
|
@@ -288,12 +186,6 @@ export interface OAuthEligibilityTable<
|
|
|
288
186
|
readonly decode: (row: T["select"]) => OAuthEligibilityFact | undefined;
|
|
289
187
|
}
|
|
290
188
|
|
|
291
|
-
/** Authenticated command replay uses current subject status and this additional
|
|
292
|
-
* nonconsuming SQL policy. It never consumes a fresh action factor. */
|
|
293
|
-
export interface OAuthMetadataPolicy<N, Expression extends SqlExpression = SqlExpression> {
|
|
294
|
-
readonly condition: (subjectId: N) => Expression;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
189
|
export interface OAuthCleanupTable<
|
|
298
190
|
T extends Table,
|
|
299
191
|
N,
|
|
@@ -310,160 +202,6 @@ export interface OAuthCleanupTable<
|
|
|
310
202
|
readonly disposition: "delete";
|
|
311
203
|
}
|
|
312
204
|
|
|
313
|
-
export interface OAuthRegistrationEligibility<N, Expression extends SqlExpression = SqlExpression> {
|
|
314
|
-
/** Pure SQL guards for mutable app policy; evaluated again after app writes. */
|
|
315
|
-
readonly condition: (input: {
|
|
316
|
-
readonly intent: OAuthRegistrationIntent;
|
|
317
|
-
readonly nativeSubjectId?: N;
|
|
318
|
-
}) => Expression;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
export interface OAuthD1Mapping {
|
|
322
|
-
readonly d1: { readonly primary: true };
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
export const requiredOAuthSignInConstraints = {
|
|
326
|
-
flow: "unique(flow.moduleId,flow.flowId)",
|
|
327
|
-
command: "unique(flow.moduleId,flow.commandId)",
|
|
328
|
-
stateDigest: "unique(flow.stateDigest)",
|
|
329
|
-
ownership: "unique(ownership.identityKey)",
|
|
330
|
-
credentialId: "unique(credential.credentialId)",
|
|
331
|
-
credentialIdentity: "unique(credential.identityKey)",
|
|
332
|
-
authorityCredential: "unique(authority.subjectId,authority.credentialId)",
|
|
333
|
-
} as const;
|
|
334
|
-
|
|
335
|
-
export const requiredOAuthTupleConstraints = { identityKey: "unique(tuple.identityKey)" } as const;
|
|
336
|
-
|
|
337
|
-
export const requiredOAuthRegistrationConstraints = {
|
|
338
|
-
intentReference: "unique(intent.moduleId,intent.reference)",
|
|
339
|
-
intentFlow: "unique(intent.moduleId,intent.flowId)",
|
|
340
|
-
command: "unique(registrationCommand.moduleId,registrationCommand.commandId)",
|
|
341
|
-
} as const;
|
|
342
|
-
|
|
343
|
-
export const requiredOAuthAccountsConstraints = {
|
|
344
|
-
unlinkCommand: "unique(unlinkCommand.moduleId,unlinkCommand.commandId)",
|
|
345
|
-
} as const;
|
|
346
|
-
|
|
347
|
-
export interface OAuthSignInMapping<
|
|
348
|
-
S extends Table,
|
|
349
|
-
O extends Table,
|
|
350
|
-
C extends Table,
|
|
351
|
-
AC extends Table,
|
|
352
|
-
F extends Table,
|
|
353
|
-
N,
|
|
354
|
-
Expression extends SqlExpression = SqlExpression,
|
|
355
|
-
> {
|
|
356
|
-
readonly subject: OAuthSubjectReadTable<S, Expression>;
|
|
357
|
-
readonly ownership: OAuthOwnershipReadTable<O, N, Expression>;
|
|
358
|
-
readonly credential: OAuthCredentialReadTable<C, Expression>;
|
|
359
|
-
readonly authority: OAuthAuthorityReadTable<AC, Expression>;
|
|
360
|
-
readonly flow: OAuthFlowTable<F>;
|
|
361
|
-
readonly subjectId: SubjectIdCodec<N>;
|
|
362
|
-
readonly clock: OAuthClock<Expression>;
|
|
363
|
-
readonly constraints: typeof requiredOAuthSignInConstraints;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
export type OAuthOwnershipMutation<
|
|
367
|
-
T extends Table,
|
|
368
|
-
O extends Table,
|
|
369
|
-
N,
|
|
370
|
-
Expression extends SqlExpression = SqlExpression,
|
|
371
|
-
> =
|
|
372
|
-
| { readonly mode: "integrated"; readonly tuple: OAuthTupleAuthorityTable<T, N> }
|
|
373
|
-
| {
|
|
374
|
-
readonly mode: "separate";
|
|
375
|
-
readonly tuple: OAuthTupleAuthorityTable<T, N>;
|
|
376
|
-
readonly external: OAuthOwnershipTable<O, N, Expression>;
|
|
377
|
-
};
|
|
378
|
-
|
|
379
|
-
export interface OAuthRegistrationIntentMapping<
|
|
380
|
-
S extends Table,
|
|
381
|
-
O extends Table,
|
|
382
|
-
C extends Table,
|
|
383
|
-
AC extends Table,
|
|
384
|
-
F extends Table,
|
|
385
|
-
T extends Table,
|
|
386
|
-
I extends Table,
|
|
387
|
-
N,
|
|
388
|
-
Expression extends SqlExpression = SqlExpression,
|
|
389
|
-
> {
|
|
390
|
-
readonly signIn: OAuthSignInMapping<S, O, C, AC, F, N, Expression>;
|
|
391
|
-
readonly ownership: OAuthOwnershipMutation<T, O, N, Expression>;
|
|
392
|
-
readonly intent: OAuthRegistrationIntentTable<I>;
|
|
393
|
-
readonly tupleConstraints: typeof requiredOAuthTupleConstraints;
|
|
394
|
-
readonly registrationConstraints: Pick<
|
|
395
|
-
typeof requiredOAuthRegistrationConstraints,
|
|
396
|
-
"intentReference" | "intentFlow"
|
|
397
|
-
>;
|
|
398
|
-
readonly eligibility: OAuthRegistrationEligibility<N, Expression>;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
export interface OAuthRegistrationBase<
|
|
402
|
-
Registration,
|
|
403
|
-
T extends Table,
|
|
404
|
-
O extends Table,
|
|
405
|
-
I extends Table,
|
|
406
|
-
R extends Table,
|
|
407
|
-
N,
|
|
408
|
-
Expression extends SqlExpression = SqlExpression,
|
|
409
|
-
Descriptor extends object = object,
|
|
410
|
-
> {
|
|
411
|
-
readonly ownership: OAuthOwnershipMutation<T, O, N, Expression>;
|
|
412
|
-
readonly intent: OAuthRegistrationIntentTable<I>;
|
|
413
|
-
readonly command: OAuthRegistrationCommandTable<R, Registration>;
|
|
414
|
-
readonly clock: OAuthClock<Expression>;
|
|
415
|
-
readonly tupleConstraints: typeof requiredOAuthTupleConstraints;
|
|
416
|
-
readonly constraints: typeof requiredOAuthRegistrationConstraints;
|
|
417
|
-
readonly inspect: (input: {
|
|
418
|
-
readonly intent: OAuthRegistrationIntent;
|
|
419
|
-
readonly registration: Registration;
|
|
420
|
-
}) => Effect.Effect<
|
|
421
|
-
{ readonly fingerprint: string; readonly eligible: boolean },
|
|
422
|
-
PersistenceMappingError
|
|
423
|
-
>;
|
|
424
|
-
/** Required for an explicitly bound native/DO command: no asynchronous callback
|
|
425
|
-
* is evaluated inside the physical owner. Standalone inspection is pre-owner. */
|
|
426
|
-
readonly inspectSync?: (input: {
|
|
427
|
-
readonly intent: OAuthRegistrationIntent;
|
|
428
|
-
readonly registration: Registration;
|
|
429
|
-
}) => { readonly fingerprint: string; readonly eligible: boolean };
|
|
430
|
-
/** Type projection, never the original wire transformation. */
|
|
431
|
-
readonly snapshot: (
|
|
432
|
-
registration: Registration,
|
|
433
|
-
) => Effect.Effect<Registration, PersistenceMappingError>;
|
|
434
|
-
readonly snapshotSync?: (registration: Registration) => Registration;
|
|
435
|
-
/** Canonical bounded storage of Registration.Type. These are Type codecs, not
|
|
436
|
-
* the original wire decoder/encoder; decode(encode(value)) must encode identically.
|
|
437
|
-
* The engine writes and roundtrip-checks this exact string (maximum 1 MiB). */
|
|
438
|
-
readonly application: {
|
|
439
|
-
readonly encode: (registration: Registration) => string;
|
|
440
|
-
readonly decode: (stored: string) => Registration;
|
|
441
|
-
};
|
|
442
|
-
readonly eligibility: {
|
|
443
|
-
/** Stable application authority anchors, in one configured global order.
|
|
444
|
-
* Omit only for immutable/tuple-local policy or an equivalent explicit outer
|
|
445
|
-
* owner lock. Each scope must match 1..64 rows, never an absent quota row.
|
|
446
|
-
* Locks precede tuple/intent/command locks; postcondition owns changed state. */
|
|
447
|
-
readonly guards?: ReadonlyArray<
|
|
448
|
-
OAuthRegistrationGuardDescriptor<Registration, N, Expression, Descriptor>
|
|
449
|
-
>;
|
|
450
|
-
readonly admission: (input: {
|
|
451
|
-
readonly intent: OAuthRegistrationIntent;
|
|
452
|
-
readonly registration: Registration;
|
|
453
|
-
readonly nativeSubjectId?: N;
|
|
454
|
-
}) => Expression;
|
|
455
|
-
/** Evaluated after subject/application writes, including appended coordinator
|
|
456
|
-
* writes. May assert consumption of the admission invitation/quota. */
|
|
457
|
-
readonly postcondition: (input: {
|
|
458
|
-
readonly intent: OAuthRegistrationIntent;
|
|
459
|
-
readonly registration: Registration;
|
|
460
|
-
readonly nativeSubjectId?: N;
|
|
461
|
-
}) => Expression;
|
|
462
|
-
};
|
|
463
|
-
readonly allocateProvisioningIdentity: Effect.Effect<string, PersistenceMappingError>;
|
|
464
|
-
readonly retentionMillis: number;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
205
|
export interface OAuthRegistrationGuardTable<
|
|
468
206
|
T extends Table,
|
|
469
207
|
Registration,
|
|
@@ -504,40 +242,6 @@ export const oauthRegistrationGuardTable = <
|
|
|
504
242
|
condition: input.condition,
|
|
505
243
|
});
|
|
506
244
|
|
|
507
|
-
export type OAuthRegistrationMapping<
|
|
508
|
-
Registration,
|
|
509
|
-
S extends Table,
|
|
510
|
-
O extends Table,
|
|
511
|
-
C extends Table,
|
|
512
|
-
AC extends Table,
|
|
513
|
-
T extends Table,
|
|
514
|
-
I extends Table,
|
|
515
|
-
R extends Table,
|
|
516
|
-
N,
|
|
517
|
-
Expression extends SqlExpression = SqlExpression,
|
|
518
|
-
Descriptor extends object = object,
|
|
519
|
-
> = OAuthRegistrationBase<Registration, T, O, I, R, N, Expression, Descriptor> &
|
|
520
|
-
(
|
|
521
|
-
| {
|
|
522
|
-
readonly mode: "pending";
|
|
523
|
-
readonly allocatePendingReference: Effect.Effect<string, PersistenceMappingError>;
|
|
524
|
-
}
|
|
525
|
-
| {
|
|
526
|
-
readonly mode: "atomic";
|
|
527
|
-
readonly subjectId: SubjectIdCodec<N>;
|
|
528
|
-
readonly subject: OAuthSubjectReadTable<S, Expression>;
|
|
529
|
-
readonly credential: OAuthCredentialTable<C, N, Expression>;
|
|
530
|
-
readonly authority: OAuthAuthorityTable<AC, N, Expression>;
|
|
531
|
-
readonly allocateSubjectId: Effect.Effect<N, PersistenceMappingError>;
|
|
532
|
-
readonly allocateCredentialId: Effect.Effect<string, PersistenceMappingError>;
|
|
533
|
-
readonly allocateRevision: Effect.Effect<SecurityRevision, PersistenceMappingError>;
|
|
534
|
-
readonly encodeSubjectInsert: (
|
|
535
|
-
input: { readonly intent: OAuthRegistrationIntent; readonly registration: Registration },
|
|
536
|
-
ids: { readonly subjectId: N; readonly securityRevision: SecurityRevision },
|
|
537
|
-
) => S["insert"];
|
|
538
|
-
}
|
|
539
|
-
);
|
|
540
|
-
|
|
541
245
|
/** Heterogeneous descriptors are made by typed factories and projected privately. */
|
|
542
246
|
export interface OAuthEligibilityDescriptor<
|
|
543
247
|
N,
|
|
@@ -595,45 +299,130 @@ export const oauthCleanupTable = <
|
|
|
595
299
|
): OAuthCleanupDescriptor<N, Expression, T["table"]> =>
|
|
596
300
|
Object.freeze({ table: input.table, subjectId: input.subjectId, condition: input.condition });
|
|
597
301
|
|
|
598
|
-
/**
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
302
|
+
/** Original application binding and retained decision are encoded in snapshot. */
|
|
303
|
+
export interface OAuthRegistrationIntentTable<I extends Table> {
|
|
304
|
+
readonly table: I["table"];
|
|
305
|
+
readonly moduleId: Column<I>;
|
|
306
|
+
readonly reference: Column<I>;
|
|
307
|
+
readonly flowId: Column<I>;
|
|
308
|
+
readonly identityKey: Column<I>;
|
|
309
|
+
readonly snapshot: Column<I>;
|
|
310
|
+
readonly expiresAt: Column<I>;
|
|
311
|
+
readonly retentionUntil: Column<I>;
|
|
312
|
+
readonly encodeInsert: (intent: OAuthRegistrationIntent) => I["insert"];
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface OAuthD1Mapping {
|
|
316
|
+
readonly d1: { readonly primary: true };
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export const requiredOAuthSignInConstraints = {
|
|
320
|
+
flow: "unique(flow.moduleId,flow.flowId)",
|
|
321
|
+
stateDigest: "unique(flow.stateDigest)",
|
|
322
|
+
ownership: "unique(ownership.identityKey)",
|
|
323
|
+
credentialId: "unique(credential.credentialId)",
|
|
324
|
+
credentialIdentity: "unique(credential.identityKey)",
|
|
325
|
+
authorityCredential: "unique(authority.subjectId,authority.credentialId)",
|
|
326
|
+
} as const;
|
|
327
|
+
|
|
328
|
+
export const requiredOAuthRegistrationConstraints = {
|
|
329
|
+
intentReference: "unique(intent.moduleId,intent.reference)",
|
|
330
|
+
intentFlow: "unique(intent.moduleId,intent.flowId)",
|
|
331
|
+
ownership: "unique(ownership.identityKey)",
|
|
332
|
+
credentialId: "unique(credential.credentialId)",
|
|
333
|
+
credentialIdentity: "unique(credential.identityKey)",
|
|
334
|
+
authorityCredential: "unique(authority.subjectId,authority.credentialId)",
|
|
335
|
+
} as const;
|
|
336
|
+
|
|
337
|
+
export interface OAuthSignInMapping<
|
|
338
|
+
S extends Table,
|
|
339
|
+
O extends Table,
|
|
340
|
+
C extends Table,
|
|
341
|
+
AC extends Table,
|
|
342
|
+
F extends Table,
|
|
603
343
|
N,
|
|
604
344
|
Expression extends SqlExpression = SqlExpression,
|
|
605
345
|
> {
|
|
606
|
-
readonly
|
|
607
|
-
readonly
|
|
608
|
-
readonly
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
346
|
+
readonly subject: OAuthSubjectReadTable<S, Expression>;
|
|
347
|
+
readonly ownership: OAuthOwnershipReadTable<O, N>;
|
|
348
|
+
readonly credential: OAuthCredentialReadTable<C, Expression>;
|
|
349
|
+
readonly authority: OAuthAuthorityReadTable<AC, Expression>;
|
|
350
|
+
readonly flow: OAuthFlowTable<F>;
|
|
351
|
+
readonly subjectId: SubjectIdCodec<N>;
|
|
352
|
+
readonly clock: OAuthClock<Expression>;
|
|
353
|
+
readonly constraints: typeof requiredOAuthSignInConstraints;
|
|
613
354
|
}
|
|
614
355
|
|
|
615
|
-
export interface
|
|
356
|
+
export interface OAuthRegistrationIntentMapping<
|
|
357
|
+
O extends Table,
|
|
358
|
+
I extends Table,
|
|
616
359
|
N,
|
|
617
360
|
Expression extends SqlExpression = SqlExpression,
|
|
618
|
-
Descriptor extends object = object,
|
|
619
361
|
> {
|
|
620
|
-
readonly
|
|
621
|
-
readonly
|
|
622
|
-
readonly
|
|
362
|
+
readonly ownership: OAuthOwnershipReadTable<O, N>;
|
|
363
|
+
readonly intent: OAuthRegistrationIntentTable<I>;
|
|
364
|
+
readonly clock: OAuthClock<Expression>;
|
|
365
|
+
readonly constraints: Pick<
|
|
366
|
+
typeof requiredOAuthRegistrationConstraints,
|
|
367
|
+
"intentReference" | "intentFlow" | "ownership"
|
|
368
|
+
>;
|
|
369
|
+
readonly eligible: (intent: OAuthRegistrationIntent) => Expression;
|
|
623
370
|
}
|
|
624
371
|
|
|
625
|
-
export
|
|
626
|
-
|
|
372
|
+
export interface OAuthRegistrationMapping<
|
|
373
|
+
Registration,
|
|
374
|
+
S extends Table,
|
|
375
|
+
O extends Table,
|
|
376
|
+
C extends Table,
|
|
377
|
+
AC extends Table,
|
|
378
|
+
I extends Table,
|
|
627
379
|
N,
|
|
628
380
|
Expression extends SqlExpression = SqlExpression,
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
381
|
+
Descriptor extends object = object,
|
|
382
|
+
> {
|
|
383
|
+
readonly registration: Schema.Codec<Registration, unknown, never, never>;
|
|
384
|
+
readonly ownership: OAuthOwnershipTable<O, N>;
|
|
385
|
+
readonly intent: OAuthRegistrationIntentTable<I>;
|
|
386
|
+
readonly subject: OAuthSubjectReadTable<S, Expression>;
|
|
387
|
+
readonly credential: OAuthCredentialTable<C, N, Expression>;
|
|
388
|
+
readonly authority: OAuthAuthorityTable<AC, N, Expression>;
|
|
389
|
+
readonly subjectId: SubjectIdCodec<N>;
|
|
390
|
+
readonly clock: OAuthClock<Expression>;
|
|
391
|
+
readonly constraints: typeof requiredOAuthRegistrationConstraints;
|
|
392
|
+
readonly inspect: (input: {
|
|
393
|
+
readonly intent: OAuthRegistrationIntent;
|
|
394
|
+
readonly registration: Registration;
|
|
395
|
+
}) => Effect.Effect<
|
|
396
|
+
{ readonly fingerprint: string; readonly eligible: boolean },
|
|
397
|
+
PersistenceMappingError
|
|
398
|
+
>;
|
|
399
|
+
readonly eligibility: {
|
|
400
|
+
readonly guards?: ReadonlyArray<
|
|
401
|
+
OAuthRegistrationGuardDescriptor<Registration, N, Expression, Descriptor>
|
|
402
|
+
>;
|
|
403
|
+
readonly admission: (input: {
|
|
404
|
+
readonly intent: OAuthRegistrationIntent;
|
|
405
|
+
readonly registration: Registration;
|
|
406
|
+
readonly nativeSubjectId?: N;
|
|
407
|
+
}) => Expression;
|
|
408
|
+
readonly postcondition: (input: {
|
|
409
|
+
readonly intent: OAuthRegistrationIntent;
|
|
410
|
+
readonly registration: Registration;
|
|
411
|
+
readonly nativeSubjectId?: N;
|
|
412
|
+
}) => Expression;
|
|
413
|
+
};
|
|
414
|
+
readonly allocateSubjectId: Effect.Effect<N, PersistenceMappingError>;
|
|
415
|
+
readonly allocateCredentialId: Effect.Effect<string, PersistenceMappingError>;
|
|
416
|
+
readonly allocateRevision: Effect.Effect<SecurityRevision, PersistenceMappingError>;
|
|
417
|
+
readonly encodeSubjectInsert: (
|
|
418
|
+
input: {
|
|
419
|
+
readonly intent: OAuthRegistrationIntent;
|
|
420
|
+
readonly registration: Registration;
|
|
421
|
+
readonly requestId: string;
|
|
422
|
+
},
|
|
423
|
+
ids: { readonly subjectId: N; readonly securityRevision: SecurityRevision },
|
|
424
|
+
) => S["insert"];
|
|
425
|
+
}
|
|
637
426
|
|
|
638
427
|
export interface OAuthAccountsMapping<
|
|
639
428
|
S extends Table,
|
|
@@ -641,38 +430,26 @@ export interface OAuthAccountsMapping<
|
|
|
641
430
|
C extends Table,
|
|
642
431
|
AC extends Table,
|
|
643
432
|
F extends Table,
|
|
644
|
-
T extends Table,
|
|
645
|
-
U extends Table,
|
|
646
433
|
N,
|
|
647
434
|
Expression extends SqlExpression = SqlExpression,
|
|
648
435
|
Descriptor extends object = object,
|
|
649
436
|
> {
|
|
650
437
|
readonly subject: OAuthSubjectTable<S, Expression>;
|
|
651
|
-
readonly ownership:
|
|
438
|
+
readonly ownership: OAuthOwnershipTable<O, N>;
|
|
652
439
|
readonly credential: OAuthCredentialTable<C, N, Expression>;
|
|
653
440
|
readonly authority: OAuthAuthorityTable<AC, N, Expression>;
|
|
654
441
|
readonly flow: OAuthFlowTable<F>;
|
|
655
|
-
readonly command: OAuthUnlinkCommandTable<U>;
|
|
656
442
|
readonly subjectId: SubjectIdCodec<N>;
|
|
657
443
|
readonly clock: OAuthClock<Expression>;
|
|
658
|
-
readonly constraints: typeof requiredOAuthSignInConstraints
|
|
659
|
-
typeof requiredOAuthAccountsConstraints;
|
|
660
|
-
readonly tupleConstraints: typeof requiredOAuthTupleConstraints;
|
|
444
|
+
readonly constraints: typeof requiredOAuthSignInConstraints;
|
|
661
445
|
readonly eligibility: ReadonlyArray<OAuthEligibilityDescriptor<N, Expression, Descriptor>>;
|
|
662
446
|
readonly cleanup: ReadonlyArray<OAuthCleanupDescriptor<N, Expression, Descriptor>>;
|
|
663
|
-
readonly metadata: OAuthMetadataPolicy<N, Expression>;
|
|
664
447
|
readonly sessionInvalidation: "same-authority-immediate" | "original-absolute-expiry";
|
|
665
|
-
/**
|
|
666
|
-
|
|
667
|
-
readonly connectedReference?: (input: {
|
|
448
|
+
/** Indexed same-owner reference predicate for any installed grant/application references. */
|
|
449
|
+
readonly otherReferences: (input: {
|
|
668
450
|
readonly identityKey: string;
|
|
669
451
|
readonly subjectId: N;
|
|
670
452
|
}) => Expression;
|
|
671
|
-
/** At most 32 descriptors, each locking 1..64 stable rows in supplied order.
|
|
672
|
-
* Missing/empty guards retain Owned, even when the reference predicate is false. */
|
|
673
|
-
readonly connectedReferenceGuards?: ReadonlyArray<
|
|
674
|
-
OAuthReferenceGuardDescriptor<N, Expression, Descriptor>
|
|
675
|
-
>;
|
|
676
453
|
readonly allocateCredentialId: Effect.Effect<string, PersistenceMappingError>;
|
|
677
454
|
readonly allocateRevision: Effect.Effect<SecurityRevision, PersistenceMappingError>;
|
|
678
455
|
}
|
|
@@ -698,11 +475,13 @@ export interface OAuthRegistrationAuthority<Registration> {
|
|
|
698
475
|
readonly commandId: typeof OAuthCommandId.Type;
|
|
699
476
|
readonly registration: Registration;
|
|
700
477
|
readonly fingerprint: TokenDigest;
|
|
478
|
+
readonly payload: string;
|
|
479
|
+
readonly requestId: string;
|
|
701
480
|
},
|
|
702
481
|
prepare: PrepareOAuthCommit<OAuthRegistrationDecision, A>,
|
|
703
482
|
) => Effect.Effect<PreparedCommit<A>, OAuthUnavailable>;
|
|
704
483
|
readonly cleanup: <A>(
|
|
705
484
|
input: OAuthCleanupInput,
|
|
706
|
-
prepare: PrepareOAuthCommit<
|
|
485
|
+
prepare: PrepareOAuthCommit<CleanupResult, A>,
|
|
707
486
|
) => Effect.Effect<PreparedCommit<A>, OAuthUnavailable>;
|
|
708
487
|
}
|