@yielded/auth-persistence 0.1.0-beta.14 → 0.1.0-beta.15

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 (75) hide show
  1. package/dist/Adapter.d.mts +5 -3
  2. package/dist/Adapter.mjs +3 -1
  3. package/dist/index.d.mts +2 -1
  4. package/dist/index.mjs +2 -1
  5. package/dist/internal/browser-login.d.mts +10 -0
  6. package/dist/internal/browser-login.mjs +67 -0
  7. package/dist/internal/browser-login.mjs.map +1 -0
  8. package/dist/internal/email-kernel.d.mts +4 -3
  9. package/dist/internal/email-kernel.mjs +8 -0
  10. package/dist/internal/email-kernel.mjs.map +1 -1
  11. package/dist/internal/models/email-model.d.mts +5 -1
  12. package/dist/internal/models/email-model.mjs.map +1 -1
  13. package/dist/internal/models/passkey-model.d.mts +1 -1
  14. package/dist/internal/models/passkey-write-model.d.mts +1 -1
  15. package/dist/internal/models/password-model.d.mts +1 -1
  16. package/dist/internal/models/proof-model.d.mts +1 -1
  17. package/dist/internal/models/session-model.d.mts +1 -1
  18. package/dist/internal/models/step-up-model.d.mts +1 -1
  19. package/dist/internal/passkey/admission.d.mts +1 -1
  20. package/dist/internal/passkey/credentials.d.mts +1 -1
  21. package/dist/internal/passkey/flow.d.mts +1 -1
  22. package/dist/internal/passkey/registration-ceremony.d.mts +1 -1
  23. package/dist/internal/passkey/state.d.mts +1 -1
  24. package/dist/internal/passkey/target.d.mts +2 -1
  25. package/dist/internal/passkey/target.mjs +9 -8
  26. package/dist/internal/passkey/target.mjs.map +1 -1
  27. package/dist/internal/passkey/write-state.d.mts +1 -1
  28. package/dist/internal/passkey/write-target.mjs +4 -4
  29. package/dist/internal/passkey/write-target.mjs.map +1 -1
  30. package/dist/internal/passkey-kernel.d.mts +9 -9
  31. package/dist/internal/passkey-kernel.mjs +1 -1
  32. package/dist/internal/passkey-kernel.mjs.map +1 -1
  33. package/dist/internal/password-kernel.d.mts +3 -2
  34. package/dist/internal/password-kernel.mjs +4 -0
  35. package/dist/internal/password-kernel.mjs.map +1 -1
  36. package/dist/internal/persistence.d.mts +1 -1
  37. package/dist/internal/persistence.mjs +6 -6
  38. package/dist/internal/persistence.mjs.map +1 -1
  39. package/dist/internal/phone-kernel.d.mts +1 -1
  40. package/dist/internal/proof-kernel.d.mts +3 -2
  41. package/dist/internal/proof-kernel.mjs +6 -2
  42. package/dist/internal/proof-kernel.mjs.map +1 -1
  43. package/dist/internal/query-operations.d.mts +9 -4
  44. package/dist/internal/session-kernel.d.mts +7 -5
  45. package/dist/internal/session-kernel.mjs +9 -1
  46. package/dist/internal/session-kernel.mjs.map +1 -1
  47. package/dist/internal/storage-mapping.d.mts +59 -0
  48. package/dist/internal/storage-mapping.mjs +5 -0
  49. package/dist/internal/storage-mapping.mjs.map +1 -1
  50. package/dist/internal/storage-validation.d.mts +18 -0
  51. package/dist/internal/storage-validation.mjs +26 -1
  52. package/dist/internal/storage-validation.mjs.map +1 -1
  53. package/dist/internal/transaction-execution-kernel.d.mts +1 -1
  54. package/dist/internal/transaction-execution-kernel.mjs.map +1 -1
  55. package/dist/internal/transaction-kernel.d.mts +1 -1
  56. package/dist/internal/transaction-kernel.mjs +1 -1
  57. package/dist/internal/transaction-kernel.mjs.map +1 -1
  58. package/package.json +1 -1
  59. package/src/Adapter.ts +8 -4
  60. package/src/index.ts +1 -0
  61. package/src/internal/browser-login.ts +84 -0
  62. package/src/internal/email-kernel.ts +27 -2
  63. package/src/internal/models/email-model.ts +4 -0
  64. package/src/internal/passkey/target.ts +20 -9
  65. package/src/internal/passkey/write-target.ts +8 -8
  66. package/src/internal/passkey-kernel.ts +9 -1
  67. package/src/internal/password-kernel.ts +14 -1
  68. package/src/internal/persistence.ts +27 -6
  69. package/src/internal/proof-kernel.ts +50 -12
  70. package/src/internal/query-operations.ts +8 -0
  71. package/src/internal/session-kernel.ts +63 -8
  72. package/src/internal/storage-mapping.ts +5 -0
  73. package/src/internal/storage-validation.ts +83 -19
  74. package/src/internal/transaction-execution-kernel.ts +3 -2
  75. package/src/internal/transaction-kernel.ts +1 -1
@@ -181,6 +181,7 @@ const makeSessionKernel = (operations) => {
181
181
  };
182
182
  const makeSqlAuthenticationAuthority = Effect.fnUntraced(function* (mapping, options) {
183
183
  const database = yield* CurrentSessionSql;
184
+ if (!options.coordinated) yield* (operations.validateStorage?.(mapping) ?? Effect.void).pipe(Effect.mapError(unavailable));
184
185
  const hooks = yield* LifecycleHooks;
185
186
  const service = {
186
187
  capture: (subjectId, credentialIds) => safeTransaction(inTransaction(database, captureIn(mapping, subjectId, credentialIds, true))),
@@ -237,6 +238,7 @@ const makeSessionKernel = (operations) => {
237
238
  });
238
239
  const makeSqlPendingAuthentication = Effect.fnUntraced(function* (mapping, options) {
239
240
  const database = yield* CurrentSessionSql;
241
+ if (!options.coordinated) yield* (operations.validateStorage?.(mapping) ?? Effect.void).pipe(Effect.mapError(unavailable));
240
242
  const hooks = yield* LifecycleHooks;
241
243
  const service = {
242
244
  create: (input, _inputNow, prepare) => owned(database, options, mapping.isConstraintConflict, Effect.gen(function* () {
@@ -308,6 +310,7 @@ const makeSessionKernel = (operations) => {
308
310
  });
309
311
  const makeSqlStatefulSessions = Effect.fnUntraced(function* (mapping, options) {
310
312
  const database = yield* CurrentSessionSql;
313
+ if (!options.coordinated) yield* (operations.validateStorage?.(mapping) ?? Effect.void).pipe(Effect.mapError(unavailable));
311
314
  const hooks = yield* LifecycleHooks;
312
315
  const c = sessionColumns(mapping);
313
316
  const persistence = {
@@ -326,6 +329,7 @@ const makeSessionKernel = (operations) => {
326
329
  }
327
330
  const nativeSessionId = yield* allocate(options.mode, mapping.session.allocateId, mapping.session.allocateIdSync);
328
331
  const sessionId = yield* mapping.sessionId.toSession(nativeSessionId);
332
+ if (sessionId === input.handoffSourceSessionId) return yield* SessionConflict.make({});
329
333
  const version = yield* allocate(options.mode, mapping.session.allocateVersion, mapping.session.allocateVersionSync);
330
334
  const assessed = yield* assessAuthentication(input.evidence, requirement);
331
335
  const now = yield* freshNow;
@@ -336,7 +340,7 @@ const makeSessionKernel = (operations) => {
336
340
  version,
337
341
  subjectId: input.evidence.revision.subjectId,
338
342
  securityRevision: input.evidence.revision.securityRevision,
339
- assurance: assessed.assurance,
343
+ assurance: input.handoffSourceSessionId === void 0 ? assessed.assurance : input.session.assurance,
340
344
  provenance: yield* snapshotSessionAuthenticationProvenance({ evidence: input.evidence }),
341
345
  issuedAt: now
342
346
  };
@@ -350,6 +354,8 @@ const makeSessionKernel = (operations) => {
350
354
  subjectId: nativeSubjectId,
351
355
  sessionId: nativeSessionId
352
356
  }));
357
+ const commitNow = yield* freshNow;
358
+ if (DateTime.toEpochMillis(commitNow) < DateTime.toEpochMillis(record.issuedAt) || DateTime.toEpochMillis(commitNow) >= DateTime.toEpochMillis(record.expiresAt) || !(yield* assessAuthentication(input.evidence, requirement)).satisfied) return yield* stale();
353
359
  return receipt;
354
360
  }).pipe(normalizeMutation(mapping))),
355
361
  verify: (input) => safeTransaction(inTransaction(database, Effect.gen(function* () {
@@ -457,6 +463,7 @@ const makeSessionKernel = (operations) => {
457
463
  });
458
464
  const makeSqlSignedValidity = Effect.fnUntraced(function* (mapping, options) {
459
465
  const database = yield* CurrentSessionSql;
466
+ if (!options.coordinated) yield* (operations.validateStorage?.(mapping) ?? Effect.void).pipe(Effect.mapError(unavailable));
460
467
  const hooks = yield* LifecycleHooks;
461
468
  const subject = subjectColumns(mapping);
462
469
  const tombstone = {
@@ -595,6 +602,7 @@ const makeSessionKernel = (operations) => {
595
602
  makeSqlSignedValidity,
596
603
  makeSqlSessionStepUp: Effect.fnUntraced(function* (mapping, options) {
597
604
  const database = yield* CurrentSessionSql;
605
+ if (!options.coordinated) yield* (operations.validateStorage?.(mapping) ?? Effect.void).pipe(Effect.mapError(unavailable));
598
606
  const hooks = yield* LifecycleHooks;
599
607
  const m = mapping.intent, c = stepUpColumns(mapping);
600
608
  const read = (digest) => mapFailureCause(safeTransaction(inTransaction(database, readSqlStepUp(mapping, digest, options.locking))), (error) => error._tag === "StaleAuthentication" ? SessionStepUpInvalid.make({}) : error);