@yielded/auth-persistence 0.1.0-beta.25 → 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 +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
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { SqlClient } from "effect/sql/SqlClient";
|
|
2
|
+
import * as Statement from "effect/sql/Statement";
|
|
3
|
+
|
|
4
|
+
import { PersistenceMappingError } from "./mapping-error";
|
|
5
|
+
import { Column, identifier, Table } from "./sql-table";
|
|
6
|
+
|
|
7
|
+
/** Pure mapped SQL. Compilation binds values through the executing client's
|
|
8
|
+
* dialect; expressions neither acquire a client nor execute a query. */
|
|
9
|
+
export class SqlExpression {
|
|
10
|
+
constructor(readonly compile: (client: SqlClient) => Statement.Fragment) {}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const quoted = (client: SqlClient, name: string) => {
|
|
14
|
+
if (name.includes("\0"))
|
|
15
|
+
throw PersistenceMappingError.make({ operation: "mapping", cause: "NUL in SQL identifier" });
|
|
16
|
+
|
|
17
|
+
return client.literal(identifier(name));
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const tableName = (client: SqlClient, name: string, schema?: string) =>
|
|
21
|
+
schema === undefined
|
|
22
|
+
? quoted(client, name)
|
|
23
|
+
: client`${quoted(client, schema)}.${quoted(client, name)}`;
|
|
24
|
+
|
|
25
|
+
const value = (client: SqlClient, input: unknown): Statement.Fragment => {
|
|
26
|
+
if (Statement.isFragment(input)) return input;
|
|
27
|
+
if (input instanceof SqlExpression) return input.compile(client);
|
|
28
|
+
if (input instanceof Table) return tableName(client, input.name, input.schema);
|
|
29
|
+
if (input instanceof Column)
|
|
30
|
+
return client`${tableName(client, input.tableName, input.schema)}.${quoted(client, input.options.name)}`;
|
|
31
|
+
|
|
32
|
+
return Statement.fragment([
|
|
33
|
+
Statement.parameter(
|
|
34
|
+
typeof input === "boolean"
|
|
35
|
+
? client.onDialectOrElse({ sqlite: () => Number(input), orElse: () => input })
|
|
36
|
+
: input,
|
|
37
|
+
),
|
|
38
|
+
]);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/** Reject foreign expression handles at the metadata boundary. */
|
|
42
|
+
export const compileSqlExpression = (
|
|
43
|
+
client: SqlClient,
|
|
44
|
+
expression: unknown,
|
|
45
|
+
): Statement.Fragment => {
|
|
46
|
+
if (
|
|
47
|
+
!Statement.isFragment(expression) &&
|
|
48
|
+
!(expression instanceof SqlExpression) &&
|
|
49
|
+
!(expression instanceof Table) &&
|
|
50
|
+
!(expression instanceof Column)
|
|
51
|
+
)
|
|
52
|
+
throw PersistenceMappingError.make({
|
|
53
|
+
operation: "mapping",
|
|
54
|
+
cause: "Expected a SQL expression",
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
return value(client, expression);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const template = (parts: TemplateStringsArray, ...values: ReadonlyArray<unknown>) =>
|
|
61
|
+
new SqlExpression((client) =>
|
|
62
|
+
client.join(
|
|
63
|
+
"",
|
|
64
|
+
false,
|
|
65
|
+
)(
|
|
66
|
+
parts.flatMap((part, index) =>
|
|
67
|
+
index === 0
|
|
68
|
+
? [client.literal(part)]
|
|
69
|
+
: [value(client, values[index - 1]), client.literal(part)],
|
|
70
|
+
),
|
|
71
|
+
),
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
export const sql = Object.assign(template, {
|
|
75
|
+
join: (values: ReadonlyArray<unknown>, separator: SqlExpression = template``) =>
|
|
76
|
+
new SqlExpression((client) =>
|
|
77
|
+
client.join(
|
|
78
|
+
"",
|
|
79
|
+
false,
|
|
80
|
+
)(
|
|
81
|
+
values.flatMap((input, index) =>
|
|
82
|
+
index === 0 ? [value(client, input)] : [separator.compile(client), value(client, input)],
|
|
83
|
+
),
|
|
84
|
+
),
|
|
85
|
+
),
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
export const eq = (left: unknown, right: unknown): SqlExpression => sql`${left} = ${right}`;
|
|
89
|
+
|
|
90
|
+
export const and = (...expressions: ReadonlyArray<SqlExpression | undefined>) => {
|
|
91
|
+
const present = expressions.filter((expression) => expression !== undefined);
|
|
92
|
+
|
|
93
|
+
return present.length === 0 ? undefined : sql`(${sql.join(present, sql` AND `)})`;
|
|
94
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { SqlClient } from "effect/sql/SqlClient";
|
|
3
|
+
import type { Fragment } from "effect/sql/Statement";
|
|
4
|
+
|
|
5
|
+
import { PersistenceMappingError } from "./mapping-error";
|
|
6
|
+
import { identifier, Table } from "./sql-table";
|
|
7
|
+
|
|
8
|
+
/** Physical names are components, so a literal dot in a mapped name stays quoted. */
|
|
9
|
+
export const sqlName = (sql: SqlClient, name: string): Fragment => sql.literal(identifier(name));
|
|
10
|
+
|
|
11
|
+
export const sqlTable = (sql: SqlClient, table: Table): Fragment =>
|
|
12
|
+
sql.literal(
|
|
13
|
+
(table.schema === undefined ? "" : identifier(table.schema) + ".") + identifier(table.name),
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export const sqlColumn = (sql: SqlClient, table: Table, key: string, alias?: string): Fragment =>
|
|
17
|
+
sql`${alias === undefined ? sqlTable(sql, table) : sqlName(sql, alias)}.${sqlName(sql, table.columns[key]!.options.name)}`;
|
|
18
|
+
|
|
19
|
+
export const sqlProjection = (
|
|
20
|
+
sql: SqlClient,
|
|
21
|
+
table: Table,
|
|
22
|
+
alias?: string,
|
|
23
|
+
prefix = "",
|
|
24
|
+
): Fragment =>
|
|
25
|
+
sql.csv(
|
|
26
|
+
Object.keys(table.columns).map(
|
|
27
|
+
(key) => sql`${sqlColumn(sql, table, key, alias)} as ${sqlName(sql, prefix + key)}`,
|
|
28
|
+
),
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
export const sqlValue = (sql: SqlClient, table: Table, key: string, value: unknown): unknown =>
|
|
32
|
+
table.columns[key]!.options.type === "boolean" && typeof value === "boolean"
|
|
33
|
+
? sql.onDialectOrElse({ sqlite: () => Number(value), orElse: () => value })
|
|
34
|
+
: value;
|
|
35
|
+
|
|
36
|
+
export const sqlInsert = (
|
|
37
|
+
sql: SqlClient,
|
|
38
|
+
table: Table,
|
|
39
|
+
values: Readonly<Record<string, unknown>>,
|
|
40
|
+
): Fragment => {
|
|
41
|
+
// The built-in insert/update helpers split dots in names and flatten SQL
|
|
42
|
+
// expression values. Keep physical name components and interpolated values.
|
|
43
|
+
const keys = Object.keys(table.columns).filter((key) => values[key] !== undefined);
|
|
44
|
+
|
|
45
|
+
return sql`(${sql.csv(keys.map((key) => sqlName(sql, table.columns[key]!.options.name)))}) values (${sql.csv(keys.map((key) => sql`${sqlValue(sql, table, key, values[key])}`))})`;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const sqlInsertMany = (
|
|
49
|
+
sql: SqlClient,
|
|
50
|
+
table: Table,
|
|
51
|
+
rows: ReadonlyArray<Readonly<Record<string, unknown>>>,
|
|
52
|
+
): Fragment => {
|
|
53
|
+
const keys = Object.keys(table.columns).filter((key) => rows[0]?.[key] !== undefined);
|
|
54
|
+
|
|
55
|
+
return sql`(${sql.csv(keys.map((key) => sqlName(sql, table.columns[key]!.options.name)))}) values ${sql.csv(rows.map((row) => sql`(${sql.csv(keys.map((key) => sql`${sqlValue(sql, table, key, row[key])}`))})`))}`;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const sqlUpdate = (
|
|
59
|
+
sql: SqlClient,
|
|
60
|
+
table: Table,
|
|
61
|
+
values: Readonly<Record<string, unknown>>,
|
|
62
|
+
): Fragment =>
|
|
63
|
+
sql.csv(
|
|
64
|
+
Object.entries(values)
|
|
65
|
+
.filter(([key, value]) => table.columns[key] !== undefined && value !== undefined)
|
|
66
|
+
.map(
|
|
67
|
+
([key, value]) =>
|
|
68
|
+
sql`${sqlName(sql, table.columns[key]!.options.name)} = ${sqlValue(sql, table, key, value)}`,
|
|
69
|
+
),
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
export const decodeSqlRow = (table: Table, row: Readonly<Record<string, unknown>>, prefix = "") =>
|
|
73
|
+
Effect.try({
|
|
74
|
+
try: () =>
|
|
75
|
+
Object.fromEntries(
|
|
76
|
+
Object.entries(table.columns).map(([key, column]) => [
|
|
77
|
+
key,
|
|
78
|
+
column.decode(row[prefix + key]),
|
|
79
|
+
]),
|
|
80
|
+
),
|
|
81
|
+
catch: (cause) => PersistenceMappingError.make({ operation: "decode", cause }),
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
export const requireSqlTable = (table: object): Table => {
|
|
85
|
+
if (!(table instanceof Table))
|
|
86
|
+
throw PersistenceMappingError.make({ operation: "mapping", cause: "Invalid SQL table" });
|
|
87
|
+
|
|
88
|
+
return table;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/** CTE names share a namespace with unqualified application tables. */
|
|
92
|
+
export const sqlAlias = (tables: ReadonlyArray<Table | undefined>, name: string): string => {
|
|
93
|
+
const occupied = new Set(
|
|
94
|
+
tables.flatMap((table) => (table === undefined ? [] : [table.name.toLowerCase()])),
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
while (occupied.has(name.toLowerCase())) name += "_";
|
|
98
|
+
|
|
99
|
+
return name;
|
|
100
|
+
};
|
|
@@ -1,144 +1,55 @@
|
|
|
1
|
-
import * as Shared from "./models/oauth-connected-model";
|
|
1
|
+
import type * as Shared from "./models/oauth-connected-model";
|
|
2
|
+
import type { SqlExpression as SQL } from "./sql-expression";
|
|
2
3
|
import type { SqlTableModel } from "./sql-oauth-model";
|
|
3
|
-
import type {
|
|
4
|
+
import type { Table } from "./sql-table";
|
|
4
5
|
|
|
5
6
|
export {
|
|
6
7
|
type OAuthConnectedAction,
|
|
7
|
-
type OAuthConnectedOrderCodec,
|
|
8
8
|
type OAuthConnectedPolicyInput,
|
|
9
9
|
requiredOAuthConnectedConstraints,
|
|
10
10
|
requiredOAuthConnectedRevocationConstraints,
|
|
11
11
|
} from "./models/oauth-connected-model";
|
|
12
12
|
|
|
13
|
-
export type OAuthConnectedSubjectTable<S extends Table> = Shared.OAuthConnectedSubjectTable<
|
|
14
|
-
SqlTableModel<S>,
|
|
15
|
-
SQL
|
|
16
|
-
>;
|
|
17
|
-
|
|
18
|
-
export type OAuthConnectedFlowTable<F extends Table, N> = Shared.OAuthConnectedFlowTable<
|
|
19
|
-
SqlTableModel<F>,
|
|
20
|
-
N
|
|
21
|
-
>;
|
|
22
|
-
|
|
23
13
|
export type OAuthConnectedGrantTable<G extends Table, N> = Shared.OAuthConnectedGrantTable<
|
|
24
14
|
SqlTableModel<G>,
|
|
25
15
|
N
|
|
26
16
|
>;
|
|
27
17
|
|
|
28
|
-
/** Also stores a permanent provider/issuer scope anchor. clientKey must fit 52
|
|
29
|
-
* ASCII characters. Empty clientRegistrationId is reserved for that anchor;
|
|
30
|
-
* actual profile registrations are nonempty. Scope counter stays zero. */
|
|
31
|
-
export type OAuthConnectedClientRegistrationTable<C extends Table> =
|
|
32
|
-
Shared.OAuthConnectedClientRegistrationTable<SqlTableModel<C>>;
|
|
33
|
-
|
|
34
|
-
/** Remote authority: no local-subject column or subject-scoped key. Retain this
|
|
35
|
-
* anchor/cutoff when a legitimately released tuple gains a different local owner. */
|
|
36
|
-
export type OAuthConnectedCohortTable<C extends Table> = Shared.OAuthConnectedCohortTable<
|
|
37
|
-
SqlTableModel<C>
|
|
38
|
-
>;
|
|
39
|
-
|
|
40
|
-
export type OAuthConnectedAdmissionTable<A extends Table, N> = Shared.OAuthConnectedAdmissionTable<
|
|
41
|
-
SqlTableModel<A>,
|
|
42
|
-
N
|
|
43
|
-
>;
|
|
44
|
-
|
|
45
|
-
export type OAuthConnectedCommandTable<C extends Table, N> = Shared.OAuthConnectedCommandTable<
|
|
46
|
-
SqlTableModel<C>,
|
|
47
|
-
N
|
|
48
|
-
>;
|
|
49
|
-
|
|
50
18
|
export type OAuthConnectedRevocationJobTable<
|
|
51
19
|
J extends Table,
|
|
52
20
|
N,
|
|
53
21
|
> = Shared.OAuthConnectedRevocationJobTable<SqlTableModel<J>, N>;
|
|
54
22
|
|
|
55
|
-
export type
|
|
56
|
-
T extends Table,
|
|
57
|
-
N,
|
|
58
|
-
> = Shared.OAuthConnectedPolicyGuardTable<SqlTableModel<T>, N, SQL>;
|
|
59
|
-
|
|
60
|
-
export type OAuthConnectedPolicyGuard<N> = Shared.OAuthConnectedPolicyGuard<N, SQL, Table>;
|
|
61
|
-
|
|
62
|
-
export const oauthConnectedPolicyGuard = <T extends Table, N>(
|
|
63
|
-
input: OAuthConnectedPolicyGuardTable<T, N>,
|
|
64
|
-
): OAuthConnectedPolicyGuard<N> =>
|
|
65
|
-
Shared.oauthConnectedPolicyGuard<SqlTableModel<T>, N, SQL>(input);
|
|
66
|
-
|
|
67
|
-
export type OAuthConnectedSqlPolicy<N> = Shared.OAuthConnectedSqlPolicy<N, SQL, Table>;
|
|
68
|
-
|
|
69
|
-
/** Existing ownership only; workers never allocate or acquire a tuple. */
|
|
70
|
-
export type OAuthConnectedOwnershipRead<
|
|
71
|
-
T extends Table,
|
|
72
|
-
O extends Table,
|
|
73
|
-
N,
|
|
74
|
-
> = Shared.OAuthConnectedOwnershipRead<SqlTableModel<T>, SqlTableModel<O>, N, SQL>;
|
|
75
|
-
|
|
76
|
-
export type OAuthConnectedAuthorityMapping<
|
|
77
|
-
T extends Table,
|
|
78
|
-
O extends Table,
|
|
79
|
-
F extends Table,
|
|
80
|
-
G extends Table,
|
|
81
|
-
C extends Table,
|
|
82
|
-
H extends Table,
|
|
83
|
-
N,
|
|
84
|
-
> = Shared.OAuthConnectedAuthorityMapping<
|
|
85
|
-
SqlTableModel<T>,
|
|
86
|
-
SqlTableModel<O>,
|
|
87
|
-
SqlTableModel<F>,
|
|
88
|
-
SqlTableModel<G>,
|
|
89
|
-
SqlTableModel<C>,
|
|
90
|
-
SqlTableModel<H>,
|
|
91
|
-
N,
|
|
92
|
-
SQL
|
|
93
|
-
>;
|
|
23
|
+
export type OAuthConnectedSqlPolicy<N> = Shared.OAuthConnectedSqlPolicy<N, SQL>;
|
|
94
24
|
|
|
95
25
|
export type OAuthConnectedMapping<
|
|
96
26
|
S extends Table,
|
|
97
27
|
AC extends Table,
|
|
98
|
-
T extends Table,
|
|
99
28
|
O extends Table,
|
|
100
29
|
F extends Table,
|
|
101
30
|
G extends Table,
|
|
102
|
-
C extends Table,
|
|
103
|
-
H extends Table,
|
|
104
|
-
A extends Table,
|
|
105
|
-
D extends Table,
|
|
106
31
|
N,
|
|
107
|
-
J extends Table =
|
|
32
|
+
J extends Table = Table,
|
|
108
33
|
> = Shared.OAuthConnectedMapping<
|
|
109
34
|
SqlTableModel<S>,
|
|
110
35
|
SqlTableModel<AC>,
|
|
111
|
-
SqlTableModel<T>,
|
|
112
36
|
SqlTableModel<O>,
|
|
113
37
|
SqlTableModel<F>,
|
|
114
38
|
SqlTableModel<G>,
|
|
115
|
-
SqlTableModel<C>,
|
|
116
|
-
SqlTableModel<H>,
|
|
117
|
-
SqlTableModel<A>,
|
|
118
|
-
SqlTableModel<D>,
|
|
119
39
|
N,
|
|
120
40
|
SqlTableModel<J>,
|
|
121
41
|
SQL,
|
|
122
|
-
|
|
123
|
-
SqlTableModel<Table>
|
|
42
|
+
SqlTableModel
|
|
124
43
|
>;
|
|
125
44
|
|
|
126
45
|
export type OAuthConnectedRevocationMapping<
|
|
127
|
-
T extends Table,
|
|
128
46
|
O extends Table,
|
|
129
|
-
F extends Table,
|
|
130
47
|
G extends Table,
|
|
131
|
-
C extends Table,
|
|
132
|
-
H extends Table,
|
|
133
48
|
J extends Table,
|
|
134
49
|
N,
|
|
135
50
|
> = Shared.OAuthConnectedRevocationMapping<
|
|
136
|
-
SqlTableModel<T>,
|
|
137
51
|
SqlTableModel<O>,
|
|
138
|
-
SqlTableModel<F>,
|
|
139
52
|
SqlTableModel<G>,
|
|
140
|
-
SqlTableModel<C>,
|
|
141
|
-
SqlTableModel<H>,
|
|
142
53
|
SqlTableModel<J>,
|
|
143
54
|
N,
|
|
144
55
|
SQL
|
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
import * as Shared from "./models/oauth-model";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { SqlExpression as SQL } from "./sql-expression";
|
|
3
|
+
import type { Table } from "./sql-table";
|
|
4
|
+
import type { TableModel } from "./table-model";
|
|
4
5
|
|
|
5
6
|
export interface SqlTableModel<T extends Table = Table> extends TableModel {
|
|
6
7
|
readonly table: T;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
export {
|
|
10
|
-
type OAuthFlowState,
|
|
11
|
-
type OAuthTupleState,
|
|
12
|
-
type OAuthRegistrationState,
|
|
13
11
|
type OAuthAction,
|
|
14
12
|
type OAuthEligibilityFact,
|
|
15
13
|
type OAuthD1Mapping,
|
|
14
|
+
type OAuthRegistrationAuthority,
|
|
16
15
|
requiredOAuthSignInConstraints,
|
|
17
|
-
requiredOAuthTupleConstraints,
|
|
18
16
|
requiredOAuthRegistrationConstraints,
|
|
19
|
-
requiredOAuthAccountsConstraints,
|
|
20
|
-
type OAuthRegistrationAuthority,
|
|
21
17
|
} from "./models/oauth-model";
|
|
22
18
|
|
|
23
|
-
/** The engine writes every critical column explicitly after applying the pure
|
|
24
|
-
* consumer encoder. Native instant values must roundtrip without precision loss. */
|
|
25
19
|
export type OAuthClock = Shared.OAuthClock<SQL>;
|
|
26
20
|
|
|
27
21
|
export type OAuthSubjectReadTable<S extends Table> = Shared.OAuthSubjectReadTable<
|
|
@@ -33,14 +27,12 @@ export type OAuthSubjectTable<S extends Table> = Shared.OAuthSubjectTable<SqlTab
|
|
|
33
27
|
|
|
34
28
|
export type OAuthOwnershipReadTable<O extends Table, N> = Shared.OAuthOwnershipReadTable<
|
|
35
29
|
SqlTableModel<O>,
|
|
36
|
-
N
|
|
37
|
-
SQL
|
|
30
|
+
N
|
|
38
31
|
>;
|
|
39
32
|
|
|
40
33
|
export type OAuthOwnershipTable<O extends Table, N> = Shared.OAuthOwnershipTable<
|
|
41
34
|
SqlTableModel<O>,
|
|
42
|
-
N
|
|
43
|
-
SQL
|
|
35
|
+
N
|
|
44
36
|
>;
|
|
45
37
|
|
|
46
38
|
export type OAuthCredentialReadTable<C extends Table> = Shared.OAuthCredentialReadTable<
|
|
@@ -65,51 +57,36 @@ export type OAuthAuthorityTable<C extends Table, N> = Shared.OAuthAuthorityTable
|
|
|
65
57
|
SQL
|
|
66
58
|
>;
|
|
67
59
|
|
|
68
|
-
/** Both purposes may use the same physical table. Shared tables share module/flow
|
|
69
|
-
* and module/command uniqueness. The snapshot has the exact purpose-specific core
|
|
70
|
-
* codec; terminal writes erase it, while identity, claim and retention columns remain. */
|
|
71
60
|
export type OAuthFlowTable<F extends Table> = Shared.OAuthFlowTable<SqlTableModel<F>>;
|
|
72
61
|
|
|
73
|
-
export type OAuthTupleAuthorityTable<T extends Table, N> = Shared.OAuthTupleAuthorityTable<
|
|
74
|
-
SqlTableModel<T>,
|
|
75
|
-
N
|
|
76
|
-
>;
|
|
77
|
-
|
|
78
62
|
export type OAuthRegistrationIntentTable<I extends Table> = Shared.OAuthRegistrationIntentTable<
|
|
79
63
|
SqlTableModel<I>
|
|
80
64
|
>;
|
|
81
65
|
|
|
82
|
-
export type OAuthRegistrationCommandTable<
|
|
83
|
-
R extends Table,
|
|
84
|
-
Registration,
|
|
85
|
-
> = Shared.OAuthRegistrationCommandTable<SqlTableModel<R>, Registration>;
|
|
86
|
-
|
|
87
|
-
export type OAuthUnlinkCommandTable<U extends Table> = Shared.OAuthUnlinkCommandTable<
|
|
88
|
-
SqlTableModel<U>
|
|
89
|
-
>;
|
|
90
|
-
|
|
91
|
-
/** Each descriptor reads only its own subject-scoped method rows. The native row
|
|
92
|
-
* projector and SQL condition must express the same installed method eligibility.
|
|
93
|
-
* All source/identifier/policy mutations advance subject securityRevision. D1 also
|
|
94
|
-
* guards exact selected IDs/versions and absence/count assumptions, never just a
|
|
95
|
-
* stale boolean. An over-limit graph fails closed rather than truncating. */
|
|
96
66
|
export type OAuthEligibilityTable<T extends Table, N> = Shared.OAuthEligibilityTable<
|
|
97
67
|
SqlTableModel<T>,
|
|
98
68
|
N,
|
|
99
69
|
SQL
|
|
100
70
|
>;
|
|
101
71
|
|
|
102
|
-
/** Authenticated command replay uses current subject status and this additional
|
|
103
|
-
* nonconsuming SQL policy. It never consumes a fresh action factor. */
|
|
104
|
-
export type OAuthMetadataPolicy<N> = Shared.OAuthMetadataPolicy<N, SQL>;
|
|
105
|
-
|
|
106
72
|
export type OAuthCleanupTable<T extends Table, N> = Shared.OAuthCleanupTable<
|
|
107
73
|
SqlTableModel<T>,
|
|
108
74
|
N,
|
|
109
75
|
SQL
|
|
110
76
|
>;
|
|
111
77
|
|
|
112
|
-
export type
|
|
78
|
+
export type OAuthRegistrationGuardTable<
|
|
79
|
+
T extends Table,
|
|
80
|
+
Registration,
|
|
81
|
+
N,
|
|
82
|
+
> = Shared.OAuthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>;
|
|
83
|
+
|
|
84
|
+
export type OAuthRegistrationGuardDescriptor<Registration, N> =
|
|
85
|
+
Shared.OAuthRegistrationGuardDescriptor<Registration, N, SQL, Table>;
|
|
86
|
+
|
|
87
|
+
export type OAuthEligibilityDescriptor<N> = Shared.OAuthEligibilityDescriptor<N, SQL, Table>;
|
|
88
|
+
|
|
89
|
+
export type OAuthCleanupDescriptor<N> = Shared.OAuthCleanupDescriptor<N, SQL, Table>;
|
|
113
90
|
|
|
114
91
|
export type OAuthSignInMapping<
|
|
115
92
|
S extends Table,
|
|
@@ -128,64 +105,29 @@ export type OAuthSignInMapping<
|
|
|
128
105
|
SQL
|
|
129
106
|
>;
|
|
130
107
|
|
|
131
|
-
export type
|
|
132
|
-
T extends Table,
|
|
133
|
-
O extends Table,
|
|
134
|
-
N,
|
|
135
|
-
> = Shared.OAuthOwnershipMutation<SqlTableModel<T>, SqlTableModel<O>, N, SQL>;
|
|
136
|
-
|
|
137
|
-
export type OAuthRegistrationIntentMapping<
|
|
108
|
+
export type OAuthAccountsMapping<
|
|
138
109
|
S extends Table,
|
|
139
110
|
O extends Table,
|
|
140
111
|
C extends Table,
|
|
141
112
|
AC extends Table,
|
|
142
113
|
F extends Table,
|
|
143
|
-
T extends Table,
|
|
144
|
-
I extends Table,
|
|
145
114
|
N,
|
|
146
|
-
> = Shared.
|
|
115
|
+
> = Shared.OAuthAccountsMapping<
|
|
147
116
|
SqlTableModel<S>,
|
|
148
117
|
SqlTableModel<O>,
|
|
149
118
|
SqlTableModel<C>,
|
|
150
119
|
SqlTableModel<AC>,
|
|
151
120
|
SqlTableModel<F>,
|
|
152
|
-
SqlTableModel<T>,
|
|
153
|
-
SqlTableModel<I>,
|
|
154
|
-
N,
|
|
155
|
-
SQL
|
|
156
|
-
>;
|
|
157
|
-
|
|
158
|
-
export type OAuthRegistrationBase<
|
|
159
|
-
Registration,
|
|
160
|
-
T extends Table,
|
|
161
|
-
O extends Table,
|
|
162
|
-
I extends Table,
|
|
163
|
-
R extends Table,
|
|
164
|
-
N,
|
|
165
|
-
> = Shared.OAuthRegistrationBase<
|
|
166
|
-
Registration,
|
|
167
|
-
SqlTableModel<T>,
|
|
168
|
-
SqlTableModel<O>,
|
|
169
|
-
SqlTableModel<I>,
|
|
170
|
-
SqlTableModel<R>,
|
|
171
121
|
N,
|
|
172
122
|
SQL,
|
|
173
123
|
Table
|
|
174
124
|
>;
|
|
175
125
|
|
|
176
|
-
export type
|
|
177
|
-
|
|
178
|
-
|
|
126
|
+
export type OAuthRegistrationIntentMapping<
|
|
127
|
+
O extends Table,
|
|
128
|
+
I extends Table,
|
|
179
129
|
N,
|
|
180
|
-
> = Shared.
|
|
181
|
-
|
|
182
|
-
export type OAuthRegistrationGuardDescriptor<Registration, N> =
|
|
183
|
-
Shared.OAuthRegistrationGuardDescriptor<Registration, N, SQL, Table>;
|
|
184
|
-
|
|
185
|
-
export const oauthRegistrationGuardTable = <T extends Table, Registration, N>(
|
|
186
|
-
input: OAuthRegistrationGuardTable<T, Registration, N>,
|
|
187
|
-
): OAuthRegistrationGuardDescriptor<Registration, N> =>
|
|
188
|
-
Shared.oauthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>(input);
|
|
130
|
+
> = Shared.OAuthRegistrationIntentMapping<SqlTableModel<O>, SqlTableModel<I>, N, SQL>;
|
|
189
131
|
|
|
190
132
|
export type OAuthRegistrationMapping<
|
|
191
133
|
Registration,
|
|
@@ -193,9 +135,7 @@ export type OAuthRegistrationMapping<
|
|
|
193
135
|
O extends Table,
|
|
194
136
|
C extends Table,
|
|
195
137
|
AC extends Table,
|
|
196
|
-
T extends Table,
|
|
197
138
|
I extends Table,
|
|
198
|
-
R extends Table,
|
|
199
139
|
N,
|
|
200
140
|
> = Shared.OAuthRegistrationMapping<
|
|
201
141
|
Registration,
|
|
@@ -203,61 +143,18 @@ export type OAuthRegistrationMapping<
|
|
|
203
143
|
SqlTableModel<O>,
|
|
204
144
|
SqlTableModel<C>,
|
|
205
145
|
SqlTableModel<AC>,
|
|
206
|
-
SqlTableModel<T>,
|
|
207
146
|
SqlTableModel<I>,
|
|
208
|
-
SqlTableModel<R>,
|
|
209
147
|
N,
|
|
210
148
|
SQL,
|
|
211
149
|
Table
|
|
212
150
|
>;
|
|
213
151
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
export const oauthEligibilityTable = <T extends Table, N>(
|
|
218
|
-
input: OAuthEligibilityTable<T, N>,
|
|
219
|
-
): OAuthEligibilityDescriptor<N> => Shared.oauthEligibilityTable<SqlTableModel<T>, N, SQL>(input);
|
|
220
|
-
|
|
221
|
-
export type OAuthCleanupDescriptor<N> = Shared.OAuthCleanupDescriptor<N, SQL, Table>;
|
|
222
|
-
|
|
223
|
-
export const oauthCleanupTable = <T extends Table, N>(
|
|
224
|
-
input: OAuthCleanupTable<T, N>,
|
|
225
|
-
): OAuthCleanupDescriptor<N> => Shared.oauthCleanupTable<SqlTableModel<T>, N, SQL>(input);
|
|
226
|
-
|
|
227
|
-
/** A stable application/reference lock acquired before an ownership target.
|
|
228
|
-
* Missing rows retain ownership. Conditions use detached native IDs; every
|
|
229
|
-
* writer of the guarded reference follows the same order. */
|
|
230
|
-
export type OAuthReferenceGuardTable<T extends Table, N> = Shared.OAuthReferenceGuardTable<
|
|
231
|
-
SqlTableModel<T>,
|
|
232
|
-
N,
|
|
233
|
-
SQL
|
|
234
|
-
>;
|
|
235
|
-
|
|
236
|
-
export type OAuthReferenceGuardDescriptor<N> = Shared.OAuthReferenceGuardDescriptor<N, SQL, Table>;
|
|
152
|
+
export const oauthEligibilityTable = <T extends Table, N>(input: OAuthEligibilityTable<T, N>) =>
|
|
153
|
+
Shared.oauthEligibilityTable<SqlTableModel<T>, N, SQL>(input);
|
|
237
154
|
|
|
238
|
-
export const
|
|
239
|
-
|
|
240
|
-
): OAuthReferenceGuardDescriptor<N> =>
|
|
241
|
-
Shared.oauthReferenceGuardTable<SqlTableModel<T>, N, SQL>(input);
|
|
155
|
+
export const oauthCleanupTable = <T extends Table, N>(input: OAuthCleanupTable<T, N>) =>
|
|
156
|
+
Shared.oauthCleanupTable<SqlTableModel<T>, N, SQL>(input);
|
|
242
157
|
|
|
243
|
-
export
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
C extends Table,
|
|
247
|
-
AC extends Table,
|
|
248
|
-
F extends Table,
|
|
249
|
-
T extends Table,
|
|
250
|
-
U extends Table,
|
|
251
|
-
N,
|
|
252
|
-
> = Shared.OAuthAccountsMapping<
|
|
253
|
-
SqlTableModel<S>,
|
|
254
|
-
SqlTableModel<O>,
|
|
255
|
-
SqlTableModel<C>,
|
|
256
|
-
SqlTableModel<AC>,
|
|
257
|
-
SqlTableModel<F>,
|
|
258
|
-
SqlTableModel<T>,
|
|
259
|
-
SqlTableModel<U>,
|
|
260
|
-
N,
|
|
261
|
-
SQL,
|
|
262
|
-
Table
|
|
263
|
-
>;
|
|
158
|
+
export const oauthRegistrationGuardTable = <T extends Table, Registration, N>(
|
|
159
|
+
input: OAuthRegistrationGuardTable<T, Registration, N>,
|
|
160
|
+
) => Shared.oauthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>(input);
|
|
@@ -3,9 +3,7 @@ import { SqlClient } from "effect/sql";
|
|
|
3
3
|
|
|
4
4
|
import { PersistenceConfigurationError, type PersistenceApi } from "./configuration";
|
|
5
5
|
import { makeNativeSqlTables } from "./native-sql-table";
|
|
6
|
-
import { makeComposedPasskeys } from "./passkeys";
|
|
7
6
|
import { createPersistence } from "./persistence";
|
|
8
|
-
import { makeSqlDatabase, sqlQueryOperations } from "./sql-query";
|
|
9
7
|
import { Table } from "./sql-table";
|
|
10
8
|
import type { StorageTable } from "./storage-tables";
|
|
11
9
|
|
|
@@ -23,9 +21,7 @@ export const AuthPersistence: PersistenceApi<Table> & { readonly table: typeof t
|
|
|
23
21
|
),
|
|
24
22
|
unique: table.unique,
|
|
25
23
|
}),
|
|
26
|
-
|
|
27
|
-
nativeTables: (client) => makeNativeSqlTables(client),
|
|
28
|
-
passkeys: makeComposedPasskeys(sqlQueryOperations),
|
|
24
|
+
nativeTables: makeNativeSqlTables,
|
|
29
25
|
acquire: Effect.gen(function* () {
|
|
30
26
|
const sql = yield* SqlClient.SqlClient;
|
|
31
27
|
|
|
@@ -40,7 +36,7 @@ export const AuthPersistence: PersistenceApi<Table> & { readonly table: typeof t
|
|
|
40
36
|
reason: "Use an explicit adapter for this SQL dialect",
|
|
41
37
|
});
|
|
42
38
|
|
|
43
|
-
return
|
|
39
|
+
return sql;
|
|
44
40
|
}),
|
|
45
41
|
}),
|
|
46
42
|
table,
|
|
@@ -5,7 +5,6 @@ import { PersistenceMappingError } from "./mapping-error";
|
|
|
5
5
|
import { Table } from "./sql-table";
|
|
6
6
|
import { storageKeyPlans } from "./storage-plans";
|
|
7
7
|
import { validateStorageBatch, type StorageValidation } from "./storage-validation";
|
|
8
|
-
import { NativeDatabase } from "./transaction-kernel";
|
|
9
8
|
|
|
10
9
|
/** Check declared mappings against physical keys before acquiring OAuth services. */
|
|
11
10
|
export const validateSqlStorage = Effect.fnUntraced(function* (mapping: unknown) {
|
|
@@ -20,7 +19,7 @@ export const validateSqlStorage = Effect.fnUntraced(function* (mapping: unknown)
|
|
|
20
19
|
PersistenceMappingError.make({ operation: "mapping", cause: "Invalid storage key mapping" }),
|
|
21
20
|
});
|
|
22
21
|
|
|
23
|
-
const
|
|
22
|
+
const client = yield* SqlClient.SqlClient;
|
|
24
23
|
|
|
25
24
|
const dialect = client.onDialectOrElse({
|
|
26
25
|
pg: () => "pg" as const,
|