@yielded/auth-persistence-drizzle 0.1.0-beta.17 → 0.1.0-beta.19

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.
Files changed (142) hide show
  1. package/README.md +8 -1
  2. package/dist/D1.d.mts +120 -120
  3. package/dist/Libsql.d.mts +154 -154
  4. package/dist/Mysql2.d.mts +166 -166
  5. package/dist/Pglite.d.mts +166 -166
  6. package/dist/Postgres.d.mts +152 -152
  7. package/dist/SqliteBun.d.mts +168 -168
  8. package/dist/SqliteDo.d.mts +237 -259
  9. package/dist/SqliteDo.mjs +30 -45
  10. package/dist/SqliteDo.mjs.map +1 -1
  11. package/dist/SqliteNode.d.mts +154 -154
  12. package/dist/SqliteWasm.d.mts +163 -163
  13. package/dist/drizzle/crypto.mjs +11 -0
  14. package/dist/drizzle/crypto.mjs.map +1 -0
  15. package/dist/drizzle/d1-identity.mjs +2 -2
  16. package/dist/drizzle/d1-identity.mjs.map +1 -1
  17. package/dist/drizzle/d1-oauth.d.mts +16 -16
  18. package/dist/drizzle/d1-oauth.mjs.map +1 -1
  19. package/dist/drizzle/d1-passkey.d.mts +6 -6
  20. package/dist/drizzle/d1-passkey.mjs.map +1 -1
  21. package/dist/drizzle/d1-password-prepared.mjs +3 -3
  22. package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
  23. package/dist/drizzle/d1-passwords.d.mts +1 -1
  24. package/dist/drizzle/d1-passwords.mjs +1 -1
  25. package/dist/drizzle/d1-passwords.mjs.map +1 -1
  26. package/dist/drizzle/d1-phone.d.mts +3 -3
  27. package/dist/drizzle/d1-phone.mjs.map +1 -1
  28. package/dist/drizzle/d1-proofs.d.mts +1 -1
  29. package/dist/drizzle/d1-sessions.d.mts +1 -1
  30. package/dist/drizzle/d1-sessions.mjs +4 -3
  31. package/dist/drizzle/d1-sessions.mjs.map +1 -1
  32. package/dist/drizzle/d1-totp.d.mts +3 -3
  33. package/dist/drizzle/d1-totp.mjs.map +1 -1
  34. package/dist/drizzle/mysql-identity.mjs +2 -2
  35. package/dist/drizzle/mysql-identity.mjs.map +1 -1
  36. package/dist/drizzle/oauth-accounts.mjs +9 -8
  37. package/dist/drizzle/oauth-accounts.mjs.map +1 -1
  38. package/dist/drizzle/oauth-connected-collection.mjs +1 -1
  39. package/dist/drizzle/oauth-connected-collection.mjs.map +1 -1
  40. package/dist/drizzle/oauth-connected-custody.mjs +5 -4
  41. package/dist/drizzle/oauth-connected-custody.mjs.map +1 -1
  42. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
  43. package/dist/drizzle/oauth-connected-flow.mjs +8 -7
  44. package/dist/drizzle/oauth-connected-flow.mjs.map +1 -1
  45. package/dist/drizzle/oauth-connected-management.mjs +3 -2
  46. package/dist/drizzle/oauth-connected-management.mjs.map +1 -1
  47. package/dist/drizzle/oauth-connected-reference.mjs +8 -4
  48. package/dist/drizzle/oauth-connected-reference.mjs.map +1 -1
  49. package/dist/drizzle/oauth-connected-settlement.mjs +4 -4
  50. package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -1
  51. package/dist/drizzle/oauth-connected-sign-in.mjs +11 -10
  52. package/dist/drizzle/oauth-connected-sign-in.mjs.map +1 -1
  53. package/dist/drizzle/oauth-connected-state.d.mts +265 -265
  54. package/dist/drizzle/oauth-connected-state.mjs +23 -20
  55. package/dist/drizzle/oauth-connected-state.mjs.map +1 -1
  56. package/dist/drizzle/oauth-connected-target.d.mts +105 -105
  57. package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
  58. package/dist/drizzle/oauth-drivers.mjs.map +1 -1
  59. package/dist/drizzle/oauth-flow.mjs +1 -1
  60. package/dist/drizzle/oauth-flow.mjs.map +1 -1
  61. package/dist/drizzle/oauth-model.d.mts +4 -4
  62. package/dist/drizzle/oauth-model.mjs.map +1 -1
  63. package/dist/drizzle/oauth-registration.mjs +2 -2
  64. package/dist/drizzle/oauth-registration.mjs.map +1 -1
  65. package/dist/drizzle/oauth-state.mjs +11 -12
  66. package/dist/drizzle/oauth-state.mjs.map +1 -1
  67. package/dist/drizzle/oauth-target.d.mts +4 -4
  68. package/dist/drizzle/oauth-target.mjs.map +1 -1
  69. package/dist/drizzle/passkey-drivers.mjs.map +1 -1
  70. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
  71. package/dist/drizzle/passkey-write-target.d.mts +1 -1
  72. package/dist/drizzle/password-prepared-sql.mjs +1 -1
  73. package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
  74. package/dist/drizzle/password-prepared-state.mjs +1 -1
  75. package/dist/drizzle/pg-identity.mjs +2 -2
  76. package/dist/drizzle/pg-identity.mjs.map +1 -1
  77. package/dist/drizzle/phone-model.d.mts +2 -2
  78. package/dist/drizzle/phone-model.mjs +3 -3
  79. package/dist/drizzle/phone-model.mjs.map +1 -1
  80. package/dist/drizzle/phone-target.d.mts +1 -1
  81. package/dist/drizzle/phone-target.mjs +2 -2
  82. package/dist/drizzle/phone-target.mjs.map +1 -1
  83. package/dist/drizzle/sqlite-do-database.d.mts +29 -0
  84. package/dist/drizzle/sqlite-do-database.mjs +45 -0
  85. package/dist/drizzle/sqlite-do-database.mjs.map +1 -0
  86. package/dist/drizzle/sqlite-emails.mjs.map +1 -1
  87. package/dist/drizzle/sqlite-identity.mjs +2 -2
  88. package/dist/drizzle/sqlite-identity.mjs.map +1 -1
  89. package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
  90. package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
  91. package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
  92. package/dist/drizzle/storage-validation.mjs +17 -9
  93. package/dist/drizzle/storage-validation.mjs.map +1 -1
  94. package/dist/drizzle/totp-state.mjs +8 -8
  95. package/dist/drizzle/totp-state.mjs.map +1 -1
  96. package/dist/drizzle/totp-target.d.mts +1 -1
  97. package/dist/drizzle/totp-target.mjs +2 -2
  98. package/dist/drizzle/totp-target.mjs.map +1 -1
  99. package/package.json +1 -1
  100. package/src/SqliteDo.ts +63 -70
  101. package/src/drizzle/crypto.ts +14 -0
  102. package/src/drizzle/d1-identity.ts +2 -2
  103. package/src/drizzle/d1-oauth.ts +14 -5
  104. package/src/drizzle/d1-passkey.ts +5 -1
  105. package/src/drizzle/d1-password-prepared.ts +11 -5
  106. package/src/drizzle/d1-passwords.ts +1 -1
  107. package/src/drizzle/d1-phone.ts +2 -1
  108. package/src/drizzle/d1-sessions.ts +8 -2
  109. package/src/drizzle/d1-totp.ts +6 -2
  110. package/src/drizzle/mysql-identity.ts +2 -2
  111. package/src/drizzle/oauth-accounts.ts +14 -13
  112. package/src/drizzle/oauth-connected-collection.ts +1 -1
  113. package/src/drizzle/oauth-connected-custody.ts +8 -6
  114. package/src/drizzle/oauth-connected-drivers.ts +9 -3
  115. package/src/drizzle/oauth-connected-flow.ts +6 -6
  116. package/src/drizzle/oauth-connected-management.ts +1 -1
  117. package/src/drizzle/oauth-connected-reference.ts +14 -9
  118. package/src/drizzle/oauth-connected-settlement.ts +4 -4
  119. package/src/drizzle/oauth-connected-sign-in.ts +11 -10
  120. package/src/drizzle/oauth-connected-state.ts +40 -25
  121. package/src/drizzle/oauth-connected-target.ts +9 -5
  122. package/src/drizzle/oauth-drivers.ts +13 -5
  123. package/src/drizzle/oauth-flow.ts +1 -1
  124. package/src/drizzle/oauth-model.ts +4 -4
  125. package/src/drizzle/oauth-registration.ts +2 -2
  126. package/src/drizzle/oauth-state.ts +17 -15
  127. package/src/drizzle/oauth-target.ts +11 -3
  128. package/src/drizzle/passkey-drivers.ts +7 -3
  129. package/src/drizzle/passkey-write-drivers.ts +11 -2
  130. package/src/drizzle/password-prepared-sql.ts +1 -1
  131. package/src/drizzle/pg-identity.ts +2 -2
  132. package/src/drizzle/phone-model.ts +3 -3
  133. package/src/drizzle/phone-target.ts +11 -4
  134. package/src/drizzle/sqlite-do-database.ts +87 -0
  135. package/src/drizzle/sqlite-emails.ts +1 -1
  136. package/src/drizzle/sqlite-identity.ts +2 -2
  137. package/src/drizzle/sqlite-passwords.ts +1 -1
  138. package/src/drizzle/sqlite-proofs.ts +2 -2
  139. package/src/drizzle/sqlite-sessions.ts +2 -2
  140. package/src/drizzle/storage-validation.ts +15 -6
  141. package/src/drizzle/totp-state.ts +8 -8
  142. package/src/drizzle/totp-target.ts +11 -5
@@ -1,6 +1,6 @@
1
1
  import { OAuthTargetConfiguration } from "./oauth-target.mjs";
2
2
  import { Mapping, Revocations, oauth_connected_state_d_exports } from "./oauth-connected-state.mjs";
3
- import { Effect, Layer, Schema } from "effect";
3
+ import { Crypto, Effect, Layer, Schema } from "effect";
4
4
  import * as M from "@yielded/auth/OAuth";
5
5
  import { OAuthConnectedPersistence, OAuthConnectedRevocationDecision, OAuthConnectedRevocations, OAuthExternalIdentity, PrepareOAuthCommit } from "@yielded/auth/OAuth";
6
6
  import { Statement } from "effect/sql/Statement";
@@ -21,10 +21,10 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
21
21
  readonly outcome: M.OAuthSignInAccessOutcome;
22
22
  }, prepare: PrepareOAuthCommit<{
23
23
  readonly _tag: "Rejected";
24
- } | {
25
- readonly _tag: "Ambiguous";
26
24
  } | {
27
25
  readonly _tag: "Cancelled";
26
+ } | {
27
+ readonly _tag: "Ambiguous";
28
28
  } | {
29
29
  readonly _tag: "Connected";
30
30
  readonly grant: {
@@ -56,7 +56,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
56
56
  readonly resources: readonly string[];
57
57
  readonly retention: "access-and-refresh" | "access-only";
58
58
  readonly maximumAccessLifetimeMillis: number;
59
- readonly maximumRefreshLifetimeMillis?: number | undefined;
59
+ readonly maximumRefreshLifetimeMillis?: number;
60
60
  readonly refreshAheadMillis: number;
61
61
  readonly refresh: "confidential" | "rotating" | "unsupported";
62
62
  readonly revocation: "cohort" | "unsupported";
@@ -69,22 +69,22 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
69
69
  readonly metadata: {
70
70
  readonly scopes: readonly string[];
71
71
  readonly resources: readonly string[];
72
- readonly accessExpiresAtMillis?: number | undefined;
73
- readonly refreshExpiresAtMillis?: number | undefined;
72
+ readonly accessExpiresAtMillis?: number;
73
+ readonly refreshExpiresAtMillis?: number;
74
74
  readonly useUntilMillis: number;
75
- readonly refreshUseUntilMillis?: number | undefined;
75
+ readonly refreshUseUntilMillis?: number;
76
76
  readonly obtainedAtMillis: number;
77
77
  readonly profile?: {
78
- readonly displayName?: string | undefined;
79
- readonly handle?: string | undefined;
80
- readonly avatarUrl?: string | undefined;
81
- readonly profileUrl?: string | undefined;
82
- readonly email?: string | undefined;
83
- readonly emailVerified?: boolean | undefined;
78
+ readonly displayName?: string;
79
+ readonly handle?: string;
80
+ readonly avatarUrl?: string;
81
+ readonly profileUrl?: string;
82
+ readonly email?: string;
83
+ readonly emailVerified?: boolean;
84
84
  readonly providerData?: {
85
85
  readonly [x: string]: Schema.Json;
86
- } | undefined;
87
- } | undefined;
86
+ };
87
+ };
88
88
  };
89
89
  };
90
90
  readonly sealed: {
@@ -137,11 +137,11 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
137
137
  readonly resources: readonly string[];
138
138
  readonly retention: "access-and-refresh" | "access-only";
139
139
  readonly maximumAccessLifetimeMillis: number;
140
- readonly maximumRefreshLifetimeMillis?: number | undefined;
140
+ readonly maximumRefreshLifetimeMillis?: number;
141
141
  readonly refreshAheadMillis: number;
142
142
  readonly refresh: "confidential" | "rotating" | "unsupported";
143
143
  readonly revocation: "cohort" | "unsupported";
144
- } | undefined;
144
+ };
145
145
  readonly returnTarget: string & import("effect/Brand").Brand<"effect-auth/OAuthReturnTarget">;
146
146
  readonly stateDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
147
147
  readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
@@ -168,7 +168,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
168
168
  readonly resources: readonly string[];
169
169
  readonly retention: "access-and-refresh" | "access-only";
170
170
  readonly maximumAccessLifetimeMillis: number;
171
- readonly maximumRefreshLifetimeMillis?: number | undefined;
171
+ readonly maximumRefreshLifetimeMillis?: number;
172
172
  readonly refreshAheadMillis: number;
173
173
  readonly refresh: "confidential" | "rotating" | "unsupported";
174
174
  readonly revocation: "cohort" | "unsupported";
@@ -202,13 +202,13 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
202
202
  readonly resources: readonly string[];
203
203
  readonly retention: "access-and-refresh" | "access-only";
204
204
  readonly maximumAccessLifetimeMillis: number;
205
- readonly maximumRefreshLifetimeMillis?: number | undefined;
205
+ readonly maximumRefreshLifetimeMillis?: number;
206
206
  readonly refreshAheadMillis: number;
207
207
  readonly refresh: "confidential" | "rotating" | "unsupported";
208
208
  readonly revocation: "cohort" | "unsupported";
209
209
  };
210
210
  };
211
- } | undefined;
211
+ };
212
212
  readonly maximumEvidenceAgeMillis: number;
213
213
  };
214
214
  readonly sealed: {
@@ -250,11 +250,11 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
250
250
  readonly resources: readonly string[];
251
251
  readonly retention: "access-and-refresh" | "access-only";
252
252
  readonly maximumAccessLifetimeMillis: number;
253
- readonly maximumRefreshLifetimeMillis?: number | undefined;
253
+ readonly maximumRefreshLifetimeMillis?: number;
254
254
  readonly refreshAheadMillis: number;
255
255
  readonly refresh: "confidential" | "rotating" | "unsupported";
256
256
  readonly revocation: "cohort" | "unsupported";
257
- } | undefined;
257
+ };
258
258
  readonly returnTarget: string & import("effect/Brand").Brand<"effect-auth/OAuthReturnTarget">;
259
259
  readonly stateDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
260
260
  readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
@@ -281,7 +281,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
281
281
  readonly resources: readonly string[];
282
282
  readonly retention: "access-and-refresh" | "access-only";
283
283
  readonly maximumAccessLifetimeMillis: number;
284
- readonly maximumRefreshLifetimeMillis?: number | undefined;
284
+ readonly maximumRefreshLifetimeMillis?: number;
285
285
  readonly refreshAheadMillis: number;
286
286
  readonly refresh: "confidential" | "rotating" | "unsupported";
287
287
  readonly revocation: "cohort" | "unsupported";
@@ -315,13 +315,13 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
315
315
  readonly resources: readonly string[];
316
316
  readonly retention: "access-and-refresh" | "access-only";
317
317
  readonly maximumAccessLifetimeMillis: number;
318
- readonly maximumRefreshLifetimeMillis?: number | undefined;
318
+ readonly maximumRefreshLifetimeMillis?: number;
319
319
  readonly refreshAheadMillis: number;
320
320
  readonly refresh: "confidential" | "rotating" | "unsupported";
321
321
  readonly revocation: "cohort" | "unsupported";
322
322
  };
323
323
  };
324
- } | undefined;
324
+ };
325
325
  readonly maximumEvidenceAgeMillis: number;
326
326
  };
327
327
  readonly sealed: {
@@ -368,11 +368,11 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
368
368
  readonly resources: readonly string[];
369
369
  readonly retention: "access-and-refresh" | "access-only";
370
370
  readonly maximumAccessLifetimeMillis: number;
371
- readonly maximumRefreshLifetimeMillis?: number | undefined;
371
+ readonly maximumRefreshLifetimeMillis?: number;
372
372
  readonly refreshAheadMillis: number;
373
373
  readonly refresh: "confidential" | "rotating" | "unsupported";
374
374
  readonly revocation: "cohort" | "unsupported";
375
- } | undefined;
375
+ };
376
376
  readonly returnTarget: string & import("effect/Brand").Brand<"effect-auth/OAuthReturnTarget">;
377
377
  readonly stateDigest: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
378
378
  readonly requestBindingVerifier: string & import("effect/Brand").Brand<"effect-auth/TokenDigest">;
@@ -399,7 +399,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
399
399
  readonly resources: readonly string[];
400
400
  readonly retention: "access-and-refresh" | "access-only";
401
401
  readonly maximumAccessLifetimeMillis: number;
402
- readonly maximumRefreshLifetimeMillis?: number | undefined;
402
+ readonly maximumRefreshLifetimeMillis?: number;
403
403
  readonly refreshAheadMillis: number;
404
404
  readonly refresh: "confidential" | "rotating" | "unsupported";
405
405
  readonly revocation: "cohort" | "unsupported";
@@ -433,13 +433,13 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
433
433
  readonly resources: readonly string[];
434
434
  readonly retention: "access-and-refresh" | "access-only";
435
435
  readonly maximumAccessLifetimeMillis: number;
436
- readonly maximumRefreshLifetimeMillis?: number | undefined;
436
+ readonly maximumRefreshLifetimeMillis?: number;
437
437
  readonly refreshAheadMillis: number;
438
438
  readonly refresh: "confidential" | "rotating" | "unsupported";
439
439
  readonly revocation: "cohort" | "unsupported";
440
440
  };
441
441
  };
442
- } | undefined;
442
+ };
443
443
  readonly maximumEvidenceAgeMillis: number;
444
444
  };
445
445
  readonly sealed: {
@@ -477,10 +477,10 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
477
477
  readonly nowMillis: number;
478
478
  }, prepare: PrepareOAuthCommit<{
479
479
  readonly _tag: "Rejected";
480
- } | {
481
- readonly _tag: "Ambiguous";
482
480
  } | {
483
481
  readonly _tag: "Cancelled";
482
+ } | {
483
+ readonly _tag: "Ambiguous";
484
484
  } | {
485
485
  readonly _tag: "Connected";
486
486
  readonly grant: {
@@ -512,7 +512,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
512
512
  readonly resources: readonly string[];
513
513
  readonly retention: "access-and-refresh" | "access-only";
514
514
  readonly maximumAccessLifetimeMillis: number;
515
- readonly maximumRefreshLifetimeMillis?: number | undefined;
515
+ readonly maximumRefreshLifetimeMillis?: number;
516
516
  readonly refreshAheadMillis: number;
517
517
  readonly refresh: "confidential" | "rotating" | "unsupported";
518
518
  readonly revocation: "cohort" | "unsupported";
@@ -525,22 +525,22 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
525
525
  readonly metadata: {
526
526
  readonly scopes: readonly string[];
527
527
  readonly resources: readonly string[];
528
- readonly accessExpiresAtMillis?: number | undefined;
529
- readonly refreshExpiresAtMillis?: number | undefined;
528
+ readonly accessExpiresAtMillis?: number;
529
+ readonly refreshExpiresAtMillis?: number;
530
530
  readonly useUntilMillis: number;
531
- readonly refreshUseUntilMillis?: number | undefined;
531
+ readonly refreshUseUntilMillis?: number;
532
532
  readonly obtainedAtMillis: number;
533
533
  readonly profile?: {
534
- readonly displayName?: string | undefined;
535
- readonly handle?: string | undefined;
536
- readonly avatarUrl?: string | undefined;
537
- readonly profileUrl?: string | undefined;
538
- readonly email?: string | undefined;
539
- readonly emailVerified?: boolean | undefined;
534
+ readonly displayName?: string;
535
+ readonly handle?: string;
536
+ readonly avatarUrl?: string;
537
+ readonly profileUrl?: string;
538
+ readonly email?: string;
539
+ readonly emailVerified?: boolean;
540
540
  readonly providerData?: {
541
541
  readonly [x: string]: Schema.Json;
542
- } | undefined;
543
- } | undefined;
542
+ };
543
+ };
544
544
  };
545
545
  };
546
546
  readonly sealed: {
@@ -567,22 +567,22 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
567
567
  readonly profileKey: string & import("effect/Brand").Brand<"effect-auth/OAuthPermissionProfileKey">;
568
568
  readonly status: "Active" | "Disconnected" | "ReauthorizationRequired" | "Refreshing";
569
569
  readonly scopes: readonly string[];
570
- readonly accessExpiresAtMillis?: number | undefined;
570
+ readonly accessExpiresAtMillis?: number;
571
571
  readonly useUntilMillis: number;
572
572
  readonly profile?: {
573
- readonly displayName?: string | undefined;
574
- readonly handle?: string | undefined;
575
- readonly avatarUrl?: string | undefined;
576
- readonly profileUrl?: string | undefined;
577
- readonly email?: string | undefined;
578
- readonly emailVerified?: boolean | undefined;
573
+ readonly displayName?: string;
574
+ readonly handle?: string;
575
+ readonly avatarUrl?: string;
576
+ readonly profileUrl?: string;
577
+ readonly email?: string;
578
+ readonly emailVerified?: boolean;
579
579
  readonly providerData?: {
580
580
  readonly [x: string]: Schema.Json;
581
- } | undefined;
582
- } | undefined;
581
+ };
582
+ };
583
583
  readonly remoteRevocation: "Confirmed" | "Pending" | "Unknown" | "Unsupported";
584
584
  }[];
585
- readonly cursor?: string | undefined;
585
+ readonly cursor?: string;
586
586
  }, M.OAuthUnavailable>;
587
587
  readonly inspectDisconnect: (input: {
588
588
  readonly moduleId: string & import("effect/Brand").Brand<"effect-auth/OAuthModuleId">;
@@ -625,7 +625,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
625
625
  readonly resources: readonly string[];
626
626
  readonly retention: "access-and-refresh" | "access-only";
627
627
  readonly maximumAccessLifetimeMillis: number;
628
- readonly maximumRefreshLifetimeMillis?: number | undefined;
628
+ readonly maximumRefreshLifetimeMillis?: number;
629
629
  readonly refreshAheadMillis: number;
630
630
  readonly refresh: "confidential" | "rotating" | "unsupported";
631
631
  readonly revocation: "cohort" | "unsupported";
@@ -638,22 +638,22 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
638
638
  readonly metadata: {
639
639
  readonly scopes: readonly string[];
640
640
  readonly resources: readonly string[];
641
- readonly accessExpiresAtMillis?: number | undefined;
642
- readonly refreshExpiresAtMillis?: number | undefined;
641
+ readonly accessExpiresAtMillis?: number;
642
+ readonly refreshExpiresAtMillis?: number;
643
643
  readonly useUntilMillis: number;
644
- readonly refreshUseUntilMillis?: number | undefined;
644
+ readonly refreshUseUntilMillis?: number;
645
645
  readonly obtainedAtMillis: number;
646
646
  readonly profile?: {
647
- readonly displayName?: string | undefined;
648
- readonly handle?: string | undefined;
649
- readonly avatarUrl?: string | undefined;
650
- readonly profileUrl?: string | undefined;
651
- readonly email?: string | undefined;
652
- readonly emailVerified?: boolean | undefined;
647
+ readonly displayName?: string;
648
+ readonly handle?: string;
649
+ readonly avatarUrl?: string;
650
+ readonly profileUrl?: string;
651
+ readonly email?: string;
652
+ readonly emailVerified?: boolean;
653
653
  readonly providerData?: {
654
654
  readonly [x: string]: Schema.Json;
655
- } | undefined;
656
- } | undefined;
655
+ };
656
+ };
657
657
  };
658
658
  };
659
659
  readonly sealed?: {
@@ -661,7 +661,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
661
661
  readonly keyId: string;
662
662
  readonly nonce: string;
663
663
  readonly ciphertext: import("effect/Redacted").Redacted<string>;
664
- } | undefined;
664
+ };
665
665
  };
666
666
  readonly revision: {
667
667
  readonly subjectId: string & import("effect/Brand").Brand<"effect-auth/SubjectId">;
@@ -738,7 +738,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
738
738
  readonly resources: readonly string[];
739
739
  readonly retention: "access-and-refresh" | "access-only";
740
740
  readonly maximumAccessLifetimeMillis: number;
741
- readonly maximumRefreshLifetimeMillis?: number | undefined;
741
+ readonly maximumRefreshLifetimeMillis?: number;
742
742
  readonly refreshAheadMillis: number;
743
743
  readonly refresh: "confidential" | "rotating" | "unsupported";
744
744
  readonly revocation: "cohort" | "unsupported";
@@ -751,22 +751,22 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
751
751
  readonly metadata: {
752
752
  readonly scopes: readonly string[];
753
753
  readonly resources: readonly string[];
754
- readonly accessExpiresAtMillis?: number | undefined;
755
- readonly refreshExpiresAtMillis?: number | undefined;
754
+ readonly accessExpiresAtMillis?: number;
755
+ readonly refreshExpiresAtMillis?: number;
756
756
  readonly useUntilMillis: number;
757
- readonly refreshUseUntilMillis?: number | undefined;
757
+ readonly refreshUseUntilMillis?: number;
758
758
  readonly obtainedAtMillis: number;
759
759
  readonly profile?: {
760
- readonly displayName?: string | undefined;
761
- readonly handle?: string | undefined;
762
- readonly avatarUrl?: string | undefined;
763
- readonly profileUrl?: string | undefined;
764
- readonly email?: string | undefined;
765
- readonly emailVerified?: boolean | undefined;
760
+ readonly displayName?: string;
761
+ readonly handle?: string;
762
+ readonly avatarUrl?: string;
763
+ readonly profileUrl?: string;
764
+ readonly email?: string;
765
+ readonly emailVerified?: boolean;
766
766
  readonly providerData?: {
767
767
  readonly [x: string]: Schema.Json;
768
- } | undefined;
769
- } | undefined;
768
+ };
769
+ };
770
770
  };
771
771
  };
772
772
  readonly sealed: {
@@ -823,7 +823,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
823
823
  readonly resources: readonly string[];
824
824
  readonly retention: "access-and-refresh" | "access-only";
825
825
  readonly maximumAccessLifetimeMillis: number;
826
- readonly maximumRefreshLifetimeMillis?: number | undefined;
826
+ readonly maximumRefreshLifetimeMillis?: number;
827
827
  readonly refreshAheadMillis: number;
828
828
  readonly refresh: "confidential" | "rotating" | "unsupported";
829
829
  readonly revocation: "cohort" | "unsupported";
@@ -836,22 +836,22 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
836
836
  readonly metadata: {
837
837
  readonly scopes: readonly string[];
838
838
  readonly resources: readonly string[];
839
- readonly accessExpiresAtMillis?: number | undefined;
840
- readonly refreshExpiresAtMillis?: number | undefined;
839
+ readonly accessExpiresAtMillis?: number;
840
+ readonly refreshExpiresAtMillis?: number;
841
841
  readonly useUntilMillis: number;
842
- readonly refreshUseUntilMillis?: number | undefined;
842
+ readonly refreshUseUntilMillis?: number;
843
843
  readonly obtainedAtMillis: number;
844
844
  readonly profile?: {
845
- readonly displayName?: string | undefined;
846
- readonly handle?: string | undefined;
847
- readonly avatarUrl?: string | undefined;
848
- readonly profileUrl?: string | undefined;
849
- readonly email?: string | undefined;
850
- readonly emailVerified?: boolean | undefined;
845
+ readonly displayName?: string;
846
+ readonly handle?: string;
847
+ readonly avatarUrl?: string;
848
+ readonly profileUrl?: string;
849
+ readonly email?: string;
850
+ readonly emailVerified?: boolean;
851
851
  readonly providerData?: {
852
852
  readonly [x: string]: Schema.Json;
853
- } | undefined;
854
- } | undefined;
853
+ };
854
+ };
855
855
  };
856
856
  };
857
857
  readonly sealed: {
@@ -907,7 +907,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
907
907
  readonly resources: readonly string[];
908
908
  readonly retention: "access-and-refresh" | "access-only";
909
909
  readonly maximumAccessLifetimeMillis: number;
910
- readonly maximumRefreshLifetimeMillis?: number | undefined;
910
+ readonly maximumRefreshLifetimeMillis?: number;
911
911
  readonly refreshAheadMillis: number;
912
912
  readonly refresh: "confidential" | "rotating" | "unsupported";
913
913
  readonly revocation: "cohort" | "unsupported";
@@ -920,22 +920,22 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
920
920
  readonly metadata: {
921
921
  readonly scopes: readonly string[];
922
922
  readonly resources: readonly string[];
923
- readonly accessExpiresAtMillis?: number | undefined;
924
- readonly refreshExpiresAtMillis?: number | undefined;
923
+ readonly accessExpiresAtMillis?: number;
924
+ readonly refreshExpiresAtMillis?: number;
925
925
  readonly useUntilMillis: number;
926
- readonly refreshUseUntilMillis?: number | undefined;
926
+ readonly refreshUseUntilMillis?: number;
927
927
  readonly obtainedAtMillis: number;
928
928
  readonly profile?: {
929
- readonly displayName?: string | undefined;
930
- readonly handle?: string | undefined;
931
- readonly avatarUrl?: string | undefined;
932
- readonly profileUrl?: string | undefined;
933
- readonly email?: string | undefined;
934
- readonly emailVerified?: boolean | undefined;
929
+ readonly displayName?: string;
930
+ readonly handle?: string;
931
+ readonly avatarUrl?: string;
932
+ readonly profileUrl?: string;
933
+ readonly email?: string;
934
+ readonly emailVerified?: boolean;
935
935
  readonly providerData?: {
936
936
  readonly [x: string]: Schema.Json;
937
- } | undefined;
938
- } | undefined;
937
+ };
938
+ };
939
939
  };
940
940
  };
941
941
  readonly sealed: {
@@ -971,7 +971,7 @@ export declare const makeTargetOAuthConnectedServices: (mapping: Mapping, config
971
971
  readonly hasMore: boolean;
972
972
  }, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.OAuthUnavailable, never>;
973
973
  };
974
- }, M.OAuthUnavailable, import("@yielded/auth/Hooks").LifecycleHooks | import("@yielded/auth-persistence/Adapter").NativeDatabase>;
974
+ }, M.OAuthUnavailable, Crypto.Crypto | import("@yielded/auth/Hooks").LifecycleHooks | import("@yielded/auth-persistence/Adapter").NativeDatabase>;
975
975
  export declare const makeTargetOAuthConnectedRevocationServices: (mapping: Revocations, configuration: OAuthTargetConfiguration) => Effect.Effect<{
976
976
  oauthConnectedRevocations: {
977
977
  readonly claim: <A>(input: {
@@ -986,7 +986,7 @@ export declare const makeTargetOAuthConnectedRevocationServices: (mapping: Revoc
986
986
  readonly settled: boolean;
987
987
  }, A>) => Effect.Effect<import("@yielded/auth/Hooks").PreparedCommit<A>, M.OAuthUnavailable>;
988
988
  };
989
- }, M.OAuthUnavailable, import("@yielded/auth/Hooks").LifecycleHooks | import("@yielded/auth-persistence/Adapter").NativeDatabase>;
989
+ }, M.OAuthUnavailable, Crypto.Crypto | import("@yielded/auth/Hooks").LifecycleHooks | import("@yielded/auth-persistence/Adapter").NativeDatabase>;
990
990
  export declare const oauthConnectedPersistenceLayer: <E, R>(services: Effect.Effect<Effect.Success<ReturnType<typeof makeTargetOAuthConnectedServices>>, E, R>) => Layer.Layer<OAuthConnectedPersistence, E, Exclude<R, import("effect/Scope").Scope>>;
991
991
  export declare const oauthConnectedRevocationsLayer: <E, R>(services: Effect.Effect<Effect.Success<ReturnType<typeof makeTargetOAuthConnectedRevocationServices>>, E, R>) => Layer.Layer<OAuthConnectedRevocations, E, Exclude<R, import("effect/Scope").Scope>>;
992
992
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-connected-target.mjs","names":["S.nativeCopy","SignIn.claimSignIn","SignIn.inspectSignIn","SignIn.settleSignIn","F.capture","F.issue","F.prepare","F.inspectPrepared","F.preflight","F.claim","F.inspectGrant","Management.list","Management.inspectDisconnect","Management.disconnect","A.inspectAccess","A.claimRefresh","A.settleRefresh","A.admitUse","Maintenance.cleanup","Maintenance.claimRevocation","Maintenance.settleRevocation"],"sources":["../../src/drizzle/oauth-connected-target.ts"],"sourcesContent":["import * as M from \"@yielded/auth/OAuth\";\nimport {\n OAuthConnectedPersistence,\n OAuthConnectedRevocations,\n OAuthConnectedRevocationDecision,\n OAuthExternalIdentity,\n snapshotOAuthSync,\n type PrepareOAuthCommit,\n} from \"@yielded/auth/OAuth\";\n/* oxlint-disable no-explicit-any -- concrete adapters retain the native database, table and ID types. */\nimport { Effect, Layer, Schema } from \"effect\";\nimport type { Statement } from \"effect/sql/Statement\";\n\nimport type { PersistenceMappingError } from \"./model\";\nimport * as A from \"./oauth-connected-access\";\nimport * as F from \"./oauth-connected-flow\";\nimport { connectedInputs, connectedRevocationInputs } from \"./oauth-connected-input\";\nimport * as Maintenance from \"./oauth-connected-maintenance\";\nimport * as Management from \"./oauth-connected-management\";\nimport { settle } from \"./oauth-connected-settlement\";\nimport * as SignIn from \"./oauth-connected-sign-in\";\nimport * as S from \"./oauth-connected-state\";\nimport { capturedOAuthService } from \"./oauth-input\";\nimport { CurrentOAuthTransaction } from \"./oauth-owner\";\nimport { captureOAuthMapping } from \"./oauth-state\";\nimport {\n coordinateOAuthOwner,\n makeOAuthExecution,\n type OAuthExecution,\n type OAuthTargetConfiguration,\n} from \"./oauth-target\";\n\nconst captured = <T extends S.Authority>(mapping: T): T => {\n const retained = captureOAuthMapping(mapping),\n codec = retained.subjectId;\n\n const subjectId = {\n ...codec,\n toNative: (subject: Parameters<typeof codec.toNative>[0]) =>\n Effect.map(codec.toNative(subject), S.nativeCopy),\n toSubject: (native: unknown) => codec.toSubject(S.nativeCopy(native)),\n equals: (a: unknown, b: unknown) => codec.equals(S.nativeCopy(a), S.nativeCopy(b)),\n };\n\n const ownership = retained.ownership;\n\n if (ownership.mode === \"separate\" && \"encodeInsert\" in ownership.external) {\n const encode = ownership.external.encodeInsert as (input: {\n readonly identity: typeof OAuthExternalIdentity.Type;\n readonly identityKey: string;\n readonly subjectId: unknown;\n }) => import(\"./oauth-owner\").Row;\n\n return captureOAuthMapping({\n ...retained,\n subjectId,\n ownership: {\n ...ownership,\n external: {\n ...ownership.external,\n encodeInsert: (input: Parameters<typeof encode>[0]) =>\n encode({\n ...input,\n identity: snapshotOAuthSync(OAuthExternalIdentity, input.identity),\n subjectId: S.nativeCopy(input.subjectId),\n }),\n },\n },\n });\n }\n\n return captureOAuthMapping({ ...retained, subjectId });\n};\n\nconst prepare = <Value, Encoded, A>(\n schema: Schema.Codec<Value, Encoded, never, never>,\n value: Value,\n callback: PrepareOAuthCommit<Value, A>,\n) =>\n Effect.flatMap(CurrentOAuthTransaction, (owner) =>\n Effect.sync(() => {\n owner.guards.push(owner.journal.prepare(undefined));\n\n return callback(snapshotOAuthSync(schema, value), owner.journal);\n }),\n );\n\nconst mutation =\n <Input, Value, Encoded>(\n mapping: S.Mapping,\n execute: OAuthExecution,\n body: (\n mapping: S.Mapping,\n input: Input,\n ) => Effect.Effect<\n Value,\n import(\"@yielded/auth/OAuth\").OAuthUnavailable | PersistenceMappingError,\n CurrentOAuthTransaction\n >,\n schema: Schema.Codec<Value, Encoded, never, never>,\n ) =>\n <A>(input: Input, callback: PrepareOAuthCommit<Value, A>) =>\n execute.run(Effect.flatMap(body(mapping, input), (value) => prepare(schema, value, callback)));\n\nconst read =\n <Input, Value>(\n mapping: S.Mapping,\n execute: OAuthExecution,\n body: (\n mapping: S.Mapping,\n input: Input,\n ) => Effect.Effect<\n Value,\n import(\"@yielded/auth/OAuth\").OAuthUnavailable | PersistenceMappingError,\n CurrentOAuthTransaction\n >,\n ) =>\n (input: Input) =>\n execute.run(body(mapping, input), false);\n\nexport const makeConnected = (\n mapping: S.Mapping,\n execute: OAuthExecution,\n): OAuthConnectedPersistence[\"Service\"] =>\n capturedOAuthService<OAuthConnectedPersistence[\"Service\"]>(\n {\n claimSignIn: mutation(mapping, execute, SignIn.claimSignIn, M.OAuthSignInAccessClaim),\n inspectSignIn: read(mapping, execute, SignIn.inspectSignIn),\n settleSignIn: mutation(\n mapping,\n execute,\n SignIn.settleSignIn,\n M.OAuthConnectedSettlementDecision,\n ),\n capture: read(mapping, execute, F.capture),\n issue: mutation(mapping, execute, F.issue, M.OAuthConnectedIssueDecision),\n prepare: mutation(mapping, execute, F.prepare, M.OAuthConnectedIssueDecision),\n inspectPrepared: read(mapping, execute, F.inspectPrepared),\n preflight: read(mapping, execute, F.preflight),\n claim: mutation(mapping, execute, F.claim, M.OAuthConnectedClaimDecision),\n inspectGrant: read(mapping, execute, F.inspectGrant),\n settle: mutation(mapping, execute, settle, M.OAuthConnectedSettlementDecision),\n list: read(mapping, execute, Management.list),\n inspectDisconnect: read(mapping, execute, Management.inspectDisconnect),\n disconnect: mutation(\n mapping,\n execute,\n Management.disconnect,\n M.OAuthConnectedDisconnectDecision,\n ),\n inspectAccess: read(mapping, execute, A.inspectAccess),\n claimRefresh: mutation(mapping, execute, A.claimRefresh, M.OAuthConnectedRefreshDecision),\n settleRefresh: mutation(mapping, execute, A.settleRefresh, M.OAuthConnectedRefreshSettlement),\n admitUse: mutation(mapping, execute, A.admitUse, M.OAuthConnectedUseAdmission),\n cleanup: mutation(mapping, execute, Maintenance.cleanup, M.OAuthConnectedCleanupResult),\n },\n connectedInputs,\n execute.active,\n execute.poison,\n );\n\nconst settled = Schema.Struct({ settled: Schema.Boolean });\n\nexport const makeRevocations = (\n mapping: S.Revocations,\n execute: OAuthExecution,\n): OAuthConnectedRevocations[\"Service\"] =>\n capturedOAuthService<OAuthConnectedRevocations[\"Service\"]>(\n {\n claim: (input, callback) =>\n execute.run(\n Effect.flatMap(Maintenance.claimRevocation(mapping, input), (value) =>\n prepare(OAuthConnectedRevocationDecision, value, callback),\n ),\n ),\n settle: (input, callback) =>\n execute.run(\n Effect.flatMap(Maintenance.settleRevocation(mapping, input), (value) =>\n prepare(settled, value, callback),\n ),\n ),\n },\n connectedRevocationInputs,\n execute.active,\n execute.poison,\n );\n\nexport const makeTargetOAuthConnectedServices = (\n mapping: S.Mapping,\n configuration: OAuthTargetConfiguration,\n) => {\n const retained = captured(mapping);\n\n return Effect.map(makeOAuthExecution(configuration, retained), (execution) => ({\n oauthConnectedPersistence: makeConnected(retained, execution),\n }));\n};\n\nexport const makeTargetOAuthConnectedRevocationServices = (\n mapping: S.Revocations,\n configuration: OAuthTargetConfiguration,\n) => {\n const retained = captured(mapping);\n\n return Effect.map(makeOAuthExecution(configuration, retained), (execution) => ({\n oauthConnectedRevocations: makeRevocations(retained, execution),\n }));\n};\n\nexport const coordinateTargetOAuthConnected = <Transaction, A, E, R>(\n database: any,\n mapping: S.Mapping,\n configuration: OAuthTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly oauthConnectedPersistence: OAuthConnectedPersistence[\"Service\"] },\n append: (statement: Statement<any>) => void,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOAuthOwner(\n database,\n captured(mapping),\n configuration,\n () => Effect.void,\n (value: S.Mapping, execution) => ({\n oauthConnectedPersistence: makeConnected(value, execution),\n }),\n owner,\n );\n\nexport const coordinateTargetOAuthConnectedRevocations = <Transaction, A, E, R>(\n database: any,\n mapping: S.Revocations,\n configuration: OAuthTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly oauthConnectedRevocations: OAuthConnectedRevocations[\"Service\"] },\n append: (statement: Statement<any>) => void,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOAuthOwner(\n database,\n captured(mapping),\n configuration,\n () => Effect.void,\n (value: S.Revocations, execution) => ({\n oauthConnectedRevocations: makeRevocations(value, execution),\n }),\n owner,\n );\n\nexport const oauthConnectedPersistenceLayer = <E, R>(\n services: Effect.Effect<\n Effect.Success<ReturnType<typeof makeTargetOAuthConnectedServices>>,\n E,\n R\n >,\n) =>\n Layer.effect(\n OAuthConnectedPersistence,\n Effect.map(services, (value) => value.oauthConnectedPersistence),\n );\n\nexport const oauthConnectedRevocationsLayer = <E, R>(\n services: Effect.Effect<\n Effect.Success<ReturnType<typeof makeTargetOAuthConnectedRevocationServices>>,\n E,\n R\n >,\n) =>\n Layer.effect(\n OAuthConnectedRevocations,\n Effect.map(services, (value) => value.oauthConnectedRevocations),\n );\n"],"mappings":"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"}
1
+ {"version":3,"file":"oauth-connected-target.mjs","names":["S.nativeCopy","SignIn.claimSignIn","SignIn.inspectSignIn","SignIn.settleSignIn","F.capture","F.issue","F.prepare","F.inspectPrepared","F.preflight","F.claim","F.inspectGrant","Management.list","Management.inspectDisconnect","Management.disconnect","A.inspectAccess","A.claimRefresh","A.settleRefresh","A.admitUse","Maintenance.cleanup","Maintenance.claimRevocation","Maintenance.settleRevocation"],"sources":["../../src/drizzle/oauth-connected-target.ts"],"sourcesContent":["import * as M from \"@yielded/auth/OAuth\";\nimport {\n OAuthConnectedPersistence,\n OAuthConnectedRevocations,\n OAuthConnectedRevocationDecision,\n OAuthExternalIdentity,\n snapshotOAuthSync,\n type PrepareOAuthCommit,\n} from \"@yielded/auth/OAuth\";\n/* oxlint-disable no-explicit-any -- concrete adapters retain the native database, table and ID types. */\nimport { type Crypto, Effect, Layer, type PlatformError, Schema } from \"effect\";\nimport type { Statement } from \"effect/sql/Statement\";\n\nimport type { PersistenceMappingError } from \"./model\";\nimport * as A from \"./oauth-connected-access\";\nimport * as F from \"./oauth-connected-flow\";\nimport { connectedInputs, connectedRevocationInputs } from \"./oauth-connected-input\";\nimport * as Maintenance from \"./oauth-connected-maintenance\";\nimport * as Management from \"./oauth-connected-management\";\nimport { settle } from \"./oauth-connected-settlement\";\nimport * as SignIn from \"./oauth-connected-sign-in\";\nimport * as S from \"./oauth-connected-state\";\nimport { capturedOAuthService } from \"./oauth-input\";\nimport { CurrentOAuthTransaction } from \"./oauth-owner\";\nimport { captureOAuthMapping } from \"./oauth-state\";\nimport {\n coordinateOAuthOwner,\n makeOAuthExecution,\n type OAuthExecution,\n type OAuthTargetConfiguration,\n} from \"./oauth-target\";\n\nconst captured = <T extends S.Authority>(mapping: T): T => {\n const retained = captureOAuthMapping(mapping),\n codec = retained.subjectId;\n\n const subjectId = {\n ...codec,\n toNative: (subject: Parameters<typeof codec.toNative>[0]) =>\n Effect.map(codec.toNative(subject), S.nativeCopy),\n toSubject: (native: unknown) => codec.toSubject(S.nativeCopy(native)),\n equals: (a: unknown, b: unknown) => codec.equals(S.nativeCopy(a), S.nativeCopy(b)),\n };\n\n const ownership = retained.ownership;\n\n if (ownership.mode === \"separate\" && \"encodeInsert\" in ownership.external) {\n const encode = ownership.external.encodeInsert as (input: {\n readonly identity: typeof OAuthExternalIdentity.Type;\n readonly identityKey: string;\n readonly subjectId: unknown;\n }) => import(\"./oauth-owner\").Row;\n\n return captureOAuthMapping({\n ...retained,\n subjectId,\n ownership: {\n ...ownership,\n external: {\n ...ownership.external,\n encodeInsert: (input: Parameters<typeof encode>[0]) =>\n encode({\n ...input,\n identity: snapshotOAuthSync(OAuthExternalIdentity, input.identity),\n subjectId: S.nativeCopy(input.subjectId),\n }),\n },\n },\n });\n }\n\n return captureOAuthMapping({ ...retained, subjectId });\n};\n\nconst prepare = <Value, Encoded, A>(\n schema: Schema.Codec<Value, Encoded, never, never>,\n value: Value,\n callback: PrepareOAuthCommit<Value, A>,\n) =>\n Effect.flatMap(CurrentOAuthTransaction, (owner) =>\n Effect.sync(() => {\n owner.guards.push(owner.journal.prepare(undefined));\n\n return callback(snapshotOAuthSync(schema, value), owner.journal);\n }),\n );\n\nconst mutation =\n <Input, Value, Encoded>(\n mapping: S.Mapping,\n execute: OAuthExecution,\n body: (\n mapping: S.Mapping,\n input: Input,\n ) => Effect.Effect<\n Value,\n | import(\"@yielded/auth/OAuth\").OAuthUnavailable\n | PersistenceMappingError\n | PlatformError.PlatformError,\n CurrentOAuthTransaction | Crypto.Crypto\n >,\n schema: Schema.Codec<Value, Encoded, never, never>,\n ) =>\n <A>(input: Input, callback: PrepareOAuthCommit<Value, A>) =>\n execute.run(Effect.flatMap(body(mapping, input), (value) => prepare(schema, value, callback)));\n\nconst read =\n <Input, Value>(\n mapping: S.Mapping,\n execute: OAuthExecution,\n body: (\n mapping: S.Mapping,\n input: Input,\n ) => Effect.Effect<\n Value,\n | import(\"@yielded/auth/OAuth\").OAuthUnavailable\n | PersistenceMappingError\n | PlatformError.PlatformError,\n CurrentOAuthTransaction | Crypto.Crypto\n >,\n ) =>\n (input: Input) =>\n execute.run(body(mapping, input), false);\n\nexport const makeConnected = (\n mapping: S.Mapping,\n execute: OAuthExecution,\n): OAuthConnectedPersistence[\"Service\"] =>\n capturedOAuthService<OAuthConnectedPersistence[\"Service\"]>(\n {\n claimSignIn: mutation(mapping, execute, SignIn.claimSignIn, M.OAuthSignInAccessClaim),\n inspectSignIn: read(mapping, execute, SignIn.inspectSignIn),\n settleSignIn: mutation(\n mapping,\n execute,\n SignIn.settleSignIn,\n M.OAuthConnectedSettlementDecision,\n ),\n capture: read(mapping, execute, F.capture),\n issue: mutation(mapping, execute, F.issue, M.OAuthConnectedIssueDecision),\n prepare: mutation(mapping, execute, F.prepare, M.OAuthConnectedIssueDecision),\n inspectPrepared: read(mapping, execute, F.inspectPrepared),\n preflight: read(mapping, execute, F.preflight),\n claim: mutation(mapping, execute, F.claim, M.OAuthConnectedClaimDecision),\n inspectGrant: read(mapping, execute, F.inspectGrant),\n settle: mutation(mapping, execute, settle, M.OAuthConnectedSettlementDecision),\n list: read(mapping, execute, Management.list),\n inspectDisconnect: read(mapping, execute, Management.inspectDisconnect),\n disconnect: mutation(\n mapping,\n execute,\n Management.disconnect,\n M.OAuthConnectedDisconnectDecision,\n ),\n inspectAccess: read(mapping, execute, A.inspectAccess),\n claimRefresh: mutation(mapping, execute, A.claimRefresh, M.OAuthConnectedRefreshDecision),\n settleRefresh: mutation(mapping, execute, A.settleRefresh, M.OAuthConnectedRefreshSettlement),\n admitUse: mutation(mapping, execute, A.admitUse, M.OAuthConnectedUseAdmission),\n cleanup: mutation(mapping, execute, Maintenance.cleanup, M.OAuthConnectedCleanupResult),\n },\n connectedInputs,\n execute.active,\n execute.poison,\n );\n\nconst settled = Schema.Struct({ settled: Schema.Boolean });\n\nexport const makeRevocations = (\n mapping: S.Revocations,\n execute: OAuthExecution,\n): OAuthConnectedRevocations[\"Service\"] =>\n capturedOAuthService<OAuthConnectedRevocations[\"Service\"]>(\n {\n claim: (input, callback) =>\n execute.run(\n Effect.flatMap(Maintenance.claimRevocation(mapping, input), (value) =>\n prepare(OAuthConnectedRevocationDecision, value, callback),\n ),\n ),\n settle: (input, callback) =>\n execute.run(\n Effect.flatMap(Maintenance.settleRevocation(mapping, input), (value) =>\n prepare(settled, value, callback),\n ),\n ),\n },\n connectedRevocationInputs,\n execute.active,\n execute.poison,\n );\n\nexport const makeTargetOAuthConnectedServices = (\n mapping: S.Mapping,\n configuration: OAuthTargetConfiguration,\n) => {\n const retained = captured(mapping);\n\n return Effect.map(makeOAuthExecution(configuration, retained), (execution) => ({\n oauthConnectedPersistence: makeConnected(retained, execution),\n }));\n};\n\nexport const makeTargetOAuthConnectedRevocationServices = (\n mapping: S.Revocations,\n configuration: OAuthTargetConfiguration,\n) => {\n const retained = captured(mapping);\n\n return Effect.map(makeOAuthExecution(configuration, retained), (execution) => ({\n oauthConnectedRevocations: makeRevocations(retained, execution),\n }));\n};\n\nexport const coordinateTargetOAuthConnected = <Transaction, A, E, R>(\n database: any,\n mapping: S.Mapping,\n configuration: OAuthTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly oauthConnectedPersistence: OAuthConnectedPersistence[\"Service\"] },\n append: (statement: Statement<any>) => void,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOAuthOwner(\n database,\n captured(mapping),\n configuration,\n () => Effect.void,\n (value: S.Mapping, execution) => ({\n oauthConnectedPersistence: makeConnected(value, execution),\n }),\n owner,\n );\n\nexport const coordinateTargetOAuthConnectedRevocations = <Transaction, A, E, R>(\n database: any,\n mapping: S.Revocations,\n configuration: OAuthTargetConfiguration,\n owner: (\n transaction: Transaction,\n services: { readonly oauthConnectedRevocations: OAuthConnectedRevocations[\"Service\"] },\n append: (statement: Statement<any>) => void,\n ) => Effect.Effect<A, E, R>,\n) =>\n coordinateOAuthOwner(\n database,\n captured(mapping),\n configuration,\n () => Effect.void,\n (value: S.Revocations, execution) => ({\n oauthConnectedRevocations: makeRevocations(value, execution),\n }),\n owner,\n );\n\nexport const oauthConnectedPersistenceLayer = <E, R>(\n services: Effect.Effect<\n Effect.Success<ReturnType<typeof makeTargetOAuthConnectedServices>>,\n E,\n R\n >,\n) =>\n Layer.effect(\n OAuthConnectedPersistence,\n Effect.map(services, (value) => value.oauthConnectedPersistence),\n );\n\nexport const oauthConnectedRevocationsLayer = <E, R>(\n services: Effect.Effect<\n Effect.Success<ReturnType<typeof makeTargetOAuthConnectedRevocationServices>>,\n E,\n R\n >,\n) =>\n Layer.effect(\n OAuthConnectedRevocations,\n Effect.map(services, (value) => value.oauthConnectedRevocations),\n );\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-drivers.mjs","names":[],"sources":["../../src/drizzle/oauth-drivers.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n OAuthAccountsPersistence,\n OAuthRegistrationIntents,\n OAuthSignInPersistence,\n} from \"@yielded/auth/OAuth\";\nimport type { Table } from \"drizzle-orm\";\nimport { Effect, Context } from \"effect\";\n\nimport { nativeDatabase } from \"./native-database\";\nimport { makeOAuthConnectedTarget } from \"./oauth-connected-drivers\";\nimport type {\n OAuthAccountsMapping,\n OAuthRegistrationAuthority,\n OAuthRegistrationIntentMapping,\n OAuthRegistrationMapping,\n OAuthSignInMapping,\n} from \"./oauth-model\";\nimport {\n type OAuthCoordinatorError,\n coordinateTargetOAuthAccounts,\n coordinateTargetOAuthSignIn,\n coordinateTargetOAuthRegistrationIntents,\n coordinateTargetOAuthRegistration,\n makeTargetOAuthRegistrationIntentServices,\n makeTargetOAuthRegistrationServices,\n makeTargetOAuthSignInServices,\n makeTargetOAuthAccountsServices,\n type OAuthTargetConfiguration,\n} from \"./oauth-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\n// oxlint-disable-next-line no-explicit-any -- inspect the installed generic transaction signature without erasing its callback parameter.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\n/** Driver-specific entry points instantiate both the database and table family. */\nexport const makeOAuthTarget = <\n DatabaseId,\n D,\n T extends Table,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration: OAuthTargetConfiguration,\n) => {\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthSignInPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthSignInPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthSignInPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthSignInPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthSignInPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetOAuthSignIn<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthSignInPersistence>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthSignInPersistence: OAuthSignInPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(OAuthSignInPersistence, services.oauthSignInPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthRegistrationIntents> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthRegistrationIntents>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthRegistrationIntents | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthRegistrationIntents | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthRegistrationIntents> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetOAuthRegistrationIntents<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthRegistrationIntents>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthRegistrationIntents: OAuthRegistrationIntents[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthRegistrationIntents,\n services.oauthRegistrationIntents,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthAccountsPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthAccountsPersistence>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthAccountsPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthAccountsPersistence | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthAccountsPersistence> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetOAuthAccounts<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthAccountsPersistence>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthAccountsPersistence: OAuthAccountsPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthAccountsPersistence,\n services.oauthAccountsPersistence,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TargetId> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, TargetId> | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetOAuthRegistration<\n Registration,\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, TargetId>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly registrationAuthority: OAuthRegistrationAuthority<Registration> },\n ) => {\n const provided = Context.make(options.target, services.registrationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n\n return {\n ...makeOAuthConnectedTarget<DatabaseId, D, T, {}, Synchronous>(databaseService, configuration),\n coordinateOAuthSignIn,\n coordinateOAuthRegistrationIntents,\n coordinateOAuthAccounts,\n makeOAuthAccountsServices: <\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n >(\n mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>,\n ) =>\n makeTargetOAuthAccountsServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthSignInServices: <S extends T, O extends T, C extends T, AC extends T, F extends T, N>(\n mapping: OAuthSignInMapping<S, O, C, AC, F, N>,\n ) =>\n makeTargetOAuthSignInServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthRegistrationIntentServices: <\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n >(\n mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>,\n ) =>\n makeTargetOAuthRegistrationIntentServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthRegistrationServices: <\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n R extends T,\n N,\n >(\n mapping: OAuthRegistrationMapping<Registration, S, O, C, AC, TA, I, R, N>,\n ) =>\n makeTargetOAuthRegistrationServices<Registration>(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinateOAuthRegistration,\n };\n};\n"],"mappings":";;;;;;;;AAuCA,MAAa,mBAMX,iBACA,kBACG;CA6DH,SAAS,sBAgBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,4BAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,wBAAwB,SAAS,sBAAsB;GACrF,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAiEA,SAAS,mCAkBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,yCAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KACvB,0BACA,SAAS,wBACX;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAiEA,SAAS,wBAkBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,8BAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KACvB,0BACA,SAAS,wBACX;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAmEA,SAAS,4BAoBP,SACA,SAKA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,kCAOE,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;GAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAEA,OAAO;EACL,GAAG,yBAA4D,iBAAiB,aAAa;EAC7F;EACA;EACA;EACA,4BAUE,YAEA,gCAAgC,SAAS,aAAa,CAAC,CAAC,KACtD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,0BACE,YAEA,8BAA8B,SAAS,aAAa,CAAC,CAAC,KACpD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,sCAUE,YAEA,0CAA0C,SAAS,aAAa,CAAC,CAAC,KAChE,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,gCAWE,YAEA,oCAAkD,SAAS,aAAa,CAAC,CAAC,KACxE,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;CACF;AACF"}
1
+ {"version":3,"file":"oauth-drivers.mjs","names":[],"sources":["../../src/drizzle/oauth-drivers.ts"],"sourcesContent":["import { NativeDatabase } from \"@yielded/auth-persistence/Adapter\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n OAuthAccountsPersistence,\n OAuthRegistrationIntents,\n OAuthSignInPersistence,\n} from \"@yielded/auth/OAuth\";\nimport type { Table } from \"drizzle-orm\";\nimport { type Crypto, Effect, Context } from \"effect\";\n\nimport { nativeDatabase } from \"./native-database\";\nimport { makeOAuthConnectedTarget } from \"./oauth-connected-drivers\";\nimport type {\n OAuthAccountsMapping,\n OAuthRegistrationAuthority,\n OAuthRegistrationIntentMapping,\n OAuthRegistrationMapping,\n OAuthSignInMapping,\n} from \"./oauth-model\";\nimport {\n type OAuthCoordinatorError,\n coordinateTargetOAuthAccounts,\n coordinateTargetOAuthSignIn,\n coordinateTargetOAuthRegistrationIntents,\n coordinateTargetOAuthRegistration,\n makeTargetOAuthRegistrationIntentServices,\n makeTargetOAuthRegistrationServices,\n makeTargetOAuthSignInServices,\n makeTargetOAuthAccountsServices,\n type OAuthTargetConfiguration,\n} from \"./oauth-target\";\nimport type { SuppliedService } from \"./SuppliedService\";\n\n// oxlint-disable-next-line no-explicit-any -- inspect the installed generic transaction signature without erasing its callback parameter.\ntype TransactionOf<D> = D extends { readonly transaction: (...args: any[]) => any }\n ? Parameters<Parameters<D[\"transaction\"]>[0]>[0]\n : never;\n\n/** Driver-specific entry points instantiate both the database and table family. */\nexport const makeOAuthTarget = <\n DatabaseId,\n D,\n T extends Table,\n Synchronous extends boolean = false,\n>(\n databaseService: Context.Service<DatabaseId, D>,\n configuration: OAuthTargetConfiguration,\n) => {\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthSignInPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthSignInPersistence>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthSignInPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthSignInPersistence | TxId>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthSignIn<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthSignInMapping<S, O, C, AC, F, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthSignInPersistence> | Crypto.Crypto | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetOAuthSignIn<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthSignInPersistence>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthSignInPersistence: OAuthSignInPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(OAuthSignInPersistence, services.oauthSignInPersistence);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthRegistrationIntents> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthRegistrationIntents>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthRegistrationIntents | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthRegistrationIntents | TxId>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistrationIntents<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthRegistrationIntents> | Crypto.Crypto | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetOAuthRegistrationIntents<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthRegistrationIntents>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthRegistrationIntents: OAuthRegistrationIntents[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthRegistrationIntents,\n services.oauthRegistrationIntents,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<OAuthAccountsPersistence> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthAccountsPersistence>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<\n A,\n E,\n Synchronous extends true ? NoInfer<OAuthAccountsPersistence | TxId> : R\n >,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, OAuthAccountsPersistence | TxId>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthAccounts<\n Database extends D,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, OAuthAccountsPersistence> | Crypto.Crypto | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetOAuthAccounts<\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, OAuthAccountsPersistence>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly oauthAccountsPersistence: OAuthAccountsPersistence[\"Service\"] },\n ) => {\n const provided = Context.make(\n OAuthAccountsPersistence,\n services.oauthAccountsPersistence,\n );\n\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction?: never;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TargetId> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, Synchronous extends true ? NoInfer<TargetId | TxId> : R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n | (Synchronous extends true ? never : Exclude<R, TargetId | TxId>)\n | Crypto.Crypto\n | LifecycleHooks\n | DatabaseRequirements\n >;\n function coordinateOAuthRegistration<\n Database extends D,\n TargetId,\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n Rq extends T,\n N,\n A,\n E,\n R,\n DatabaseError,\n DatabaseRequirements,\n TxId,\n TxShape,\n >(\n acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: OAuthRegistrationMapping<NoInfer<Registration>, S, O, C, AC, TA, I, Rq, N>;\n readonly target: SuppliedService<TargetId, OAuthRegistrationAuthority<Registration>>;\n readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<Database>>, TxShape>;\n },\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<\n A,\n OAuthCoordinatorError<E> | DatabaseError,\n Exclude<R, TargetId> | Crypto.Crypto | LifecycleHooks | DatabaseRequirements\n > {\n return Effect.flatMap(nativeDatabase(acquire), (database) =>\n coordinateTargetOAuthRegistration<\n Registration,\n TransactionOf<Database>,\n A,\n E,\n Exclude<R, TargetId>\n >(\n database,\n options.mapping,\n configuration,\n (\n transaction: TransactionOf<Database>,\n services: { readonly registrationAuthority: OAuthRegistrationAuthority<Registration> },\n ) => {\n const provided = Context.make(options.target, services.registrationAuthority);\n const work = Effect.provideContext(body, provided);\n\n return options.transaction === undefined\n ? work\n : Effect.provideService(work, options.transaction, options.transaction.of(transaction));\n },\n ).pipe(Effect.provideService(NativeDatabase, database)),\n );\n }\n\n return {\n ...makeOAuthConnectedTarget<DatabaseId, D, T, {}, Synchronous>(databaseService, configuration),\n coordinateOAuthSignIn,\n coordinateOAuthRegistrationIntents,\n coordinateOAuthAccounts,\n makeOAuthAccountsServices: <\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n U extends T,\n N,\n >(\n mapping: OAuthAccountsMapping<S, O, C, AC, F, TA, U, N>,\n ) =>\n makeTargetOAuthAccountsServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthSignInServices: <S extends T, O extends T, C extends T, AC extends T, F extends T, N>(\n mapping: OAuthSignInMapping<S, O, C, AC, F, N>,\n ) =>\n makeTargetOAuthSignInServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthRegistrationIntentServices: <\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n F extends T,\n TA extends T,\n I extends T,\n N,\n >(\n mapping: OAuthRegistrationIntentMapping<S, O, C, AC, F, TA, I, N>,\n ) =>\n makeTargetOAuthRegistrationIntentServices(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n makeOAuthRegistrationServices: <\n Registration,\n S extends T,\n O extends T,\n C extends T,\n AC extends T,\n TA extends T,\n I extends T,\n R extends T,\n N,\n >(\n mapping: OAuthRegistrationMapping<Registration, S, O, C, AC, TA, I, R, N>,\n ) =>\n makeTargetOAuthRegistrationServices<Registration>(mapping, configuration).pipe(\n Effect.provideServiceEffect(NativeDatabase, nativeDatabase(databaseService)),\n ),\n coordinateOAuthRegistration,\n };\n};\n"],"mappings":";;;;;;;;AAuCA,MAAa,mBAMX,iBACA,kBACG;CA+DH,SAAS,sBAgBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,4BAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,wBAAwB,SAAS,sBAAsB;GACrF,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAmEA,SAAS,mCAkBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,yCAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KACvB,0BACA,SAAS,wBACX;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAmEA,SAAS,wBAkBP,SACA,SAIA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,8BAME,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KACvB,0BACA,SAAS,wBACX;GAEA,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAqEA,SAAS,4BAoBP,SACA,SAKA,MAKA;EACA,OAAO,OAAO,QAAQ,eAAe,OAAO,IAAI,aAC9C,kCAOE,UACA,QAAQ,SACR,gBAEE,aACA,aACG;GACH,MAAM,WAAW,QAAQ,KAAK,QAAQ,QAAQ,SAAS,qBAAqB;GAC5E,MAAM,OAAO,OAAO,eAAe,MAAM,QAAQ;GAEjD,OAAO,QAAQ,gBAAgB,KAAA,IAC3B,OACA,OAAO,eAAe,MAAM,QAAQ,aAAa,QAAQ,YAAY,GAAG,WAAW,CAAC;EAC1F,CACF,CAAC,CAAC,KAAK,OAAO,eAAe,gBAAgB,QAAQ,CAAC,CACxD;CACF;CAEA,OAAO;EACL,GAAG,yBAA4D,iBAAiB,aAAa;EAC7F;EACA;EACA;EACA,4BAUE,YAEA,gCAAgC,SAAS,aAAa,CAAC,CAAC,KACtD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,0BACE,YAEA,8BAA8B,SAAS,aAAa,CAAC,CAAC,KACpD,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,sCAUE,YAEA,0CAA0C,SAAS,aAAa,CAAC,CAAC,KAChE,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF,gCAWE,YAEA,oCAAkD,SAAS,aAAa,CAAC,CAAC,KACxE,OAAO,qBAAqB,gBAAgB,eAAe,eAAe,CAAC,CAC7E;EACF;CACF;AACF"}
@@ -158,7 +158,7 @@ const currentSubject = (mapping, nativeId) => Effect.flatMap(CurrentOAuthTransac
158
158
  };
159
159
  }));
160
160
  const discoverOwned = (mapping, identity) => Effect.flatMap(CurrentOAuthTransaction, (owner) => Effect.gen(function* () {
161
- const key = oauthIdentityKey(identity), o = mapping.ownership;
161
+ const key = yield* oauthIdentityKey(identity), o = mapping.ownership;
162
162
  const where = both(eq(col(o.table, o.identityKey), key), o.ownedCondition);
163
163
  const row = (yield* owner.read(o.table, where, {
164
164
  lock: false,