@effect-auth/core 0.1.0-alpha.1 → 0.1.0-alpha.13

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 (255) hide show
  1. package/README.md +790 -73
  2. package/dist/ApiKey.d.ts +207 -0
  3. package/dist/ApiKey.d.ts.map +1 -0
  4. package/dist/ApiKey.js +275 -0
  5. package/dist/ApiKey.js.map +1 -0
  6. package/dist/AuditLog.d.ts +335 -1
  7. package/dist/AuditLog.d.ts.map +1 -1
  8. package/dist/AuditLog.js +318 -1
  9. package/dist/AuditLog.js.map +1 -1
  10. package/dist/AuthConfig.d.ts +42 -0
  11. package/dist/AuthConfig.d.ts.map +1 -0
  12. package/dist/AuthConfig.js +43 -0
  13. package/dist/AuthConfig.js.map +1 -0
  14. package/dist/AuthFlow.d.ts +462 -36
  15. package/dist/AuthFlow.d.ts.map +1 -1
  16. package/dist/AuthFlow.js +657 -5
  17. package/dist/AuthFlow.js.map +1 -1
  18. package/dist/AuthKernel.d.ts +3 -0
  19. package/dist/AuthKernel.d.ts.map +1 -0
  20. package/dist/AuthKernel.js +9 -0
  21. package/dist/AuthKernel.js.map +1 -0
  22. package/dist/Challenge.d.ts +24 -4
  23. package/dist/Challenge.d.ts.map +1 -1
  24. package/dist/Challenge.js +167 -1
  25. package/dist/Challenge.js.map +1 -1
  26. package/dist/Client.d.ts +449 -0
  27. package/dist/Client.d.ts.map +1 -0
  28. package/dist/Client.js +985 -0
  29. package/dist/Client.js.map +1 -0
  30. package/dist/Crypto.d.ts +6 -1
  31. package/dist/Crypto.d.ts.map +1 -1
  32. package/dist/Crypto.js +62 -1
  33. package/dist/Crypto.js.map +1 -1
  34. package/dist/DomainVerification.d.ts +200 -0
  35. package/dist/DomainVerification.d.ts.map +1 -0
  36. package/dist/DomainVerification.js +304 -0
  37. package/dist/DomainVerification.js.map +1 -0
  38. package/dist/EffectQbSqliteStorage.d.ts +985 -0
  39. package/dist/EffectQbSqliteStorage.d.ts.map +1 -0
  40. package/dist/EffectQbSqliteStorage.js +2824 -0
  41. package/dist/EffectQbSqliteStorage.js.map +1 -0
  42. package/dist/EmailOtp.d.ts +120 -0
  43. package/dist/EmailOtp.d.ts.map +1 -0
  44. package/dist/EmailOtp.js +286 -0
  45. package/dist/EmailOtp.js.map +1 -0
  46. package/dist/EmailVerification.d.ts +121 -0
  47. package/dist/EmailVerification.d.ts.map +1 -0
  48. package/dist/EmailVerification.js +200 -0
  49. package/dist/EmailVerification.js.map +1 -0
  50. package/dist/HttpApi/Api.d.ts +2410 -0
  51. package/dist/HttpApi/Api.d.ts.map +1 -0
  52. package/dist/HttpApi/Api.js +3026 -0
  53. package/dist/HttpApi/Api.js.map +1 -0
  54. package/dist/HttpApi/Endpoints.d.ts +1073 -0
  55. package/dist/HttpApi/Endpoints.d.ts.map +1 -0
  56. package/dist/HttpApi/Endpoints.js +428 -0
  57. package/dist/HttpApi/Endpoints.js.map +1 -0
  58. package/dist/HttpApi/Errors.d.ts +114 -0
  59. package/dist/HttpApi/Errors.d.ts.map +1 -0
  60. package/dist/HttpApi/Errors.js +230 -0
  61. package/dist/HttpApi/Errors.js.map +1 -0
  62. package/dist/HttpApi/Schemas.d.ts +1254 -0
  63. package/dist/HttpApi/Schemas.d.ts.map +1 -0
  64. package/dist/HttpApi/Schemas.js +862 -0
  65. package/dist/HttpApi/Schemas.js.map +1 -0
  66. package/dist/HttpApi/Security.d.ts +159 -0
  67. package/dist/HttpApi/Security.d.ts.map +1 -0
  68. package/dist/HttpApi/Security.js +530 -0
  69. package/dist/HttpApi/Security.js.map +1 -0
  70. package/dist/HttpApi/Transport.d.ts +65 -0
  71. package/dist/HttpApi/Transport.d.ts.map +1 -0
  72. package/dist/HttpApi/Transport.js +311 -0
  73. package/dist/HttpApi/Transport.js.map +1 -0
  74. package/dist/HttpApi/index.d.ts +8 -0
  75. package/dist/HttpApi/index.d.ts.map +1 -0
  76. package/dist/HttpApi/index.js +7 -0
  77. package/dist/HttpApi/index.js.map +1 -0
  78. package/dist/HttpApi.d.ts +2 -0
  79. package/dist/HttpApi.d.ts.map +1 -0
  80. package/dist/HttpApi.js +2 -0
  81. package/dist/HttpApi.js.map +1 -0
  82. package/dist/Identifiers.d.ts +3 -0
  83. package/dist/Identifiers.d.ts.map +1 -1
  84. package/dist/Identifiers.js +2 -0
  85. package/dist/Identifiers.js.map +1 -1
  86. package/dist/IncidentAction.d.ts +80 -0
  87. package/dist/IncidentAction.d.ts.map +1 -0
  88. package/dist/IncidentAction.js +158 -0
  89. package/dist/IncidentAction.js.map +1 -0
  90. package/dist/Internal.d.ts +7 -0
  91. package/dist/Internal.d.ts.map +1 -0
  92. package/dist/Internal.js +12 -0
  93. package/dist/Internal.js.map +1 -0
  94. package/dist/Jwt.d.ts +281 -0
  95. package/dist/Jwt.d.ts.map +1 -0
  96. package/dist/Jwt.js +721 -0
  97. package/dist/Jwt.js.map +1 -0
  98. package/dist/LoginApproval.d.ts +314 -0
  99. package/dist/LoginApproval.d.ts.map +1 -0
  100. package/dist/LoginApproval.js +551 -0
  101. package/dist/LoginApproval.js.map +1 -0
  102. package/dist/LoginNotification.d.ts +183 -0
  103. package/dist/LoginNotification.d.ts.map +1 -0
  104. package/dist/LoginNotification.js +329 -0
  105. package/dist/LoginNotification.js.map +1 -0
  106. package/dist/LoginRisk.d.ts +344 -0
  107. package/dist/LoginRisk.d.ts.map +1 -0
  108. package/dist/LoginRisk.js +484 -0
  109. package/dist/LoginRisk.js.map +1 -0
  110. package/dist/MachineAuth.d.ts +73 -0
  111. package/dist/MachineAuth.d.ts.map +1 -0
  112. package/dist/MachineAuth.js +147 -0
  113. package/dist/MachineAuth.js.map +1 -0
  114. package/dist/MagicLink.d.ts +85 -0
  115. package/dist/MagicLink.d.ts.map +1 -0
  116. package/dist/MagicLink.js +206 -0
  117. package/dist/MagicLink.js.map +1 -0
  118. package/dist/Mailer.d.ts +147 -0
  119. package/dist/Mailer.d.ts.map +1 -0
  120. package/dist/Mailer.js +208 -0
  121. package/dist/Mailer.js.map +1 -0
  122. package/dist/OAuth.d.ts +1890 -0
  123. package/dist/OAuth.d.ts.map +1 -0
  124. package/dist/OAuth.js +3063 -0
  125. package/dist/OAuth.js.map +1 -0
  126. package/dist/Passkey.d.ts +334 -0
  127. package/dist/Passkey.d.ts.map +1 -0
  128. package/dist/Passkey.js +422 -0
  129. package/dist/Passkey.js.map +1 -0
  130. package/dist/PasskeySimpleWebAuthn.d.ts +11 -0
  131. package/dist/PasskeySimpleWebAuthn.d.ts.map +1 -0
  132. package/dist/PasskeySimpleWebAuthn.js +181 -0
  133. package/dist/PasskeySimpleWebAuthn.js.map +1 -0
  134. package/dist/Password.d.ts +237 -0
  135. package/dist/Password.d.ts.map +1 -0
  136. package/dist/Password.js +641 -0
  137. package/dist/Password.js.map +1 -0
  138. package/dist/Policy.d.ts +7 -4
  139. package/dist/Policy.d.ts.map +1 -1
  140. package/dist/Policy.js +28 -5
  141. package/dist/Policy.js.map +1 -1
  142. package/dist/Privacy.d.ts +15 -0
  143. package/dist/Privacy.d.ts.map +1 -1
  144. package/dist/Privacy.js +58 -1
  145. package/dist/Privacy.js.map +1 -1
  146. package/dist/RateLimiter.d.ts +104 -0
  147. package/dist/RateLimiter.d.ts.map +1 -0
  148. package/dist/RateLimiter.js +118 -0
  149. package/dist/RateLimiter.js.map +1 -0
  150. package/dist/RecoveryCode.d.ts +169 -0
  151. package/dist/RecoveryCode.d.ts.map +1 -0
  152. package/dist/RecoveryCode.js +299 -0
  153. package/dist/RecoveryCode.js.map +1 -0
  154. package/dist/RefreshToken.d.ts +222 -0
  155. package/dist/RefreshToken.d.ts.map +1 -0
  156. package/dist/RefreshToken.js +342 -0
  157. package/dist/RefreshToken.js.map +1 -0
  158. package/dist/Retention.d.ts +98 -0
  159. package/dist/Retention.d.ts.map +1 -0
  160. package/dist/Retention.js +204 -0
  161. package/dist/Retention.js.map +1 -0
  162. package/dist/SecurityTimeline.d.ts +78 -0
  163. package/dist/SecurityTimeline.d.ts.map +1 -0
  164. package/dist/SecurityTimeline.js +461 -0
  165. package/dist/SecurityTimeline.js.map +1 -0
  166. package/dist/Sessions.d.ts +123 -11
  167. package/dist/Sessions.d.ts.map +1 -1
  168. package/dist/Sessions.js +534 -1
  169. package/dist/Sessions.js.map +1 -1
  170. package/dist/StepUp.d.ts +44 -0
  171. package/dist/StepUp.d.ts.map +1 -0
  172. package/dist/StepUp.js +82 -0
  173. package/dist/StepUp.js.map +1 -0
  174. package/dist/Storage.d.ts +73 -5
  175. package/dist/Storage.d.ts.map +1 -1
  176. package/dist/Storage.js +11 -1
  177. package/dist/Storage.js.map +1 -1
  178. package/dist/StorageMigrations.d.ts +23 -1
  179. package/dist/StorageMigrations.d.ts.map +1 -1
  180. package/dist/StorageMigrations.js +462 -2
  181. package/dist/StorageMigrations.js.map +1 -1
  182. package/dist/Testing.d.ts +9 -1
  183. package/dist/Testing.d.ts.map +1 -1
  184. package/dist/Testing.js +30 -2
  185. package/dist/Testing.js.map +1 -1
  186. package/dist/Totp.d.ts +220 -0
  187. package/dist/Totp.d.ts.map +1 -0
  188. package/dist/Totp.js +477 -0
  189. package/dist/Totp.js.map +1 -0
  190. package/dist/TrustedDevice.d.ts +127 -0
  191. package/dist/TrustedDevice.d.ts.map +1 -0
  192. package/dist/TrustedDevice.js +252 -0
  193. package/dist/TrustedDevice.js.map +1 -0
  194. package/dist/WaitUntil.d.ts.map +1 -1
  195. package/dist/WaitUntil.js +1 -1
  196. package/dist/WaitUntil.js.map +1 -1
  197. package/dist/Webhook.d.ts +380 -0
  198. package/dist/Webhook.d.ts.map +1 -0
  199. package/dist/Webhook.js +592 -0
  200. package/dist/Webhook.js.map +1 -0
  201. package/dist/alchemy/cloudflare/Email.d.ts +25 -0
  202. package/dist/alchemy/cloudflare/Email.d.ts.map +1 -0
  203. package/dist/alchemy/cloudflare/Email.js +117 -0
  204. package/dist/alchemy/cloudflare/Email.js.map +1 -0
  205. package/dist/alchemy/cloudflare/RateLimitDurableObject.d.ts +34 -0
  206. package/dist/alchemy/cloudflare/RateLimitDurableObject.d.ts.map +1 -0
  207. package/dist/alchemy/cloudflare/RateLimitDurableObject.js +30 -0
  208. package/dist/alchemy/cloudflare/RateLimitDurableObject.js.map +1 -0
  209. package/dist/cloudflare/Email.d.ts +25 -0
  210. package/dist/cloudflare/Email.d.ts.map +1 -0
  211. package/dist/cloudflare/Email.js +153 -0
  212. package/dist/cloudflare/Email.js.map +1 -0
  213. package/dist/cloudflare/RateLimitDurableObject.d.ts +50 -0
  214. package/dist/cloudflare/RateLimitDurableObject.d.ts.map +1 -0
  215. package/dist/cloudflare/RateLimitDurableObject.js +51 -0
  216. package/dist/cloudflare/RateLimitDurableObject.js.map +1 -0
  217. package/dist/index.d.ts +25 -0
  218. package/dist/index.d.ts.map +1 -1
  219. package/dist/index.js +25 -0
  220. package/dist/index.js.map +1 -1
  221. package/dist/internal/RateLimitDurableObject.d.ts +32 -0
  222. package/dist/internal/RateLimitDurableObject.d.ts.map +1 -0
  223. package/dist/internal/RateLimitDurableObject.js +80 -0
  224. package/dist/internal/RateLimitDurableObject.js.map +1 -0
  225. package/migrations/0002_auth_password.sql +25 -0
  226. package/migrations/0003_auth_login_approval_review.sql +22 -0
  227. package/migrations/0004_auth_trusted_device.sql +12 -0
  228. package/migrations/0005_auth_passkey.sql +17 -0
  229. package/migrations/0006_auth_totp_factor.sql +17 -0
  230. package/migrations/0007_auth_recovery_code.sql +13 -0
  231. package/migrations/0008_auth_api_key.sql +17 -0
  232. package/migrations/0009_auth_refresh_token.sql +21 -0
  233. package/migrations/0010_auth_jwt_revocation.sql +8 -0
  234. package/migrations/0011_auth_oauth_account.sql +16 -0
  235. package/migrations/0012_auth_oauth_provider_token_vault.sql +20 -0
  236. package/migrations/0013_auth_security_timeline.sql +16 -0
  237. package/migrations/0014_auth_webhook_outbox.sql +16 -0
  238. package/migrations/0015_auth_webhook_replay.sql +7 -0
  239. package/migrations/0016_auth_login_risk_history.sql +23 -0
  240. package/migrations/0017_auth_audit_log.sql +17 -0
  241. package/migrations/0018_auth_domain_verification.sql +18 -0
  242. package/migrations/0019_auth_oauth_authorization_code.sql +17 -0
  243. package/migrations/0020_auth_oauth_provider_mode_token.sql +24 -0
  244. package/migrations/0021_auth_oauth_client_secret.sql +14 -0
  245. package/migrations/0022_auth_oauth_client.sql +15 -0
  246. package/migrations/0023_auth_oauth_consent.sql +15 -0
  247. package/package.json +162 -26
  248. package/dist/D1Kysely.d.ts +0 -40
  249. package/dist/D1Kysely.d.ts.map +0 -1
  250. package/dist/D1Kysely.js +0 -75
  251. package/dist/D1Kysely.js.map +0 -1
  252. package/dist/KyselyStorage.d.ts +0 -41
  253. package/dist/KyselyStorage.d.ts.map +0 -1
  254. package/dist/KyselyStorage.js +0 -176
  255. package/dist/KyselyStorage.js.map +0 -1
@@ -1,5 +1,10 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
- import type { AuditEventId, EmailHash, IpHash, PolicyId, SessionId, UnixMillis, UserAgentHash, UserId } from "./Identifiers.js";
2
+ import type { ApiKeyId } from "./ApiKey.js";
3
+ import type { AuditEventId, ChallengeId, CredentialId, EmailHash, IpHash, OAuthAccountId, OAuthProviderId, PolicyId, SessionId, UnixMillis, UserAgentHash, UserId } from "./Identifiers.js";
4
+ import type { IncidentActionResult } from "./IncidentAction.js";
5
+ import type { LoginRiskAssessment } from "./LoginRisk.js";
6
+ import type { PasskeyCredentialId } from "./Passkey.js";
7
+ import type { RefreshTokenFamilyId, RefreshTokenId } from "./RefreshToken.js";
3
8
  declare const AuditLogError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
4
9
  readonly _tag: "AuditLogError";
5
10
  } & Readonly<A>;
@@ -8,6 +13,16 @@ export declare class AuditLogError extends AuditLogError_base<{
8
13
  readonly cause?: unknown;
9
14
  }> {
10
15
  }
16
+ export type AuditLogStoreOperation = "insert" | "list" | "deleteBefore";
17
+ declare const AuditLogStoreError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
18
+ readonly _tag: "AuditLogStoreError";
19
+ } & Readonly<A>;
20
+ export declare class AuditLogStoreError extends AuditLogStoreError_base<{
21
+ readonly operation: AuditLogStoreOperation;
22
+ readonly message: string;
23
+ readonly cause?: unknown;
24
+ }> {
25
+ }
11
26
  export type AuditActor = {
12
27
  readonly type: "anonymous";
13
28
  } | {
@@ -15,6 +30,13 @@ export type AuditActor = {
15
30
  readonly userId: UserId;
16
31
  readonly sessionId?: SessionId;
17
32
  };
33
+ export declare const AuditActor: {
34
+ readonly anonymous: () => AuditActor;
35
+ readonly user: (input: {
36
+ readonly userId: UserId;
37
+ readonly sessionId?: SessionId;
38
+ }) => AuditActor;
39
+ };
18
40
  export type AuditSubject = {
19
41
  readonly type: "anonymous";
20
42
  } | {
@@ -24,6 +46,11 @@ export type AuditSubject = {
24
46
  readonly type: "user";
25
47
  readonly userId: UserId;
26
48
  };
49
+ export declare const AuditSubject: {
50
+ readonly anonymous: () => AuditSubject;
51
+ readonly email: (emailHash: EmailHash) => AuditSubject;
52
+ readonly user: (userId: UserId) => AuditSubject;
53
+ };
27
54
  export interface AuditRequest {
28
55
  readonly ipHash?: IpHash;
29
56
  readonly userAgentHash?: UserAgentHash;
@@ -51,6 +78,13 @@ export type AuthAuditEvent = {
51
78
  readonly reason: string;
52
79
  readonly request?: AuditRequest;
53
80
  readonly occurredAt: UnixMillis;
81
+ } | {
82
+ readonly type: "auth.risk.assessed";
83
+ readonly id?: AuditEventId;
84
+ readonly actor: AuditActor;
85
+ readonly assessment: LoginRiskAssessment;
86
+ readonly request?: AuditRequest;
87
+ readonly occurredAt: UnixMillis;
54
88
  } | {
55
89
  readonly type: "auth.policy.denied";
56
90
  readonly id?: AuditEventId;
@@ -59,16 +93,316 @@ export type AuthAuditEvent = {
59
93
  readonly reason: string;
60
94
  readonly request?: AuditRequest;
61
95
  readonly occurredAt: UnixMillis;
96
+ } | {
97
+ readonly type: "auth.oauth.account.linked";
98
+ readonly id?: AuditEventId;
99
+ readonly actor: AuditActor;
100
+ readonly userId: UserId;
101
+ readonly accountId: OAuthAccountId;
102
+ readonly providerId: OAuthProviderId;
103
+ readonly providerAccountId: string;
104
+ readonly reason: string;
105
+ readonly request?: AuditRequest;
106
+ readonly occurredAt: UnixMillis;
107
+ } | {
108
+ readonly type: "auth.oauth.account.unlinked";
109
+ readonly id?: AuditEventId;
110
+ readonly actor: AuditActor;
111
+ readonly userId: UserId;
112
+ readonly accountId: OAuthAccountId;
113
+ readonly providerId: OAuthProviderId;
114
+ readonly providerAccountId: string;
115
+ readonly reason: string;
116
+ readonly request?: AuditRequest;
117
+ readonly occurredAt: UnixMillis;
118
+ } | {
119
+ readonly type: "auth.oauth.link_confirmation.started";
120
+ readonly id?: AuditEventId;
121
+ readonly actor: AuditActor;
122
+ readonly userId: UserId;
123
+ readonly challengeId: ChallengeId;
124
+ readonly providerId: OAuthProviderId;
125
+ readonly providerAccountId: string;
126
+ readonly reason: string;
127
+ readonly request?: AuditRequest;
128
+ readonly occurredAt: UnixMillis;
129
+ } | {
130
+ readonly type: "auth.oauth.link_confirmation.confirmed";
131
+ readonly id?: AuditEventId;
132
+ readonly actor: AuditActor;
133
+ readonly userId: UserId;
134
+ readonly challengeId: ChallengeId;
135
+ readonly providerId: OAuthProviderId;
136
+ readonly providerAccountId: string;
137
+ readonly reason: string;
138
+ readonly request?: AuditRequest;
139
+ readonly occurredAt: UnixMillis;
140
+ } | {
141
+ readonly type: "auth.oauth.provider_token.refreshed";
142
+ readonly id?: AuditEventId;
143
+ readonly actor: AuditActor;
144
+ readonly userId: UserId;
145
+ readonly accountId: OAuthAccountId;
146
+ readonly providerId: OAuthProviderId;
147
+ readonly providerAccountId: string;
148
+ readonly request?: AuditRequest;
149
+ readonly occurredAt: UnixMillis;
150
+ } | {
151
+ readonly type: "auth.oauth.provider_token.revoked";
152
+ readonly id?: AuditEventId;
153
+ readonly actor: AuditActor;
154
+ readonly userId: UserId;
155
+ readonly accountId: OAuthAccountId;
156
+ readonly providerId: OAuthProviderId;
157
+ readonly providerAccountId: string;
158
+ readonly reason: string;
159
+ readonly request?: AuditRequest;
160
+ readonly occurredAt: UnixMillis;
161
+ } | {
162
+ readonly type: "auth.passkey.credential.revoked";
163
+ readonly id?: AuditEventId;
164
+ readonly actor: AuditActor;
165
+ readonly userId: UserId;
166
+ readonly credentialId: PasskeyCredentialId;
167
+ readonly reason: string;
168
+ readonly request?: AuditRequest;
169
+ readonly occurredAt: UnixMillis;
170
+ } | {
171
+ readonly type: "auth.totp.enrollment.started";
172
+ readonly id?: AuditEventId;
173
+ readonly actor: AuditActor;
174
+ readonly userId: UserId;
175
+ readonly factorId: CredentialId;
176
+ readonly request?: AuditRequest;
177
+ readonly occurredAt: UnixMillis;
178
+ } | {
179
+ readonly type: "auth.totp.factor.confirmed";
180
+ readonly id?: AuditEventId;
181
+ readonly actor: AuditActor;
182
+ readonly userId: UserId;
183
+ readonly factorId: CredentialId;
184
+ readonly request?: AuditRequest;
185
+ readonly occurredAt: UnixMillis;
186
+ } | {
187
+ readonly type: "auth.totp.factor.verified";
188
+ readonly id?: AuditEventId;
189
+ readonly actor: AuditActor;
190
+ readonly userId: UserId;
191
+ readonly factorId: CredentialId;
192
+ readonly request?: AuditRequest;
193
+ readonly occurredAt: UnixMillis;
194
+ } | {
195
+ readonly type: "auth.totp.factor.revoked";
196
+ readonly id?: AuditEventId;
197
+ readonly actor: AuditActor;
198
+ readonly userId: UserId;
199
+ readonly factorId: CredentialId;
200
+ readonly reason: string;
201
+ readonly request?: AuditRequest;
202
+ readonly occurredAt: UnixMillis;
203
+ } | {
204
+ readonly type: "auth.recovery_code.generated";
205
+ readonly id?: AuditEventId;
206
+ readonly actor: AuditActor;
207
+ readonly userId: UserId;
208
+ readonly count: number;
209
+ readonly request?: AuditRequest;
210
+ readonly occurredAt: UnixMillis;
211
+ } | {
212
+ readonly type: "auth.recovery_code.verified";
213
+ readonly id?: AuditEventId;
214
+ readonly actor: AuditActor;
215
+ readonly userId: UserId;
216
+ readonly codeId: CredentialId;
217
+ readonly request?: AuditRequest;
218
+ readonly occurredAt: UnixMillis;
219
+ } | {
220
+ readonly type: "auth.recovery_code.revoked";
221
+ readonly id?: AuditEventId;
222
+ readonly actor: AuditActor;
223
+ readonly userId: UserId;
224
+ readonly codeId: CredentialId;
225
+ readonly reason: string;
226
+ readonly request?: AuditRequest;
227
+ readonly occurredAt: UnixMillis;
228
+ } | {
229
+ readonly type: "auth.api_key.created";
230
+ readonly id?: AuditEventId;
231
+ readonly actor: AuditActor;
232
+ readonly userId: UserId;
233
+ readonly keyId: ApiKeyId;
234
+ readonly scopes: readonly string[];
235
+ readonly request?: AuditRequest;
236
+ readonly occurredAt: UnixMillis;
237
+ } | {
238
+ readonly type: "auth.api_key.verified";
239
+ readonly id?: AuditEventId;
240
+ readonly actor: AuditActor;
241
+ readonly userId: UserId;
242
+ readonly keyId: ApiKeyId;
243
+ readonly scopes: readonly string[];
244
+ readonly request?: AuditRequest;
245
+ readonly occurredAt: UnixMillis;
246
+ } | {
247
+ readonly type: "auth.api_key.revoked";
248
+ readonly id?: AuditEventId;
249
+ readonly actor: AuditActor;
250
+ readonly userId: UserId;
251
+ readonly keyId: ApiKeyId;
252
+ readonly reason: string;
253
+ readonly request?: AuditRequest;
254
+ readonly occurredAt: UnixMillis;
255
+ } | {
256
+ readonly type: "auth.api_key.verification_failed";
257
+ readonly id?: AuditEventId;
258
+ readonly actor: AuditActor;
259
+ readonly reason: string;
260
+ readonly request?: AuditRequest;
261
+ readonly occurredAt: UnixMillis;
262
+ } | {
263
+ readonly type: "auth.refresh_token.issued";
264
+ readonly id?: AuditEventId;
265
+ readonly actor: AuditActor;
266
+ readonly userId: UserId;
267
+ readonly tokenId: RefreshTokenId;
268
+ readonly familyId: RefreshTokenFamilyId;
269
+ readonly expiresAt: UnixMillis;
270
+ readonly request?: AuditRequest;
271
+ readonly occurredAt: UnixMillis;
272
+ } | {
273
+ readonly type: "auth.refresh_token.rotated";
274
+ readonly id?: AuditEventId;
275
+ readonly actor: AuditActor;
276
+ readonly userId: UserId;
277
+ readonly previousTokenId: RefreshTokenId;
278
+ readonly tokenId: RefreshTokenId;
279
+ readonly familyId: RefreshTokenFamilyId;
280
+ readonly expiresAt: UnixMillis;
281
+ readonly request?: AuditRequest;
282
+ readonly occurredAt: UnixMillis;
283
+ } | {
284
+ readonly type: "auth.refresh_token.reuse_detected";
285
+ readonly id?: AuditEventId;
286
+ readonly actor: AuditActor;
287
+ readonly userId: UserId;
288
+ readonly tokenId: RefreshTokenId;
289
+ readonly familyId: RefreshTokenFamilyId;
290
+ readonly request?: AuditRequest;
291
+ readonly occurredAt: UnixMillis;
292
+ } | {
293
+ readonly type: "auth.refresh_token.revoked";
294
+ readonly id?: AuditEventId;
295
+ readonly actor: AuditActor;
296
+ readonly userId: UserId;
297
+ readonly familyId: RefreshTokenFamilyId;
298
+ readonly tokenId?: RefreshTokenId;
299
+ readonly reason: string;
300
+ readonly request?: AuditRequest;
301
+ readonly occurredAt: UnixMillis;
302
+ } | {
303
+ readonly type: "auth.incident_action.executed";
304
+ readonly id?: AuditEventId;
305
+ readonly actor: AuditActor;
306
+ readonly userId: UserId;
307
+ readonly result: IncidentActionResult;
308
+ readonly request?: AuditRequest;
309
+ readonly occurredAt: UnixMillis;
310
+ } | {
311
+ readonly type: "auth.jwt.introspected";
312
+ readonly id?: AuditEventId;
313
+ readonly actor: AuditActor;
314
+ readonly active: boolean;
315
+ readonly jwtId?: string;
316
+ readonly expiresAt?: UnixMillis;
317
+ readonly reason?: string;
318
+ readonly request?: AuditRequest;
319
+ readonly occurredAt: UnixMillis;
320
+ } | {
321
+ readonly type: "auth.jwt.revoked";
322
+ readonly id?: AuditEventId;
323
+ readonly actor: AuditActor;
324
+ readonly jwtId: string;
325
+ readonly expiresAt?: UnixMillis;
326
+ readonly reason: string;
327
+ readonly request?: AuditRequest;
328
+ readonly occurredAt: UnixMillis;
62
329
  };
63
330
  export interface AuditLogService {
64
331
  readonly emit: (event: AuthAuditEvent) => Effect.Effect<void, AuditLogError>;
65
332
  }
333
+ export interface AuditLogListInput {
334
+ readonly userId?: UserId;
335
+ readonly types?: readonly AuthAuditEvent["type"][];
336
+ readonly beforeOccurredAt?: UnixMillis;
337
+ readonly limit?: number;
338
+ }
339
+ export interface AuditLogDeleteBeforeInput {
340
+ readonly beforeOccurredAt: UnixMillis;
341
+ readonly userId?: UserId;
342
+ }
343
+ export interface AuditLogStoreService {
344
+ readonly insert: (event: AuthAuditEvent) => Effect.Effect<void, AuditLogStoreError>;
345
+ readonly list: (input?: AuditLogListInput) => Effect.Effect<readonly AuthAuditEvent[], AuditLogStoreError>;
346
+ readonly deleteBefore: (input: AuditLogDeleteBeforeInput) => Effect.Effect<number, AuditLogStoreError>;
347
+ }
66
348
  declare const AuditLog_base: Context.ServiceClass<AuditLog, "auth/AuditLog", AuditLogService>;
67
349
  export declare class AuditLog extends AuditLog_base {
68
350
  }
69
351
  export declare namespace AuditLog {
70
352
  const make: (service: AuditLogService) => AuditLogService;
71
353
  }
354
+ declare const AuditLogStore_base: Context.ServiceClass<AuditLogStore, "auth/AuditLogStore", AuditLogStoreService>;
355
+ export declare class AuditLogStore extends AuditLogStore_base {
356
+ }
357
+ export declare namespace AuditLogStore {
358
+ const make: (service: AuditLogStoreService) => AuditLogStoreService;
359
+ }
360
+ export type AuditEventInput<Type extends AuthAuditEvent["type"]> = Omit<Extract<AuthAuditEvent, {
361
+ readonly type: Type;
362
+ }>, "type" | "occurredAt"> & {
363
+ readonly occurredAt?: UnixMillis;
364
+ };
365
+ export declare const auditEventUserId: (event: AuthAuditEvent) => UserId | undefined;
366
+ export declare const auditEventActorUserId: (event: AuthAuditEvent) => UserId | undefined;
367
+ export declare const filterAuditLogEvents: (events: Iterable<AuthAuditEvent>, input?: AuditLogListInput) => readonly AuthAuditEvent[];
368
+ export declare const makeAuditLogFromStore: (store: AuditLogStoreService) => AuditLogService;
369
+ export declare const emit: (event: AuthAuditEvent) => Effect.Effect<void, AuditLogError, AuditLog>;
370
+ export declare const insertAuditLogEvent: (event: AuthAuditEvent) => Effect.Effect<void, AuditLogStoreError, AuditLogStore>;
371
+ export declare const listAuditLogEvents: (input?: AuditLogListInput) => Effect.Effect<readonly AuthAuditEvent[], AuditLogStoreError, AuditLogStore>;
372
+ export declare const deleteAuditLogEventsBefore: (input: AuditLogDeleteBeforeInput) => Effect.Effect<number, AuditLogStoreError, AuditLogStore>;
373
+ export declare const loginSucceeded: (input: AuditEventInput<"auth.login.succeeded">) => Effect.Effect<void, AuditLogError, AuditLog>;
374
+ export declare const loginFailed: (input: AuditEventInput<"auth.login.failed">) => Effect.Effect<void, AuditLogError, AuditLog>;
375
+ export declare const sessionRevoked: (input: AuditEventInput<"auth.session.revoked">) => Effect.Effect<void, AuditLogError, AuditLog>;
376
+ export declare const loginRiskAssessed: (input: AuditEventInput<"auth.risk.assessed">) => Effect.Effect<void, AuditLogError, AuditLog>;
377
+ export declare const policyDenied: (input: AuditEventInput<"auth.policy.denied">) => Effect.Effect<void, AuditLogError, AuditLog>;
378
+ export declare const oauthAccountLinked: (input: AuditEventInput<"auth.oauth.account.linked">) => Effect.Effect<void, AuditLogError, AuditLog>;
379
+ export declare const oauthAccountUnlinked: (input: AuditEventInput<"auth.oauth.account.unlinked">) => Effect.Effect<void, AuditLogError, AuditLog>;
380
+ export declare const oauthLinkConfirmationStarted: (input: AuditEventInput<"auth.oauth.link_confirmation.started">) => Effect.Effect<void, AuditLogError, AuditLog>;
381
+ export declare const oauthLinkConfirmationConfirmed: (input: AuditEventInput<"auth.oauth.link_confirmation.confirmed">) => Effect.Effect<void, AuditLogError, AuditLog>;
382
+ export declare const oauthProviderTokenRefreshed: (input: AuditEventInput<"auth.oauth.provider_token.refreshed">) => Effect.Effect<void, AuditLogError, AuditLog>;
383
+ export declare const oauthProviderTokenRevoked: (input: AuditEventInput<"auth.oauth.provider_token.revoked">) => Effect.Effect<void, AuditLogError, AuditLog>;
384
+ export declare const passkeyCredentialRevoked: (input: AuditEventInput<"auth.passkey.credential.revoked">) => Effect.Effect<void, AuditLogError, AuditLog>;
385
+ export declare const totpEnrollmentStarted: (input: AuditEventInput<"auth.totp.enrollment.started">) => Effect.Effect<void, AuditLogError, AuditLog>;
386
+ export declare const totpFactorConfirmed: (input: AuditEventInput<"auth.totp.factor.confirmed">) => Effect.Effect<void, AuditLogError, AuditLog>;
387
+ export declare const totpFactorVerified: (input: AuditEventInput<"auth.totp.factor.verified">) => Effect.Effect<void, AuditLogError, AuditLog>;
388
+ export declare const totpFactorRevoked: (input: AuditEventInput<"auth.totp.factor.revoked">) => Effect.Effect<void, AuditLogError, AuditLog>;
389
+ export declare const recoveryCodeGenerated: (input: AuditEventInput<"auth.recovery_code.generated">) => Effect.Effect<void, AuditLogError, AuditLog>;
390
+ export declare const recoveryCodeVerified: (input: AuditEventInput<"auth.recovery_code.verified">) => Effect.Effect<void, AuditLogError, AuditLog>;
391
+ export declare const recoveryCodeRevoked: (input: AuditEventInput<"auth.recovery_code.revoked">) => Effect.Effect<void, AuditLogError, AuditLog>;
392
+ export declare const apiKeyCreated: (input: AuditEventInput<"auth.api_key.created">) => Effect.Effect<void, AuditLogError, AuditLog>;
393
+ export declare const apiKeyVerified: (input: AuditEventInput<"auth.api_key.verified">) => Effect.Effect<void, AuditLogError, AuditLog>;
394
+ export declare const apiKeyRevoked: (input: AuditEventInput<"auth.api_key.revoked">) => Effect.Effect<void, AuditLogError, AuditLog>;
395
+ export declare const apiKeyVerificationFailed: (input: AuditEventInput<"auth.api_key.verification_failed">) => Effect.Effect<void, AuditLogError, AuditLog>;
396
+ export declare const refreshTokenIssued: (input: AuditEventInput<"auth.refresh_token.issued">) => Effect.Effect<void, AuditLogError, AuditLog>;
397
+ export declare const refreshTokenRotated: (input: AuditEventInput<"auth.refresh_token.rotated">) => Effect.Effect<void, AuditLogError, AuditLog>;
398
+ export declare const refreshTokenReuseDetected: (input: AuditEventInput<"auth.refresh_token.reuse_detected">) => Effect.Effect<void, AuditLogError, AuditLog>;
399
+ export declare const refreshTokenRevoked: (input: AuditEventInput<"auth.refresh_token.revoked">) => Effect.Effect<void, AuditLogError, AuditLog>;
400
+ export declare const incidentActionExecuted: (input: AuditEventInput<"auth.incident_action.executed">) => Effect.Effect<void, AuditLogError, AuditLog>;
401
+ export declare const jwtIntrospected: (input: AuditEventInput<"auth.jwt.introspected">) => Effect.Effect<void, AuditLogError, AuditLog>;
402
+ export declare const jwtRevoked: (input: AuditEventInput<"auth.jwt.revoked">) => Effect.Effect<void, AuditLogError, AuditLog>;
403
+ export declare const makeAuditLogStoreMemory: () => AuditLogStoreService;
404
+ export declare const AuditLogStoreMemoryLive: Layer.Layer<AuditLogStore, never, never>;
405
+ export declare const AuditLogFromStoreLive: Layer.Layer<AuditLog, never, AuditLogStore>;
72
406
  export declare const AuditLogNoopLive: Layer.Layer<AuditLog, never, never>;
73
407
  export {};
74
408
  //# sourceMappingURL=AuditLog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuditLog.d.ts","sourceRoot":"","sources":["../src/AuditLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;;;;AAE/H,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB,CAAC;CAAG;AAEL,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,CAAA;AAEtF,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAA;CACvC;AAED,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,EAAE,YAAY,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC,CAAA;AAEL,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;CAC7E;;AAED,qBAAa,QAAS,SAAQ,aAA6D;CAAG;AAE9F,yBAAiB,QAAQ,CAAC;IACjB,MAAM,IAAI,GAAI,SAAS,eAAe,KAAG,eAAuC,CAAA;CACxF;AAED,eAAO,MAAM,gBAAgB,qCAE1B,CAAA"}
1
+ {"version":3,"file":"AuditLog.d.ts","sourceRoot":"","sources":["../src/AuditLog.ts"],"names":[],"mappings":"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"}