@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/src/SqliteDo.ts
CHANGED
|
@@ -1,24 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { SqliteClient } from "@effect/sql-sqlite-do/SqliteClient";
|
|
2
|
+
import { NativeDatabase, PersistenceConfigurationError } from "@yielded/auth-persistence/Adapter";
|
|
3
3
|
import type { AnyRelations } from "drizzle-orm";
|
|
4
|
-
import type
|
|
4
|
+
import { type EffectSQLiteDoDatabase, makeWithDefaults } from "drizzle-orm/effect-sqlite-do";
|
|
5
5
|
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
6
|
-
import { Context, Effect } from "effect";
|
|
7
|
-
|
|
6
|
+
import { Context, Effect, Layer } from "effect";
|
|
7
|
+
|
|
8
|
+
import { nativeDatabase } from "./drizzle/native-database";
|
|
9
|
+
|
|
10
|
+
/** The application-owned Drizzle database used to construct persistence services. */
|
|
11
|
+
export class Database extends Context.Service<Database, EffectSQLiteDoDatabase<AnyRelations>>()(
|
|
12
|
+
"effect-auth/persistence-drizzle/SqliteDo/Database",
|
|
13
|
+
) {}
|
|
14
|
+
|
|
15
|
+
/** The SQL-client Layer must configure storage so Drizzle owns transactionSync. */
|
|
16
|
+
export const databaseLayer = Layer.effect(
|
|
17
|
+
Database,
|
|
18
|
+
Effect.gen(function* () {
|
|
19
|
+
const client = yield* SqliteClient;
|
|
20
|
+
const storage = client.config.storage;
|
|
21
|
+
|
|
22
|
+
if (storage === undefined)
|
|
23
|
+
return yield* PersistenceConfigurationError.make({
|
|
24
|
+
reason:
|
|
25
|
+
"SqliteDo requires a SQL client configured with storage for synchronous transactions",
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return yield* makeWithDefaults({ storage });
|
|
29
|
+
}),
|
|
30
|
+
);
|
|
8
31
|
|
|
9
32
|
import type {
|
|
10
|
-
AuthStoreTables,
|
|
11
|
-
AuthTables,
|
|
12
33
|
ExternalIdentityTables,
|
|
13
34
|
IdentityTables,
|
|
14
|
-
OAuthStateTables,
|
|
15
35
|
SubjectProvisioningTables,
|
|
16
36
|
} from "./drizzle/model";
|
|
17
|
-
import {
|
|
18
|
-
makeSqliteAuthServices,
|
|
19
|
-
makeSqliteAuthStoreServices,
|
|
20
|
-
makeSqliteOAuthStateServices,
|
|
21
|
-
} from "./drizzle/sqlite";
|
|
22
37
|
import { makeSqliteEmailTarget, sqliteEmailConfiguration } from "./drizzle/sqlite-emails";
|
|
23
38
|
import {
|
|
24
39
|
makeSqliteExternalIdentityServices,
|
|
@@ -28,21 +43,25 @@ import {
|
|
|
28
43
|
import { makeSqlitePasswordTarget, sqlitePasswordConfiguration } from "./drizzle/sqlite-passwords";
|
|
29
44
|
import { makeSqliteProofTarget, sqliteProofConfiguration } from "./drizzle/sqlite-proofs";
|
|
30
45
|
import { makeSqliteSessionTarget, sqliteSessionConfiguration } from "./drizzle/sqlite-sessions";
|
|
31
|
-
import type { SuppliedService } from "./drizzle/SuppliedService";
|
|
32
46
|
|
|
33
|
-
const sessionTarget = makeSqliteSessionTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(
|
|
47
|
+
const sessionTarget = makeSqliteSessionTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(
|
|
48
|
+
Database,
|
|
34
49
|
sqliteSessionConfiguration("synchronous", Effect.void),
|
|
35
50
|
);
|
|
36
51
|
|
|
37
|
-
const proofTarget = makeSqliteProofTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(
|
|
52
|
+
const proofTarget = makeSqliteProofTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(
|
|
53
|
+
Database,
|
|
38
54
|
sqliteProofConfiguration("synchronous", Effect.void),
|
|
39
55
|
);
|
|
40
56
|
|
|
41
|
-
const passwordTarget = makeSqlitePasswordTarget<
|
|
42
|
-
|
|
43
|
-
|
|
57
|
+
const passwordTarget = makeSqlitePasswordTarget<
|
|
58
|
+
Database,
|
|
59
|
+
EffectSQLiteDoDatabase<AnyRelations>,
|
|
60
|
+
true
|
|
61
|
+
>(Database, sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
|
|
44
62
|
|
|
45
|
-
const emailTarget = makeSqliteEmailTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(
|
|
63
|
+
const emailTarget = makeSqliteEmailTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(
|
|
64
|
+
Database,
|
|
46
65
|
sqliteEmailConfiguration("synchronous", Effect.void, Effect.void),
|
|
47
66
|
);
|
|
48
67
|
|
|
@@ -100,249 +119,6 @@ export const {
|
|
|
100
119
|
|
|
101
120
|
export const commitMode = "synchronous" as const;
|
|
102
121
|
|
|
103
|
-
export const makeAuthStoreServices = <C extends AnySQLiteTable, R extends AnySQLiteTable>(
|
|
104
|
-
database: EffectSQLiteDoDatabase<AnyRelations>,
|
|
105
|
-
mapping: AuthStoreTables<C, R>,
|
|
106
|
-
) => makeSqliteAuthStoreServices(database, mapping);
|
|
107
|
-
|
|
108
|
-
export const makeOAuthStateServices = <S extends AnySQLiteTable>(
|
|
109
|
-
database: EffectSQLiteDoDatabase<AnyRelations>,
|
|
110
|
-
mapping: OAuthStateTables<S>,
|
|
111
|
-
) => makeSqliteOAuthStateServices(database, mapping);
|
|
112
|
-
|
|
113
|
-
export const makeAuthServices = <
|
|
114
|
-
C extends AnySQLiteTable,
|
|
115
|
-
R extends AnySQLiteTable,
|
|
116
|
-
S extends AnySQLiteTable,
|
|
117
|
-
>(
|
|
118
|
-
database: EffectSQLiteDoDatabase<AnyRelations>,
|
|
119
|
-
mapping: AuthTables<C, R, S>,
|
|
120
|
-
) => makeSqliteAuthServices(database, mapping);
|
|
121
|
-
|
|
122
|
-
type TransactionOf<D extends EffectSQLiteDoDatabase<AnyRelations>> = Parameters<
|
|
123
|
-
Parameters<D["transaction"]>[0]
|
|
124
|
-
>[0];
|
|
125
|
-
|
|
126
|
-
export function coordinateAuthStoreTransaction<
|
|
127
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
128
|
-
C extends AnySQLiteTable,
|
|
129
|
-
R extends AnySQLiteTable,
|
|
130
|
-
A,
|
|
131
|
-
E,
|
|
132
|
-
DatabaseError,
|
|
133
|
-
DatabaseRequirements,
|
|
134
|
-
>(
|
|
135
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
136
|
-
options: { readonly mapping: AuthStoreTables<C, R>; readonly transaction?: never },
|
|
137
|
-
body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions>>,
|
|
138
|
-
): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
|
|
139
|
-
|
|
140
|
-
export function coordinateAuthStoreTransaction<
|
|
141
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
142
|
-
C extends AnySQLiteTable,
|
|
143
|
-
R extends AnySQLiteTable,
|
|
144
|
-
A,
|
|
145
|
-
E,
|
|
146
|
-
DatabaseError,
|
|
147
|
-
DatabaseRequirements,
|
|
148
|
-
TxId,
|
|
149
|
-
TxShape,
|
|
150
|
-
>(
|
|
151
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
152
|
-
options: {
|
|
153
|
-
readonly mapping: AuthStoreTables<C, R>;
|
|
154
|
-
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
155
|
-
},
|
|
156
|
-
body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | TxId>>,
|
|
157
|
-
): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
|
|
158
|
-
|
|
159
|
-
export function coordinateAuthStoreTransaction<
|
|
160
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
161
|
-
C extends AnySQLiteTable,
|
|
162
|
-
R extends AnySQLiteTable,
|
|
163
|
-
A,
|
|
164
|
-
E,
|
|
165
|
-
Requirements,
|
|
166
|
-
DatabaseError,
|
|
167
|
-
DatabaseRequirements,
|
|
168
|
-
TxId,
|
|
169
|
-
TxShape,
|
|
170
|
-
>(
|
|
171
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
172
|
-
options: {
|
|
173
|
-
readonly mapping: AuthStoreTables<C, R>;
|
|
174
|
-
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
175
|
-
},
|
|
176
|
-
body: Effect.Effect<A, E, Requirements>,
|
|
177
|
-
) {
|
|
178
|
-
return Effect.flatMap(acquire, (database) =>
|
|
179
|
-
database.transaction<A, E, Exclude<Requirements, AuthStoreDecisions>>((transaction) => {
|
|
180
|
-
const decisions = makeSqliteAuthStoreServices(transaction, options.mapping).decisions;
|
|
181
|
-
const provided = Context.make(AuthStoreDecisions, decisions);
|
|
182
|
-
const work = Effect.provideContext(body, provided);
|
|
183
|
-
|
|
184
|
-
return options.transaction === undefined
|
|
185
|
-
? work
|
|
186
|
-
: Effect.provideService(
|
|
187
|
-
work,
|
|
188
|
-
options.transaction,
|
|
189
|
-
options.transaction.of(transaction as TransactionOf<D>),
|
|
190
|
-
);
|
|
191
|
-
}),
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
export function coordinateOAuthStateTransaction<
|
|
196
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
197
|
-
S extends AnySQLiteTable,
|
|
198
|
-
A,
|
|
199
|
-
E,
|
|
200
|
-
DatabaseError,
|
|
201
|
-
DatabaseRequirements,
|
|
202
|
-
>(
|
|
203
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
204
|
-
options: { readonly mapping: OAuthStateTables<S>; readonly transaction?: never },
|
|
205
|
-
body: Effect.Effect<A, E, NoInfer<OAuthStateDecisions>>,
|
|
206
|
-
): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
|
|
207
|
-
|
|
208
|
-
export function coordinateOAuthStateTransaction<
|
|
209
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
210
|
-
S extends AnySQLiteTable,
|
|
211
|
-
A,
|
|
212
|
-
E,
|
|
213
|
-
DatabaseError,
|
|
214
|
-
DatabaseRequirements,
|
|
215
|
-
TxId,
|
|
216
|
-
TxShape,
|
|
217
|
-
>(
|
|
218
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
219
|
-
options: {
|
|
220
|
-
readonly mapping: OAuthStateTables<S>;
|
|
221
|
-
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
222
|
-
},
|
|
223
|
-
body: Effect.Effect<A, E, NoInfer<OAuthStateDecisions | TxId>>,
|
|
224
|
-
): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
|
|
225
|
-
|
|
226
|
-
export function coordinateOAuthStateTransaction<
|
|
227
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
228
|
-
S extends AnySQLiteTable,
|
|
229
|
-
A,
|
|
230
|
-
E,
|
|
231
|
-
Requirements,
|
|
232
|
-
DatabaseError,
|
|
233
|
-
DatabaseRequirements,
|
|
234
|
-
TxId,
|
|
235
|
-
TxShape,
|
|
236
|
-
>(
|
|
237
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
238
|
-
options: {
|
|
239
|
-
readonly mapping: OAuthStateTables<S>;
|
|
240
|
-
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
241
|
-
},
|
|
242
|
-
body: Effect.Effect<A, E, Requirements>,
|
|
243
|
-
) {
|
|
244
|
-
return Effect.flatMap(acquire, (database) =>
|
|
245
|
-
database.transaction<A, E, Exclude<Requirements, OAuthStateDecisions>>((transaction) => {
|
|
246
|
-
const decisions = makeSqliteOAuthStateServices(transaction, options.mapping).decisions;
|
|
247
|
-
const provided = Context.make(OAuthStateDecisions, decisions);
|
|
248
|
-
const work = Effect.provideContext(body, provided);
|
|
249
|
-
|
|
250
|
-
return options.transaction === undefined
|
|
251
|
-
? work
|
|
252
|
-
: Effect.provideService(
|
|
253
|
-
work,
|
|
254
|
-
options.transaction,
|
|
255
|
-
options.transaction.of(transaction as TransactionOf<D>),
|
|
256
|
-
);
|
|
257
|
-
}),
|
|
258
|
-
);
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Supported composition boundary for Durable Objects. The owner must return
|
|
263
|
-
* decisions as values and translate rejection only after this root
|
|
264
|
-
* transactionSync commit. Its body may contain only runSync-compatible Effects;
|
|
265
|
-
* the installed driver rejects suspension and rolls back. Owner failure rolls
|
|
266
|
-
* back synchronously, so no retry is performed inside this boundary.
|
|
267
|
-
*/
|
|
268
|
-
export function coordinateAuthTransaction<
|
|
269
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
270
|
-
C extends AnySQLiteTable,
|
|
271
|
-
R extends AnySQLiteTable,
|
|
272
|
-
S extends AnySQLiteTable,
|
|
273
|
-
A,
|
|
274
|
-
E,
|
|
275
|
-
DatabaseError,
|
|
276
|
-
DatabaseRequirements,
|
|
277
|
-
>(
|
|
278
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
279
|
-
options: { readonly mapping: AuthTables<C, R, S>; readonly transaction?: never },
|
|
280
|
-
body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | OAuthStateDecisions>>,
|
|
281
|
-
): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
|
|
282
|
-
|
|
283
|
-
export function coordinateAuthTransaction<
|
|
284
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
285
|
-
C extends AnySQLiteTable,
|
|
286
|
-
R extends AnySQLiteTable,
|
|
287
|
-
S extends AnySQLiteTable,
|
|
288
|
-
A,
|
|
289
|
-
E,
|
|
290
|
-
DatabaseError,
|
|
291
|
-
DatabaseRequirements,
|
|
292
|
-
TxId,
|
|
293
|
-
TxShape,
|
|
294
|
-
>(
|
|
295
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
296
|
-
options: {
|
|
297
|
-
readonly mapping: AuthTables<C, R, S>;
|
|
298
|
-
readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
299
|
-
},
|
|
300
|
-
body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | OAuthStateDecisions | TxId>>,
|
|
301
|
-
): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
|
|
302
|
-
|
|
303
|
-
export function coordinateAuthTransaction<
|
|
304
|
-
D extends EffectSQLiteDoDatabase<AnyRelations>,
|
|
305
|
-
C extends AnySQLiteTable,
|
|
306
|
-
R extends AnySQLiteTable,
|
|
307
|
-
S extends AnySQLiteTable,
|
|
308
|
-
A,
|
|
309
|
-
E,
|
|
310
|
-
Requirements,
|
|
311
|
-
DatabaseError,
|
|
312
|
-
DatabaseRequirements,
|
|
313
|
-
TxId,
|
|
314
|
-
TxShape,
|
|
315
|
-
>(
|
|
316
|
-
acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
|
|
317
|
-
options: {
|
|
318
|
-
readonly mapping: AuthTables<C, R, S>;
|
|
319
|
-
readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
|
|
320
|
-
},
|
|
321
|
-
body: Effect.Effect<A, E, Requirements>,
|
|
322
|
-
) {
|
|
323
|
-
return Effect.flatMap(acquire, (database) =>
|
|
324
|
-
database.transaction<A, E, Exclude<Requirements, AuthStoreDecisions | OAuthStateDecisions>>(
|
|
325
|
-
(transaction) => {
|
|
326
|
-
const decisions = makeSqliteAuthServices(transaction, options.mapping).decisions;
|
|
327
|
-
|
|
328
|
-
const provided = Context.make(AuthStoreDecisions, decisions).pipe(
|
|
329
|
-
Context.add(OAuthStateDecisions, decisions),
|
|
330
|
-
);
|
|
331
|
-
|
|
332
|
-
const work = Effect.provideContext(body, provided);
|
|
333
|
-
|
|
334
|
-
return options.transaction === undefined
|
|
335
|
-
? work
|
|
336
|
-
: Effect.provideService(
|
|
337
|
-
work,
|
|
338
|
-
options.transaction,
|
|
339
|
-
options.transaction.of(transaction as TransactionOf<D>),
|
|
340
|
-
);
|
|
341
|
-
},
|
|
342
|
-
),
|
|
343
|
-
);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
122
|
export const makeIdentityServices = <
|
|
347
123
|
Subject extends AnySQLiteTable,
|
|
348
124
|
Identifier extends AnySQLiteTable,
|
|
@@ -350,9 +126,11 @@ export const makeIdentityServices = <
|
|
|
350
126
|
Request extends AnySQLiteTable,
|
|
351
127
|
NativeId,
|
|
352
128
|
>(
|
|
353
|
-
database: EffectSQLiteDoDatabase<AnyRelations>,
|
|
354
129
|
mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
|
|
355
|
-
) =>
|
|
130
|
+
) =>
|
|
131
|
+
makeSqliteIdentityServices(mapping, "synchronous").pipe(
|
|
132
|
+
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
|
|
133
|
+
);
|
|
356
134
|
|
|
357
135
|
export const makeSubjectProvisioningServices = <
|
|
358
136
|
Subject extends AnySQLiteTable,
|
|
@@ -360,25 +138,30 @@ export const makeSubjectProvisioningServices = <
|
|
|
360
138
|
Request extends AnySQLiteTable,
|
|
361
139
|
NativeId,
|
|
362
140
|
>(
|
|
363
|
-
database: EffectSQLiteDoDatabase<AnyRelations>,
|
|
364
141
|
mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
|
|
365
|
-
) =>
|
|
142
|
+
) =>
|
|
143
|
+
makeSqliteSubjectProvisioningServices(mapping, "synchronous").pipe(
|
|
144
|
+
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
|
|
145
|
+
);
|
|
366
146
|
|
|
367
147
|
export const makeExternalIdentityServices = <
|
|
368
148
|
Subject extends AnySQLiteTable,
|
|
369
149
|
External extends AnySQLiteTable,
|
|
370
150
|
NativeId,
|
|
371
151
|
>(
|
|
372
|
-
database: EffectSQLiteDoDatabase<AnyRelations>,
|
|
373
152
|
mapping: ExternalIdentityTables<Subject, External, NativeId>,
|
|
374
|
-
) =>
|
|
153
|
+
) =>
|
|
154
|
+
makeSqliteExternalIdentityServices(mapping).pipe(
|
|
155
|
+
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
|
|
156
|
+
);
|
|
375
157
|
|
|
376
158
|
import { makeSqlitePasswordPreparedTarget } from "./drizzle/sqlite-password-prepared";
|
|
377
159
|
|
|
378
160
|
const passwordPreparedTarget = makeSqlitePasswordPreparedTarget<
|
|
161
|
+
Database,
|
|
379
162
|
EffectSQLiteDoDatabase<AnyRelations>,
|
|
380
163
|
true
|
|
381
|
-
>(sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
|
|
164
|
+
>(Database, sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
|
|
382
165
|
|
|
383
166
|
export const { makePasswordPreparedPersistenceServices, coordinatePasswordPreparedPersistence } =
|
|
384
167
|
passwordPreparedTarget;
|
|
@@ -388,10 +171,11 @@ export { passwordPreparedPersistenceLayer } from "./drizzle/password-prepared-ta
|
|
|
388
171
|
import { makeOAuthTarget } from "./drizzle/oauth-drivers";
|
|
389
172
|
|
|
390
173
|
const oauthTarget = makeOAuthTarget<
|
|
174
|
+
Database,
|
|
391
175
|
EffectSQLiteDoDatabase<AnyRelations>,
|
|
392
176
|
AnySQLiteTable<{ dialect: "sqlite" }>,
|
|
393
177
|
true
|
|
394
|
-
>({
|
|
178
|
+
>(Database, {
|
|
395
179
|
mode: "synchronous",
|
|
396
180
|
dialect: "sqlite",
|
|
397
181
|
locking: false,
|
|
@@ -416,11 +200,12 @@ export const {
|
|
|
416
200
|
import { makePasskeyTarget } from "./drizzle/passkey-drivers";
|
|
417
201
|
|
|
418
202
|
const passkeyTarget = makePasskeyTarget<
|
|
203
|
+
Database,
|
|
419
204
|
EffectSQLiteDoDatabase<AnyRelations>,
|
|
420
205
|
AnySQLiteTable<{ dialect: "sqlite" }>,
|
|
421
206
|
unknown,
|
|
422
207
|
true
|
|
423
|
-
>({
|
|
208
|
+
>(Database, {
|
|
424
209
|
mode: "synchronous",
|
|
425
210
|
dialect: "sqlite",
|
|
426
211
|
locking: false,
|
|
@@ -443,11 +228,12 @@ export const {
|
|
|
443
228
|
import { makeTotpTarget } from "./drizzle/totp-target";
|
|
444
229
|
|
|
445
230
|
const totpTarget = makeTotpTarget<
|
|
231
|
+
Database,
|
|
446
232
|
EffectSQLiteDoDatabase<AnyRelations>,
|
|
447
233
|
AnySQLiteTable<{ dialect: "sqlite" }>,
|
|
448
234
|
unknown,
|
|
449
235
|
true
|
|
450
|
-
>({
|
|
236
|
+
>(Database, {
|
|
451
237
|
mode: "synchronous",
|
|
452
238
|
dialect: "sqlite",
|
|
453
239
|
locking: false,
|
|
@@ -459,11 +245,12 @@ export const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTa
|
|
|
459
245
|
import { makePhoneTarget } from "./drizzle/phone-target";
|
|
460
246
|
|
|
461
247
|
const phoneTarget = makePhoneTarget<
|
|
248
|
+
Database,
|
|
462
249
|
EffectSQLiteDoDatabase<AnyRelations>,
|
|
463
250
|
AnySQLiteTable<{ dialect: "sqlite" }>,
|
|
464
251
|
unknown,
|
|
465
252
|
true
|
|
466
|
-
>({
|
|
253
|
+
>(Database, {
|
|
467
254
|
mode: "synchronous",
|
|
468
255
|
dialect: "sqlite",
|
|
469
256
|
locking: false,
|
package/src/SqliteNode.ts
CHANGED
|
@@ -1,32 +1,25 @@
|
|
|
1
|
+
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
1
2
|
import type { AnyRelations } from "drizzle-orm";
|
|
2
3
|
import { type EffectSQLiteNodeDatabase, makeWithDefaults } from "drizzle-orm/effect-sqlite-node";
|
|
3
4
|
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
4
|
-
import { Effect } from "effect";
|
|
5
|
+
import { Context, Effect, Layer } from "effect";
|
|
5
6
|
|
|
7
|
+
import { nativeDatabase } from "./drizzle/native-database";
|
|
8
|
+
|
|
9
|
+
/** The application-owned Drizzle database used to construct persistence services. */
|
|
10
|
+
export class Database extends Context.Service<Database, EffectSQLiteNodeDatabase<AnyRelations>>()(
|
|
11
|
+
"effect-auth/persistence-drizzle/SqliteNode/Database",
|
|
12
|
+
) {}
|
|
13
|
+
|
|
14
|
+
/** Construct Drizzle from the driver's SQL-client Layer. */
|
|
15
|
+
export const databaseLayer = Layer.effect(Database, makeWithDefaults({}));
|
|
16
|
+
|
|
17
|
+
import { sqlClientEmailStandaloneGuard } from "./drizzle/email-target";
|
|
6
18
|
import type {
|
|
7
|
-
AuthStoreTables,
|
|
8
|
-
AuthTables,
|
|
9
19
|
ExternalIdentityTables,
|
|
10
20
|
IdentityTables,
|
|
11
|
-
OAuthStateTables,
|
|
12
21
|
SubjectProvisioningTables,
|
|
13
22
|
} from "./drizzle/model";
|
|
14
|
-
import {
|
|
15
|
-
coordinateSqliteAuthStoreTransaction,
|
|
16
|
-
coordinateSqliteAuthTransaction,
|
|
17
|
-
coordinateSqliteOAuthStateTransaction,
|
|
18
|
-
makeSqliteAuthServices,
|
|
19
|
-
makeSqliteAuthStoreServices,
|
|
20
|
-
makeSqliteOAuthStateServices,
|
|
21
|
-
} from "./drizzle/sqlite";
|
|
22
|
-
|
|
23
|
-
export {
|
|
24
|
-
coordinateSqliteAuthStoreTransaction as coordinateAuthStoreTransaction,
|
|
25
|
-
coordinateSqliteAuthTransaction as coordinateAuthTransaction,
|
|
26
|
-
coordinateSqliteOAuthStateTransaction as coordinateOAuthStateTransaction,
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
import { sqlClientEmailStandaloneGuard } from "./drizzle/email-target";
|
|
30
23
|
import { sqlClientPasswordStandaloneGuard } from "./drizzle/password-target";
|
|
31
24
|
import { sqlClientProofStandaloneGuard } from "./drizzle/proof-target";
|
|
32
25
|
import { sqlClientSessionStandaloneGuard } from "./drizzle/session-target";
|
|
@@ -40,29 +33,34 @@ import { makeSqlitePasswordTarget, sqlitePasswordConfiguration } from "./drizzle
|
|
|
40
33
|
import { makeSqliteProofTarget, sqliteProofConfiguration } from "./drizzle/sqlite-proofs";
|
|
41
34
|
import { makeSqliteSessionTarget, sqliteSessionConfiguration } from "./drizzle/sqlite-sessions";
|
|
42
35
|
|
|
43
|
-
const sessionTarget = makeSqliteSessionTarget<EffectSQLiteNodeDatabase<AnyRelations>>(
|
|
44
|
-
|
|
36
|
+
const sessionTarget = makeSqliteSessionTarget<Database, EffectSQLiteNodeDatabase<AnyRelations>>(
|
|
37
|
+
Database,
|
|
38
|
+
(service) => sqliteSessionConfiguration("interactive", sqlClientSessionStandaloneGuard(service)),
|
|
45
39
|
);
|
|
46
40
|
|
|
47
|
-
const proofTarget = makeSqliteProofTarget<EffectSQLiteNodeDatabase<AnyRelations>>(
|
|
48
|
-
|
|
41
|
+
const proofTarget = makeSqliteProofTarget<Database, EffectSQLiteNodeDatabase<AnyRelations>>(
|
|
42
|
+
Database,
|
|
43
|
+
(service) => sqliteProofConfiguration("interactive", sqlClientProofStandaloneGuard(service)),
|
|
49
44
|
);
|
|
50
45
|
|
|
51
|
-
const passwordTarget = makeSqlitePasswordTarget<EffectSQLiteNodeDatabase<AnyRelations>>(
|
|
52
|
-
|
|
46
|
+
const passwordTarget = makeSqlitePasswordTarget<Database, EffectSQLiteNodeDatabase<AnyRelations>>(
|
|
47
|
+
Database,
|
|
48
|
+
(service) =>
|
|
53
49
|
sqlitePasswordConfiguration(
|
|
54
50
|
"interactive",
|
|
55
|
-
sqlClientPasswordStandaloneGuard(
|
|
56
|
-
sqlClientProofStandaloneGuard(
|
|
51
|
+
sqlClientPasswordStandaloneGuard(service),
|
|
52
|
+
sqlClientProofStandaloneGuard(service),
|
|
57
53
|
),
|
|
58
54
|
);
|
|
59
55
|
|
|
60
|
-
const emailTarget = makeSqliteEmailTarget<EffectSQLiteNodeDatabase<AnyRelations>>(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
const emailTarget = makeSqliteEmailTarget<Database, EffectSQLiteNodeDatabase<AnyRelations>>(
|
|
57
|
+
Database,
|
|
58
|
+
(service) =>
|
|
59
|
+
sqliteEmailConfiguration(
|
|
60
|
+
"interactive",
|
|
61
|
+
sqlClientEmailStandaloneGuard(service),
|
|
62
|
+
sqlClientProofStandaloneGuard(service),
|
|
63
|
+
),
|
|
66
64
|
);
|
|
67
65
|
|
|
68
66
|
export const {
|
|
@@ -97,25 +95,6 @@ export const {
|
|
|
97
95
|
|
|
98
96
|
export const commitMode = "interactive" as const;
|
|
99
97
|
|
|
100
|
-
export const makeAuthStoreServices = <C extends AnySQLiteTable, R extends AnySQLiteTable>(
|
|
101
|
-
database: EffectSQLiteNodeDatabase<AnyRelations>,
|
|
102
|
-
mapping: AuthStoreTables<C, R>,
|
|
103
|
-
) => makeSqliteAuthStoreServices(database, mapping);
|
|
104
|
-
|
|
105
|
-
export const makeOAuthStateServices = <S extends AnySQLiteTable>(
|
|
106
|
-
database: EffectSQLiteNodeDatabase<AnyRelations>,
|
|
107
|
-
mapping: OAuthStateTables<S>,
|
|
108
|
-
) => makeSqliteOAuthStateServices(database, mapping);
|
|
109
|
-
|
|
110
|
-
export const makeAuthServices = <
|
|
111
|
-
C extends AnySQLiteTable,
|
|
112
|
-
R extends AnySQLiteTable,
|
|
113
|
-
S extends AnySQLiteTable,
|
|
114
|
-
>(
|
|
115
|
-
database: EffectSQLiteNodeDatabase<AnyRelations>,
|
|
116
|
-
mapping: AuthTables<C, R, S>,
|
|
117
|
-
) => makeSqliteAuthServices(database, mapping);
|
|
118
|
-
|
|
119
98
|
export const makeIdentityServices = <
|
|
120
99
|
Subject extends AnySQLiteTable,
|
|
121
100
|
Identifier extends AnySQLiteTable,
|
|
@@ -123,9 +102,11 @@ export const makeIdentityServices = <
|
|
|
123
102
|
Request extends AnySQLiteTable,
|
|
124
103
|
NativeId,
|
|
125
104
|
>(
|
|
126
|
-
database: EffectSQLiteNodeDatabase<AnyRelations>,
|
|
127
105
|
mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
|
|
128
|
-
) =>
|
|
106
|
+
) =>
|
|
107
|
+
makeSqliteIdentityServices(mapping, "interactive").pipe(
|
|
108
|
+
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
|
|
109
|
+
);
|
|
129
110
|
|
|
130
111
|
export const makeSubjectProvisioningServices = <
|
|
131
112
|
Subject extends AnySQLiteTable,
|
|
@@ -133,28 +114,33 @@ export const makeSubjectProvisioningServices = <
|
|
|
133
114
|
Request extends AnySQLiteTable,
|
|
134
115
|
NativeId,
|
|
135
116
|
>(
|
|
136
|
-
database: EffectSQLiteNodeDatabase<AnyRelations>,
|
|
137
117
|
mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
|
|
138
|
-
) =>
|
|
118
|
+
) =>
|
|
119
|
+
makeSqliteSubjectProvisioningServices(mapping, "interactive").pipe(
|
|
120
|
+
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
|
|
121
|
+
);
|
|
139
122
|
|
|
140
123
|
export const makeExternalIdentityServices = <
|
|
141
124
|
Subject extends AnySQLiteTable,
|
|
142
125
|
External extends AnySQLiteTable,
|
|
143
126
|
NativeId,
|
|
144
127
|
>(
|
|
145
|
-
database: EffectSQLiteNodeDatabase<AnyRelations>,
|
|
146
128
|
mapping: ExternalIdentityTables<Subject, External, NativeId>,
|
|
147
|
-
) =>
|
|
129
|
+
) =>
|
|
130
|
+
makeSqliteExternalIdentityServices(mapping).pipe(
|
|
131
|
+
Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
|
|
132
|
+
);
|
|
148
133
|
|
|
149
134
|
import { makeSqlitePasswordPreparedTarget } from "./drizzle/sqlite-password-prepared";
|
|
150
135
|
|
|
151
136
|
const passwordPreparedTarget = makeSqlitePasswordPreparedTarget<
|
|
137
|
+
Database,
|
|
152
138
|
EffectSQLiteNodeDatabase<AnyRelations>
|
|
153
|
-
>((
|
|
139
|
+
>(Database, (service) =>
|
|
154
140
|
sqlitePasswordConfiguration(
|
|
155
141
|
"interactive",
|
|
156
|
-
sqlClientPasswordStandaloneGuard(
|
|
157
|
-
sqlClientProofStandaloneGuard(
|
|
142
|
+
sqlClientPasswordStandaloneGuard(service),
|
|
143
|
+
sqlClientProofStandaloneGuard(service),
|
|
158
144
|
),
|
|
159
145
|
);
|
|
160
146
|
|
|
@@ -167,9 +153,10 @@ import { makeOAuthTarget } from "./drizzle/oauth-drivers";
|
|
|
167
153
|
import { sqlClientOAuthStandaloneGuard } from "./drizzle/oauth-target";
|
|
168
154
|
|
|
169
155
|
const oauthTarget = makeOAuthTarget<
|
|
156
|
+
Database,
|
|
170
157
|
EffectSQLiteNodeDatabase<AnyRelations>,
|
|
171
158
|
AnySQLiteTable<{ dialect: "sqlite" }>
|
|
172
|
-
>({
|
|
159
|
+
>(Database, {
|
|
173
160
|
mode: "interactive",
|
|
174
161
|
dialect: "sqlite",
|
|
175
162
|
locking: false,
|
|
@@ -195,9 +182,10 @@ import { makePasskeyTarget } from "./drizzle/passkey-drivers";
|
|
|
195
182
|
import { sqlClientPasskeyStandaloneGuard } from "./drizzle/passkey-target";
|
|
196
183
|
|
|
197
184
|
const passkeyTarget = makePasskeyTarget<
|
|
185
|
+
Database,
|
|
198
186
|
EffectSQLiteNodeDatabase<AnyRelations>,
|
|
199
187
|
AnySQLiteTable<{ dialect: "sqlite" }>
|
|
200
|
-
>({
|
|
188
|
+
>(Database, {
|
|
201
189
|
mode: "interactive",
|
|
202
190
|
dialect: "sqlite",
|
|
203
191
|
locking: false,
|
|
@@ -220,9 +208,10 @@ export const {
|
|
|
220
208
|
import { makeTotpTarget, sqlClientTotpStandaloneGuard } from "./drizzle/totp-target";
|
|
221
209
|
|
|
222
210
|
const totpTarget = makeTotpTarget<
|
|
211
|
+
Database,
|
|
223
212
|
EffectSQLiteNodeDatabase<AnyRelations>,
|
|
224
213
|
AnySQLiteTable<{ dialect: "sqlite" }>
|
|
225
|
-
>({
|
|
214
|
+
>(Database, {
|
|
226
215
|
mode: "interactive",
|
|
227
216
|
dialect: "sqlite",
|
|
228
217
|
locking: false,
|
|
@@ -234,9 +223,10 @@ export const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTa
|
|
|
234
223
|
import { makePhoneTarget, sqlClientPhoneStandaloneGuard } from "./drizzle/phone-target";
|
|
235
224
|
|
|
236
225
|
const phoneTarget = makePhoneTarget<
|
|
226
|
+
Database,
|
|
237
227
|
EffectSQLiteNodeDatabase<AnyRelations>,
|
|
238
228
|
AnySQLiteTable<{ dialect: "sqlite" }>
|
|
239
|
-
>({
|
|
229
|
+
>(Database, {
|
|
240
230
|
mode: "interactive",
|
|
241
231
|
dialect: "sqlite",
|
|
242
232
|
locking: false,
|