@yielded/auth-persistence 0.1.0-beta.13 → 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.
- package/dist/Adapter.d.mts +5 -3
- package/dist/Adapter.mjs +3 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.mjs +2 -1
- package/dist/internal/browser-login.d.mts +10 -0
- package/dist/internal/browser-login.mjs +67 -0
- package/dist/internal/browser-login.mjs.map +1 -0
- package/dist/internal/email-kernel.d.mts +4 -3
- package/dist/internal/email-kernel.mjs +8 -0
- package/dist/internal/email-kernel.mjs.map +1 -1
- package/dist/internal/models/email-model.d.mts +5 -1
- package/dist/internal/models/email-model.mjs.map +1 -1
- package/dist/internal/models/passkey-model.d.mts +1 -1
- package/dist/internal/models/passkey-write-model.d.mts +1 -1
- package/dist/internal/models/password-model.d.mts +1 -1
- package/dist/internal/models/proof-model.d.mts +1 -1
- package/dist/internal/models/session-model.d.mts +1 -1
- package/dist/internal/models/step-up-model.d.mts +1 -1
- package/dist/internal/passkey/admission.d.mts +1 -1
- package/dist/internal/passkey/credentials.d.mts +1 -1
- package/dist/internal/passkey/flow.d.mts +1 -1
- package/dist/internal/passkey/registration-ceremony.d.mts +1 -1
- package/dist/internal/passkey/state.d.mts +1 -1
- package/dist/internal/passkey/target.d.mts +2 -1
- package/dist/internal/passkey/target.mjs +9 -8
- package/dist/internal/passkey/target.mjs.map +1 -1
- package/dist/internal/passkey/write-state.d.mts +1 -1
- package/dist/internal/passkey/write-target.mjs +4 -4
- package/dist/internal/passkey/write-target.mjs.map +1 -1
- package/dist/internal/passkey-kernel.d.mts +9 -9
- package/dist/internal/passkey-kernel.mjs +1 -1
- package/dist/internal/passkey-kernel.mjs.map +1 -1
- package/dist/internal/password-kernel.d.mts +4 -3
- package/dist/internal/password-kernel.mjs +4 -0
- package/dist/internal/password-kernel.mjs.map +1 -1
- package/dist/internal/persistence.d.mts +1 -1
- package/dist/internal/persistence.mjs +6 -6
- package/dist/internal/persistence.mjs.map +1 -1
- package/dist/internal/phone-kernel.d.mts +1 -1
- package/dist/internal/proof-kernel.d.mts +3 -2
- package/dist/internal/proof-kernel.mjs +6 -2
- package/dist/internal/proof-kernel.mjs.map +1 -1
- package/dist/internal/query-operations.d.mts +9 -4
- package/dist/internal/session-kernel.d.mts +7 -5
- package/dist/internal/session-kernel.mjs +9 -1
- package/dist/internal/session-kernel.mjs.map +1 -1
- package/dist/internal/storage-mapping.d.mts +59 -0
- package/dist/internal/storage-mapping.mjs +5 -0
- package/dist/internal/storage-mapping.mjs.map +1 -1
- package/dist/internal/storage-validation.d.mts +18 -0
- package/dist/internal/storage-validation.mjs +26 -1
- package/dist/internal/storage-validation.mjs.map +1 -1
- package/dist/internal/transaction-execution-kernel.d.mts +1 -1
- package/dist/internal/transaction-execution-kernel.mjs.map +1 -1
- package/dist/internal/transaction-kernel.d.mts +1 -1
- package/dist/internal/transaction-kernel.mjs +1 -1
- package/dist/internal/transaction-kernel.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Adapter.ts +8 -4
- package/src/index.ts +1 -0
- package/src/internal/browser-login.ts +84 -0
- package/src/internal/email-kernel.ts +27 -2
- package/src/internal/models/email-model.ts +4 -0
- package/src/internal/passkey/target.ts +20 -9
- package/src/internal/passkey/write-target.ts +8 -8
- package/src/internal/passkey-kernel.ts +9 -1
- package/src/internal/password-kernel.ts +14 -1
- package/src/internal/persistence.ts +27 -6
- package/src/internal/proof-kernel.ts +50 -12
- package/src/internal/query-operations.ts +8 -0
- package/src/internal/session-kernel.ts +63 -8
- package/src/internal/storage-mapping.ts +5 -0
- package/src/internal/storage-validation.ts +83 -19
- package/src/internal/transaction-execution-kernel.ts +3 -2
- 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);
|