@yielded/auth-persistence-drizzle 0.1.0-beta.0 → 0.1.0-beta.12
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 -1
- package/dist/D1.d.mts +155 -40
- package/dist/D1.mjs +10 -6
- package/dist/D1.mjs.map +1 -1
- package/dist/Libsql.d.mts +251 -129
- package/dist/Libsql.mjs +20 -21
- package/dist/Libsql.mjs.map +1 -1
- package/dist/Mysql2.d.mts +208 -56
- package/dist/Mysql2.mjs +13 -8
- package/dist/Mysql2.mjs.map +1 -1
- package/dist/Pglite.d.mts +209 -57
- package/dist/Pglite.mjs +13 -9
- package/dist/Pglite.mjs.map +1 -1
- package/dist/Postgres.d.mts +207 -55
- package/dist/Postgres.mjs +13 -9
- package/dist/Postgres.mjs.map +1 -1
- package/dist/SqliteBun.d.mts +249 -126
- package/dist/SqliteBun.mjs +20 -18
- package/dist/SqliteBun.mjs.map +1 -1
- package/dist/SqliteDo.d.mts +248 -158
- package/dist/SqliteDo.mjs +26 -44
- package/dist/SqliteDo.mjs.map +1 -1
- package/dist/SqliteNode.d.mts +247 -124
- package/dist/SqliteNode.mjs +20 -18
- package/dist/SqliteNode.mjs.map +1 -1
- package/dist/SqliteWasm.d.mts +251 -128
- package/dist/SqliteWasm.mjs +20 -18
- package/dist/SqliteWasm.mjs.map +1 -1
- package/dist/drizzle/D1BatchStatements.d.mts +1 -1
- package/dist/drizzle/D1BatchStatements.mjs.map +1 -1
- package/dist/drizzle/d1-database.d.mts +11 -0
- package/dist/drizzle/d1-database.mjs +8 -0
- package/dist/drizzle/d1-database.mjs.map +1 -0
- package/dist/drizzle/d1-emails.d.mts +8 -7
- package/dist/drizzle/d1-emails.mjs +7 -4
- package/dist/drizzle/d1-emails.mjs.map +1 -1
- package/dist/drizzle/d1-generated-statement.mjs.map +1 -1
- package/dist/drizzle/d1-identity.mjs +12 -9
- package/dist/drizzle/d1-identity.mjs.map +1 -1
- package/dist/drizzle/d1-oauth.d.mts +41 -10
- package/dist/drizzle/d1-oauth.mjs +8 -5
- package/dist/drizzle/d1-oauth.mjs.map +1 -1
- package/dist/drizzle/d1-passkey.d.mts +3 -14
- package/dist/drizzle/d1-passkey.mjs +2 -1
- package/dist/drizzle/d1-passkey.mjs.map +1 -1
- package/dist/drizzle/d1-password-prepared.d.mts +4 -3
- package/dist/drizzle/d1-password-prepared.mjs +3 -1
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
- package/dist/drizzle/d1-passwords.d.mts +7 -6
- package/dist/drizzle/d1-passwords.mjs +5 -2
- package/dist/drizzle/d1-passwords.mjs.map +1 -1
- package/dist/drizzle/d1-phone.d.mts +3 -4
- package/dist/drizzle/d1-phone.mjs +2 -1
- package/dist/drizzle/d1-phone.mjs.map +1 -1
- package/dist/drizzle/d1-planning.d.mts +1 -1
- package/dist/drizzle/d1-proofs.d.mts +5 -4
- package/dist/drizzle/d1-proofs.mjs +3 -1
- package/dist/drizzle/d1-proofs.mjs.map +1 -1
- package/dist/drizzle/d1-sessions.d.mts +14 -13
- package/dist/drizzle/d1-sessions.mjs +15 -9
- package/dist/drizzle/d1-sessions.mjs.map +1 -1
- package/dist/drizzle/d1-totp.d.mts +3 -4
- package/dist/drizzle/d1-totp.mjs +2 -1
- package/dist/drizzle/d1-totp.mjs.map +1 -1
- package/dist/drizzle/email-registration.d.mts +1 -1
- package/dist/drizzle/email-registration.mjs +2 -1
- package/dist/drizzle/email-registration.mjs.map +1 -1
- package/dist/drizzle/email-target.d.mts +8 -7
- package/dist/drizzle/email-target.mjs +10 -10
- package/dist/drizzle/email-target.mjs.map +1 -1
- package/dist/drizzle/model.d.mts +2 -126
- package/dist/drizzle/model.mjs +2 -21
- package/dist/drizzle/model.mjs.map +1 -1
- package/dist/drizzle/mysql-database.d.mts +8 -0
- package/dist/drizzle/mysql-database.mjs +8 -0
- package/dist/drizzle/mysql-database.mjs.map +1 -0
- package/dist/drizzle/mysql-emails.d.mts +8 -7
- package/dist/drizzle/mysql-emails.mjs +12 -8
- package/dist/drizzle/mysql-emails.mjs.map +1 -1
- package/dist/drizzle/mysql-identity.mjs +12 -9
- package/dist/drizzle/mysql-identity.mjs.map +1 -1
- package/dist/drizzle/mysql-password-prepared.d.mts +4 -3
- package/dist/drizzle/mysql-password-prepared.mjs +6 -2
- package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
- package/dist/drizzle/mysql-passwords.d.mts +7 -5
- package/dist/drizzle/mysql-passwords.mjs +11 -7
- package/dist/drizzle/mysql-passwords.mjs.map +1 -1
- package/dist/drizzle/mysql-proofs.d.mts +4 -3
- package/dist/drizzle/mysql-proofs.mjs +8 -4
- package/dist/drizzle/mysql-proofs.mjs.map +1 -1
- package/dist/drizzle/mysql-sessions.d.mts +12 -11
- package/dist/drizzle/mysql-sessions.mjs +16 -12
- package/dist/drizzle/mysql-sessions.mjs.map +1 -1
- package/dist/drizzle/native-database.mjs +10 -0
- package/dist/drizzle/native-database.mjs.map +1 -0
- package/dist/drizzle/oauth-accounts.mjs +1 -1
- package/dist/drizzle/oauth-connected-access.mjs +14 -12
- package/dist/drizzle/oauth-connected-access.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-custody.mjs +2 -2
- package/dist/drizzle/oauth-connected-drivers.mjs +11 -6
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-flow.mjs +2 -2
- package/dist/drizzle/oauth-connected-input.mjs +14 -1
- package/dist/drizzle/oauth-connected-input.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-maintenance.mjs +1 -1
- package/dist/drizzle/oauth-connected-management.mjs +2 -2
- package/dist/drizzle/oauth-connected-model.d.mts +17 -3
- package/dist/drizzle/oauth-connected-model.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-settlement.mjs +51 -41
- package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-sign-in.mjs +263 -0
- package/dist/drizzle/oauth-connected-sign-in.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-state.d.mts +110 -2
- package/dist/drizzle/oauth-connected-state.mjs +9 -4
- package/dist/drizzle/oauth-connected-state.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-target.d.mts +142 -15
- package/dist/drizzle/oauth-connected-target.mjs +9 -6
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
- package/dist/drizzle/oauth-drivers.mjs +9 -7
- package/dist/drizzle/oauth-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-flow.d.mts +1 -1
- package/dist/drizzle/oauth-flow.mjs +1 -1
- package/dist/drizzle/oauth-input.mjs +1 -1
- package/dist/drizzle/oauth-model.d.mts +1 -1
- package/dist/drizzle/oauth-owner.d.mts +1 -1
- package/dist/drizzle/oauth-registration.d.mts +2 -2
- package/dist/drizzle/oauth-registration.mjs +1 -1
- package/dist/drizzle/oauth-state.mjs +5 -4
- package/dist/drizzle/oauth-state.mjs.map +1 -1
- package/dist/drizzle/oauth-target.d.mts +14 -13
- package/dist/drizzle/oauth-target.mjs +14 -13
- package/dist/drizzle/oauth-target.mjs.map +1 -1
- package/dist/drizzle/passkey-drivers.mjs +8 -6
- package/dist/drizzle/passkey-drivers.mjs.map +1 -1
- package/dist/drizzle/passkey-write-drivers.mjs +5 -3
- package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
- package/dist/drizzle/passkey-write-target.d.mts +1 -1
- package/dist/drizzle/password-prepared-sql.mjs +2 -1
- package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
- package/dist/drizzle/password-prepared-state.mjs +1 -1
- package/dist/drizzle/password-prepared-target.d.mts +4 -3
- package/dist/drizzle/password-prepared-target.mjs +4 -3
- package/dist/drizzle/password-prepared-target.mjs.map +1 -1
- package/dist/drizzle/password-registration.mjs +2 -1
- package/dist/drizzle/password-registration.mjs.map +1 -1
- package/dist/drizzle/password-target.d.mts +6 -5
- package/dist/drizzle/password-target.mjs +8 -8
- package/dist/drizzle/password-target.mjs.map +1 -1
- package/dist/drizzle/pg-database.d.mts +9 -0
- package/dist/drizzle/pg-database.mjs +8 -0
- package/dist/drizzle/pg-database.mjs.map +1 -0
- package/dist/drizzle/pg-emails.d.mts +8 -7
- package/dist/drizzle/pg-emails.mjs +12 -8
- package/dist/drizzle/pg-emails.mjs.map +1 -1
- package/dist/drizzle/pg-identity.mjs +92 -0
- package/dist/drizzle/pg-identity.mjs.map +1 -0
- package/dist/drizzle/pg-password-prepared.d.mts +4 -3
- package/dist/drizzle/pg-password-prepared.mjs +6 -2
- package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
- package/dist/drizzle/pg-passwords.d.mts +7 -5
- package/dist/drizzle/pg-passwords.mjs +11 -7
- package/dist/drizzle/pg-passwords.mjs.map +1 -1
- package/dist/drizzle/pg-proofs.d.mts +4 -3
- package/dist/drizzle/pg-proofs.mjs +8 -4
- package/dist/drizzle/pg-proofs.mjs.map +1 -1
- package/dist/drizzle/pg-sessions.d.mts +12 -11
- package/dist/drizzle/pg-sessions.mjs +16 -12
- package/dist/drizzle/pg-sessions.mjs.map +1 -1
- package/dist/drizzle/phone-model.d.mts +1 -1
- package/dist/drizzle/phone-target.d.mts +5 -4
- package/dist/drizzle/phone-target.mjs +12 -11
- package/dist/drizzle/phone-target.mjs.map +1 -1
- package/dist/drizzle/proof-target.d.mts +4 -3
- package/dist/drizzle/proof-target.mjs +5 -5
- package/dist/drizzle/proof-target.mjs.map +1 -1
- package/dist/drizzle/session-sql.d.mts +1 -0
- package/dist/drizzle/session-target.d.mts +11 -9
- package/dist/drizzle/session-target.mjs +11 -11
- package/dist/drizzle/session-target.mjs.map +1 -1
- package/dist/drizzle/sqlite-emails.mjs +9 -5
- package/dist/drizzle/sqlite-emails.mjs.map +1 -1
- package/dist/drizzle/sqlite-identity.mjs +14 -11
- package/dist/drizzle/sqlite-identity.mjs.map +1 -1
- package/dist/drizzle/sqlite-password-prepared.mjs +7 -3
- package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
- package/dist/drizzle/sqlite-passwords.mjs +10 -6
- package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
- package/dist/drizzle/sqlite-proofs.mjs +7 -3
- package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
- package/dist/drizzle/sqlite-sessions.mjs +16 -12
- package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
- package/dist/drizzle/standalone-guard.d.mts +2 -0
- package/dist/drizzle/standalone-guard.mjs +8 -4
- package/dist/drizzle/standalone-guard.mjs.map +1 -1
- package/dist/drizzle/totp-model.d.mts +1 -1
- package/dist/drizzle/totp-target.d.mts +5 -4
- package/dist/drizzle/totp-target.mjs +31 -28
- package/dist/drizzle/totp-target.mjs.map +1 -1
- package/dist/drizzle/transaction-mysql.mjs +1 -1
- package/dist/drizzle/transaction-mysql.mjs.map +1 -1
- package/dist/index.d.mts +2 -4
- package/dist/index.mjs +2 -4
- package/dist/internal/drizzle-postgres.mjs.map +1 -1
- package/dist/internal/drizzle-sqlite.mjs.map +1 -1
- package/package.json +1 -1
- package/src/D1.ts +37 -26
- package/src/Libsql.ts +45 -61
- package/src/Mysql2.ts +39 -35
- package/src/Pglite.ts +48 -30
- package/src/Postgres.ts +48 -30
- package/src/SqliteBun.ts +59 -68
- package/src/SqliteDo.ts +61 -274
- package/src/SqliteNode.ts +56 -66
- package/src/SqliteWasm.ts +56 -66
- package/src/drizzle/D1BatchStatements.ts +1 -1
- package/src/drizzle/d1-database.ts +10 -0
- package/src/drizzle/d1-emails.ts +86 -88
- package/src/drizzle/d1-generated-statement.ts +1 -1
- package/src/drizzle/d1-identity.ts +17 -20
- package/src/drizzle/d1-oauth.ts +19 -8
- package/src/drizzle/d1-passkey.ts +5 -1
- package/src/drizzle/d1-password-prepared.ts +40 -42
- package/src/drizzle/d1-passwords.ts +76 -80
- package/src/drizzle/d1-phone.ts +5 -1
- package/src/drizzle/d1-proofs.ts +31 -34
- package/src/drizzle/d1-sessions.ts +53 -40
- package/src/drizzle/d1-totp.ts +5 -1
- package/src/drizzle/email-registration.ts +6 -2
- package/src/drizzle/email-target.ts +18 -20
- package/src/drizzle/model.ts +1 -208
- package/src/drizzle/mysql-database.ts +8 -0
- package/src/drizzle/mysql-emails.ts +29 -17
- package/src/drizzle/mysql-identity.ts +18 -21
- package/src/drizzle/mysql-password-prepared.ts +11 -9
- package/src/drizzle/mysql-passwords.ts +22 -10
- package/src/drizzle/mysql-proofs.ts +17 -6
- package/src/drizzle/mysql-sessions.ts +41 -18
- package/src/drizzle/native-database.ts +22 -0
- package/src/drizzle/oauth-connected-access.ts +8 -1
- package/src/drizzle/oauth-connected-drivers.ts +21 -6
- package/src/drizzle/oauth-connected-input.ts +13 -0
- package/src/drizzle/oauth-connected-model.ts +17 -0
- package/src/drizzle/oauth-connected-settlement.ts +65 -42
- package/src/drizzle/oauth-connected-sign-in.ts +438 -0
- package/src/drizzle/oauth-connected-state.ts +19 -7
- package/src/drizzle/oauth-connected-target.ts +26 -18
- package/src/drizzle/oauth-drivers.ts +26 -10
- package/src/drizzle/oauth-state.ts +5 -4
- package/src/drizzle/oauth-target.ts +31 -43
- package/src/drizzle/passkey-drivers.ts +21 -13
- package/src/drizzle/passkey-write-drivers.ts +11 -6
- package/src/drizzle/password-prepared-sql.ts +2 -4
- package/src/drizzle/password-prepared-target.ts +10 -7
- package/src/drizzle/password-registration.ts +7 -8
- package/src/drizzle/password-target.ts +20 -19
- package/src/drizzle/pg-database.ts +10 -0
- package/src/drizzle/pg-emails.ts +29 -17
- package/src/drizzle/pg-identity.ts +297 -0
- package/src/drizzle/pg-password-prepared.ts +11 -9
- package/src/drizzle/pg-passwords.ts +22 -10
- package/src/drizzle/pg-proofs.ts +17 -6
- package/src/drizzle/pg-sessions.ts +41 -18
- package/src/drizzle/phone-target.ts +23 -18
- package/src/drizzle/proof-target.ts +10 -13
- package/src/drizzle/session-target.ts +33 -51
- package/src/drizzle/sqlite-emails.ts +31 -14
- package/src/drizzle/sqlite-identity.ts +22 -42
- package/src/drizzle/sqlite-password-prepared.ts +24 -10
- package/src/drizzle/sqlite-passwords.ts +30 -16
- package/src/drizzle/sqlite-proofs.ts +29 -6
- package/src/drizzle/sqlite-sessions.ts +50 -24
- package/src/drizzle/standalone-guard.ts +19 -7
- package/src/drizzle/totp-target.ts +62 -61
- package/src/drizzle/transaction-mysql.ts +1 -1
- package/src/index.ts +0 -24
- package/src/internal/drizzle-postgres.ts +1 -1
- package/src/internal/drizzle-sqlite.ts +1 -1
- package/dist/drizzle/d1-identity.d.mts +0 -30
- package/dist/drizzle/mysql-identity.d.mts +0 -21
- package/dist/drizzle/mysql.d.mts +0 -69
- package/dist/drizzle/mysql.mjs +0 -218
- package/dist/drizzle/mysql.mjs.map +0 -1
- package/dist/drizzle/pg.d.mts +0 -80
- package/dist/drizzle/pg.mjs +0 -289
- package/dist/drizzle/pg.mjs.map +0 -1
- package/dist/drizzle/sqlite.d.mts +0 -77
- package/dist/drizzle/sqlite.mjs +0 -217
- package/dist/drizzle/sqlite.mjs.map +0 -1
- package/src/drizzle/mysql.ts +0 -687
- package/src/drizzle/pg.ts +0 -984
- package/src/drizzle/sqlite.ts +0 -705
package/dist/SqliteDo.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { passwordPreparedPersistenceLayer } from "./drizzle/password-prepared-target.mjs";
|
|
2
|
+
import { nativeDatabase } from "./drizzle/native-database.mjs";
|
|
2
3
|
import { makeTotpTarget } from "./drizzle/totp-target.mjs";
|
|
3
|
-
import { makeSqliteAuthServices, makeSqliteAuthStoreServices, makeSqliteOAuthStateServices } from "./drizzle/sqlite.mjs";
|
|
4
4
|
import { makePasskeyTarget } from "./drizzle/passkey-drivers.mjs";
|
|
5
5
|
import { makePhoneTarget } from "./drizzle/phone-target.mjs";
|
|
6
6
|
import { makeSqliteEmailTarget, sqliteEmailConfiguration } from "./drizzle/sqlite-emails.mjs";
|
|
@@ -10,18 +10,27 @@ import { makeSqliteProofTarget, sqliteProofConfiguration } from "./drizzle/sqlit
|
|
|
10
10
|
import { makeSqliteSessionTarget, sqliteSessionConfiguration } from "./drizzle/sqlite-sessions.mjs";
|
|
11
11
|
import { makeSqlitePasswordPreparedTarget } from "./drizzle/sqlite-password-prepared.mjs";
|
|
12
12
|
import { makeOAuthTarget } from "./drizzle/oauth-drivers.mjs";
|
|
13
|
-
import {
|
|
14
|
-
import { Context, Effect } from "effect";
|
|
15
|
-
import {
|
|
13
|
+
import { NativeDatabase, PersistenceConfigurationError } from "@yielded/auth-persistence/Adapter";
|
|
14
|
+
import { Context, Effect, Layer } from "effect";
|
|
15
|
+
import { SqliteClient } from "@effect/sql-sqlite-do/SqliteClient";
|
|
16
|
+
import { makeWithDefaults } from "drizzle-orm/effect-sqlite-do";
|
|
16
17
|
//#region src/SqliteDo.ts
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
/** The application-owned Drizzle database used to construct persistence services. */
|
|
19
|
+
var Database = class extends Context.Service()("effect-auth/persistence-drizzle/SqliteDo/Database") {};
|
|
20
|
+
/** The SQL-client Layer must configure storage so Drizzle owns transactionSync. */
|
|
21
|
+
const databaseLayer = Layer.effect(Database, Effect.gen(function* () {
|
|
22
|
+
const storage = (yield* SqliteClient).config.storage;
|
|
23
|
+
if (storage === void 0) return yield* PersistenceConfigurationError.make({ reason: "SqliteDo requires a SQL client configured with storage for synchronous transactions" });
|
|
24
|
+
return yield* makeWithDefaults({ storage });
|
|
25
|
+
}));
|
|
26
|
+
const sessionTarget = makeSqliteSessionTarget(Database, sqliteSessionConfiguration("synchronous", Effect.void));
|
|
27
|
+
const proofTarget = makeSqliteProofTarget(Database, sqliteProofConfiguration("synchronous", Effect.void));
|
|
28
|
+
const passwordTarget = makeSqlitePasswordTarget(Database, sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
|
|
20
29
|
/**
|
|
21
30
|
* Email mutations must own their outer transactionSync. Arbitrary raw Drizzle
|
|
22
31
|
* nesting is not detectable; owner bodies and mapping allocators stay runSync-compatible.
|
|
23
32
|
*/
|
|
24
|
-
const { coordinateEmailAddress, coordinateEmailRegistration, makeEmailAddressServices, makeEmailRegistrationServices, makeEmailSignInServices } = makeSqliteEmailTarget(sqliteEmailConfiguration("synchronous", Effect.void, Effect.void));
|
|
33
|
+
const { coordinateEmailAddress, coordinateEmailRegistration, makeEmailAddressServices, makeEmailRegistrationServices, makeEmailSignInServices } = makeSqliteEmailTarget(Database, sqliteEmailConfiguration("synchronous", Effect.void, Effect.void));
|
|
25
34
|
/**
|
|
26
35
|
* Password mutations and registration must own their outer transactionSync.
|
|
27
36
|
* Arbitrary raw Drizzle nesting is not detectable; owner bodies must remain
|
|
@@ -44,62 +53,35 @@ const { coordinateProofPersistence, makeProofPersistenceServices } = proofTarget
|
|
|
44
53
|
*/
|
|
45
54
|
const { coordinateAuthenticationAuthority, coordinatePendingAuthentication, coordinateSignedSessionValidity, coordinateStatefulSessions, makeAuthenticationAuthorityServices, makePendingAuthenticationServices, makeSessionStepUpServices, coordinateSessionStepUp, makeSignedSessionValidityServices, makeStatefulSessionServices } = sessionTarget;
|
|
46
55
|
const commitMode = "synchronous";
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const decisions = makeSqliteAuthStoreServices(transaction, options.mapping).decisions;
|
|
53
|
-
const provided = Context.make(AuthStoreDecisions, decisions);
|
|
54
|
-
const work = Effect.provideContext(body, provided);
|
|
55
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
function coordinateOAuthStateTransaction(acquire, options, body) {
|
|
59
|
-
return Effect.flatMap(acquire, (database) => database.transaction((transaction) => {
|
|
60
|
-
const decisions = makeSqliteOAuthStateServices(transaction, options.mapping).decisions;
|
|
61
|
-
const provided = Context.make(OAuthStateDecisions, decisions);
|
|
62
|
-
const work = Effect.provideContext(body, provided);
|
|
63
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
function coordinateAuthTransaction(acquire, options, body) {
|
|
67
|
-
return Effect.flatMap(acquire, (database) => database.transaction((transaction) => {
|
|
68
|
-
const decisions = makeSqliteAuthServices(transaction, options.mapping).decisions;
|
|
69
|
-
const provided = Context.make(AuthStoreDecisions, decisions).pipe(Context.add(OAuthStateDecisions, decisions));
|
|
70
|
-
const work = Effect.provideContext(body, provided);
|
|
71
|
-
return options.transaction === void 0 ? work : Effect.provideService(work, options.transaction, options.transaction.of(transaction));
|
|
72
|
-
}));
|
|
73
|
-
}
|
|
74
|
-
const makeIdentityServices = (database, mapping) => makeSqliteIdentityServices(database, mapping, "synchronous");
|
|
75
|
-
const makeSubjectProvisioningServices = (database, mapping) => makeSqliteSubjectProvisioningServices(database, mapping, "synchronous");
|
|
76
|
-
const makeExternalIdentityServices = (database, mapping) => makeSqliteExternalIdentityServices(database, mapping);
|
|
77
|
-
const { makePasswordPreparedPersistenceServices, coordinatePasswordPreparedPersistence } = makeSqlitePasswordPreparedTarget(sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
|
|
78
|
-
const { makeOAuthAccountsServices, makeOAuthSignInServices, makeOAuthRegistrationIntentServices, makeOAuthRegistrationServices, coordinateOAuthRegistration, coordinateOAuthSignIn, coordinateOAuthRegistrationIntents, coordinateOAuthAccounts, makeOAuthConnectedServices, makeOAuthConnectedRevocationServices, coordinateOAuthConnected, coordinateOAuthConnectedRevocations } = makeOAuthTarget({
|
|
56
|
+
const makeIdentityServices = (mapping) => makeSqliteIdentityServices(mapping, "synchronous").pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)));
|
|
57
|
+
const makeSubjectProvisioningServices = (mapping) => makeSqliteSubjectProvisioningServices(mapping, "synchronous").pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)));
|
|
58
|
+
const makeExternalIdentityServices = (mapping) => makeSqliteExternalIdentityServices(mapping).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)));
|
|
59
|
+
const { makePasswordPreparedPersistenceServices, coordinatePasswordPreparedPersistence } = makeSqlitePasswordPreparedTarget(Database, sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
|
|
60
|
+
const { makeOAuthAccountsServices, makeOAuthSignInServices, makeOAuthRegistrationIntentServices, makeOAuthRegistrationServices, coordinateOAuthRegistration, coordinateOAuthSignIn, coordinateOAuthRegistrationIntents, coordinateOAuthAccounts, makeOAuthConnectedServices, makeOAuthConnectedRevocationServices, coordinateOAuthConnected, coordinateOAuthConnectedRevocations } = makeOAuthTarget(Database, {
|
|
79
61
|
mode: "synchronous",
|
|
80
62
|
dialect: "sqlite",
|
|
81
63
|
locking: false,
|
|
82
64
|
standaloneGuard: () => Effect.void
|
|
83
65
|
});
|
|
84
|
-
const { makePasskeyCredentialServices, makePasskeyPersistenceServices, makePasskeyEnrollmentContextServices, makePasskeyRegistrationCeremonyServices, coordinatePasskeyPersistence, coordinatePasskeyRegistrationCeremony, makePasskeyManagementServices, makePasskeyRegistrationServices, coordinatePasskeyManagement, coordinatePasskeyRegistration } = makePasskeyTarget({
|
|
66
|
+
const { makePasskeyCredentialServices, makePasskeyPersistenceServices, makePasskeyEnrollmentContextServices, makePasskeyRegistrationCeremonyServices, coordinatePasskeyPersistence, coordinatePasskeyRegistrationCeremony, makePasskeyManagementServices, makePasskeyRegistrationServices, coordinatePasskeyManagement, coordinatePasskeyRegistration } = makePasskeyTarget(Database, {
|
|
85
67
|
mode: "synchronous",
|
|
86
68
|
dialect: "sqlite",
|
|
87
69
|
locking: false,
|
|
88
70
|
standaloneGuard: () => Effect.void
|
|
89
71
|
});
|
|
90
|
-
const { makeTotpPersistenceServices, coordinateTotpPersistence } = makeTotpTarget({
|
|
72
|
+
const { makeTotpPersistenceServices, coordinateTotpPersistence } = makeTotpTarget(Database, {
|
|
91
73
|
mode: "synchronous",
|
|
92
74
|
dialect: "sqlite",
|
|
93
75
|
locking: false,
|
|
94
76
|
standaloneGuard: () => Effect.void
|
|
95
77
|
});
|
|
96
|
-
const { makePhonePersistenceServices, coordinatePhonePersistence } = makePhoneTarget({
|
|
78
|
+
const { makePhonePersistenceServices, coordinatePhonePersistence } = makePhoneTarget(Database, {
|
|
97
79
|
mode: "synchronous",
|
|
98
80
|
dialect: "sqlite",
|
|
99
81
|
locking: false,
|
|
100
82
|
standaloneGuard: () => Effect.void
|
|
101
83
|
});
|
|
102
84
|
//#endregion
|
|
103
|
-
export {
|
|
85
|
+
export { Database, commitMode, coordinateAuthenticationAuthority, coordinateEmailAddress, coordinateEmailRegistration, coordinateOAuthAccounts, coordinateOAuthConnected, coordinateOAuthConnectedRevocations, coordinateOAuthRegistration, coordinateOAuthRegistrationIntents, coordinateOAuthSignIn, coordinatePasskeyManagement, coordinatePasskeyPersistence, coordinatePasskeyRegistration, coordinatePasskeyRegistrationCeremony, coordinatePasswordPersistence, coordinatePasswordPreparedPersistence, coordinatePasswordRegistration, coordinatePendingAuthentication, coordinatePhonePersistence, coordinateProofPersistence, coordinateSessionStepUp, coordinateSignedSessionValidity, coordinateStatefulSessions, coordinateTotpPersistence, databaseLayer, makeAuthenticationAuthorityServices, makeEmailAddressServices, makeEmailRegistrationServices, makeEmailSignInServices, makeExternalIdentityServices, makeIdentityServices, makeOAuthAccountsServices, makeOAuthConnectedRevocationServices, makeOAuthConnectedServices, makeOAuthRegistrationIntentServices, makeOAuthRegistrationServices, makeOAuthSignInServices, makePasskeyCredentialServices, makePasskeyEnrollmentContextServices, makePasskeyManagementServices, makePasskeyPersistenceServices, makePasskeyRegistrationCeremonyServices, makePasskeyRegistrationServices, makePasswordPersistenceServices, makePasswordPreparedPersistenceServices, makePasswordRegistrationServices, makePendingAuthenticationServices, makePhonePersistenceServices, makeProofPersistenceServices, makeSessionStepUpServices, makeSignedSessionValidityServices, makeStatefulSessionServices, makeSubjectProvisioningServices, makeTotpPersistenceServices, passwordPreparedPersistenceLayer };
|
|
104
86
|
|
|
105
87
|
//# sourceMappingURL=SqliteDo.mjs.map
|
package/dist/SqliteDo.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteDo.mjs","names":[],"sources":["../src/SqliteDo.ts"],"sourcesContent":["import { OAuthStateDecisions } from \"@yielded/auth/OAuth\";\nimport { AuthStoreDecisions } from \"@yielded/auth/Persistence\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectSQLiteDoDatabase } from \"drizzle-orm/effect-sqlite-do\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Context, Effect } from \"effect\";\nimport type { SqlError } from \"effect/unstable/sql/SqlError\";\n\nimport type {\n AuthStoreTables,\n AuthTables,\n ExternalIdentityTables,\n IdentityTables,\n OAuthStateTables,\n SubjectProvisioningTables,\n} from \"./drizzle/model\";\nimport {\n makeSqliteAuthServices,\n makeSqliteAuthStoreServices,\n makeSqliteOAuthStateServices,\n} from \"./drizzle/sqlite\";\nimport { makeSqliteEmailTarget, sqliteEmailConfiguration } from \"./drizzle/sqlite-emails\";\nimport {\n makeSqliteExternalIdentityServices,\n makeSqliteIdentityServices,\n makeSqliteSubjectProvisioningServices,\n} from \"./drizzle/sqlite-identity\";\nimport { makeSqlitePasswordTarget, sqlitePasswordConfiguration } from \"./drizzle/sqlite-passwords\";\nimport { makeSqliteProofTarget, sqliteProofConfiguration } from \"./drizzle/sqlite-proofs\";\nimport { makeSqliteSessionTarget, sqliteSessionConfiguration } from \"./drizzle/sqlite-sessions\";\nimport type { SuppliedService } from \"./drizzle/SuppliedService\";\n\nconst sessionTarget = makeSqliteSessionTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(\n sqliteSessionConfiguration(\"synchronous\", Effect.void),\n);\n\nconst proofTarget = makeSqliteProofTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(\n sqliteProofConfiguration(\"synchronous\", Effect.void),\n);\n\nconst passwordTarget = makeSqlitePasswordTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(\n sqlitePasswordConfiguration(\"synchronous\", Effect.void, Effect.void),\n);\n\nconst emailTarget = makeSqliteEmailTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(\n sqliteEmailConfiguration(\"synchronous\", Effect.void, Effect.void),\n);\n\n/**\n * Email mutations must own their outer transactionSync. Arbitrary raw Drizzle\n * nesting is not detectable; owner bodies and mapping allocators stay runSync-compatible.\n */\nexport const {\n coordinateEmailAddress,\n coordinateEmailRegistration,\n makeEmailAddressServices,\n makeEmailRegistrationServices,\n makeEmailSignInServices,\n} = emailTarget;\n\n/**\n * Password mutations and registration must own their outer transactionSync.\n * Arbitrary raw Drizzle nesting is not detectable; owner bodies must remain\n * runSync-compatible. Detectable Effect commit scopes are rejected pre-write.\n */\nexport const {\n coordinatePasswordPersistence,\n coordinatePasswordRegistration,\n makePasswordPersistenceServices,\n makePasswordRegistrationServices,\n} = passwordTarget;\n\n/**\n * Proof mutations and coordinateProofPersistence must own their outermost\n * transactionSync call. The installed driver cannot detect an arbitrary raw\n * Drizzle outer transaction; calling either boundary from one is unsupported.\n * The owner body must remain runSync-compatible.\n */\nexport const { coordinateProofPersistence, makeProofPersistenceServices } = proofTarget;\n\n/**\n * Session mutation methods and coordinate* functions must own their outermost\n * transactionSync call. The installed Drizzle driver exposes no context marker\n * for an arbitrary raw outer database.transaction call, so invoking either\n * boundary from one is unsupported and cannot be detected. Detectable Effect\n * commit scopes are rejected before writes.\n */\nexport const {\n coordinateAuthenticationAuthority,\n coordinatePendingAuthentication,\n coordinateSignedSessionValidity,\n coordinateStatefulSessions,\n makeAuthenticationAuthorityServices,\n makePendingAuthenticationServices,\n makeSessionStepUpServices,\n coordinateSessionStepUp,\n makeSignedSessionValidityServices,\n makeStatefulSessionServices,\n} = sessionTarget;\n\nexport const commitMode = \"synchronous\" as const;\n\nexport const makeAuthStoreServices = <C extends AnySQLiteTable, R extends AnySQLiteTable>(\n database: EffectSQLiteDoDatabase<AnyRelations>,\n mapping: AuthStoreTables<C, R>,\n) => makeSqliteAuthStoreServices(database, mapping);\n\nexport const makeOAuthStateServices = <S extends AnySQLiteTable>(\n database: EffectSQLiteDoDatabase<AnyRelations>,\n mapping: OAuthStateTables<S>,\n) => makeSqliteOAuthStateServices(database, mapping);\n\nexport const makeAuthServices = <\n C extends AnySQLiteTable,\n R extends AnySQLiteTable,\n S extends AnySQLiteTable,\n>(\n database: EffectSQLiteDoDatabase<AnyRelations>,\n mapping: AuthTables<C, R, S>,\n) => makeSqliteAuthServices(database, mapping);\n\ntype TransactionOf<D extends EffectSQLiteDoDatabase<AnyRelations>> = Parameters<\n Parameters<D[\"transaction\"]>[0]\n>[0];\n\nexport function coordinateAuthStoreTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n C extends AnySQLiteTable,\n R extends AnySQLiteTable,\n A,\n E,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: { readonly mapping: AuthStoreTables<C, R>; readonly transaction?: never },\n body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions>>,\n): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;\n\nexport function coordinateAuthStoreTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n C extends AnySQLiteTable,\n R extends AnySQLiteTable,\n A,\n E,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthStoreTables<C, R>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | TxId>>,\n): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;\n\nexport function coordinateAuthStoreTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n C extends AnySQLiteTable,\n R extends AnySQLiteTable,\n A,\n E,\n Requirements,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthStoreTables<C, R>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, Requirements>,\n) {\n return Effect.flatMap(acquire, (database) =>\n database.transaction<A, E, Exclude<Requirements, AuthStoreDecisions>>((transaction) => {\n const decisions = makeSqliteAuthStoreServices(transaction, options.mapping).decisions;\n const provided = Context.make(AuthStoreDecisions, decisions);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(\n work,\n options.transaction,\n options.transaction.of(transaction as TransactionOf<D>),\n );\n }),\n );\n}\n\nexport function coordinateOAuthStateTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n S extends AnySQLiteTable,\n A,\n E,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: { readonly mapping: OAuthStateTables<S>; readonly transaction?: never },\n body: Effect.Effect<A, E, NoInfer<OAuthStateDecisions>>,\n): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;\n\nexport function coordinateOAuthStateTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n S extends AnySQLiteTable,\n A,\n E,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthStateTables<S>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, NoInfer<OAuthStateDecisions | TxId>>,\n): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;\n\nexport function coordinateOAuthStateTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n S extends AnySQLiteTable,\n A,\n E,\n Requirements,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthStateTables<S>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, Requirements>,\n) {\n return Effect.flatMap(acquire, (database) =>\n database.transaction<A, E, Exclude<Requirements, OAuthStateDecisions>>((transaction) => {\n const decisions = makeSqliteOAuthStateServices(transaction, options.mapping).decisions;\n const provided = Context.make(OAuthStateDecisions, decisions);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(\n work,\n options.transaction,\n options.transaction.of(transaction as TransactionOf<D>),\n );\n }),\n );\n}\n\n/**\n * Supported composition boundary for Durable Objects. The owner must return\n * decisions as values and translate rejection only after this root\n * transactionSync commit. Its body may contain only runSync-compatible Effects;\n * the installed driver rejects suspension and rolls back. Owner failure rolls\n * back synchronously, so no retry is performed inside this boundary.\n */\nexport function coordinateAuthTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n C extends AnySQLiteTable,\n R extends AnySQLiteTable,\n S extends AnySQLiteTable,\n A,\n E,\n DatabaseError,\n DatabaseRequirements,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: { readonly mapping: AuthTables<C, R, S>; readonly transaction?: never },\n body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | OAuthStateDecisions>>,\n): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;\n\nexport function coordinateAuthTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n C extends AnySQLiteTable,\n R extends AnySQLiteTable,\n S extends AnySQLiteTable,\n A,\n E,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthTables<C, R, S>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | OAuthStateDecisions | TxId>>,\n): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;\n\nexport function coordinateAuthTransaction<\n D extends EffectSQLiteDoDatabase<AnyRelations>,\n C extends AnySQLiteTable,\n R extends AnySQLiteTable,\n S extends AnySQLiteTable,\n A,\n E,\n Requirements,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: AuthTables<C, R, S>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;\n },\n body: Effect.Effect<A, E, Requirements>,\n) {\n return Effect.flatMap(acquire, (database) =>\n database.transaction<A, E, Exclude<Requirements, AuthStoreDecisions | OAuthStateDecisions>>(\n (transaction) => {\n const decisions = makeSqliteAuthServices(transaction, options.mapping).decisions;\n\n const provided = Context.make(AuthStoreDecisions, decisions).pipe(\n Context.add(OAuthStateDecisions, decisions),\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(\n work,\n options.transaction,\n options.transaction.of(transaction as TransactionOf<D>),\n );\n },\n ),\n );\n}\n\nexport const makeIdentityServices = <\n Subject extends AnySQLiteTable,\n Identifier extends AnySQLiteTable,\n External extends AnySQLiteTable,\n Request extends AnySQLiteTable,\n NativeId,\n>(\n database: EffectSQLiteDoDatabase<AnyRelations>,\n mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,\n) => makeSqliteIdentityServices(database, mapping, \"synchronous\");\n\nexport const makeSubjectProvisioningServices = <\n Subject extends AnySQLiteTable,\n Identifier extends AnySQLiteTable,\n Request extends AnySQLiteTable,\n NativeId,\n>(\n database: EffectSQLiteDoDatabase<AnyRelations>,\n mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,\n) => makeSqliteSubjectProvisioningServices(database, mapping, \"synchronous\");\n\nexport const makeExternalIdentityServices = <\n Subject extends AnySQLiteTable,\n External extends AnySQLiteTable,\n NativeId,\n>(\n database: EffectSQLiteDoDatabase<AnyRelations>,\n mapping: ExternalIdentityTables<Subject, External, NativeId>,\n) => makeSqliteExternalIdentityServices(database, mapping);\n\nimport { makeSqlitePasswordPreparedTarget } from \"./drizzle/sqlite-password-prepared\";\n\nconst passwordPreparedTarget = makeSqlitePasswordPreparedTarget<\n EffectSQLiteDoDatabase<AnyRelations>,\n true\n>(sqlitePasswordConfiguration(\"synchronous\", Effect.void, Effect.void));\n\nexport const { makePasswordPreparedPersistenceServices, coordinatePasswordPreparedPersistence } =\n passwordPreparedTarget;\n\nexport { passwordPreparedPersistenceLayer } from \"./drizzle/password-prepared-target\";\n\nimport { makeOAuthTarget } from \"./drizzle/oauth-drivers\";\n\nconst oauthTarget = makeOAuthTarget<\n EffectSQLiteDoDatabase<AnyRelations>,\n AnySQLiteTable<{ dialect: \"sqlite\" }>,\n true\n>({\n mode: \"synchronous\",\n dialect: \"sqlite\",\n locking: false,\n standaloneGuard: () => Effect.void,\n});\n\nexport const {\n makeOAuthAccountsServices,\n makeOAuthSignInServices,\n makeOAuthRegistrationIntentServices,\n makeOAuthRegistrationServices,\n coordinateOAuthRegistration,\n coordinateOAuthSignIn,\n coordinateOAuthRegistrationIntents,\n coordinateOAuthAccounts,\n makeOAuthConnectedServices,\n makeOAuthConnectedRevocationServices,\n coordinateOAuthConnected,\n coordinateOAuthConnectedRevocations,\n} = oauthTarget;\n\nimport { makePasskeyTarget } from \"./drizzle/passkey-drivers\";\n\nconst passkeyTarget = makePasskeyTarget<\n EffectSQLiteDoDatabase<AnyRelations>,\n AnySQLiteTable<{ dialect: \"sqlite\" }>,\n unknown,\n true\n>({\n mode: \"synchronous\",\n dialect: \"sqlite\",\n locking: false,\n standaloneGuard: () => Effect.void,\n});\n\nexport const {\n makePasskeyCredentialServices,\n makePasskeyPersistenceServices,\n makePasskeyEnrollmentContextServices,\n makePasskeyRegistrationCeremonyServices,\n coordinatePasskeyPersistence,\n coordinatePasskeyRegistrationCeremony,\n makePasskeyManagementServices,\n makePasskeyRegistrationServices,\n coordinatePasskeyManagement,\n coordinatePasskeyRegistration,\n} = passkeyTarget;\n\nimport { makeTotpTarget } from \"./drizzle/totp-target\";\n\nconst totpTarget = makeTotpTarget<\n EffectSQLiteDoDatabase<AnyRelations>,\n AnySQLiteTable<{ dialect: \"sqlite\" }>,\n unknown,\n true\n>({\n mode: \"synchronous\",\n dialect: \"sqlite\",\n locking: false,\n standaloneGuard: () => Effect.void,\n});\n\nexport const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTarget;\n\nimport { makePhoneTarget } from \"./drizzle/phone-target\";\n\nconst phoneTarget = makePhoneTarget<\n EffectSQLiteDoDatabase<AnyRelations>,\n AnySQLiteTable<{ dialect: \"sqlite\" }>,\n unknown,\n true\n>({\n mode: \"synchronous\",\n dialect: \"sqlite\",\n locking: false,\n standaloneGuard: () => Effect.void,\n});\n\nexport const { makePhonePersistenceServices, coordinatePhonePersistence } = phoneTarget;\n"],"mappings":";;;;;;;;;;;;;;;;AAgCA,MAAM,gBAAgB,wBACpB,2BAA2B,eAAe,OAAO,IAAI,CACvD;AAEA,MAAM,cAAc,sBAClB,yBAAyB,eAAe,OAAO,IAAI,CACrD;AAEA,MAAM,iBAAiB,yBACrB,4BAA4B,eAAe,OAAO,MAAM,OAAO,IAAI,CACrE;;;;;AAUA,MAAa,EACX,wBACA,6BACA,0BACA,+BACA,4BAbkB,sBAClB,yBAAyB,eAAe,OAAO,MAAM,OAAO,IAAI,CAa9D;;;;;;AAOJ,MAAa,EACX,+BACA,gCACA,iCACA,qCACE;;;;;;;AAQJ,MAAa,EAAE,4BAA4B,iCAAiC;;;;;;;;AAS5E,MAAa,EACX,mCACA,iCACA,iCACA,4BACA,qCACA,mCACA,2BACA,yBACA,mCACA,gCACE;AAEJ,MAAa,aAAa;AAE1B,MAAa,yBACX,UACA,YACG,4BAA4B,UAAU,OAAO;AAElD,MAAa,0BACX,UACA,YACG,6BAA6B,UAAU,OAAO;AAEnD,MAAa,oBAKX,UACA,YACG,uBAAuB,UAAU,OAAO;AAuC7C,SAAgB,+BAYd,SACA,SAIA,MACA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,SAAS,aAA8D,gBAAgB;EACrF,MAAM,YAAY,4BAA4B,aAAa,QAAQ,OAAO,CAAC,CAAC;EAC5E,MAAM,WAAW,QAAQ,KAAK,oBAAoB,SAAS;EAC3D,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eACL,MACA,QAAQ,aACR,QAAQ,YAAY,GAAG,WAA+B,CACxD;CACN,CAAC,CACH;AACF;AAiCA,SAAgB,gCAWd,SACA,SAIA,MACA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,SAAS,aAA+D,gBAAgB;EACtF,MAAM,YAAY,6BAA6B,aAAa,QAAQ,OAAO,CAAC,CAAC;EAC7E,MAAM,WAAW,QAAQ,KAAK,qBAAqB,SAAS;EAC5D,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eACL,MACA,QAAQ,aACR,QAAQ,YAAY,GAAG,WAA+B,CACxD;CACN,CAAC,CACH;AACF;AA4CA,SAAgB,0BAad,SACA,SAIA,MACA;CACA,OAAO,OAAO,QAAQ,UAAU,aAC9B,SAAS,aACN,gBAAgB;EACf,MAAM,YAAY,uBAAuB,aAAa,QAAQ,OAAO,CAAC,CAAC;EAEvE,MAAM,WAAW,QAAQ,KAAK,oBAAoB,SAAS,CAAC,CAAC,KAC3D,QAAQ,IAAI,qBAAqB,SAAS,CAC5C;EAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;EAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eACL,MACA,QAAQ,aACR,QAAQ,YAAY,GAAG,WAA+B,CACxD;CACN,CACF,CACF;AACF;AAEA,MAAa,wBAOX,UACA,YACG,2BAA2B,UAAU,SAAS,aAAa;AAEhE,MAAa,mCAMX,UACA,YACG,sCAAsC,UAAU,SAAS,aAAa;AAE3E,MAAa,gCAKX,UACA,YACG,mCAAmC,UAAU,OAAO;AASzD,MAAa,EAAE,yCAAyC,0CALzB,iCAG7B,4BAA4B,eAAe,OAAO,MAAM,OAAO,IAAI,CAGnE;AAiBF,MAAa,EACX,2BACA,yBACA,qCACA,+BACA,6BACA,uBACA,oCACA,yBACA,4BACA,sCACA,0BACA,wCAvBkB,gBAIlB;CACA,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC,CAeI;AAgBJ,MAAa,EACX,+BACA,gCACA,sCACA,yCACA,8BACA,uCACA,+BACA,iCACA,6BACA,kCAtBoB,kBAKpB;CACA,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC,CAaI;AAgBJ,MAAa,EAAE,6BAA6B,8BAZzB,eAKjB;CACA,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC,CAE0E;AAgB1E,MAAa,EAAE,8BAA8B,+BAZzB,gBAKlB;CACA,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC,CAE4E"}
|
|
1
|
+
{"version":3,"file":"SqliteDo.mjs","names":[],"sources":["../src/SqliteDo.ts"],"sourcesContent":["import { SqliteClient } from \"@effect/sql-sqlite-do/SqliteClient\";\nimport { NativeDatabase, PersistenceConfigurationError } from \"@yielded/auth-persistence/Adapter\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport { type EffectSQLiteDoDatabase, makeWithDefaults } from \"drizzle-orm/effect-sqlite-do\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Context, Effect, Layer } from \"effect\";\n\nimport { nativeDatabase } from \"./drizzle/native-database\";\n\n/** The application-owned Drizzle database used to construct persistence services. */\nexport class Database extends Context.Service<Database, EffectSQLiteDoDatabase<AnyRelations>>()(\n \"effect-auth/persistence-drizzle/SqliteDo/Database\",\n) {}\n\n/** The SQL-client Layer must configure storage so Drizzle owns transactionSync. */\nexport const databaseLayer = Layer.effect(\n Database,\n Effect.gen(function* () {\n const client = yield* SqliteClient;\n const storage = client.config.storage;\n\n if (storage === undefined)\n return yield* PersistenceConfigurationError.make({\n reason:\n \"SqliteDo requires a SQL client configured with storage for synchronous transactions\",\n });\n\n return yield* makeWithDefaults({ storage });\n }),\n);\n\nimport type {\n ExternalIdentityTables,\n IdentityTables,\n SubjectProvisioningTables,\n} from \"./drizzle/model\";\nimport { makeSqliteEmailTarget, sqliteEmailConfiguration } from \"./drizzle/sqlite-emails\";\nimport {\n makeSqliteExternalIdentityServices,\n makeSqliteIdentityServices,\n makeSqliteSubjectProvisioningServices,\n} from \"./drizzle/sqlite-identity\";\nimport { makeSqlitePasswordTarget, sqlitePasswordConfiguration } from \"./drizzle/sqlite-passwords\";\nimport { makeSqliteProofTarget, sqliteProofConfiguration } from \"./drizzle/sqlite-proofs\";\nimport { makeSqliteSessionTarget, sqliteSessionConfiguration } from \"./drizzle/sqlite-sessions\";\n\nconst sessionTarget = makeSqliteSessionTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(\n Database,\n sqliteSessionConfiguration(\"synchronous\", Effect.void),\n);\n\nconst proofTarget = makeSqliteProofTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(\n Database,\n sqliteProofConfiguration(\"synchronous\", Effect.void),\n);\n\nconst passwordTarget = makeSqlitePasswordTarget<\n Database,\n EffectSQLiteDoDatabase<AnyRelations>,\n true\n>(Database, sqlitePasswordConfiguration(\"synchronous\", Effect.void, Effect.void));\n\nconst emailTarget = makeSqliteEmailTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(\n Database,\n sqliteEmailConfiguration(\"synchronous\", Effect.void, Effect.void),\n);\n\n/**\n * Email mutations must own their outer transactionSync. Arbitrary raw Drizzle\n * nesting is not detectable; owner bodies and mapping allocators stay runSync-compatible.\n */\nexport const {\n coordinateEmailAddress,\n coordinateEmailRegistration,\n makeEmailAddressServices,\n makeEmailRegistrationServices,\n makeEmailSignInServices,\n} = emailTarget;\n\n/**\n * Password mutations and registration must own their outer transactionSync.\n * Arbitrary raw Drizzle nesting is not detectable; owner bodies must remain\n * runSync-compatible. Detectable Effect commit scopes are rejected pre-write.\n */\nexport const {\n coordinatePasswordPersistence,\n coordinatePasswordRegistration,\n makePasswordPersistenceServices,\n makePasswordRegistrationServices,\n} = passwordTarget;\n\n/**\n * Proof mutations and coordinateProofPersistence must own their outermost\n * transactionSync call. The installed driver cannot detect an arbitrary raw\n * Drizzle outer transaction; calling either boundary from one is unsupported.\n * The owner body must remain runSync-compatible.\n */\nexport const { coordinateProofPersistence, makeProofPersistenceServices } = proofTarget;\n\n/**\n * Session mutation methods and coordinate* functions must own their outermost\n * transactionSync call. The installed Drizzle driver exposes no context marker\n * for an arbitrary raw outer database.transaction call, so invoking either\n * boundary from one is unsupported and cannot be detected. Detectable Effect\n * commit scopes are rejected before writes.\n */\nexport const {\n coordinateAuthenticationAuthority,\n coordinatePendingAuthentication,\n coordinateSignedSessionValidity,\n coordinateStatefulSessions,\n makeAuthenticationAuthorityServices,\n makePendingAuthenticationServices,\n makeSessionStepUpServices,\n coordinateSessionStepUp,\n makeSignedSessionValidityServices,\n makeStatefulSessionServices,\n} = sessionTarget;\n\nexport const commitMode = \"synchronous\" as const;\n\nexport const makeIdentityServices = <\n Subject extends AnySQLiteTable,\n Identifier extends AnySQLiteTable,\n External extends AnySQLiteTable,\n Request extends AnySQLiteTable,\n NativeId,\n>(\n mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,\n) =>\n makeSqliteIdentityServices(mapping, \"synchronous\").pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),\n );\n\nexport const makeSubjectProvisioningServices = <\n Subject extends AnySQLiteTable,\n Identifier extends AnySQLiteTable,\n Request extends AnySQLiteTable,\n NativeId,\n>(\n mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,\n) =>\n makeSqliteSubjectProvisioningServices(mapping, \"synchronous\").pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),\n );\n\nexport const makeExternalIdentityServices = <\n Subject extends AnySQLiteTable,\n External extends AnySQLiteTable,\n NativeId,\n>(\n mapping: ExternalIdentityTables<Subject, External, NativeId>,\n) =>\n makeSqliteExternalIdentityServices(mapping).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),\n );\n\nimport { makeSqlitePasswordPreparedTarget } from \"./drizzle/sqlite-password-prepared\";\n\nconst passwordPreparedTarget = makeSqlitePasswordPreparedTarget<\n Database,\n EffectSQLiteDoDatabase<AnyRelations>,\n true\n>(Database, sqlitePasswordConfiguration(\"synchronous\", Effect.void, Effect.void));\n\nexport const { makePasswordPreparedPersistenceServices, coordinatePasswordPreparedPersistence } =\n passwordPreparedTarget;\n\nexport { passwordPreparedPersistenceLayer } from \"./drizzle/password-prepared-target\";\n\nimport { makeOAuthTarget } from \"./drizzle/oauth-drivers\";\n\nconst oauthTarget = makeOAuthTarget<\n Database,\n EffectSQLiteDoDatabase<AnyRelations>,\n AnySQLiteTable<{ dialect: \"sqlite\" }>,\n true\n>(Database, {\n mode: \"synchronous\",\n dialect: \"sqlite\",\n locking: false,\n standaloneGuard: () => Effect.void,\n});\n\nexport const {\n makeOAuthAccountsServices,\n makeOAuthSignInServices,\n makeOAuthRegistrationIntentServices,\n makeOAuthRegistrationServices,\n coordinateOAuthRegistration,\n coordinateOAuthSignIn,\n coordinateOAuthRegistrationIntents,\n coordinateOAuthAccounts,\n makeOAuthConnectedServices,\n makeOAuthConnectedRevocationServices,\n coordinateOAuthConnected,\n coordinateOAuthConnectedRevocations,\n} = oauthTarget;\n\nimport { makePasskeyTarget } from \"./drizzle/passkey-drivers\";\n\nconst passkeyTarget = makePasskeyTarget<\n Database,\n EffectSQLiteDoDatabase<AnyRelations>,\n AnySQLiteTable<{ dialect: \"sqlite\" }>,\n unknown,\n true\n>(Database, {\n mode: \"synchronous\",\n dialect: \"sqlite\",\n locking: false,\n standaloneGuard: () => Effect.void,\n});\n\nexport const {\n makePasskeyCredentialServices,\n makePasskeyPersistenceServices,\n makePasskeyEnrollmentContextServices,\n makePasskeyRegistrationCeremonyServices,\n coordinatePasskeyPersistence,\n coordinatePasskeyRegistrationCeremony,\n makePasskeyManagementServices,\n makePasskeyRegistrationServices,\n coordinatePasskeyManagement,\n coordinatePasskeyRegistration,\n} = passkeyTarget;\n\nimport { makeTotpTarget } from \"./drizzle/totp-target\";\n\nconst totpTarget = makeTotpTarget<\n Database,\n EffectSQLiteDoDatabase<AnyRelations>,\n AnySQLiteTable<{ dialect: \"sqlite\" }>,\n unknown,\n true\n>(Database, {\n mode: \"synchronous\",\n dialect: \"sqlite\",\n locking: false,\n standaloneGuard: () => Effect.void,\n});\n\nexport const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTarget;\n\nimport { makePhoneTarget } from \"./drizzle/phone-target\";\n\nconst phoneTarget = makePhoneTarget<\n Database,\n EffectSQLiteDoDatabase<AnyRelations>,\n AnySQLiteTable<{ dialect: \"sqlite\" }>,\n unknown,\n true\n>(Database, {\n mode: \"synchronous\",\n dialect: \"sqlite\",\n locking: false,\n standaloneGuard: () => Effect.void,\n});\n\nexport const { makePhonePersistenceServices, coordinatePhonePersistence } = phoneTarget;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAUA,IAAa,WAAb,cAA8B,QAAQ,QAAwD,CAAC,CAC7F,mDACF,CAAC,CAAC,CAAC;;AAGH,MAAa,gBAAgB,MAAM,OACjC,UACA,OAAO,IAAI,aAAa;CAEtB,MAAM,WAAU,OADM,aAAA,CACC,OAAO;CAE9B,IAAI,YAAY,KAAA,GACd,OAAO,OAAO,8BAA8B,KAAK,EAC/C,QACE,sFACJ,CAAC;CAEH,OAAO,OAAO,iBAAiB,EAAE,QAAQ,CAAC;AAC5C,CAAC,CACH;AAiBA,MAAM,gBAAgB,wBACpB,UACA,2BAA2B,eAAe,OAAO,IAAI,CACvD;AAEA,MAAM,cAAc,sBAClB,UACA,yBAAyB,eAAe,OAAO,IAAI,CACrD;AAEA,MAAM,iBAAiB,yBAIrB,UAAU,4BAA4B,eAAe,OAAO,MAAM,OAAO,IAAI,CAAC;;;;;AAWhF,MAAa,EACX,wBACA,6BACA,0BACA,+BACA,4BAdkB,sBAClB,UACA,yBAAyB,eAAe,OAAO,MAAM,OAAO,IAAI,CAa9D;;;;;;AAOJ,MAAa,EACX,+BACA,gCACA,iCACA,qCACE;;;;;;;AAQJ,MAAa,EAAE,4BAA4B,iCAAiC;;;;;;;;AAS5E,MAAa,EACX,mCACA,iCACA,iCACA,4BACA,qCACA,mCACA,2BACA,yBACA,mCACA,gCACE;AAEJ,MAAa,aAAa;AAE1B,MAAa,wBAOX,YAEA,2BAA2B,SAAS,aAAa,CAAC,CAAC,KACjD,OAAO,qBAAqB,gBAAgB,eAAe,QAAQ,CAAC,CACtE;AAEF,MAAa,mCAMX,YAEA,sCAAsC,SAAS,aAAa,CAAC,CAAC,KAC5D,OAAO,qBAAqB,gBAAgB,eAAe,QAAQ,CAAC,CACtE;AAEF,MAAa,gCAKX,YAEA,mCAAmC,OAAO,CAAC,CAAC,KAC1C,OAAO,qBAAqB,gBAAgB,eAAe,QAAQ,CAAC,CACtE;AAUF,MAAa,EAAE,yCAAyC,0CANzB,iCAI7B,UAAU,4BAA4B,eAAe,OAAO,MAAM,OAAO,IAAI,CAG7E;AAkBF,MAAa,EACX,2BACA,yBACA,qCACA,+BACA,6BACA,uBACA,oCACA,yBACA,4BACA,sCACA,0BACA,wCAxBkB,gBAKlB,UAAU;CACV,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC,CAeI;AAiBJ,MAAa,EACX,+BACA,gCACA,sCACA,yCACA,8BACA,uCACA,+BACA,iCACA,6BACA,kCAvBoB,kBAMpB,UAAU;CACV,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC,CAaI;AAiBJ,MAAa,EAAE,6BAA6B,8BAbzB,eAMjB,UAAU;CACV,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC,CAE0E;AAiB1E,MAAa,EAAE,8BAA8B,+BAbzB,gBAMlB,UAAU;CACV,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC,CAE4E"}
|