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

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 (143) hide show
  1. package/README.md +622 -61
  2. package/dist/AuditLog.d.ts.map +1 -1
  3. package/dist/AuditLog.js +1 -1
  4. package/dist/AuditLog.js.map +1 -1
  5. package/dist/AuthConfig.d.ts +51 -0
  6. package/dist/AuthConfig.d.ts.map +1 -0
  7. package/dist/AuthConfig.js +56 -0
  8. package/dist/AuthConfig.js.map +1 -0
  9. package/dist/AuthFlow.d.ts +292 -35
  10. package/dist/AuthFlow.d.ts.map +1 -1
  11. package/dist/AuthFlow.js +130 -6
  12. package/dist/AuthFlow.js.map +1 -1
  13. package/dist/AuthKernel.d.ts +3 -0
  14. package/dist/AuthKernel.d.ts.map +1 -0
  15. package/dist/AuthKernel.js +9 -0
  16. package/dist/AuthKernel.js.map +1 -0
  17. package/dist/Challenge.d.ts +19 -3
  18. package/dist/Challenge.d.ts.map +1 -1
  19. package/dist/Challenge.js +157 -1
  20. package/dist/Challenge.js.map +1 -1
  21. package/dist/Client.d.ts +36 -0
  22. package/dist/Client.d.ts.map +1 -0
  23. package/dist/Client.js +55 -0
  24. package/dist/Client.js.map +1 -0
  25. package/dist/Crypto.d.ts +6 -1
  26. package/dist/Crypto.d.ts.map +1 -1
  27. package/dist/Crypto.js +62 -1
  28. package/dist/Crypto.js.map +1 -1
  29. package/dist/D1Kysely.d.ts +6 -3
  30. package/dist/D1Kysely.d.ts.map +1 -1
  31. package/dist/D1Kysely.js +8 -5
  32. package/dist/D1Kysely.js.map +1 -1
  33. package/dist/EffectQbSqliteStorage.d.ts +183 -0
  34. package/dist/EffectQbSqliteStorage.d.ts.map +1 -0
  35. package/dist/EffectQbSqliteStorage.js +446 -0
  36. package/dist/EffectQbSqliteStorage.js.map +1 -0
  37. package/dist/EmailOtp.d.ts +117 -0
  38. package/dist/EmailOtp.d.ts.map +1 -0
  39. package/dist/EmailOtp.js +279 -0
  40. package/dist/EmailOtp.js.map +1 -0
  41. package/dist/EmailVerification.d.ts +121 -0
  42. package/dist/EmailVerification.d.ts.map +1 -0
  43. package/dist/EmailVerification.js +201 -0
  44. package/dist/EmailVerification.js.map +1 -0
  45. package/dist/HttpApi/Api.d.ts +175 -0
  46. package/dist/HttpApi/Api.d.ts.map +1 -0
  47. package/dist/HttpApi/Api.js +340 -0
  48. package/dist/HttpApi/Api.js.map +1 -0
  49. package/dist/HttpApi/Endpoints.d.ts +92 -0
  50. package/dist/HttpApi/Endpoints.d.ts.map +1 -0
  51. package/dist/HttpApi/Endpoints.js +48 -0
  52. package/dist/HttpApi/Endpoints.js.map +1 -0
  53. package/dist/HttpApi/Errors.d.ts +82 -0
  54. package/dist/HttpApi/Errors.d.ts.map +1 -0
  55. package/dist/HttpApi/Errors.js +184 -0
  56. package/dist/HttpApi/Errors.js.map +1 -0
  57. package/dist/HttpApi/Schemas.d.ts +86 -0
  58. package/dist/HttpApi/Schemas.d.ts.map +1 -0
  59. package/dist/HttpApi/Schemas.js +63 -0
  60. package/dist/HttpApi/Schemas.js.map +1 -0
  61. package/dist/HttpApi/Security.d.ts +147 -0
  62. package/dist/HttpApi/Security.d.ts.map +1 -0
  63. package/dist/HttpApi/Security.js +439 -0
  64. package/dist/HttpApi/Security.js.map +1 -0
  65. package/dist/HttpApi/Transport.d.ts +31 -0
  66. package/dist/HttpApi/Transport.d.ts.map +1 -0
  67. package/dist/HttpApi/Transport.js +169 -0
  68. package/dist/HttpApi/Transport.js.map +1 -0
  69. package/dist/HttpApi/index.d.ts +8 -0
  70. package/dist/HttpApi/index.d.ts.map +1 -0
  71. package/dist/HttpApi/index.js +7 -0
  72. package/dist/HttpApi/index.js.map +1 -0
  73. package/dist/HttpApi.d.ts +2 -0
  74. package/dist/HttpApi.d.ts.map +1 -0
  75. package/dist/HttpApi.js +2 -0
  76. package/dist/HttpApi.js.map +1 -0
  77. package/dist/Identifiers.d.ts.map +1 -1
  78. package/dist/Identifiers.js.map +1 -1
  79. package/dist/Internal.d.ts +7 -0
  80. package/dist/Internal.d.ts.map +1 -0
  81. package/dist/Internal.js +12 -0
  82. package/dist/Internal.js.map +1 -0
  83. package/dist/KyselyStorage.d.ts +28 -2
  84. package/dist/KyselyStorage.d.ts.map +1 -1
  85. package/dist/KyselyStorage.js +223 -33
  86. package/dist/KyselyStorage.js.map +1 -1
  87. package/dist/Mailer.d.ts +116 -0
  88. package/dist/Mailer.d.ts.map +1 -0
  89. package/dist/Mailer.js +101 -0
  90. package/dist/Mailer.js.map +1 -0
  91. package/dist/Password.d.ts +107 -0
  92. package/dist/Password.d.ts.map +1 -0
  93. package/dist/Password.js +252 -0
  94. package/dist/Password.js.map +1 -0
  95. package/dist/Policy.d.ts +7 -4
  96. package/dist/Policy.d.ts.map +1 -1
  97. package/dist/Policy.js +28 -5
  98. package/dist/Policy.js.map +1 -1
  99. package/dist/Privacy.d.ts +15 -0
  100. package/dist/Privacy.d.ts.map +1 -1
  101. package/dist/Privacy.js +58 -1
  102. package/dist/Privacy.js.map +1 -1
  103. package/dist/RateLimiter.d.ts +104 -0
  104. package/dist/RateLimiter.d.ts.map +1 -0
  105. package/dist/RateLimiter.js +118 -0
  106. package/dist/RateLimiter.js.map +1 -0
  107. package/dist/Sessions.d.ts +73 -11
  108. package/dist/Sessions.d.ts.map +1 -1
  109. package/dist/Sessions.js +412 -1
  110. package/dist/Sessions.js.map +1 -1
  111. package/dist/Storage.d.ts +60 -5
  112. package/dist/Storage.d.ts.map +1 -1
  113. package/dist/Storage.js +11 -1
  114. package/dist/Storage.js.map +1 -1
  115. package/dist/StorageMigrations.d.ts +2 -1
  116. package/dist/StorageMigrations.d.ts.map +1 -1
  117. package/dist/StorageMigrations.js +33 -2
  118. package/dist/StorageMigrations.js.map +1 -1
  119. package/dist/Testing.d.ts +9 -1
  120. package/dist/Testing.d.ts.map +1 -1
  121. package/dist/Testing.js +30 -2
  122. package/dist/Testing.js.map +1 -1
  123. package/dist/WaitUntil.d.ts.map +1 -1
  124. package/dist/WaitUntil.js +1 -1
  125. package/dist/WaitUntil.js.map +1 -1
  126. package/dist/alchemy/cloudflare/RateLimitDurableObject.d.ts +34 -0
  127. package/dist/alchemy/cloudflare/RateLimitDurableObject.d.ts.map +1 -0
  128. package/dist/alchemy/cloudflare/RateLimitDurableObject.js +30 -0
  129. package/dist/alchemy/cloudflare/RateLimitDurableObject.js.map +1 -0
  130. package/dist/cloudflare/RateLimitDurableObject.d.ts +50 -0
  131. package/dist/cloudflare/RateLimitDurableObject.d.ts.map +1 -0
  132. package/dist/cloudflare/RateLimitDurableObject.js +51 -0
  133. package/dist/cloudflare/RateLimitDurableObject.js.map +1 -0
  134. package/dist/index.d.ts +6 -0
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +6 -0
  137. package/dist/index.js.map +1 -1
  138. package/dist/internal/RateLimitDurableObject.d.ts +32 -0
  139. package/dist/internal/RateLimitDurableObject.d.ts.map +1 -0
  140. package/dist/internal/RateLimitDurableObject.js +80 -0
  141. package/dist/internal/RateLimitDurableObject.js.map +1 -0
  142. package/migrations/0002_auth_password.sql +25 -0
  143. package/package.json +76 -20
package/dist/Sessions.js CHANGED
@@ -1,4 +1,14 @@
1
- import { Context, Data, Effect } from "effect";
1
+ import { Context, Data, Duration, Effect, Layer, Option } from "effect";
2
+ import { AuthSecrets, AuthSessionCookieConfig, AuthSessionsConfig, } from "./AuthConfig.js";
3
+ import { Crypto } from "./Crypto.js";
4
+ import { SessionId, SessionToken, UnixMillis } from "./Identifiers.js";
5
+ import { addMillis, currentUnixMillis, timingSafeEqualString, } from "./Internal.js";
6
+ import { SessionStore } from "./Storage.js";
7
+ export const defaultSessionTtlPolicy = {
8
+ idleTtl: Duration.days(30),
9
+ absoluteTtl: Duration.days(90),
10
+ refreshAfter: Duration.days(1),
11
+ };
2
12
  export class SessionCreateError extends Data.TaggedError("SessionCreateError") {
3
13
  }
4
14
  export class SessionValidateError extends Data.TaggedError("SessionValidateError") {
@@ -7,6 +17,8 @@ export class SessionRefreshError extends Data.TaggedError("SessionRefreshError")
7
17
  }
8
18
  export class SessionRotateError extends Data.TaggedError("SessionRotateError") {
9
19
  }
20
+ export class SessionUpdateClaimsError extends Data.TaggedError("SessionUpdateClaimsError") {
21
+ }
10
22
  export class SessionRevokeError extends Data.TaggedError("SessionRevokeError") {
11
23
  }
12
24
  export class Sessions extends Context.Service()("auth/Sessions") {
@@ -14,11 +26,410 @@ export class Sessions extends Context.Service()("auth/Sessions") {
14
26
  (function (Sessions) {
15
27
  Sessions.make = (service) => Sessions.of(service);
16
28
  })(Sessions || (Sessions = {}));
29
+ const resolveTtl = (ttl) => ttl ?? defaultSessionTtlPolicy;
30
+ const ttlMillis = (ttl) => Duration.toMillis(ttl);
31
+ const sessionExpiresAt = (now, authTime, ttl) => UnixMillis(Math.min(Number(addMillis(now, ttlMillis(ttl.idleTtl))), Number(addMillis(authTime, ttlMillis(ttl.absoluteTtl)))));
32
+ const parseSessionToken = (token) => {
33
+ const raw = String(token);
34
+ const separator = raw.indexOf(".");
35
+ if (separator <= 0 || separator === raw.length - 1) {
36
+ return undefined;
37
+ }
38
+ return {
39
+ sessionId: raw.slice(0, separator),
40
+ secret: raw.slice(separator + 1),
41
+ };
42
+ };
43
+ const makeSessionToken = (sessionId, secret) => `${sessionId}.${secret}`;
44
+ const hashSessionSecret = (crypto, key, secret) => crypto.hmacSha256({ key, data: secret });
45
+ const isExpired = (row, now, ttl) => row.revokedAt !== undefined ||
46
+ Number(row.expiresAt) <= Number(now) ||
47
+ Number(addMillis(row.authTime, ttlMillis(ttl.absoluteTtl))) <= Number(now);
48
+ const shouldRefresh = (row, now, ttl) => row.lastSeenAt === undefined ||
49
+ Number(now) - Number(row.lastSeenAt) >= ttlMillis(ttl.refreshAfter) ||
50
+ Number(row.expiresAt) - Number(now) <= ttlMillis(ttl.refreshAfter);
51
+ const issuedFromRow = (row, token) => ({
52
+ sessionId: row.id,
53
+ userId: row.userId,
54
+ token,
55
+ authTime: row.authTime,
56
+ expiresAt: row.expiresAt,
57
+ aal: row.aal,
58
+ amr: row.amr,
59
+ claims: row.claims,
60
+ });
61
+ const currentFromRow = (row) => ({
62
+ sessionId: row.id,
63
+ userId: row.userId,
64
+ authTime: row.authTime,
65
+ expiresAt: row.expiresAt,
66
+ aal: row.aal,
67
+ amr: row.amr,
68
+ claims: row.claims,
69
+ });
70
+ const validatedFromRow = (row, token) => ({
71
+ issued: issuedFromRow(row, token),
72
+ currentSession: currentFromRow(row),
73
+ actor: {
74
+ userId: row.userId,
75
+ sessionId: row.id,
76
+ },
77
+ });
78
+ export const makeSessions = (dependencies) => {
79
+ const ttl = resolveTtl(dependencies.ttl);
80
+ const sessionIdBytes = dependencies.sessionIdBytes ?? 16;
81
+ const sessionSecretBytes = dependencies.sessionSecretBytes ?? 32;
82
+ return Sessions.make({
83
+ create: Effect.fn("auth.session.create")(function* (input) {
84
+ yield* Effect.annotateCurrentSpan({
85
+ "auth.method": input.method,
86
+ "auth.aal": input.aal,
87
+ "auth.amr_count": input.amr.length,
88
+ });
89
+ const now = input.now ?? (yield* currentUnixMillis);
90
+ const inputTtl = resolveTtl(input.ttl ?? ttl);
91
+ const sessionId = SessionId(yield* dependencies.crypto.randomToken(sessionIdBytes).pipe(Effect.mapError((cause) => new SessionCreateError({
92
+ message: "Failed to generate session id",
93
+ cause,
94
+ }))));
95
+ const secret = yield* dependencies.crypto
96
+ .randomToken(sessionSecretBytes)
97
+ .pipe(Effect.mapError((cause) => new SessionCreateError({
98
+ message: "Failed to generate session secret",
99
+ cause,
100
+ })));
101
+ const token = makeSessionToken(sessionId, secret);
102
+ const secretHash = yield* hashSessionSecret(dependencies.crypto, dependencies.secret, secret).pipe(Effect.mapError((cause) => new SessionCreateError({
103
+ message: "Failed to hash session secret",
104
+ cause,
105
+ })));
106
+ const expiresAt = sessionExpiresAt(now, now, inputTtl);
107
+ yield* dependencies.sessionStore
108
+ .insert({
109
+ id: sessionId,
110
+ userId: input.userId,
111
+ secretHash,
112
+ createdAt: now,
113
+ expiresAt,
114
+ authTime: now,
115
+ aal: input.aal,
116
+ amr: input.amr,
117
+ claims: input.claims,
118
+ metadata: input.metadata,
119
+ })
120
+ .pipe(Effect.mapError((cause) => new SessionCreateError({
121
+ message: "Failed to store session",
122
+ cause,
123
+ })));
124
+ return {
125
+ sessionId,
126
+ userId: input.userId,
127
+ token,
128
+ authTime: now,
129
+ expiresAt,
130
+ aal: input.aal,
131
+ amr: input.amr,
132
+ claims: input.claims,
133
+ };
134
+ }),
135
+ validate: Effect.fn("auth.session.validate")(function* (token) {
136
+ const parsed = parseSessionToken(token);
137
+ if (parsed === undefined) {
138
+ yield* Effect.annotateCurrentSpan("auth.session.token_format", "invalid");
139
+ return yield* new SessionValidateError({
140
+ message: "Invalid session token",
141
+ });
142
+ }
143
+ yield* Effect.annotateCurrentSpan("auth.session.token_format", "opaque");
144
+ const now = yield* currentUnixMillis;
145
+ const rowOption = yield* dependencies.sessionStore
146
+ .findById(parsed.sessionId)
147
+ .pipe(Effect.mapError((cause) => new SessionValidateError({
148
+ message: "Failed to load session",
149
+ cause,
150
+ })));
151
+ if (Option.isNone(rowOption)) {
152
+ return yield* new SessionValidateError({
153
+ message: "Session not found",
154
+ });
155
+ }
156
+ const row = rowOption.value;
157
+ if (isExpired(row, now, ttl)) {
158
+ return yield* new SessionValidateError({ message: "Session expired" });
159
+ }
160
+ const secretHash = yield* hashSessionSecret(dependencies.crypto, dependencies.secret, parsed.secret).pipe(Effect.mapError((cause) => new SessionValidateError({
161
+ message: "Failed to hash session secret",
162
+ cause,
163
+ })));
164
+ const secretMatches = yield* timingSafeEqualString(dependencies.crypto, secretHash, row.secretHash).pipe(Effect.mapError((cause) => new SessionValidateError({
165
+ message: "Failed to compare session secret",
166
+ cause,
167
+ })));
168
+ if (!secretMatches) {
169
+ return yield* new SessionValidateError({
170
+ message: "Invalid session token",
171
+ });
172
+ }
173
+ return validatedFromRow(row, token);
174
+ }),
175
+ refresh: Effect.fn("auth.session.refresh")(function* (token) {
176
+ const parsed = parseSessionToken(token);
177
+ if (parsed === undefined) {
178
+ yield* Effect.annotateCurrentSpan("auth.session.token_format", "invalid");
179
+ return yield* new SessionRefreshError({
180
+ message: "Invalid session token",
181
+ });
182
+ }
183
+ yield* Effect.annotateCurrentSpan("auth.session.token_format", "opaque");
184
+ const now = yield* currentUnixMillis;
185
+ const rowOption = yield* dependencies.sessionStore
186
+ .findById(parsed.sessionId)
187
+ .pipe(Effect.mapError((cause) => new SessionRefreshError({
188
+ message: "Failed to load session",
189
+ cause,
190
+ })));
191
+ if (Option.isNone(rowOption)) {
192
+ return yield* new SessionRefreshError({ message: "Session not found" });
193
+ }
194
+ const row = rowOption.value;
195
+ if (isExpired(row, now, ttl)) {
196
+ return yield* new SessionRefreshError({ message: "Session expired" });
197
+ }
198
+ const secretHash = yield* hashSessionSecret(dependencies.crypto, dependencies.secret, parsed.secret).pipe(Effect.mapError((cause) => new SessionRefreshError({
199
+ message: "Failed to hash session secret",
200
+ cause,
201
+ })));
202
+ const secretMatches = yield* timingSafeEqualString(dependencies.crypto, secretHash, row.secretHash).pipe(Effect.mapError((cause) => new SessionRefreshError({
203
+ message: "Failed to compare session secret",
204
+ cause,
205
+ })));
206
+ if (!secretMatches) {
207
+ return yield* new SessionRefreshError({
208
+ message: "Invalid session token",
209
+ });
210
+ }
211
+ if (!shouldRefresh(row, now, ttl)) {
212
+ yield* Effect.annotateCurrentSpan("auth.session.refreshed", false);
213
+ return issuedFromRow(row, token);
214
+ }
215
+ const refreshed = yield* dependencies.sessionStore
216
+ .refresh({
217
+ sessionId: row.id,
218
+ expiresAt: sessionExpiresAt(now, row.authTime, ttl),
219
+ lastSeenAt: now,
220
+ })
221
+ .pipe(Effect.mapError((cause) => new SessionRefreshError({
222
+ message: "Failed to refresh session",
223
+ cause,
224
+ })));
225
+ if (Option.isNone(refreshed)) {
226
+ return yield* new SessionRefreshError({ message: "Session not found" });
227
+ }
228
+ yield* Effect.annotateCurrentSpan("auth.session.refreshed", true);
229
+ return issuedFromRow(refreshed.value, token);
230
+ }),
231
+ rotate: Effect.fn("auth.session.rotate")(function* (input) {
232
+ const now = yield* currentUnixMillis;
233
+ const secret = yield* dependencies.crypto
234
+ .randomToken(sessionSecretBytes)
235
+ .pipe(Effect.mapError((cause) => new SessionRotateError({
236
+ message: "Failed to generate session secret",
237
+ cause,
238
+ })));
239
+ const secretHash = yield* hashSessionSecret(dependencies.crypto, dependencies.secret, secret).pipe(Effect.mapError((cause) => new SessionRotateError({
240
+ message: "Failed to hash session secret",
241
+ cause,
242
+ })));
243
+ const rotated = yield* dependencies.sessionStore
244
+ .rotate({
245
+ sessionId: input.sessionId,
246
+ secretHash,
247
+ rotatedAt: now,
248
+ })
249
+ .pipe(Effect.mapError((cause) => new SessionRotateError({
250
+ message: "Failed to rotate session",
251
+ cause,
252
+ })));
253
+ if (Option.isNone(rotated)) {
254
+ return yield* new SessionRotateError({ message: "Session not found" });
255
+ }
256
+ return issuedFromRow(rotated.value, makeSessionToken(input.sessionId, secret));
257
+ }),
258
+ updateClaims: Effect.fn("auth.session.update_claims")(function* (input) {
259
+ yield* Effect.annotateCurrentSpan("auth.session.claims_updated", true);
260
+ const now = yield* currentUnixMillis;
261
+ const rowOption = yield* dependencies.sessionStore
262
+ .findById(input.sessionId)
263
+ .pipe(Effect.mapError((cause) => new SessionUpdateClaimsError({
264
+ message: "Failed to load session",
265
+ cause,
266
+ })));
267
+ if (Option.isNone(rowOption)) {
268
+ return yield* new SessionUpdateClaimsError({
269
+ message: "Session not found",
270
+ });
271
+ }
272
+ if (isExpired(rowOption.value, now, ttl)) {
273
+ return yield* new SessionUpdateClaimsError({
274
+ message: "Session expired",
275
+ });
276
+ }
277
+ const updated = yield* dependencies.sessionStore
278
+ .updateClaims({
279
+ sessionId: input.sessionId,
280
+ claims: input.claims,
281
+ })
282
+ .pipe(Effect.mapError((cause) => new SessionUpdateClaimsError({
283
+ message: "Failed to update session claims",
284
+ cause,
285
+ })));
286
+ if (Option.isNone(updated)) {
287
+ return yield* new SessionUpdateClaimsError({
288
+ message: "Session not found",
289
+ });
290
+ }
291
+ return currentFromRow(updated.value);
292
+ }),
293
+ revoke: Effect.fn("auth.session.revoke")(function* (input) {
294
+ const now = yield* currentUnixMillis;
295
+ yield* dependencies.sessionStore
296
+ .revoke({
297
+ sessionId: input.sessionId,
298
+ revokedAt: now,
299
+ reason: input.reason,
300
+ })
301
+ .pipe(Effect.mapError((cause) => new SessionRevokeError({
302
+ message: "Failed to revoke session",
303
+ cause,
304
+ })));
305
+ }),
306
+ revokeAllForUser: Effect.fn("auth.session.revoke_all_for_user")(function* (userId) {
307
+ const now = yield* currentUnixMillis;
308
+ yield* dependencies.sessionStore
309
+ .revokeAllForUser({
310
+ userId,
311
+ revokedAt: now,
312
+ })
313
+ .pipe(Effect.mapError((cause) => new SessionRevokeError({
314
+ message: "Failed to revoke user sessions",
315
+ cause,
316
+ })));
317
+ }),
318
+ });
319
+ };
320
+ export function SessionsLive(options) {
321
+ return Layer.effect(Sessions)(Effect.gen(function* () {
322
+ const crypto = yield* Crypto;
323
+ const sessionStore = yield* SessionStore;
324
+ const resolvedOptions = options ??
325
+ {
326
+ ...(yield* AuthSessionsConfig),
327
+ secret: (yield* AuthSecrets).session,
328
+ };
329
+ return makeSessions({
330
+ ...resolvedOptions,
331
+ crypto,
332
+ sessionStore,
333
+ });
334
+ }));
335
+ }
17
336
  export class SessionCookie extends Context.Service()("auth/SessionCookie") {
18
337
  }
19
338
  (function (SessionCookie) {
20
339
  SessionCookie.make = (service) => SessionCookie.of(service);
21
340
  })(SessionCookie || (SessionCookie = {}));
341
+ export const defaultSessionCookieOptions = {
342
+ name: "__Host-session",
343
+ secure: true,
344
+ httpOnly: true,
345
+ sameSite: "lax",
346
+ path: "/",
347
+ };
348
+ const resolveSessionCookieOptions = (options = {}) => {
349
+ const resolved = {
350
+ ...defaultSessionCookieOptions,
351
+ ...options,
352
+ };
353
+ if (resolved.name.startsWith("__Host-")) {
354
+ return {
355
+ ...resolved,
356
+ secure: true,
357
+ path: "/",
358
+ domain: undefined,
359
+ };
360
+ }
361
+ return resolved;
362
+ };
363
+ const sameSiteHeaderValue = (sameSite) => {
364
+ switch (sameSite) {
365
+ case "strict": {
366
+ return "Strict";
367
+ }
368
+ case "none": {
369
+ return "None";
370
+ }
371
+ case "lax": {
372
+ return "Lax";
373
+ }
374
+ }
375
+ };
376
+ const appendCookieAttributes = (parts, options) => {
377
+ if (options.httpOnly) {
378
+ parts.push("HttpOnly");
379
+ }
380
+ if (options.secure) {
381
+ parts.push("Secure");
382
+ }
383
+ parts.push(`SameSite=${sameSiteHeaderValue(options.sameSite)}`);
384
+ parts.push(`Path=${options.path}`);
385
+ if (options.domain !== undefined) {
386
+ parts.push(`Domain=${options.domain}`);
387
+ }
388
+ return parts;
389
+ };
390
+ const serializeSessionCookie = (options, value, expiresAt) => {
391
+ const parts = [`${options.name}=${encodeURIComponent(value)}`];
392
+ if (expiresAt !== undefined) {
393
+ parts.push(`Expires=${new Date(Number(expiresAt)).toUTCString()}`);
394
+ }
395
+ return appendCookieAttributes(parts, options).join("; ");
396
+ };
397
+ const serializeClearSessionCookie = (options) => appendCookieAttributes([`${options.name}=`, "Max-Age=0", "Expires=Thu, 01 Jan 1970 00:00:00 GMT"], options).join("; ");
398
+ const parseCookieHeader = (header, name) => {
399
+ if (header === null) {
400
+ return Option.none();
401
+ }
402
+ for (const part of header.split(";")) {
403
+ const trimmed = part.trim();
404
+ const separator = trimmed.indexOf("=");
405
+ if (separator <= 0) {
406
+ continue;
407
+ }
408
+ if (trimmed.slice(0, separator) !== name) {
409
+ continue;
410
+ }
411
+ try {
412
+ // decodeURIComponent throws URIError for malformed percent-encoding; treat that cookie as absent.
413
+ return Option.some(SessionToken(decodeURIComponent(trimmed.slice(separator + 1))));
414
+ }
415
+ catch {
416
+ return Option.none();
417
+ }
418
+ }
419
+ return Option.none();
420
+ };
421
+ export const makeSessionCookie = (options) => {
422
+ const resolved = resolveSessionCookieOptions(options);
423
+ return SessionCookie.make({
424
+ read: Effect.fn("auth.session_cookie.read")((request) => Effect.succeed(parseCookieHeader(request.headers.get("Cookie"), resolved.name))),
425
+ commit: Effect.fn("auth.session_cookie.commit")((issued) => Effect.succeed(serializeSessionCookie(resolved, issued.token, issued.expiresAt))),
426
+ clear: Effect.fn("auth.session_cookie.clear")(() => Effect.succeed(serializeClearSessionCookie(resolved)))(),
427
+ });
428
+ };
429
+ export const SessionCookieLive = (options) => Layer.effect(SessionCookie)(Effect.gen(function* () {
430
+ const resolvedOptions = options ?? (yield* AuthSessionCookieConfig);
431
+ return makeSessionCookie(resolvedOptions);
432
+ }));
22
433
  export class CurrentSession extends Context.Service()("auth/CurrentSession") {
23
434
  }
24
435
  (function (CurrentSession) {
@@ -1 +1 @@
1
- {"version":3,"file":"Sessions.js","sourceRoot":"","sources":["../src/Sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AA0E9C,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAG3E;CAAG;AAEL,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAG/E;CAAG;AAEL,MAAM,OAAO,mBAAoB,SAAQ,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAG7E;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAG3E;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAG3E;CAAG;AAkBL,MAAM,OAAO,QAAS,SAAQ,OAAO,CAAC,OAAO,EAA6B,CAAC,eAAe,CAAC;CAAG;AAE9F,WAAiB,QAAQ;IACV,aAAI,GAAG,CAAC,OAAwB,EAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AACzF,CAAC,EAFgB,QAAQ,KAAR,QAAQ,QAExB;AAQD,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAAuC,CAAC,oBAAoB,CAAC;CAAG;AAElH,WAAiB,aAAa;IACf,kBAAI,GAAG,CAAC,OAA6B,EAAwB,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AACxG,CAAC,EAFgB,aAAa,KAAb,aAAa,QAE7B;AAED,MAAM,OAAO,cAAe,SAAQ,OAAO,CAAC,OAAO,EAAuC,CAAC,qBAAqB,CAAC;CAAG;AAEpH,WAAiB,cAAc;IAChB,mBAAI,GAAG,CAAC,OAA4B,EAAuB,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AACvG,CAAC,EAFgB,cAAc,KAAd,cAAc,QAE9B;AAED,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,OAAO,EAAmC,CAAC,mBAAmB,CAAC;CAAG;AAE5G,WAAiB,YAAY;IACd,iBAAI,GAAG,CAAC,OAA0B,EAAqB,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AACjG,CAAC,EAFgB,YAAY,KAAZ,YAAY,QAE5B"}
1
+ {"version":3,"file":"Sessions.js","sourceRoot":"","sources":["../src/Sessions.ts"],"names":[],"mappings":"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"}
package/dist/Storage.d.ts CHANGED
@@ -1,9 +1,10 @@
1
- import { Context, Effect } from "effect";
1
+ import type { Effect } from "effect";
2
+ import { Context } from "effect";
2
3
  import type * as Option from "effect/Option";
3
4
  import type { ChallengeType } from "./Challenge.js";
4
- import type { ChallengeId, SessionId, UnixMillis, UserId } from "./Identifiers.js";
5
- import type { AuthAssuranceLevel, AuthMethodReference } from "./Sessions.js";
6
- export type StorageEntity = "session" | "verification" | (string & {});
5
+ import type { ChallengeId, CredentialId, Email, SessionId, UnixMillis, UserId } from "./Identifiers.js";
6
+ import type { AuthAssuranceLevel, AuthMethodReference, SessionClaims } from "./Sessions.js";
7
+ export type StorageEntity = "user" | "credential" | "session" | "verification" | (string & {});
7
8
  export type StorageOperation = "find" | "insert" | "update" | "delete" | "consume" | (string & {});
8
9
  declare const StorageError_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 & {
9
10
  readonly _tag: "StorageError";
@@ -18,6 +19,54 @@ export declare class StorageError extends StorageError_base<{
18
19
  export declare namespace StorageError {
19
20
  const fromUnknown: (entity: StorageEntity, operation: StorageOperation, cause: unknown, message?: string) => StorageError;
20
21
  }
22
+ export interface NewUserRow {
23
+ readonly id: UserId;
24
+ readonly email: Email;
25
+ readonly emailVerified: boolean;
26
+ readonly createdAt: UnixMillis;
27
+ readonly updatedAt: UnixMillis;
28
+ readonly disabledAt?: UnixMillis;
29
+ readonly metadata?: Readonly<Record<string, unknown>>;
30
+ }
31
+ export interface UserRow extends NewUserRow {
32
+ }
33
+ export interface UserMarkEmailVerifiedInput {
34
+ readonly userId: UserId;
35
+ readonly updatedAt: UnixMillis;
36
+ }
37
+ export interface UserStoreService {
38
+ readonly findById: (id: UserId) => Effect.Effect<Option.Option<UserRow>, StorageError>;
39
+ readonly findByEmail: (email: Email) => Effect.Effect<Option.Option<UserRow>, StorageError>;
40
+ readonly insert: (row: NewUserRow) => Effect.Effect<void, StorageError>;
41
+ readonly markEmailVerified: (input: UserMarkEmailVerifiedInput) => Effect.Effect<Option.Option<UserRow>, StorageError>;
42
+ }
43
+ declare const UserStore_base: Context.ServiceClass<UserStore, "auth/UserStore", UserStoreService>;
44
+ export declare class UserStore extends UserStore_base {
45
+ }
46
+ export declare namespace UserStore {
47
+ const make: (service: UserStoreService) => UserStoreService;
48
+ }
49
+ export interface NewPasswordCredentialRow {
50
+ readonly id: CredentialId;
51
+ readonly userId: UserId;
52
+ readonly passwordHash: string;
53
+ readonly createdAt: UnixMillis;
54
+ readonly updatedAt: UnixMillis;
55
+ readonly revokedAt?: UnixMillis;
56
+ readonly metadata?: Readonly<Record<string, unknown>>;
57
+ }
58
+ export interface PasswordCredentialRow extends NewPasswordCredentialRow {
59
+ }
60
+ export interface CredentialStoreService {
61
+ readonly findPasswordByUserId: (userId: UserId) => Effect.Effect<Option.Option<PasswordCredentialRow>, StorageError>;
62
+ readonly insertPassword: (row: NewPasswordCredentialRow) => Effect.Effect<void, StorageError>;
63
+ }
64
+ declare const CredentialStore_base: Context.ServiceClass<CredentialStore, "auth/CredentialStore", CredentialStoreService>;
65
+ export declare class CredentialStore extends CredentialStore_base {
66
+ }
67
+ export declare namespace CredentialStore {
68
+ const make: (service: CredentialStoreService) => CredentialStoreService;
69
+ }
21
70
  export interface NewSessionRow {
22
71
  readonly id: SessionId;
23
72
  readonly userId: UserId;
@@ -26,7 +75,8 @@ export interface NewSessionRow {
26
75
  readonly expiresAt: UnixMillis;
27
76
  readonly authTime: UnixMillis;
28
77
  readonly aal: AuthAssuranceLevel;
29
- readonly amr: ReadonlyArray<AuthMethodReference>;
78
+ readonly amr: readonly AuthMethodReference[];
79
+ readonly claims?: SessionClaims;
30
80
  readonly mfaVerifiedAt?: UnixMillis;
31
81
  readonly metadata?: Readonly<Record<string, unknown>>;
32
82
  }
@@ -46,6 +96,10 @@ export interface SessionRotateStoreInput {
46
96
  readonly rotatedAt: UnixMillis;
47
97
  readonly expiresAt?: UnixMillis;
48
98
  }
99
+ export interface SessionUpdateClaimsStoreInput {
100
+ readonly sessionId: SessionId;
101
+ readonly claims: SessionClaims;
102
+ }
49
103
  export interface SessionRevokeStoreInput {
50
104
  readonly sessionId: SessionId;
51
105
  readonly revokedAt: UnixMillis;
@@ -61,6 +115,7 @@ export interface SessionStoreService {
61
115
  readonly insert: (row: NewSessionRow) => Effect.Effect<void, StorageError>;
62
116
  readonly refresh: (input: SessionRefreshStoreInput) => Effect.Effect<Option.Option<SessionRow>, StorageError>;
63
117
  readonly rotate: (input: SessionRotateStoreInput) => Effect.Effect<Option.Option<SessionRow>, StorageError>;
118
+ readonly updateClaims: (input: SessionUpdateClaimsStoreInput) => Effect.Effect<Option.Option<SessionRow>, StorageError>;
64
119
  readonly revoke: (input: SessionRevokeStoreInput) => Effect.Effect<void, StorageError>;
65
120
  readonly revokeAllForUser: (input: SessionRevokeAllForUserStoreInput) => Effect.Effect<void, StorageError>;
66
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../src/Storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../src/Storage.ts"],"names":[],"mappings":"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"}
package/dist/Storage.js CHANGED
@@ -1,9 +1,19 @@
1
- import { Context, Data, Effect } from "effect";
1
+ import { Context, Data } from "effect";
2
2
  export class StorageError extends Data.TaggedError("StorageError") {
3
3
  }
4
4
  (function (StorageError) {
5
5
  StorageError.fromUnknown = (entity, operation, cause, message = `${entity} ${operation} failed`) => new StorageError({ entity, operation, message, cause });
6
6
  })(StorageError || (StorageError = {}));
7
+ export class UserStore extends Context.Service()("auth/UserStore") {
8
+ }
9
+ (function (UserStore) {
10
+ UserStore.make = (service) => UserStore.of(service);
11
+ })(UserStore || (UserStore = {}));
12
+ export class CredentialStore extends Context.Service()("auth/CredentialStore") {
13
+ }
14
+ (function (CredentialStore) {
15
+ CredentialStore.make = (service) => CredentialStore.of(service);
16
+ })(CredentialStore || (CredentialStore = {}));
7
17
  export class SessionStore extends Context.Service()("auth/SessionStore") {
8
18
  }
9
19
  (function (SessionStore) {
@@ -1 +1 @@
1
- {"version":3,"file":"Storage.js","sourceRoot":"","sources":["../src/Storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAW9C,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAK/D;CAAG;AAEL,WAAiB,YAAY;IACd,wBAAW,GAAG,CACzB,MAAqB,EACrB,SAA2B,EAC3B,KAAc,EACd,OAAO,GAAG,GAAG,MAAM,IAAI,SAAS,SAAS,EAC3B,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;AAC5E,CAAC,EAPgB,YAAY,KAAZ,YAAY,QAO5B;AAuDD,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,OAAO,EAAqC,CAAC,mBAAmB,CAAC;CAAG;AAE9G,WAAiB,YAAY;IACd,iBAAI,GAAG,CAAC,OAA4B,EAAuB,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AACrG,CAAC,EAFgB,YAAY,KAAZ,YAAY,QAE5B;AAkCD,MAAM,OAAO,iBAAkB,SAAQ,OAAO,CAAC,OAAO,EAA+C,CACnG,wBAAwB,CACzB;CAAG;AAEJ,WAAiB,iBAAiB;IACnB,sBAAI,GAAG,CAAC,OAAiC,EAA4B,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;AACpH,CAAC,EAFgB,iBAAiB,KAAjB,iBAAiB,QAEjC"}
1
+ {"version":3,"file":"Storage.js","sourceRoot":"","sources":["../src/Storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiCvC,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAK/D;CAAG;AAEL,WAAiB,YAAY;IACd,wBAAW,GAAG,CACzB,MAAqB,EACrB,SAA2B,EAC3B,KAAc,EACd,OAAO,GAAG,GAAG,MAAM,IAAI,SAAS,SAAS,EAC3B,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC,EAPgB,YAAY,KAAZ,YAAY,QAO5B;AAgCD,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,OAAO,EAA+B,CAC3E,gBAAgB,CACjB;CAAG;AAEJ,WAAiB,SAAS;IACX,cAAI,GAAG,CAAC,OAAyB,EAAoB,EAAE,CAClE,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC,EAHgB,SAAS,KAAT,SAAS,QAGzB;AAuBD,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,OAAO,EAGjD,CAAC,sBAAsB,CAAC;CAAG;AAE9B,WAAiB,eAAe;IACjB,oBAAI,GAAG,CAClB,OAA+B,EACP,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC,EAJgB,eAAe,KAAf,eAAe,QAI/B;AA0ED,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,OAAO,EAG9C,CAAC,mBAAmB,CAAC;CAAG;AAE3B,WAAiB,YAAY;IACd,iBAAI,GAAG,CAAC,OAA4B,EAAuB,EAAE,CACxE,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,EAHgB,YAAY,KAAZ,YAAY,QAG5B;AA0CD,MAAM,OAAO,iBAAkB,SAAQ,OAAO,CAAC,OAAO,EAGnD,CAAC,wBAAwB,CAAC;CAAG;AAEhC,WAAiB,iBAAiB;IACnB,sBAAI,GAAG,CAClB,OAAiC,EACP,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC,EAJgB,iBAAiB,KAAjB,iBAAiB,QAIjC"}
@@ -3,5 +3,6 @@ export interface AuthStorageMigration {
3
3
  readonly sql: string;
4
4
  }
5
5
  export declare const authStorageMigration001: AuthStorageMigration;
6
- export declare const authStorageMigrations: readonly [AuthStorageMigration];
6
+ export declare const authStorageMigration002: AuthStorageMigration;
7
+ export declare const authStorageMigrations: readonly [AuthStorageMigration, AuthStorageMigration];
7
8
  //# sourceMappingURL=StorageMigrations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StorageMigrations.d.ts","sourceRoot":"","sources":["../src/StorageMigrations.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,uBAAuB,EAAE,oBAkCrC,CAAA;AAED,eAAO,MAAM,qBAAqB,iCAAqC,CAAA"}
1
+ {"version":3,"file":"StorageMigrations.d.ts","sourceRoot":"","sources":["../src/StorageMigrations.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,uBAAuB,EAAE,oBAkCrC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,oBA2BrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,uDAGxB,CAAC"}