@yielded/auth-persistence-drizzle 0.1.0-beta.1 → 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/dist/D1.d.mts +27 -22
- package/dist/D1.mjs +10 -4
- package/dist/D1.mjs.map +1 -1
- package/dist/Libsql.d.mts +66 -61
- package/dist/Libsql.mjs +20 -15
- package/dist/Libsql.mjs.map +1 -1
- package/dist/Mysql2.d.mts +58 -46
- package/dist/Mysql2.mjs +13 -6
- package/dist/Mysql2.mjs.map +1 -1
- package/dist/Pglite.d.mts +43 -32
- package/dist/Pglite.mjs +12 -7
- package/dist/Pglite.mjs.map +1 -1
- package/dist/Postgres.d.mts +59 -48
- package/dist/Postgres.mjs +12 -7
- package/dist/Postgres.mjs.map +1 -1
- package/dist/SqliteBun.d.mts +58 -53
- package/dist/SqliteBun.mjs +20 -14
- package/dist/SqliteBun.mjs.map +1 -1
- package/dist/SqliteDo.d.mts +66 -60
- package/dist/SqliteDo.mjs +26 -14
- package/dist/SqliteDo.mjs.map +1 -1
- package/dist/SqliteNode.d.mts +58 -53
- package/dist/SqliteNode.mjs +20 -14
- package/dist/SqliteNode.mjs.map +1 -1
- package/dist/SqliteWasm.d.mts +66 -61
- package/dist/SqliteWasm.mjs +20 -14
- package/dist/SqliteWasm.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-identity.mjs +12 -9
- package/dist/drizzle/d1-identity.mjs.map +1 -1
- package/dist/drizzle/d1-oauth.d.mts +14 -13
- package/dist/drizzle/d1-oauth.mjs +7 -4
- 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 +6 -5
- 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 +4 -3
- package/dist/drizzle/d1-proofs.mjs +3 -1
- package/dist/drizzle/d1-proofs.mjs.map +1 -1
- package/dist/drizzle/d1-sessions.d.mts +11 -10
- 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.mjs +2 -1
- package/dist/drizzle/email-registration.mjs.map +1 -1
- package/dist/drizzle/email-target.d.mts +7 -6
- package/dist/drizzle/email-target.mjs +10 -10
- package/dist/drizzle/email-target.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 +7 -6
- 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 +3 -2
- 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 +6 -4
- package/dist/drizzle/mysql-passwords.mjs +11 -7
- package/dist/drizzle/mysql-passwords.mjs.map +1 -1
- package/dist/drizzle/mysql-proofs.d.mts +3 -2
- package/dist/drizzle/mysql-proofs.mjs +8 -4
- package/dist/drizzle/mysql-proofs.mjs.map +1 -1
- package/dist/drizzle/mysql-sessions.d.mts +11 -10
- 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-connected-drivers.mjs +7 -5
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-target.d.mts +6 -7
- package/dist/drizzle/oauth-connected-target.mjs +4 -5
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
- package/dist/drizzle/oauth-drivers.mjs +8 -6
- package/dist/drizzle/oauth-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-target.d.mts +12 -11
- package/dist/drizzle/oauth-target.mjs +13 -12
- 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-target.d.mts +3 -2
- 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 +5 -4
- 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 +7 -6
- package/dist/drizzle/pg-emails.mjs +12 -8
- package/dist/drizzle/pg-emails.mjs.map +1 -1
- package/dist/drizzle/pg-identity.mjs +12 -9
- package/dist/drizzle/pg-identity.mjs.map +1 -1
- package/dist/drizzle/pg-password-prepared.d.mts +3 -2
- 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 +6 -4
- package/dist/drizzle/pg-passwords.mjs +11 -7
- package/dist/drizzle/pg-passwords.mjs.map +1 -1
- package/dist/drizzle/pg-proofs.d.mts +3 -2
- package/dist/drizzle/pg-proofs.mjs +8 -4
- package/dist/drizzle/pg-proofs.mjs.map +1 -1
- package/dist/drizzle/pg-sessions.d.mts +11 -10
- package/dist/drizzle/pg-sessions.mjs +16 -12
- package/dist/drizzle/pg-sessions.mjs.map +1 -1
- package/dist/drizzle/phone-target.d.mts +4 -3
- package/dist/drizzle/phone-target.mjs +12 -11
- package/dist/drizzle/phone-target.mjs.map +1 -1
- package/dist/drizzle/proof-target.d.mts +3 -2
- 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 +10 -8
- 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-target.d.mts +4 -3
- package/dist/drizzle/totp-target.mjs +31 -28
- package/dist/drizzle/totp-target.mjs.map +1 -1
- package/package.json +1 -1
- package/src/D1.ts +37 -10
- package/src/Libsql.ts +45 -17
- package/src/Mysql2.ts +39 -13
- package/src/Pglite.ts +47 -13
- package/src/Postgres.ts +47 -13
- package/src/SqliteBun.ts +58 -30
- package/src/SqliteDo.ts +61 -19
- package/src/SqliteNode.ts +55 -28
- package/src/SqliteWasm.ts +55 -28
- package/src/drizzle/d1-database.ts +10 -0
- package/src/drizzle/d1-emails.ts +84 -84
- 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 +38 -37
- package/src/drizzle/d1-passwords.ts +74 -76
- package/src/drizzle/d1-phone.ts +5 -1
- package/src/drizzle/d1-proofs.ts +29 -30
- package/src/drizzle/d1-sessions.ts +51 -38
- package/src/drizzle/d1-totp.ts +5 -1
- package/src/drizzle/email-registration.ts +6 -2
- package/src/drizzle/email-target.ts +17 -19
- package/src/drizzle/mysql-database.ts +8 -0
- package/src/drizzle/mysql-emails.ts +28 -16
- package/src/drizzle/mysql-identity.ts +18 -21
- package/src/drizzle/mysql-password-prepared.ts +10 -8
- package/src/drizzle/mysql-passwords.ts +21 -9
- package/src/drizzle/mysql-proofs.ts +16 -5
- package/src/drizzle/mysql-sessions.ts +40 -17
- package/src/drizzle/native-database.ts +22 -0
- package/src/drizzle/oauth-connected-drivers.ts +18 -6
- package/src/drizzle/oauth-connected-target.ts +16 -17
- package/src/drizzle/oauth-drivers.ts +26 -10
- package/src/drizzle/oauth-target.ts +30 -42
- 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 +9 -6
- package/src/drizzle/password-registration.ts +7 -8
- package/src/drizzle/password-target.ts +19 -18
- package/src/drizzle/pg-database.ts +10 -0
- package/src/drizzle/pg-emails.ts +28 -16
- package/src/drizzle/pg-identity.ts +18 -22
- package/src/drizzle/pg-password-prepared.ts +10 -8
- package/src/drizzle/pg-passwords.ts +21 -9
- package/src/drizzle/pg-proofs.ts +16 -5
- package/src/drizzle/pg-sessions.ts +40 -17
- package/src/drizzle/phone-target.ts +22 -17
- package/src/drizzle/proof-target.ts +9 -12
- package/src/drizzle/session-target.ts +32 -50
- package/src/drizzle/sqlite-emails.ts +30 -13
- package/src/drizzle/sqlite-identity.ts +22 -42
- package/src/drizzle/sqlite-password-prepared.ts +23 -9
- package/src/drizzle/sqlite-passwords.ts +29 -15
- package/src/drizzle/sqlite-proofs.ts +28 -5
- package/src/drizzle/sqlite-sessions.ts +49 -23
- package/src/drizzle/standalone-guard.ts +18 -6
- package/src/drizzle/totp-target.ts +61 -60
- package/dist/drizzle/d1-identity.d.mts +0 -30
- package/dist/drizzle/mysql-identity.d.mts +0 -21
- package/dist/drizzle/pg-identity.d.mts +0 -22
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { D1PhoneMapping, PhoneMapping, PhoneMappingSource, PhonePersistenceServices } from "./phone-model.mjs";
|
|
2
|
+
import { Database as Database$1 } from "./d1-database.mjs";
|
|
2
3
|
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
3
4
|
import { PhoneCoordinatorError } from "./phone-target.mjs";
|
|
4
5
|
import { AnyRelations } from "drizzle-orm";
|
|
5
6
|
import { Effect } from "effect";
|
|
6
7
|
import { LifecycleHooks } from "@yielded/auth/Hooks";
|
|
7
8
|
import { PhoneAdmission, PhonePersistence, PhoneSignInTargets } from "@yielded/auth/PhoneOtp";
|
|
9
|
+
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
8
10
|
import { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
9
11
|
import { D1Client } from "@effect/sql-d1/D1Client";
|
|
10
|
-
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
11
12
|
//#region src/drizzle/d1-phone.d.ts
|
|
12
13
|
type Database = EffectSQLiteD1Database<AnyRelations> & {
|
|
13
14
|
readonly $client: D1Client;
|
|
14
15
|
};
|
|
15
16
|
type Table$1 = AnySQLiteTable;
|
|
16
|
-
export declare const makePhonePersistenceServices: <
|
|
17
|
-
readonly $client: D1Client;
|
|
18
|
-
}, S extends Table$1, I extends Table$1, F extends Table$1, C extends Table$1, N, RSetup = never>(database: Database, mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>) => Effect.Effect<PhonePersistenceServices, import("@yielded/auth-persistence/Adapter").PersistenceMappingError | import("@yielded/auth/PhoneOtp").PhoneConfigurationError, RSetup | LifecycleHooks>;
|
|
17
|
+
export declare const makePhonePersistenceServices: <S extends Table$1, I extends Table$1, F extends Table$1, C extends Table$1, N, RSetup = never>(mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>) => Effect.Effect<PhonePersistenceServices, import("@yielded/auth-persistence/Adapter").PersistenceMappingError | import("@yielded/auth/PhoneOtp").PhoneConfigurationError, Database$1 | LifecycleHooks | Exclude<RSetup, import("@yielded/auth-persistence/Adapter").NativeDatabase>>;
|
|
19
18
|
export declare const coordinatePhonePersistence: <D extends Database, S extends Table$1, I extends Table$1, F extends Table$1, C extends Table$1, N, A, E, R, RSetup = never, DatabaseError = never, DatabaseRequirements = never>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
|
|
20
19
|
readonly mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>;
|
|
21
20
|
}, body: Effect.Effect<A, E, R>) => Effect.Effect<A, PhoneCoordinatorError<E> | DatabaseError, Exclude<R, PhonePersistence | PhoneAdmission | PhoneSignInTargets | D1BatchStatements> | LifecycleHooks | RSetup | DatabaseRequirements>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Database } from "./d1-database.mjs";
|
|
1
2
|
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
2
3
|
import { makeD1Owner } from "./d1-planning.mjs";
|
|
3
4
|
import { coordinateTargetPhone, makePhoneTarget } from "./phone-target.mjs";
|
|
@@ -10,7 +11,7 @@ const configuration = {
|
|
|
10
11
|
locking: false,
|
|
11
12
|
standaloneGuard: () => Effect.void
|
|
12
13
|
};
|
|
13
|
-
const { makePhonePersistenceServices } = makePhoneTarget(configuration);
|
|
14
|
+
const { makePhonePersistenceServices } = makePhoneTarget(Database, configuration);
|
|
14
15
|
const coordinatePhonePersistence = (acquire, options, body) => Effect.flatMap(acquire, (database) => coordinateTargetPhone(database, options.mapping, configuration, (_transaction, services, append) => Effect.gen(function* () {
|
|
15
16
|
const original = services.phonePersistence;
|
|
16
17
|
const nativeCollector = D1BatchStatements.of({ append: (statement) => Effect.sync(() => append(statement)) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d1-phone.mjs","names":["PhoneUnavailable"],"sources":["../../src/drizzle/d1-phone.ts"],"sourcesContent":["import type { D1Client } from \"@effect/sql-d1/D1Client\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n PhoneOtpUnavailable as PhoneUnavailable,\n PhoneAdmission,\n PhonePersistence,\n PhoneSignInTargets,\n} from \"@yielded/auth/PhoneOtp\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectSQLiteD1Database } from \"drizzle-orm/effect-d1\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Context, Effect } from \"effect\";\n\nimport { makeD1Owner } from \"./d1-planning\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\nimport type { D1PhoneMapping, PhoneMapping, PhoneMappingSource } from \"./phone-model\";\nimport { coordinateTargetPhone, makePhoneTarget, type PhoneCoordinatorError } from \"./phone-target\";\ntype Database = EffectSQLiteD1Database<AnyRelations> & { readonly $client: D1Client };\ntype Table = AnySQLiteTable;\n\nconst configuration = {\n mode: \"batch\" as const,\n dialect: \"sqlite\" as const,\n locking: false,\n standaloneGuard: () => Effect.void,\n};\n\n/** Reads use a primary D1 session; observations and expiry are asserted in the same batch. */\nconst target = makePhoneTarget<Database, Table, D1PhoneMapping>(configuration);\n\nexport const { makePhonePersistenceServices } = target;\n\nexport const coordinatePhonePersistence = <\n D extends Database,\n S extends Table,\n I extends Table,\n F extends Table,\n C extends Table,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n PhoneCoordinatorError<E> | DatabaseError,\n | Exclude<R, PhonePersistence | PhoneAdmission | PhoneSignInTargets | D1BatchStatements>\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n> =>\n Effect.flatMap(acquire, (database) =>\n coordinateTargetPhone(\n database,\n options.mapping,\n configuration,\n (_transaction, services, append) =>\n Effect.gen(function* () {\n const original = services.phonePersistence;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(PhoneUnavailable.make({})).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: PhonePersistence[\"Service\"] = {\n target: (input) => owner.run(original.target(input)),\n mutate: (input, prepare) => owner.run(original.mutate(input, prepare)),\n };\n\n const provided = Context.make(PhonePersistence, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n Context.add(PhoneAdmission, {\n admit: (input) => owner.run(services.phoneAdmission.admit(input)),\n cleanup: (input) => owner.run(services.phoneAdmission.cleanup(input)),\n }),\n Context.add(PhoneSignInTargets, {\n lookup: (input) => owner.run(services.phoneSignInTargets.lookup(input)),\n }),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"d1-phone.mjs","names":["DatabaseService","PhoneUnavailable"],"sources":["../../src/drizzle/d1-phone.ts"],"sourcesContent":["import type { D1Client } from \"@effect/sql-d1/D1Client\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n PhoneOtpUnavailable as PhoneUnavailable,\n PhoneAdmission,\n PhonePersistence,\n PhoneSignInTargets,\n} from \"@yielded/auth/PhoneOtp\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectSQLiteD1Database } from \"drizzle-orm/effect-d1\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Context, Effect } from \"effect\";\n\nimport { Database as DatabaseService } from \"./d1-database\";\nimport { makeD1Owner } from \"./d1-planning\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\nimport type { D1PhoneMapping, PhoneMapping, PhoneMappingSource } from \"./phone-model\";\nimport { coordinateTargetPhone, makePhoneTarget, type PhoneCoordinatorError } from \"./phone-target\";\ntype Database = EffectSQLiteD1Database<AnyRelations> & { readonly $client: D1Client };\ntype Table = AnySQLiteTable;\n\nconst configuration = {\n mode: \"batch\" as const,\n dialect: \"sqlite\" as const,\n locking: false,\n standaloneGuard: () => Effect.void,\n};\n\n/** Reads use a primary D1 session; observations and expiry are asserted in the same batch. */\nconst target = makePhoneTarget<DatabaseService, Database, Table, D1PhoneMapping>(\n DatabaseService,\n configuration,\n);\n\nexport const { makePhonePersistenceServices } = target;\n\nexport const coordinatePhonePersistence = <\n D extends Database,\n S extends Table,\n I extends Table,\n F extends Table,\n C extends Table,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n PhoneCoordinatorError<E> | DatabaseError,\n | Exclude<R, PhonePersistence | PhoneAdmission | PhoneSignInTargets | D1BatchStatements>\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n> =>\n Effect.flatMap(acquire, (database) =>\n coordinateTargetPhone(\n database,\n options.mapping,\n configuration,\n (_transaction, services, append) =>\n Effect.gen(function* () {\n const original = services.phonePersistence;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(PhoneUnavailable.make({})).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: PhonePersistence[\"Service\"] = {\n target: (input) => owner.run(original.target(input)),\n mutate: (input, prepare) => owner.run(original.mutate(input, prepare)),\n };\n\n const provided = Context.make(PhonePersistence, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n Context.add(PhoneAdmission, {\n admit: (input) => owner.run(services.phoneAdmission.admit(input)),\n cleanup: (input) => owner.run(services.phoneAdmission.cleanup(input)),\n }),\n Context.add(PhoneSignInTargets, {\n lookup: (input) => owner.run(services.phoneSignInTargets.lookup(input)),\n }),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n"],"mappings":";;;;;;;AAqBA,MAAM,gBAAgB;CACpB,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC;AAQA,MAAa,EAAE,iCALA,gBACbA,UACA,aAG8C;AAEhD,MAAa,8BAcX,SACA,SAGA,SASA,OAAO,QAAQ,UAAU,aACvB,sBACE,UACA,QAAQ,SACR,gBACC,cAAc,UAAU,WACvB,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,SAAS;CAE1B,MAAM,kBAAkB,kBAAkB,GAAG,EAC3C,SAAS,cAAc,OAAO,WAAW,OAAO,SAAS,CAAC,EAC5D,CAAC;CAED,MAAM,QAAQ,OAAO,YAAYC,oBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAC1D,OAAO,eAAe,mBAAmB,eAAe,CAC1D;CAOA,MAAM,WAAW,QAAQ,KAAK,kBAAkB;EAJ9C,SAAS,UAAU,MAAM,IAAI,SAAS,OAAO,KAAK,CAAC;EACnD,SAAS,OAAO,YAAY,MAAM,IAAI,SAAS,OAAO,OAAO,OAAO,CAAC;CAGjB,CAAC,CAAC,CAAC,KACvD,QAAQ,IAAI,mBAAmB,MAAM,SAAS,GAC9C,QAAQ,IAAI,gBAAgB;EAC1B,QAAQ,UAAU,MAAM,IAAI,SAAS,eAAe,MAAM,KAAK,CAAC;EAChE,UAAU,UAAU,MAAM,IAAI,SAAS,eAAe,QAAQ,KAAK,CAAC;CACtE,CAAC,GACD,QAAQ,IAAI,oBAAoB,EAC9B,SAAS,UAAU,MAAM,IAAI,SAAS,mBAAmB,OAAO,KAAK,CAAC,EACxE,CAAC,CACH;CAEA,OAAO,OAAO,MAAM,MAAM,OAAO,eAAe,MAAM,QAAQ,CAAC;AACjE,CAAC,CACL,CACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./D1BatchStatements.mjs";
|
|
2
2
|
import { AnyRelations } from "drizzle-orm";
|
|
3
3
|
import { Context, Effect } from "effect";
|
|
4
|
-
import { D1Client } from "@effect/sql-d1/D1Client";
|
|
5
4
|
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
5
|
+
import { D1Client } from "@effect/sql-d1/D1Client";
|
|
6
6
|
//#region src/drizzle/d1-planning.d.ts
|
|
7
7
|
export type D1PlanningDatabase = EffectSQLiteD1Database<AnyRelations> & {
|
|
8
8
|
readonly $client: D1Client;
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import "./model.mjs";
|
|
2
2
|
import { D1ProofPersistenceMapping } from "./proof-model.mjs";
|
|
3
|
+
import { Database as Database$1 } from "./d1-database.mjs";
|
|
3
4
|
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
4
5
|
import "./d1-planning.mjs";
|
|
5
6
|
import { AnyRelations, SQL, Table } from "drizzle-orm";
|
|
6
7
|
import { Effect } from "effect";
|
|
7
8
|
import { CurrentCommitJournal, HookConfigurationError, LifecycleHooks, PreparedCommit } from "@yielded/auth/Hooks";
|
|
8
9
|
import { PrepareProofCommit, ProofAttemptDecision, ProofBinding, ProofCleanupResult, ProofCompletionDecision, ProofCompletionPlan, ProofDeliveryClaim, ProofDeliveryOutcome, ProofPersistence, ProofPolicy, ProofRequestConflict, ProofUnavailable, ProofVersion } from "@yielded/auth/Proofs";
|
|
10
|
+
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
9
11
|
import { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
10
12
|
import { Statement } from "effect/sql/Statement";
|
|
11
13
|
import { D1Client } from "@effect/sql-d1/D1Client";
|
|
12
|
-
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
13
14
|
import "drizzle-orm/effect-core";
|
|
14
15
|
//#region src/drizzle/d1-proofs.d.ts
|
|
15
16
|
type Database = EffectSQLiteD1Database<AnyRelations> & {
|
|
16
17
|
readonly $client: D1Client;
|
|
17
18
|
};
|
|
18
|
-
export declare const makeD1ProofPersistenceServices: <Rq extends AnySQLiteTable, S extends AnySQLiteTable, G extends AnySQLiteTable, Cn extends AnySQLiteTable, Rs extends AnySQLiteTable, A extends AnySQLiteTable, F extends AnySQLiteTable, C extends AnySQLiteTable, Sub extends AnySQLiteTable, I extends AnySQLiteTable, Cr extends AnySQLiteTable, NativeId>(
|
|
19
|
+
export declare const makeD1ProofPersistenceServices: <Rq extends AnySQLiteTable, S extends AnySQLiteTable, G extends AnySQLiteTable, Cn extends AnySQLiteTable, Rs extends AnySQLiteTable, A extends AnySQLiteTable, F extends AnySQLiteTable, C extends AnySQLiteTable, Sub extends AnySQLiteTable, I extends AnySQLiteTable, Cr extends AnySQLiteTable, NativeId>(mapping: D1ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>) => Effect.Effect<{
|
|
19
20
|
proofPersistence: {
|
|
20
21
|
readonly issue: <A_1>(input: {
|
|
21
22
|
readonly record: import("@yielded/auth/Proofs").ProofRecord;
|
|
@@ -65,7 +66,7 @@ export declare const makeD1ProofPersistenceServices: <Rq extends AnySQLiteTable,
|
|
|
65
66
|
readonly limit: number;
|
|
66
67
|
}, prepare: PrepareProofCommit<ProofCleanupResult, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofUnavailable>;
|
|
67
68
|
};
|
|
68
|
-
}, never, LifecycleHooks>;
|
|
69
|
+
}, never, Database$1 | LifecycleHooks>;
|
|
69
70
|
type CoordinatorError<E> = E | ProofUnavailable | HookConfigurationError;
|
|
70
71
|
/**
|
|
71
72
|
* Owns one proof transition plus application statements in one D1 batch. It
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { requiredProofConstraints } from "./proof-model.mjs";
|
|
2
2
|
import { PersistenceMappingError, column, isMappedConstraintConflict, updateValues } from "./model.mjs";
|
|
3
3
|
import { balancedD1And } from "./d1-generated-statement.mjs";
|
|
4
|
+
import { Database } from "./d1-database.mjs";
|
|
4
5
|
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
5
6
|
import { CurrentD1PlanningDatabase, makeD1Owner } from "./d1-planning.mjs";
|
|
6
7
|
import { and, count, eq, gte, inArray, isNull, lte, notExists, or, sql } from "drizzle-orm";
|
|
@@ -730,7 +731,8 @@ const makeProofPlans = (mapping) => {
|
|
|
730
731
|
})
|
|
731
732
|
};
|
|
732
733
|
};
|
|
733
|
-
const makeD1ProofPersistenceServices =
|
|
734
|
+
const makeD1ProofPersistenceServices = Effect.fnUntraced(function* (mapping) {
|
|
735
|
+
const database = yield* Database;
|
|
734
736
|
const hooks = yield* LifecycleHooks;
|
|
735
737
|
const plans = makeProofPlans(mapping);
|
|
736
738
|
const run = (plan) => Effect.gen(function* () {
|