@nxgt/janus 0.21.0 → 0.22.1

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/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/auth/hashers.ts", "../src/time/clock.ts", "../src/auth/config/normalize.ts", "../src/auth/config/reserved.ts", "../src/time/duration.ts", "../src/auth/config/names.ts", "../src/auth/config/resolve-cookie.ts", "../src/auth/sealing.ts", "../src/auth/config/resolve-devices.ts", "../src/auth/config/resolve-second-factor.ts", "../src/auth/config/resolve-throttle.ts", "../src/auth/config/resolve-type.ts", "../src/auth/config/resolve-config.ts", "../src/auth/config/warn-throttle-window.ts", "../src/auth/context/create-context.ts", "../src/auth/context/logins.ts", "../src/auth/outage.ts", "../src/auth/context/password.ts", "../src/auth/context/user.ts", "../src/auth/context/records.ts", "../src/auth/context/validate-fields.ts", "../src/auth/events.ts", "../src/auth/port/assert-stores.ts", "../src/auth/devices/token.ts", "../src/auth/derived-keys.ts", "../src/auth/devices/hint.ts", "../src/auth/devices/report.ts", "../src/auth/secrets.ts", "../src/auth/sessions/open-session.ts", "../src/auth/sessions/presented-token.ts", "../src/auth/sessions/standing.ts", "../src/auth/sessions/authenticate.ts", "../src/auth/sessions/cookie.ts", "../src/auth/sessions/shared-api.ts", "../src/auth/counter-key.ts", "../src/auth/one-time/codes.ts", "../src/auth/one-time/refusals.ts", "../src/auth/one-time/spend.ts", "../src/auth/one-time/issue.ts", "../src/auth/one-time/window.ts", "../src/auth/mail-requests.ts", "../src/auth/password-written.ts", "../src/auth/prepared.ts", "../src/auth/email-flows/email-token.ts", "../src/auth/email-flows/reset-password.ts", "../src/auth/email-flows/verify-email.ts", "../src/auth/email-flows/flows.ts", "../src/auth/totp.ts", "../src/auth/second-factor/factor.ts", "../src/auth/first-proof.ts", "../src/auth/email-sign-in.ts", "../src/auth/magic-link.ts", "../src/auth/proven-sign-in.ts", "../src/auth/sign-in-attempts.ts", "../src/auth/second-factor/redeem.ts", "../src/auth/second-factor/challenge.ts", "../src/auth/second-factor/codes-left.ts", "../src/auth/second-factor/recovery-codes.ts", "../src/auth/second-factor/refusal.ts", "../src/auth/second-factor/activate.ts", "../src/auth/second-factor/disable.ts", "../src/auth/second-factor/enroll.ts", "../src/auth/second-factor/app-code-attempts.ts", "../src/auth/second-factor/regenerate.ts", "../src/auth/second-factor/lifecycle.ts", "../src/auth/second-factor/recovery.ts", "../src/auth/second-factor/flows.ts", "../src/auth/sign-in-code.ts", "../src/auth/step-up/codes.ts", "../src/auth/step-up/open.ts", "../src/auth/step-up/request.ts", "../src/auth/step-up/flows.ts", "../src/auth/users/find-by-email.ts", "../src/auth/users/by-login.ts", "../src/auth/users/change-password.ts", "../src/auth/users/insert.ts", "../src/auth/users/sign-in.ts", "../src/auth/users/password-flows.ts", "../src/auth/users/delete.ts", "../src/auth/users/find-many.ts", "../src/auth/users/fields-patch.ts", "../src/auth/users/update.ts", "../src/auth/users/record-flows.ts", "../src/auth/users/type-api.ts", "../src/auth/janus.ts", "../src/auth/sessions/fresh.ts"],
3
+ "sources": ["../src/auth/hashers.ts", "../src/time/clock.ts", "../src/auth/config/normalize.ts", "../src/auth/config/reserved.ts", "../src/time/duration.ts", "../src/auth/config/names.ts", "../src/auth/config/resolve-cookie.ts", "../src/auth/sealing.ts", "../src/auth/config/resolve-devices.ts", "../src/auth/config/resolve-second-factor.ts", "../src/auth/config/resolve-throttle.ts", "../src/auth/config/resolve-type.ts", "../src/auth/config/resolve-config.ts", "../src/auth/config/warn-throttle-window.ts", "../src/auth/context/create-context.ts", "../src/auth/context/logins.ts", "../src/auth/outage.ts", "../src/auth/context/password.ts", "../src/auth/context/user.ts", "../src/auth/context/records.ts", "../src/auth/context/validate-fields.ts", "../src/auth/events.ts", "../src/auth/port/assert-stores.ts", "../src/auth/devices/token.ts", "../src/auth/derived-keys.ts", "../src/auth/devices/hint.ts", "../src/auth/devices/report.ts", "../src/auth/secrets.ts", "../src/auth/sessions/open-session.ts", "../src/auth/sessions/presented-token.ts", "../src/auth/sessions/standing.ts", "../src/auth/sessions/authenticate.ts", "../src/auth/sessions/cookie.ts", "../src/auth/sessions/shared-api.ts", "../src/auth/counter-key.ts", "../src/auth/one-time/codes.ts", "../src/auth/one-time/refusals.ts", "../src/auth/one-time/spend.ts", "../src/auth/one-time/issue.ts", "../src/auth/one-time/window.ts", "../src/auth/mail-requests.ts", "../src/auth/password-written.ts", "../src/auth/prepared.ts", "../src/auth/email-flows/email-token.ts", "../src/auth/email-flows/reset-password.ts", "../src/auth/totp.ts", "../src/auth/second-factor/factor.ts", "../src/auth/first-proof.ts", "../src/auth/email-flows/prove-first.ts", "../src/auth/email-flows/verify-email.ts", "../src/auth/email-flows/flows.ts", "../src/auth/email-sign-in.ts", "../src/auth/magic-link.ts", "../src/auth/proven-sign-in.ts", "../src/auth/sign-in-attempts.ts", "../src/auth/second-factor/redeem.ts", "../src/auth/second-factor/challenge.ts", "../src/auth/second-factor/codes-left.ts", "../src/auth/second-factor/recovery-codes.ts", "../src/auth/second-factor/refusal.ts", "../src/auth/second-factor/activate.ts", "../src/auth/second-factor/disable.ts", "../src/auth/second-factor/enroll.ts", "../src/auth/second-factor/app-code-attempts.ts", "../src/auth/second-factor/regenerate.ts", "../src/auth/second-factor/lifecycle.ts", "../src/auth/second-factor/recovery.ts", "../src/auth/second-factor/flows.ts", "../src/auth/sign-in-code.ts", "../src/auth/step-up/codes.ts", "../src/auth/step-up/open.ts", "../src/auth/step-up/request.ts", "../src/auth/step-up/flows.ts", "../src/auth/users/find-by-email.ts", "../src/auth/users/by-login.ts", "../src/auth/users/change-password.ts", "../src/auth/users/insert.ts", "../src/auth/users/sign-in.ts", "../src/auth/users/password-flows.ts", "../src/auth/users/delete.ts", "../src/auth/users/find-many.ts", "../src/auth/users/fields-patch.ts", "../src/auth/users/update.ts", "../src/auth/users/record-flows.ts", "../src/auth/users/type-api.ts", "../src/auth/janus.ts", "../src/auth/sessions/fresh.ts"],
4
4
  "sourcesContent": [
5
5
  "import { randomBytes, scrypt, timingSafeEqual } from 'node:crypto';\nimport type { PasswordHasher } from './config';\n\n/**\n * scrypt through `node:crypto` — the hasher that runs **everywhere**: Node and\n * Bun both implement it, and it needs no dependency.\n *\n * Measured before choosing it: `bun build --target node` leaves `Bun.password`\n * in the output as it is — a target changes the bundle's format, not which\n * APIs exist — and `crypto.argon2` is absent from Node 22. scrypt is the one\n * memory-hard function both runtimes ship.\n *\n * The defaults are OWASP's: N = 2^17, r = 8, p = 1, about 128 MiB per hash.\n * The parameters are written into the hash —\n * `$scrypt$ln=17,r=8,p=1$<salt>$<key>` — and read back from it to verify, so\n * raising `cost` later leaves every existing hash readable.\n *\n * `cost` is log2(N). Lower it only in tests: 10 is fast and still exercises\n * every line.\n *\n * A hash written with other parameters than these is rewritten with these the\n * next time its owner signs in (`needsRehash`), so raising `cost` reaches every\n * active user without a migration.\n */\nexport function scryptHasher(options?: {\n\treadonly cost?: number;\n}): PasswordHasher {\n\tconst cost = options?.cost ?? 17;\n\tif (!Number.isInteger(cost) || cost < 10 || cost > 20) {\n\t\tthrow new TypeError(\n\t\t\t'scryptHasher: cost is log2(N), an integer from 10 to 20 — 17 is the recommended value',\n\t\t);\n\t}\n\n\treturn {\n\t\tprefix: SCRYPT_PREFIX,\n\t\tasync hash(plain) {\n\t\t\tconst salt = randomBytes(16);\n\t\t\tconst key = await derive(plain, salt, cost, 8, 1);\n\t\t\treturn `${SCRYPT_PREFIX}ln=${cost},r=8,p=1$${salt.toString('base64')}$${key.toString('base64')}`;\n\t\t},\n\t\tasync verify(plain, hash) {\n\t\t\tconst parsed = SCRYPT_HASH.exec(hash);\n\t\t\t// A hash this hasher cannot parse is not a wrong password, and not\n\t\t\t// something to guess at: the core picked this verifier by prefix, so\n\t\t\t// the stored hash is corrupt.\n\t\t\tif (parsed === null) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t'scryptHasher: the stored hash has the $scrypt$ prefix and not its format',\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst [, ln, r, p, salt, key] = parsed as unknown as [\n\t\t\t\tstring,\n\t\t\t\tstring,\n\t\t\t\tstring,\n\t\t\t\tstring,\n\t\t\t\tstring,\n\t\t\t\tstring,\n\t\t\t];\n\t\t\tconst expected = Buffer.from(key, 'base64');\n\t\t\tconst actual = await derive(\n\t\t\t\tplain,\n\t\t\t\tBuffer.from(salt, 'base64'),\n\t\t\t\tNumber(ln),\n\t\t\t\tNumber(r),\n\t\t\t\tNumber(p),\n\t\t\t\texpected.length,\n\t\t\t);\n\t\t\treturn timingSafeEqual(actual, expected);\n\t\t},\n\t\tneedsRehash(hash) {\n\t\t\tconst parsed = SCRYPT_HASH.exec(hash);\n\t\t\t// Unparseable is verify's refusal to make, not a reason to rewrite.\n\t\t\tif (parsed === null) return false;\n\t\t\tconst [, ln, r, p] = parsed;\n\t\t\treturn Number(ln) !== cost || r !== '8' || p !== '1';\n\t\t},\n\t};\n}\n\nconst SCRYPT_PREFIX = '$scrypt$';\nconst SCRYPT_HASH =\n\t/^\\$scrypt\\$ln=(\\d+),r=(\\d+),p=(\\d+)\\$([A-Za-z0-9+/=]+)\\$([A-Za-z0-9+/=]+)$/;\n\nfunction derive(\n\tplain: string,\n\tsalt: Buffer,\n\tln: number,\n\tr: number,\n\tp: number,\n\tlength = 32,\n): Promise<Buffer> {\n\t// Node's camelCase aliases for N, r and p: this repository has no other\n\t// casing, and Node accepts both spellings.\n\tconst n = 2 ** ln;\n\treturn new Promise((resolve, reject) => {\n\t\t// maxmem: Node's default (32 MiB) is below what N = 2^17, r = 8 needs.\n\t\t// `error` is null on Node and undefined on Bun when there is none —\n\t\t// measured: testing `=== null` rejected every hash under Bun.\n\t\tscrypt(\n\t\t\tplain,\n\t\t\tsalt,\n\t\t\tlength,\n\t\t\t{ cost: n, blockSize: r, parallelization: p, maxmem: 256 * n * r },\n\t\t\t(error, key) => (error ? reject(error) : resolve(key)),\n\t\t);\n\t});\n}\n\n/**\n * argon2id through `Bun.password`.\n *\n * **Loaded only when named**: nothing reads `Bun` until this function is called,\n * so the package imports cleanly under Node. On Node, `scryptHasher()` is the\n * hasher; a hash written here reads anywhere a verifier for `$argon2id$` is\n * wired, so a database can move between the two runtimes.\n */\nexport function bunHasher(): PasswordHasher {\n\t// `typeof` on an undeclared global is 'undefined' rather than a throw, so\n\t// this line is safe under Node.\n\tconst password: BunPassword | undefined =\n\t\ttypeof Bun === 'undefined' ? undefined : Bun.password;\n\n\tif (password === undefined) {\n\t\tthrow new TypeError(\n\t\t\t'bunHasher: Bun.password is not available — this runtime is not Bun; wire scryptHasher() instead',\n\t\t);\n\t}\n\n\treturn {\n\t\tprefix: '$argon2id$',\n\t\thash: (plain) => password.hash(plain, ARGON2ID),\n\t\tverify: (plain, hash) => password.verify(plain, hash),\n\t\tneedsRehash: (hash) => !hash.startsWith(ARGON2ID_PARAMETERS),\n\t};\n}\n\n/**\n * Pinned rather than left to `Bun.password`'s defaults — which they equal\n * today, measured: `$argon2id$v=19$m=65536,t=2,p=1$` — so that a change of\n * default in a Bun release is a rehash this package decided, not one it\n * inherited.\n */\nconst ARGON2ID = {\n\talgorithm: 'argon2id',\n\tmemoryCost: 65_536,\n\ttimeCost: 2,\n} as const;\nconst ARGON2ID_PARAMETERS = '$argon2id$v=19$m=65536,t=2,p=1$';\n\ninterface BunPassword {\n\thash(plain: string, options: typeof ARGON2ID): Promise<string>;\n\tverify(plain: string, hash: string): Promise<boolean>;\n}\n",
6
6
  "/**\n * Where `now` comes from.\n *\n * Injected rather than read from `Date` directly, for one practical reason:\n * every expiry in this package — sessions, one-time tokens, refresh windows —\n * is a comparison against the current time, and a spec that has to move the\n * real clock to test one is a spec that needs fake timers, leaks them, and\n * fails differently under load. A `Clock` makes those specs synchronous and\n * exact.\n *\n * It is also the seam an application needs if it ever has to reason about a\n * store's clock rather than its own: MongoDB stamps a TTL against the server's\n * time, not the process's.\n */\nexport interface Clock {\n\tnow(): Date;\n}\n\n/** The process's own clock. The default everywhere. */\nexport const systemClock: Clock = {\n\tnow: () => new Date(),\n};\n\n/**\n * A clock a spec drives by hand.\n *\n * Shipped rather than kept in `test/`: a consumer writing their own tests\n * against this package needs exactly this, and writing it again is how two\n * subtly different versions of \"advance time\" come to exist.\n */\nexport function fixedClock(start: Date | number = 0): Clock & {\n\tadvance(ms: number): void;\n\tset(at: Date | number): void;\n} {\n\tlet ms = start instanceof Date ? start.getTime() : start;\n\n\treturn {\n\t\tnow: () => new Date(ms),\n\t\tadvance: (by) => {\n\t\t\tms += by;\n\t\t},\n\t\tset: (at) => {\n\t\t\tms = at instanceof Date ? at.getTime() : at;\n\t\t},\n\t};\n}\n",
@@ -20,7 +20,7 @@
20
20
  "/**\n * What a user signs in with, and is found by: the login field and the e-mail,\n * each normalised by its own rule.\n */\n\nimport { UserInvalidError } from '../../errors/janus-error';\nimport { isStorable, UNSTORABLE } from '../../stores/storable';\nimport { normalizeEmail, type ResolvedType } from '../config';\nimport type { JsonObject, UserRecord } from '../port/types';\nimport type { Context } from './create-context';\n\n/** The user's e-mail, as stored, or `null` when the schema let it be absent. */\nexport function emailOf(type: ResolvedType, fields: JsonObject): string | null {\n\tconst value = fields[type.email];\n\treturn typeof value === 'string' ? value : null;\n}\n\n/**\n * What a user signs in with, normalised: the login field, by its own rule,\n * and the e-mail, by the e-mail rule — so a user whose login is a username can\n * still be found by the e-mail a reset is requested for.\n */\nexport function loginsOf(\n\ttype: ResolvedType,\n\tfields: JsonObject,\n\twhere: string,\n): string[] {\n\tconst logins = new Set<string>();\n\n\tif (type.password !== null) {\n\t\tconst login = fields[type.password.login];\n\t\tif (typeof login !== 'string') {\n\t\t\tthrow new TypeError(\n\t\t\t\t`janus: password.login \"${type.password.login}\" did not name a string in validated ${type.name} fields — it must name a required string field`,\n\t\t\t);\n\t\t}\n\t\tconst normalized = type.password.normalize(login);\n\t\t// The fields were checked; a function normaliser can still cut a\n\t\t// surrogate pair in half. Refused here, or the user is written with a\n\t\t// login nobody can sign in with — or not written at all, on PostgreSQL.\n\t\tif (!isStorable(normalized)) {\n\t\t\tconst path = [type.password.login];\n\t\t\tthrow new UserInvalidError(\n\t\t\t\t`${where}: the fields do not match the ${type.name} schema (1 issue, at ${path.join('.')})`,\n\t\t\t\t{\n\t\t\t\t\tissues: [\n\t\t\t\t\t\t{ path, message: `normalises to a login that ${UNSTORABLE}` },\n\t\t\t\t\t],\n\t\t\t\t\tuserType: type.name,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tlogins.add(normalized);\n\t}\n\n\tconst email = emailOf(type, fields);\n\tif (email !== null) logins.add(normalizeEmail(email));\n\n\treturn [...logins];\n}\n\n/**\n * The user of this type whose e-mail this is, or `null`. Looked up as a\n * login — every e-mail is one — and then compared, so a username that only\n * looks like an e-mail is nobody's.\n */\nexport async function holderOfEmail(\n\tcontext: Context,\n\ttype: ResolvedType,\n\temail: string,\n): Promise<UserRecord | null> {\n\tconst wanted = normalizeEmail(email);\n\tif (!isStorable(wanted)) return null;\n\tconst record = await context.store.users.findUserByLogin(type.name, wanted);\n\tconst held = record === null ? null : emailOf(type, record.fields);\n\treturn held !== null && normalizeEmail(held) === wanted ? record : null;\n}\n",
21
21
  "/**\n * **The identity side's two conversions**, and the one place a `null` becomes\n * an error.\n *\n * > An absence is `null`. A failure throws.\n *\n * {@link guardStores} puts the three identity stores behind the shared guard\n * (`src/stores/guard.ts`), the one place a store's answer is caught.\n * {@link required} turns an absence the caller cannot accept into its refusal,\n * and {@link unlessVersionConflict} absorbs one named conflict and rethrows\n * everything else.\n *\n * `outage.scan.spec.ts` reads every other file of `src/auth/`, `src/permissions/`\n * and `src/stores/` and fails if a `catch` appears in one, because the failure\n * this design exists to prevent is a single careless `catch { return null }`.\n */\n\nimport { type JanusError, StoreConflict } from '../errors/janus-error';\nimport { guardStore } from '../stores/guard';\nimport type { JanusStores } from './port/types';\n\n/**\n * The stores, with every method guarded.\n *\n * - A `JanusError` the adapter threw — `StoreFailure`, `StoreConflict`,\n * `NotFoundError` — passes through untouched, so `instanceof` still holds.\n * - **Anything else it threw is a failure**: a driver error, a `TypeError` from\n * a bug in the adapter, a string. It becomes `StoreFailure` with the original\n * as `cause`, naming the slot and the method. It is never an absence.\n * - A method that answers `undefined` where the port says `null` is a store\n * that forgot to answer, and becomes `StoreFailure` rather than \"not found\".\n * Rule 2 of the port, enforced at run time for the JavaScript adapter the\n * compiler never saw.\n *\n * The optional `deleteExpiredSessions` is guarded when present and left absent\n * when absent, so capability detection still reads the truth.\n */\nexport function guardStores(stores: JanusStores): JanusStores {\n\treturn {\n\t\tusers: guardStore('users', stores.users),\n\t\tsessions: guardStore('sessions', stores.sessions),\n\t\ttokens: guardStore('tokens', stores.tokens),\n\t};\n}\n\n/**\n * A value the caller requires, or the refusal an absence deserves.\n *\n * The only place in the core where a `null` from a store turns into an error —\n * `get` becoming `NOT_FOUND`. Written as a function so that the conversion is\n * visible at every call site and nowhere else.\n */\nexport function required<T>(value: T | null, absent: () => JanusError): T {\n\tif (value === null) throw absent();\n\treturn value;\n}\n\n/**\n * A write that may lose a race, and is allowed to: its answer, or `null` when\n * the record's version moved under it.\n *\n * **Only `StoreConflict('version')` is absorbed.** A failure still throws, a\n * taken login still throws, `NOT_FOUND` still throws: an outage never reads as\n * \"somebody else wrote first\". It exists for writes the caller did not ask for\n * — rewriting a password hash on sign-in — where losing to a concurrent update\n * means only that the next sign-in tries again.\n */\nexport async function unlessVersionConflict<T>(\n\twrite: Promise<T>,\n): Promise<T | null> {\n\ttry {\n\t\treturn await write;\n\t} catch (error) {\n\t\tif (error instanceof StoreConflict && error.on === 'version') return null;\n\t\tthrow error;\n\t}\n}\n",
22
22
  "/**\n * The password steps every flow takes the same way: the type's rule, the\n * policy, the hasher, the comparison, and the rewrite of a stale hash.\n */\n\nimport { CredentialError } from '../../errors/janus-error';\nimport type { PasswordHasher, ResolvedType } from '../config';\nimport { unlessVersionConflict } from '../outage';\nimport type { UserRecord } from '../port/types';\nimport type { Context } from './create-context';\n\n/** The type's password rule, or a wiring refusal for a JavaScript caller. */\nexport function passwordRule(type: ResolvedType, where: string) {\n\tif (type.password === null) {\n\t\tthrow new TypeError(\n\t\t\t`${where}: the ${type.name} type does not sign in with a password — add password: { login } to it`,\n\t\t);\n\t}\n\treturn type.password;\n}\n\n/** Refuses a password shorter than the policy. Reports the policy, never the password. */\nexport function checkPassword(\n\ttype: ResolvedType,\n\tpassword: string,\n\twhere: string,\n): void {\n\tconst minLength = type.password?.minLength ?? 8;\n\tif (typeof password !== 'string' || password.length < minLength) {\n\t\tthrow new CredentialError(\n\t\t\t'PASSWORD_TOO_SHORT',\n\t\t\t`${where}: the password is shorter than the policy's ${minLength} characters`,\n\t\t\t{ minLength, userType: type.name },\n\t\t);\n\t}\n}\n\n/** The hasher. `janus()` refused a password type without one, so this is a wiring net. */\nexport function requireHasher(context: Context, where: string): PasswordHasher {\n\tif (context.hasher === null) {\n\t\tthrow new TypeError(\n\t\t\t`${where}: no password hasher is wired — pass hasher: scryptHasher(), or bunHasher() on Bun`,\n\t\t);\n\t}\n\treturn context.hasher;\n}\n\n/**\n * Whether `password` matches the stored hash. A hash whose prefix no wired\n * verifier claims is `HASH_UNSUPPORTED`, reporting the prefix, never the hash.\n */\nexport async function passwordMatches(\n\tcontext: Context,\n\trecord: UserRecord,\n\tpassword: string,\n\twhere: string,\n): Promise<boolean> {\n\tconst stored = record.password;\n\tif (stored === null) return false;\n\n\tconst verifier = context.verifiers.find((candidate) =>\n\t\tstored.hash.startsWith(candidate.prefix),\n\t);\n\tif (verifier === undefined) {\n\t\tconst hashPrefix = /^\\$[^$]*\\$/.exec(stored.hash)?.[0] ?? '(none)';\n\t\tthrow new CredentialError(\n\t\t\t'HASH_UNSUPPORTED',\n\t\t\t`${where}: no wired verifier claims the prefix \"${hashPrefix}\"`,\n\t\t\t{ hashPrefix, userId: record.id, userType: record.type },\n\t\t);\n\t}\n\n\treturn verifier.verify(password, stored.hash);\n}\n\n/**\n * The record, with its password hash rewritten by the current hasher when the\n * stored one is stale: written by another hasher — a `verifiers` one — or by\n * this one with other parameters. Called only once `password` has matched.\n *\n * The rewrite is conditioned on the version just read. Losing that race to a\n * concurrent update is not the sign-in's failure: the record is answered as\n * read, and the next sign-in tries again. A store failure still throws.\n */\nexport async function rehashed(\n\tcontext: Context,\n\trecord: UserRecord,\n\tpassword: string,\n): Promise<UserRecord> {\n\tconst { hasher } = context;\n\tconst stored = record.password;\n\tif (hasher === null || stored === null) return record;\n\n\tconst stale =\n\t\t!stored.hash.startsWith(hasher.prefix) ||\n\t\thasher.needsRehash?.(stored.hash) === true;\n\tif (!stale) return record;\n\n\tconst written = await unlessVersionConflict(\n\t\tcontext.store.users.updateUser(\n\t\t\trecord.id,\n\t\t\t{\n\t\t\t\tupdatedAt: context.clock.now(),\n\t\t\t\t// The same password, so the same `updatedAt`: when it was *set*.\n\t\t\t\tpassword: {\n\t\t\t\t\thash: await hasher.hash(password),\n\t\t\t\t\tupdatedAt: stored.updatedAt,\n\t\t\t\t},\n\t\t\t},\n\t\t\trecord.version,\n\t\t),\n\t);\n\treturn written ?? record;\n}\n",
23
- "/** A user as the core answers one, from the record a store holds. */\n\nimport type { UserRecord } from '../port/types';\nimport type { User, UserRef } from '../types';\n\n/** A user of any type, as the degenericised core handles them. */\nexport type AnyUser = User<string, Record<string, unknown>>;\n\n/**\n * A user as application code sees it: their fields at the top level, then\n * what `janus` sets — written last, so no stored key can shadow it. No password\n * hash, ever.\n */\nexport function toUser(record: UserRecord): AnyUser {\n\treturn {\n\t\t...record.fields,\n\t\tid: record.id,\n\t\ttype: record.type,\n\t\temailVerified: record.emailVerifiedAt !== null,\n\t\tactive: record.active,\n\t\thasPassword: record.password !== null,\n\t\thasSecondFactor: record.secondFactor?.confirmedAt != null,\n\t\tversion: record.version,\n\t\tcreatedAt: record.createdAt,\n\t\tupdatedAt: record.updatedAt,\n\t};\n}\n\n/** The id a {@link UserRef} names. */\nexport const idOf = (user: UserRef): string =>\n\ttypeof user === 'string' ? user : user.id;\n",
23
+ "/** A user as the core answers one, from the record a store holds. */\n\nimport type { UserRecord } from '../port/types';\nimport type { User, UserRef } from '../types';\n\n/** A user of any type, as the degenericised core handles them. */\nexport type AnyUser = User<string, Record<string, unknown>>;\n\n/**\n * A user as application code sees it: their fields at the top level, then\n * what `janus` sets — written last, so no stored key can shadow it. No password\n * hash, ever.\n */\nexport function toUser(record: UserRecord): AnyUser {\n\treturn {\n\t\t...record.fields,\n\t\tid: record.id,\n\t\ttype: record.type,\n\t\temailVerified: record.emailVerifiedAt !== null,\n\t\tactive: record.active,\n\t\thasPassword: record.password !== null,\n\t\thasSecondFactor: record.secondFactor?.confirmedAt != null,\n\t\tversion: record.version,\n\t\tcreatedAt: record.createdAt,\n\t\tupdatedAt: record.updatedAt,\n\t};\n}\n\n/** The id a {@link UserRef} names. */\nexport const idOf = (user: UserRef): string =>\n\ttypeof user === 'string' ? user : user.id;\n\n/**\n * The id a JavaScript caller's reference names, or `''` — malformed, and\n * so `NOT_FOUND` without reaching the store — for anything that names none:\n * what the privileged calls read, `signInProven` and\n * `verifyEmail.proveFirst`, which must never mistake a bad value for a user.\n */\nexport function refId(user: UserRef): string {\n\tif (typeof user === 'string') return user;\n\tconst id: unknown =\n\t\ttypeof user === 'object' && user !== null ? user.id : undefined;\n\treturn typeof id === 'string' ? id : '';\n}\n",
24
24
  "/**\n * Reading a user's record by id — an absence is `null`, `getRecord` makes it\n * `NOT_FOUND` — and the one write that follows such a read, under a version.\n */\n\nimport { NotFoundError, StoreConflict } from '../../errors/janus-error';\nimport { isId } from '../../ids/id';\nimport type { ResolvedType } from '../config';\nimport { required } from '../outage';\nimport type { UserPatch, UserRecord } from '../port/types';\nimport type { UserRef, WriteOptions } from '../types';\nimport type { Context } from './create-context';\nimport { idOf } from './user';\n\nconst notFound = (where: string, id: string, type: string | null) =>\n\tnew NotFoundError(\n\t\t`${where}: no ${type ?? 'user'} has this id`,\n\t\ttype === null\n\t\t\t? { userId: id, operation: where }\n\t\t\t: { userId: id, userType: type, operation: where },\n\t);\n\n/**\n * The user — of this type, when one is given — or `null`. A malformed id is an\n * absence decided without reaching the store: it arrives off a URL, and it is\n * \"no such user\", not a query and not an outage. A user of another type is\n * absent too: `auth.staff.find(patientId)` finds nobody.\n */\nexport async function findRecord(\n\tcontext: Context,\n\tid: string,\n\ttype: string | null,\n): Promise<UserRecord | null> {\n\tif (!isId(id)) return null;\n\tconst record = await context.store.users.findUser(id);\n\treturn record !== null && (type === null || record.type === type)\n\t\t? record\n\t\t: null;\n}\n\n/** The user, or `NOT_FOUND`. */\nexport async function getRecord(\n\tcontext: Context,\n\tid: string,\n\ttype: string | null,\n\twhere: string,\n): Promise<UserRecord> {\n\treturn required(await findRecord(context, id, type), () =>\n\t\tnotFound(where, id, type),\n\t);\n}\n\n/**\n * One write that follows a read, under a version: the core reads the user,\n * checks `ifVersion` against what it read, computes the patch from the record,\n * and writes under the version it read. A user who changed in between is\n * `VERSION_CONFLICT`, and nothing is written.\n */\nexport async function writeUser(\n\tcontext: Context,\n\tuser: UserRef,\n\ttype: ResolvedType,\n\toptions: WriteOptions | undefined,\n\twhere: string,\n\tpatchOf: (\n\t\trecord: UserRecord,\n\t\tnow: Date,\n\t) => Omit<UserPatch, 'updatedAt'> | Promise<Omit<UserPatch, 'updatedAt'>>,\n): Promise<UserRecord> {\n\tconst id = idOf(user);\n\tconst record = await getRecord(context, id, type.name, where);\n\tconst ifVersion = options?.ifVersion;\n\n\tif (ifVersion !== undefined && ifVersion !== record.version) {\n\t\tthrow new StoreConflict(\n\t\t\t'version',\n\t\t\t`${where}: expected version ${ifVersion}, found ${record.version}`,\n\t\t\t{\n\t\t\t\tuserId: id,\n\t\t\t\texpectedVersion: ifVersion,\n\t\t\t\tactualVersion: record.version,\n\t\t\t\toperation: where,\n\t\t\t},\n\t\t);\n\t}\n\n\tconst now = context.clock.now();\n\tconst patch = await patchOf(record, now);\n\treturn context.store.users.updateUser(\n\t\trecord.id,\n\t\t{ ...patch, updatedAt: now },\n\t\trecord.version,\n\t);\n}\n",
25
25
  "/**\n * A user's fields, validated against the type's schema and answered as the\n * port holds them — or refused, reporting where and never the values.\n */\n\nimport { type Issue, UserInvalidError } from '../../errors/janus-error';\nimport { isStorable, UNSTORABLE } from '../../stores/storable';\nimport { RESERVED_FIELDS, type ResolvedType } from '../config';\nimport type { Json, JsonObject } from '../port/types';\nimport type { StandardSchemaV1 } from '../standard-schema';\n\n/**\n * Validates fields against the type's schema, and answers them as the port\n * holds them: an `undefined` property dropped, at every depth.\n */\nexport async function validateFields(\n\ttype: ResolvedType,\n\tinput: unknown,\n\twhere: string,\n): Promise<JsonObject> {\n\tconst result = await type.schema['~standard'].validate(input);\n\n\tconst issues: Issue[] =\n\t\tresult.issues === undefined\n\t\t\t? []\n\t\t\t: result.issues.map((issue) => ({\n\t\t\t\t\tpath: storablePrefix((issue.path ?? []).map(segmentKey)),\n\t\t\t\t\tmessage: issue.message,\n\t\t\t\t}));\n\n\t// A schema that passes unknown keys through would let a request set `id` or\n\t// `active` among the fields. `toUser` would shadow them anyway; refusing\n\t// them says so to whoever sent them.\n\tif (result.issues === undefined) {\n\t\tconst value = result.value as Record<string, unknown>;\n\t\tfor (const key of RESERVED_FIELDS) {\n\t\t\tif (Object.hasOwn(value, key)) {\n\t\t\t\tissues.push({ path: [key], message: 'set by janus, not by a request' });\n\t\t\t}\n\t\t}\n\t\tunstorableIn(value, [], issues);\n\t}\n\n\tif (issues.length > 0) {\n\t\t// The message reports how many and where, never the values: a field may\n\t\t// be anything the application chose to store, including something\n\t\t// private.\n\t\tthrow new UserInvalidError(\n\t\t\t`${where}: the fields do not match the ${type.name} schema (${issues.length} issue${issues.length === 1 ? '' : 's'}, at ${issues.map((i) => i.path.join('.') || '(root)').join(', ')})`,\n\t\t\t{ issues, userType: type.name },\n\t\t);\n\t}\n\n\treturn withoutUndefined((result as { value: unknown }).value) as JsonObject;\n}\n\n/** Pushes an issue for every key and every string no store can keep. */\nfunction unstorableIn(\n\tvalue: unknown,\n\tpath: (string | number)[],\n\tissues: Issue[],\n): void {\n\tif (typeof value === 'string') {\n\t\tif (!isStorable(value)) issues.push({ path, message: UNSTORABLE });\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tfor (const [index, inner] of value.entries()) {\n\t\t\tunstorableIn(inner, [...path, index], issues);\n\t\t}\n\t\treturn;\n\t}\n\tif (typeof value === 'object' && value !== null) {\n\t\tfor (const [key, inner] of Object.entries(value)) {\n\t\t\t// The key itself stays out of the path: the path reaches the message,\n\t\t\t// and a NUL has no business in a log line.\n\t\t\tif (!isStorable(key)) {\n\t\t\t\tissues.push({ path, message: `a key ${UNSTORABLE}` });\n\t\t\t} else {\n\t\t\t\tunstorableIn(inner, [...path, key], issues);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * A path up to its first key no store can keep: the path reaches the message,\n * and a NUL has no business in a log line.\n */\nfunction storablePrefix(path: (string | number)[]): (string | number)[] {\n\tconst cut = path.findIndex(\n\t\t(segment) => typeof segment === 'string' && !isStorable(segment),\n\t);\n\treturn cut === -1 ? path : path.slice(0, cut);\n}\n\nfunction segmentKey(\n\tsegment: PropertyKey | StandardSchemaV1.PathSegment,\n): string | number {\n\tconst key = typeof segment === 'object' ? segment.key : segment;\n\treturn typeof key === 'number' ? key : String(key);\n}\n\nfunction withoutUndefined(value: unknown): Json {\n\tif (Array.isArray(value)) return value.map(withoutUndefined);\n\n\tif (typeof value === 'object' && value !== null) {\n\t\tconst out: Record<string, Json> = {};\n\t\tfor (const [key, inner] of Object.entries(value)) {\n\t\t\tif (inner !== undefined) out[key] = withoutUndefined(inner);\n\t\t}\n\t\treturn out;\n\t}\n\n\treturn value as Json;\n}\n",
26
26
  "import { type Id, mintId } from '../ids/id';\nimport type { Context } from './context';\n\n/**\n * What happened to a user, once it is written:\n *\n * - `user.created` — by `create` or `signUp`;\n * - `user.emailVerified` — by `verifyEmail.confirm`, or by the link of\n * `resetPassword.confirm` or `magicLink.confirm`, or the code of\n * `signInCode.confirm`, which prove the e-mail too; never for an e-mail\n * already verified;\n * - `user.passwordReset` — by `resetPassword.confirm`;\n * - `user.passwordChanged` — by `changePassword` and `setPassword`, and by\n * `signInCode.confirm` and `magicLink.confirm` when their first proof of\n * the e-mail dropped a password, after `user.emailVerified`; never by a\n * reset, which is `user.passwordReset` alone;\n * - `user.emailChanged` — by `update`, when it changed the e-mail — compared\n * normalised, the same test that makes the new one unverified. The one\n * event that carries more than the user: `formerEmail`;\n * - `user.secondFactorEnabled` — by `secondFactor.activate`, once the factor\n * is active: not by `enroll`, which leaves it waiting for its first code;\n * - `user.secondFactorDisabled` — by `secondFactor.disable`, when it removed\n * an active factor, and by `signInCode.confirm` and `magicLink.confirm`\n * when their first proof of the e-mail removed one, after\n * `user.emailVerified` and any `user.passwordChanged`; never for a user who\n * had none, or one still waiting;\n * - `user.recoveryCodesRegenerated` — by `secondFactor.regenerateRecoveryCodes`:\n * the codes the user held stopped working. Not by `activate`, whose codes\n * come with `user.secondFactorEnabled`;\n * - `user.recoveryCodeUsed` — by `secondFactor.recover`, once the code is\n * spent: a sign-in without the user's phone;\n * - `user.newDeviceSignedIn` — by a sign-in that opened a session from a\n * device the user had not signed in from: `signIn`, `secondFactor.confirm`,\n * `secondFactor.recover`, `signInCode.confirm`, `magicLink.confirm` and\n * `signInProven`, when given a `device` its token did not prove. Never by\n * `signUp`, nor without a `device`. Carries `sessionId`;\n * - `user.deleted` — by `delete`, once; a replay that finds nobody is none.\n */\nexport type UserEventType =\n\t| 'user.created'\n\t| 'user.emailVerified'\n\t| 'user.passwordReset'\n\t| 'user.passwordChanged'\n\t| 'user.emailChanged'\n\t| 'user.secondFactorEnabled'\n\t| 'user.secondFactorDisabled'\n\t| 'user.recoveryCodesRegenerated'\n\t| 'user.recoveryCodeUsed'\n\t| 'user.newDeviceSignedIn'\n\t| 'user.deleted';\n\n/**\n * A user event: **the user named by id, and nothing else** — no login, no\n * field, no password, no token. Whoever receives it reads the rest from where\n * it is kept, if they may. Two exceptions: `formerEmail` on\n * `user.emailChanged` — once the write landed, the old address is kept\n * nowhere — and `sessionId` on `user.newDeviceSignedIn`, the session the new\n * device holds.\n */\nexport interface UserEvent {\n\t/** A UUIDv7 minted for this event: the key to deliver it once. */\n\treadonly id: Id;\n\treadonly type: UserEventType;\n\t/**\n\t * When the write landed: the `createdAt` or `updatedAt` it wrote, or, for\n\t * a deletion, the time read just before it — not when the listener ran.\n\t */\n\treadonly occurredAt: Date;\n\treadonly userId: Id;\n\treadonly userType: string;\n\t/**\n\t * On `user.emailChanged` only: the address the user had before, as it was\n\t * stored — `null` when they had none. So a notice can reach the inbox the\n\t * account was just taken from; the new address is on the user. Absent\n\t * from every other type, and from an event a webhook delivered.\n\t */\n\treadonly formerEmail?: string | null;\n\t/**\n\t * On `user.newDeviceSignedIn` only: the session the new device opened —\n\t * to sign it out from a \"this wasn't me\" page. Absent from every other\n\t * type, and from an event a webhook delivered.\n\t */\n\treadonly sessionId?: string;\n}\n\n/** What an event carries beyond the user, on the two types that do. */\nexport type EventExtras = Pick<UserEvent, 'formerEmail' | 'sessionId'>;\n\n/**\n * What `janus({ events })` takes: called once per event, **after** the write\n * landed and before the flow answers — awaited, so a queue that stores the\n * event durably has done so by then. A listener that throws fails nothing:\n * the write happened, and the flow answers as it would have. The failure is a\n * `JANUS_EVENT_FAILED` warning naming the event, never silence.\n */\nexport type UserEventListener = (event: UserEvent) => void | Promise<void>;\n\n/** The listener given to `janus()`, or a wiring refusal for a JavaScript caller. */\nexport function resolveEvents(\n\tevents: unknown,\n\twhere: string,\n): UserEventListener | null {\n\tif (events === undefined) return null;\n\tif (typeof events !== 'function') {\n\t\tthrow new TypeError(\n\t\t\t`${where}: events must be a function that takes a user event — webhooks({ … }) from @nxgt/janus-webhooks, or your own`,\n\t\t);\n\t}\n\treturn events as UserEventListener;\n}\n\n/**\n * Hands one event to the listener after the write it reports. A flow whose\n * steps after the write matter to the listener — a reset's revocation, a\n * deletion's cleanup — runs them in a `try` and emits from its `finally`, so\n * an outage there does not lose the event for good. Its failure is the application's, not the flow's: warned about, with what\n * it takes to send the event again — never thrown, since the write has landed.\n */\nexport async function emit(\n\tcontext: Context,\n\ttype: UserEventType,\n\tuser: { readonly id: Id; readonly type: string },\n\toccurredAt: Date,\n\textras: EventExtras = {},\n): Promise<void> {\n\tconst listener = context.events;\n\tif (listener === null) return;\n\n\tconst event: UserEvent = Object.freeze({\n\t\tid: mintId(occurredAt.getTime()),\n\t\ttype,\n\t\t// A copy: the record's own Date is also the user the flow answers.\n\t\toccurredAt: new Date(occurredAt.getTime()),\n\t\tuserId: user.id,\n\t\tuserType: user.type,\n\t\t...extras,\n\t});\n\ttry {\n\t\tawait listener(event);\n\t} catch (failure) {\n\t\tprocess.emitWarning(\n\t\t\t`janus: the events listener failed on ${type} ${event.id} for user ${user.id}: ${failure instanceof Error ? failure.name : typeof failure}`,\n\t\t\t{ code: 'JANUS_EVENT_FAILED' },\n\t\t);\n\t}\n}\n",
@@ -47,14 +47,15 @@
47
47
  "/**\n * A request for an e-mail made in two steps — `prepare` counts it, `send`\n * issues — so the mail throttle answers in the visitor's own request, while\n * the lookup and the writes, whose time depends on whether the address has\n * an account, run off it.\n *\n * `prepare` looks nobody up: it validates, counts the address\n * (`mail-requests.ts`) and refuses past the limit, the same store calls for\n * any address. `send` is what `request` does after the count, **once**: the\n * count `prepare` made pays for one issue, so a second call is a `TypeError`\n * — a bug of the caller's, never a value from a request — and nothing a\n * caller can pass skips the count.\n */\n\n/**\n * `send` for a prepared request: `issue` on the first call, a `TypeError`\n * on every other — marked spent before `issue` starts, so two calls at once\n * cannot both issue, and spent even when `issue` fails: prepare again then,\n * which counts again.\n */\nexport function sendOnce<T>(\n\twhere: string,\n\tissue: () => Promise<T>,\n): () => Promise<T> {\n\tlet sent = false;\n\treturn async () => {\n\t\tif (sent) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`${where}(…).send: already called — a prepared request sends once; call ${where} again for another`,\n\t\t\t);\n\t\t}\n\t\tsent = true;\n\t\treturn issue();\n\t};\n}\n",
48
48
  "/**\n * The token an e-mail flow sends and redeems: issued for the user's current\n * e-mail, and refused on redemption when that e-mail is not the one it was\n * sent to any more.\n */\n\nimport { NotFoundError } from '../../errors/janus-error';\nimport type { ResolvedType } from '../config';\nimport { type Context, emailOf, findRecord } from '../context';\nimport {\n\tissueOneTime,\n\trefuseStale,\n\tspendOneTime,\n\tunknownOneTime,\n} from '../one-time';\nimport type { TokenKind, TokenRecord, UserRecord } from '../port/types';\nimport type { IssuedToken } from '../types';\n\n/**\n * Spends a token and says why it cannot be used, when it cannot. A user\n * gone since, or of another type, is as good as no token; a token sent to\n * an e-mail the user no longer has is stale.\n */\nexport async function redeemEmailToken(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tkind: TokenKind,\n\tsecret: string,\n\twhere: string,\n): Promise<{ token: TokenRecord; user: UserRecord }> {\n\tconst token = await spendOneTime(context, secret, kind, where, 'token');\n\tconst user = await findRecord(context, token.userId, type.name);\n\tif (user === null) throw unknownOneTime(where, 'token');\n\n\trefuseStale(type, user, token, where, 'token');\n\treturn { token, user };\n}\n\n/** Issues a one-time token for the user's current e-mail. */\nexport async function issueEmailToken(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tkind: 'verifyEmail' | 'resetPassword',\n\tuser: UserRecord,\n\twhere: string,\n): Promise<IssuedToken> {\n\tconst email = emailOf(type, user.fields);\n\tif (email === null) {\n\t\tthrow new NotFoundError(`${where}: the user has no e-mail`, {\n\t\t\tuserId: user.id,\n\t\t\tuserType: type.name,\n\t\t\toperation: where,\n\t\t});\n\t}\n\n\tconst { secret, expiresAt } = await issueOneTime(context, {\n\t\tkind,\n\t\tuserId: user.id,\n\t\taddress: email,\n\t\tttlMs: context.config.tokenTtlMs[kind],\n\t});\n\treturn { token: secret, email, expiresAt };\n}\n",
49
49
  "/**\n * Resetting a password: send a token to the holder of an e-mail, then redeem\n * it to set the password — which proves the e-mail, and signs the user out\n * everywhere.\n */\n\nimport type { At } from '../at';\nimport type { ResolvedType } from '../config';\nimport {\n\ttype AnyUser,\n\ttype Context,\n\tcheckPassword,\n\tholderOfEmail,\n\tpasswordRule,\n\trequireHasher,\n\ttoUser,\n\twriteUser,\n} from '../context';\nimport { emit } from '../events';\nimport { countMailByAddress } from '../mail-requests';\nimport { refuseStale } from '../one-time';\nimport { endWhatThePasswordOpened } from '../password-written';\nimport { sendOnce } from '../prepared';\nimport { hashSecret } from '../secrets';\nimport type { IssuedToken, PreparedRequest, ResetPasswordApi } from '../types';\nimport { issueEmailToken, redeemEmailToken } from './email-token';\n\ntype ResetPassword = ResetPasswordApi<AnyUser>['resetPassword'];\ntype IssuedReset = IssuedToken & { readonly user: AnyUser };\n\n/**\n * `resetPassword` of one user type: `request` a token for the holder of an\n * e-mail, then `confirm` it with a new password.\n */\nexport function resetPasswordFlows(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n): ResetPassword {\n\treturn {\n\t\tasync request(email) {\n\t\t\tconst where = at('resetPassword.request');\n\t\t\treturn (await prepareReset(context, type, String(email), where)).send();\n\t\t},\n\n\t\tasync prepare(email) {\n\t\t\tconst where = at('resetPassword.prepare');\n\t\t\treturn prepareReset(context, type, String(email), where);\n\t\t},\n\n\t\tasync confirm(secret, password) {\n\t\t\treturn confirmReset(\n\t\t\t\tcontext,\n\t\t\t\ttype,\n\t\t\t\tsecret,\n\t\t\t\tpassword,\n\t\t\t\tat('resetPassword.confirm'),\n\t\t\t);\n\t\t},\n\t};\n}\n\n/**\n * Counts a reset asked for `email` — before it is looked up: past the\n * limit, nobody and somebody are refused alike — and answers the `send`\n * that issues it, once. `request` is this, then `send`.\n */\nasync function prepareReset(\n\tcontext: Context,\n\ttype: ResolvedType,\n\temail: string,\n\twhere: string,\n): Promise<PreparedRequest<IssuedReset>> {\n\tpasswordRule(type, where);\n\tawait countMailByAddress(context, type, 'resetPassword', email, where);\n\treturn Object.freeze({\n\t\tsend: sendOnce(where, () => issueReset(context, type, email, where)),\n\t});\n}\n\n/** Issues a reset token for the holder of `email`, and spends every other they had. */\nasync function issueReset(\n\tcontext: Context,\n\ttype: ResolvedType,\n\temail: string,\n\twhere: string,\n): Promise<IssuedReset | null> {\n\tconst record = await holderOfEmail(context, type, email);\n\tif (record === null) return null;\n\n\tconst issued = await issueEmailToken(\n\t\tcontext,\n\t\ttype,\n\t\t'resetPassword',\n\t\trecord,\n\t\twhere,\n\t);\n\t// One live link per user: the ones sent before stop working. Issued\n\t// first, spent after, as for a sign-in code, so requests that race\n\t// leave at most one live — never one each.\n\tawait context.store.tokens.spendUserTokens(\n\t\trecord.id,\n\t\t'resetPassword',\n\t\tcontext.clock.now(),\n\t\thashSecret(issued.token),\n\t);\n\treturn { ...issued, user: toUser(record) };\n}\n\n/** Redeems a reset token: sets the password, proves the e-mail, signs out everywhere. */\nasync function confirmReset(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tsecret: string,\n\tpassword: string,\n\twhere: string,\n): Promise<AnyUser> {\n\tpasswordRule(type, where);\n\t// Checked before the token is spent: a password refused for its\n\t// length must not cost the visitor their link.\n\tcheckPassword(type, password, where);\n\tconst hash = await requireHasher(context, where).hash(password);\n\n\tconst { token, user } = await redeemEmailToken(\n\t\tcontext,\n\t\ttype,\n\t\t'resetPassword',\n\t\tsecret,\n\t\twhere,\n\t);\n\tlet newlyVerified = false;\n\tconst written = await writeUser(\n\t\tcontext,\n\t\tuser.id,\n\t\ttype,\n\t\tundefined,\n\t\twhere,\n\t\t(record, now) => {\n\t\t\t// Checked again on the record written, as for verifyEmail.\n\t\t\trefuseStale(type, record, token, where, 'token');\n\t\t\tnewlyVerified = record.emailVerifiedAt === null;\n\t\t\treturn {\n\t\t\t\tpassword: { hash, updatedAt: now },\n\t\t\t\t// The link reached the inbox: that proves the e-mail.\n\t\t\t\t...(record.emailVerifiedAt === null ? { emailVerifiedAt: now } : {}),\n\t\t\t};\n\t\t},\n\t);\n\ttry {\n\t\t// Whoever had the old password is signed out, a sign-in they\n\t\t// left waiting on its second factor cannot be finished, and no\n\t\t// other link replaces the password again — before the listener\n\t\t// runs, however long it takes.\n\t\tawait context.store.sessions.revokeUserSessions(\n\t\t\twritten.id,\n\t\t\tcontext.clock.now(),\n\t\t);\n\t\tawait endWhatThePasswordOpened(context, written.id);\n\t} finally {\n\t\t// Reported even when an outage interrupts the steps above:\n\t\t// the link is spent, so a retry is refused and could not.\n\t\tawait emit(context, 'user.passwordReset', written, written.updatedAt);\n\t\tif (newlyVerified) {\n\t\t\tawait emit(context, 'user.emailVerified', written, written.updatedAt);\n\t\t}\n\t}\n\treturn toUser(written);\n}\n",
50
- "/**\n * Verifying an e-mail: send a token to it, then redeem the token to mark the\n * address verified.\n */\n\nimport type { At } from '../at';\nimport type { ResolvedType } from '../config';\nimport {\n\ttype AnyUser,\n\ttype Context,\n\tgetRecord,\n\tidOf,\n\ttoUser,\n\twriteUser,\n} from '../context';\nimport { emit } from '../events';\nimport { countMailByUser } from '../mail-requests';\nimport { refuseStale } from '../one-time';\nimport type { VerifyEmailApi } from '../types';\nimport { issueEmailToken, redeemEmailToken } from './email-token';\n\n/** `verifyEmail` of one user type: `send` a token to its e-mail, then `confirm` it. */\nexport function verifyEmailFlows(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n): VerifyEmailApi<AnyUser>['verifyEmail'] {\n\treturn {\n\t\tasync send(user) {\n\t\t\tconst where = at('verifyEmail.send');\n\t\t\tconst record = await getRecord(context, idOf(user), type.name, where);\n\t\t\t// Counted per user: the application asks for a user it knows.\n\t\t\tawait countMailByUser(context, type, 'verifyEmail', record.id, where);\n\t\t\treturn issueEmailToken(context, type, 'verifyEmail', record, where);\n\t\t},\n\n\t\tasync confirm(secret) {\n\t\t\tconst where = at('verifyEmail.confirm');\n\t\t\tconst { token, user } = await redeemEmailToken(\n\t\t\t\tcontext,\n\t\t\t\ttype,\n\t\t\t\t'verifyEmail',\n\t\t\t\tsecret,\n\t\t\t\twhere,\n\t\t\t);\n\t\t\tlet newlyVerified = false;\n\t\t\tconst written = await writeUser(\n\t\t\t\tcontext,\n\t\t\t\tuser.id,\n\t\t\t\ttype,\n\t\t\t\tundefined,\n\t\t\t\twhere,\n\t\t\t\t(record, now) => {\n\t\t\t\t\t// Checked again on the record written: an e-mail changed\n\t\t\t\t\t// since the read above is not the one the link proved.\n\t\t\t\t\trefuseStale(type, record, token, where, 'token');\n\t\t\t\t\tnewlyVerified = record.emailVerifiedAt === null;\n\t\t\t\t\treturn { emailVerifiedAt: now };\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (newlyVerified) {\n\t\t\t\tawait emit(context, 'user.emailVerified', written, written.updatedAt);\n\t\t\t}\n\t\t\treturn toUser(written);\n\t\t},\n\t};\n}\n",
51
- "/** The e-mail flows of one user type, assembled from the files beside this one. */\n\nimport type { At } from '../at';\nimport type { ResolvedType } from '../config';\nimport type { AnyUser, Context } from '../context';\nimport type { ResetPasswordApi, VerifyEmailApi } from '../types';\nimport { resetPasswordFlows } from './reset-password';\nimport { verifyEmailFlows } from './verify-email';\n\n/**\n * The e-mail flows: send a one-time token by e-mail, then confirm it —\n * verifying the address, or resetting the password. Both confirm the same\n * way: spend the token, read the user, and check the address again on the\n * very record the write replaces.\n */\nexport function emailFlows(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n): VerifyEmailApi<AnyUser> & ResetPasswordApi<AnyUser> {\n\treturn {\n\t\tverifyEmail: verifyEmailFlows(context, type, at),\n\t\tresetPassword: resetPasswordFlows(context, type, at),\n\t};\n}\n",
52
50
  "import { createHmac, randomBytes } from 'node:crypto';\n\n/**\n * RFC 6238 as every authenticator app reads it: HMAC-SHA-1, six digits, a\n * thirty-second step. None of the three is configurable, on purpose — an app\n * that ignores `algorithm` or `digits` in the URI, and several do, would show\n * a code the server never accepts.\n */\nexport const TOTP = { digits: 6, stepMs: 30_000, drift: 1 } as const;\n\nconst BASE32 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\n\n/** A fresh TOTP secret: 20 random bytes — SHA-1's block of key — in base32. */\nexport function mintTotpSecret(): string {\n\treturn toBase32(randomBytes(20));\n}\n\n/** RFC 4648 base32, without padding: what an `otpauth://` URI carries. */\nexport function toBase32(bytes: Uint8Array): string {\n\tlet bits = 0;\n\tlet value = 0;\n\tlet out = '';\n\tfor (const byte of bytes) {\n\t\tvalue = (value << 8) | byte;\n\t\tbits += 8;\n\t\twhile (bits >= 5) {\n\t\t\tout += BASE32[(value >>> (bits - 5)) & 31];\n\t\t\tbits -= 5;\n\t\t}\n\t}\n\tif (bits > 0) out += BASE32[(value << (5 - bits)) & 31];\n\treturn out;\n}\n\nexport function fromBase32(text: string): Buffer {\n\tlet bits = 0;\n\tlet value = 0;\n\tconst out: number[] = [];\n\tfor (const char of text) {\n\t\tconst index = BASE32.indexOf(char);\n\t\tif (index === -1) throw new TypeError('totp: the secret is not base32');\n\t\tvalue = (value << 5) | index;\n\t\tbits += 5;\n\t\tif (bits >= 8) {\n\t\t\tout.push((value >>> (bits - 8)) & 255);\n\t\t\tbits -= 8;\n\t\t}\n\t}\n\treturn Buffer.from(out);\n}\n\n/** The step a moment falls in: whole thirty-second periods since the epoch. */\nexport const stepAt = (now: Date): number =>\n\tMath.floor(now.getTime() / TOTP.stepMs);\n\n/** RFC 4226's code for one counter value, zero-padded to six digits. */\nexport function codeAt(secret: Buffer, step: number): string {\n\tconst counter = Buffer.alloc(8);\n\tcounter.writeBigUInt64BE(BigInt(step));\n\tconst digest = createHmac('sha1', secret).update(counter).digest();\n\tconst offset = (digest[19] as number) & 0x0f;\n\tconst binary = digest.readUInt32BE(offset) & 0x7fffffff;\n\treturn String(binary % 10 ** TOTP.digits).padStart(TOTP.digits, '0');\n}\n\n/**\n * The step this code was shown at — the current one, or one either side for a\n * clock that drifted — or `null`.\n *\n * **Only a step after `lastStep` counts**, so a code is used once: the caller\n * writes the step it got back, and a replay of the same code finds nothing.\n * Every candidate is computed, so the time taken does not say which matched.\n */\nexport function matchStep(\n\tsecret: Buffer,\n\tcode: string,\n\tnow: Date,\n\tlastStep: number | null,\n): number | null {\n\tif (!/^\\d{6}$/.test(code)) return null;\n\tconst current = stepAt(now);\n\tlet matched: number | null = null;\n\tfor (let step = current - TOTP.drift; step <= current + TOTP.drift; step++) {\n\t\tconst fresh = lastStep === null || step > lastStep;\n\t\tif (equalCodes(codeAt(secret, step), code) && fresh && matched === null) {\n\t\t\tmatched = step;\n\t\t}\n\t}\n\treturn matched;\n}\n\n/** Compares two six-digit strings without stopping at the first difference. */\nfunction equalCodes(a: string, b: string): boolean {\n\tlet difference = a.length ^ b.length;\n\tfor (let i = 0; i < a.length; i++) {\n\t\tdifference |= a.charCodeAt(i) ^ b.charCodeAt(i);\n\t}\n\treturn difference === 0;\n}\n\n/**\n * The `otpauth://` URI an authenticator app reads from a QR code. The label is\n * `issuer:account`, each part percent-encoded, and `issuer` is repeated as a\n * parameter, as Google Authenticator requires.\n */\nexport function otpauthUri(\n\tissuer: string,\n\taccount: string,\n\tsecret: string,\n): string {\n\tconst label = `${encodeURIComponent(issuer)}:${encodeURIComponent(account)}`;\n\tconst query = new URLSearchParams({\n\t\tsecret,\n\t\tissuer,\n\t\talgorithm: 'SHA1',\n\t\tdigits: String(TOTP.digits),\n\t\tperiod: String(TOTP.stepMs / 1000),\n\t});\n\treturn `otpauth://totp/${label}?${query}`;\n}\n",
53
51
  "import type { ResolvedConfig } from '../config';\nimport type { Context } from '../context';\nimport type { SecondFactorRecord, UserRecord } from '../port/types';\nimport { seal, unseal } from '../sealing';\nimport { fromBase32, matchStep } from '../totp';\n\n/**\n * What the second factor's flows share: its configuration, its states, and\n * the one check of a code against a sealed secret.\n *\n * A factor is **enrolled** once `enroll` wrote it, **active** once a first\n * code confirmed it, and gone after `disable`. Only an active one is asked\n * for at sign-in.\n */\n\nexport type Settings = NonNullable<ResolvedConfig['secondFactor']>;\n\ntype ActiveFactor = SecondFactorRecord & { readonly confirmedAt: Date };\n\nexport const isActive = (\n\tfactor: SecondFactorRecord | null,\n): factor is ActiveFactor => factor !== null && factor.confirmedAt !== null;\n\n/** The configuration, or a wiring refusal: no keys, no second factor. */\nexport function requireSettings(\n\tcontext: Context,\n\twhere: string,\n\twhy: string,\n): Settings {\n\tconst configured = context.config.secondFactor;\n\tif (configured === null) {\n\t\tthrow new TypeError(\n\t\t\t`${where}: ${why}, and janus() was given no secondFactor — pass secondFactor: { issuer, keys }`,\n\t\t);\n\t}\n\treturn configured;\n}\n\n/**\n * Checks a code against the user's secret. Answers the factor as it is to be\n * written — the step accepted, and the secret sealed again under the first\n * key when an older one sealed it — or `null` for a code that does not match,\n * or was already used.\n */\nexport function acceptCode(\n\tconfigured: Settings,\n\trecord: UserRecord,\n\tfactor: SecondFactorRecord,\n\tcode: string,\n\tnow: Date,\n\twhere: string,\n): SecondFactorRecord | null {\n\tconst { plain, keyId } = unseal(\n\t\tconfigured.sealer,\n\t\tfactor.secret,\n\t\trecord.id,\n\t\twhere,\n\t);\n\tconst step = matchStep(fromBase32(plain), code, now, factor.lastStep);\n\tif (step === null) return null;\n\treturn {\n\t\t...factor,\n\t\tlastStep: step,\n\t\tsecret:\n\t\t\tkeyId === configured.sealer.sealWith\n\t\t\t\t? factor.secret\n\t\t\t\t: seal(configured.sealer, plain, record.id),\n\t};\n}\n",
54
52
  "/**\n * The first proof of an e-mail by a sign-in code or a sign-in link: the\n * address reached an inbox no one had proved before, so whatever was set on\n * the account before that proof is not the inbox holder's to keep.\n *\n * Anybody can sign up with somebody else's e-mail and a password of their\n * own — and enrol a second factor on their own phone. Without this, the real\n * holder signing in by e-mail later would verify the address and leave that\n * password, that factor and their sessions working: locked out by a factor\n * they never set, or signed in beside someone who still holds the account.\n * So the write that proves the address also drops the password and the\n * second factor with its recovery codes, and every session is revoked before\n * the new one opens: the same ending as `resetPassword.confirm`, which\n * proves the address too, plus the factor it keeps.\n */\n\nimport type { Id } from '../ids/id';\nimport type { ResolvedType } from './config';\nimport { type Context, writeUser } from './context';\nimport { emit } from './events';\nimport { endWhatThePasswordOpened } from './password-written';\nimport type { UserRecord } from './port/types';\nimport { isActive } from './second-factor/factor';\n\n/**\n * Proves `user`'s e-mail, never proved before, under the version read — an\n * address changed since is not the one proved: a `VERSION_CONFLICT` then.\n * Drops the password and the second factor — active or waiting, and its\n * recovery codes with it — in the same write, and revokes every session and\n * spends what the password opened — reset links and second-factor\n * challenges — **both before the write and after it**.\n *\n * Before, so an outage there leaves the e-mail unproved and the owner's next\n * code or link runs this again; after, so a sign-in landing in between is\n * ended too. An outage after the write is the one that leaves a session live.\n *\n * `user.emailVerified` is sent, then `user.passwordChanged` when a password\n * was dropped and `user.secondFactorDisabled` when an active factor was —\n * the rule of `secondFactor.disable` — from a `finally`, so an outage ending\n * the sessions still reports the write, which a retry would not make again.\n */\nexport async function proveFirstEmail(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tuser: UserRecord,\n\twhere: string,\n): Promise<UserRecord> {\n\tawait endWhatTheSquatterOpened(context, user.id);\n\tlet dropped = false;\n\tlet disabled = false;\n\tconst proved = await writeUser(\n\t\tcontext,\n\t\tuser.id,\n\t\ttype,\n\t\t{ ifVersion: user.version },\n\t\twhere,\n\t\t(record, now) => {\n\t\t\tdropped = record.password !== null;\n\t\t\tdisabled = isActive(record.secondFactor);\n\t\t\treturn {\n\t\t\t\temailVerifiedAt: now,\n\t\t\t\t...(dropped ? { password: null } : {}),\n\t\t\t\t...(record.secondFactor === null ? {} : { secondFactor: null }),\n\t\t\t};\n\t\t},\n\t);\n\ttry {\n\t\t// Whoever signed up with this address and not its inbox is signed\n\t\t// out, and a sign-in they left waiting on its second factor cannot\n\t\t// be finished — before the new session opens.\n\t\tawait endWhatTheSquatterOpened(context, proved.id);\n\t} finally {\n\t\tawait emit(context, 'user.emailVerified', proved, proved.updatedAt);\n\t\tif (dropped) {\n\t\t\tawait emit(context, 'user.passwordChanged', proved, proved.updatedAt);\n\t\t}\n\t\tif (disabled) {\n\t\t\tawait emit(\n\t\t\t\tcontext,\n\t\t\t\t'user.secondFactorDisabled',\n\t\t\t\tproved,\n\t\t\t\tproved.updatedAt,\n\t\t\t);\n\t\t}\n\t}\n\treturn proved;\n}\n\n/** Every session of the user revoked, and what their password opened spent. */\nasync function endWhatTheSquatterOpened(\n\tcontext: Context,\n\tuserId: Id,\n): Promise<void> {\n\tawait context.store.sessions.revokeUserSessions(userId, context.clock.now());\n\tawait endWhatThePasswordOpened(context, userId);\n}\n",
53
+ "/**\n * Proving an e-mail on the application's own proof of the inbox — an\n * invitation token it issued to the address — with the ending a first\n * sign-in by link or code gives an e-mail never proved (`../first-proof`).\n */\n\nimport { UserInactiveError } from '../../errors/janus-error';\nimport type { At } from '../at';\nimport type { ResolvedType } from '../config';\nimport {\n\ttype AnyUser,\n\ttype Context,\n\tgetRecord,\n\trefId,\n\ttoUser,\n} from '../context';\nimport { proveFirstEmail } from '../first-proof';\nimport type { VerifyEmailApi } from '../types';\n\n/**\n * `verifyEmail.proveFirst` for one user type: the user read by id —\n * `NOT_FOUND` for nobody, as `signInProven` — refused when inactive, then,\n * when the e-mail was never proved, `proveFirstEmail` exactly as\n * `magicLink.confirm` and `signInCode.confirm` run it, decided the same way:\n * on the record read, `emailVerifiedAt === null`. An e-mail already proved\n * is answered as it is, with nothing written.\n *\n * No throttle is counted and no count restarted, no e-mail sent and no\n * token issued; the only tokens spent are the ones `proveFirstEmail`\n * spends, what the password opened.\n */\nexport function proveFirstFlow(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n): VerifyEmailApi<AnyUser>['verifyEmail']['proveFirst'] {\n\treturn async (user) => {\n\t\tconst where = at('verifyEmail.proveFirst');\n\t\tconst record = await getRecord(context, refId(user), type.name, where);\n\t\tif (!record.active) {\n\t\t\tthrow new UserInactiveError(`${where}: the user is inactive`, {\n\t\t\t\tuserId: record.id,\n\t\t\t\tuserType: type.name,\n\t\t\t});\n\t\t}\n\t\tif (record.emailVerifiedAt !== null) {\n\t\t\treturn { user: toUser(record), proved: false };\n\t\t}\n\t\tconst proved = await proveFirstEmail(context, type, record, where);\n\t\treturn { user: toUser(proved), proved: true };\n\t};\n}\n",
54
+ "/**\n * Verifying an e-mail: send a token to it, then redeem the token to mark the\n * address verified — or prove it on the application's own proof\n * (`prove-first.ts`).\n */\n\nimport type { At } from '../at';\nimport type { ResolvedType } from '../config';\nimport {\n\ttype AnyUser,\n\ttype Context,\n\tgetRecord,\n\tidOf,\n\ttoUser,\n\twriteUser,\n} from '../context';\nimport { emit } from '../events';\nimport { countMailByUser } from '../mail-requests';\nimport { refuseStale } from '../one-time';\nimport type { VerifyEmailApi } from '../types';\nimport { issueEmailToken, redeemEmailToken } from './email-token';\nimport { proveFirstFlow } from './prove-first';\n\n/**\n * `verifyEmail` of one user type: `send` a token to its e-mail, then\n * `confirm` it; or `proveFirst`, on the application's own proof.\n */\nexport function verifyEmailFlows(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n): VerifyEmailApi<AnyUser>['verifyEmail'] {\n\treturn {\n\t\tasync send(user) {\n\t\t\tconst where = at('verifyEmail.send');\n\t\t\tconst record = await getRecord(context, idOf(user), type.name, where);\n\t\t\t// Counted per user: the application asks for a user it knows.\n\t\t\tawait countMailByUser(context, type, 'verifyEmail', record.id, where);\n\t\t\treturn issueEmailToken(context, type, 'verifyEmail', record, where);\n\t\t},\n\n\t\tasync confirm(secret) {\n\t\t\tconst where = at('verifyEmail.confirm');\n\t\t\tconst { token, user } = await redeemEmailToken(\n\t\t\t\tcontext,\n\t\t\t\ttype,\n\t\t\t\t'verifyEmail',\n\t\t\t\tsecret,\n\t\t\t\twhere,\n\t\t\t);\n\t\t\tlet newlyVerified = false;\n\t\t\tconst written = await writeUser(\n\t\t\t\tcontext,\n\t\t\t\tuser.id,\n\t\t\t\ttype,\n\t\t\t\tundefined,\n\t\t\t\twhere,\n\t\t\t\t(record, now) => {\n\t\t\t\t\t// Checked again on the record written: an e-mail changed\n\t\t\t\t\t// since the read above is not the one the link proved.\n\t\t\t\t\trefuseStale(type, record, token, where, 'token');\n\t\t\t\t\tnewlyVerified = record.emailVerifiedAt === null;\n\t\t\t\t\treturn { emailVerifiedAt: now };\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (newlyVerified) {\n\t\t\t\tawait emit(context, 'user.emailVerified', written, written.updatedAt);\n\t\t\t}\n\t\t\treturn toUser(written);\n\t\t},\n\n\t\tproveFirst: proveFirstFlow(context, type, at),\n\t};\n}\n",
55
+ "/** The e-mail flows of one user type, assembled from the files beside this one. */\n\nimport type { At } from '../at';\nimport type { ResolvedType } from '../config';\nimport type { AnyUser, Context } from '../context';\nimport type { ResetPasswordApi, VerifyEmailApi } from '../types';\nimport { resetPasswordFlows } from './reset-password';\nimport { verifyEmailFlows } from './verify-email';\n\n/**\n * The e-mail flows: send a one-time token by e-mail, then confirm it —\n * verifying the address, or resetting the password. Both confirm the same\n * way: spend the token, read the user, and check the address again on the\n * very record the write replaces.\n */\nexport function emailFlows(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n): VerifyEmailApi<AnyUser> & ResetPasswordApi<AnyUser> {\n\treturn {\n\t\tverifyEmail: verifyEmailFlows(context, type, at),\n\t\tresetPassword: resetPasswordFlows(context, type, at),\n\t};\n}\n",
55
56
  "/**\n * What the two sign-ins by e-mail share — a code typed back\n * (`sign-in-code.ts`) and a link followed (`magic-link.ts`): who may be sent\n * one, keeping only the last one live, and how a redeemed one ends — the\n * e-mail proved, then the same session or second-factor challenge a\n * password opens.\n */\n\nimport { UserInactiveError } from '../errors/janus-error';\nimport type { ResolvedType } from './config';\nimport { type AnyUser, type Context, holderOfEmail } from './context';\nimport { type DeviceHint, reportNewDevice } from './devices';\nimport { proveFirstEmail } from './first-proof';\nimport { refuseStale } from './one-time';\nimport type { TokenKind, TokenRecord, UserRecord } from './port/types';\nimport { hashSecret } from './secrets';\nimport type { SignInResult } from './types';\n\n/** What a sign-in answers once the user proved who they are: `secondFactor.finish`. */\nexport type Finish = (\n\trecord: UserRecord,\n\twhere: string,\n\tdevice: DeviceHint,\n) => Promise<SignInResult<AnyUser>>;\n\n/**\n * The user of this type holding `email`, when they may be sent a sign-in:\n * `null` for nobody, and for an inactive user — the same answer, so the\n * caller cannot tell them apart either.\n */\nexport async function signInHolder(\n\tcontext: Context,\n\ttype: ResolvedType,\n\temail: string,\n): Promise<UserRecord | null> {\n\tconst record = await holderOfEmail(context, type, email);\n\treturn record === null || !record.active ? null : record;\n}\n\n/**\n * Spends every other unspent token of this kind the user holds, sparing the\n * one just issued. Issued first, spent after, so requests that race leave\n * at most one live — maybe none, and the visitor asks again — never one each.\n */\nexport async function keepOnlyLatest(\n\tcontext: Context,\n\tuserId: string,\n\tkind: TokenKind,\n\tsecret: string,\n): Promise<void> {\n\tawait context.store.tokens.spendUserTokens(\n\t\tuserId,\n\t\tkind,\n\t\tcontext.clock.now(),\n\t\thashSecret(secret),\n\t);\n}\n\n/**\n * Ends a sign-in by e-mail whose token is spent: refuses an e-mail changed\n * since it was sent and an inactive user, proves the e-mail — it reached the\n * inbox — and finishes as a password would, reporting a new device.\n *\n * **An e-mail proved for the first time drops the password and the second\n * factor, and revokes every session** before the new one opens\n * (`./first-proof`): whoever signed up with the address without holding its\n * inbox keeps nothing, and the owner is asked for no factor they never set.\n * An e-mail already proved changes nothing. The proof is written under the\n * version read, so an address changed since is not the one proved: a\n * `VERSION_CONFLICT` then, with the token spent.\n */\nexport async function finishEmailSignIn(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tfinish: Finish,\n\tsignIn: {\n\t\treadonly user: UserRecord;\n\t\treadonly token: TokenRecord;\n\t\treadonly where: string;\n\t\treadonly noun: 'token' | 'code';\n\t\treadonly device: DeviceHint;\n\t},\n): Promise<SignInResult<AnyUser>> {\n\tconst { user, token, where, noun, device } = signIn;\n\trefuseStale(type, user, token, where, noun);\n\tif (!user.active) {\n\t\tthrow new UserInactiveError(`${where}: the user is inactive`, {\n\t\t\tuserId: user.id,\n\t\t\tuserType: type.name,\n\t\t});\n\t}\n\n\tconst proved =\n\t\tuser.emailVerifiedAt !== null\n\t\t\t? user\n\t\t\t: await proveFirstEmail(context, type, user, where);\n\tconst result = await finish(proved, where, device);\n\tawait reportNewDevice(context, result);\n\treturn result;\n}\n",
56
57
  "import type { At } from './at';\nimport type { ResolvedType } from './config';\nimport { type AnyUser, type Context, toUser } from './context';\nimport { type DeviceHint, deviceHint } from './devices';\nimport { redeemEmailToken } from './email-flows/email-token';\nimport {\n\ttype Finish,\n\tfinishEmailSignIn,\n\tkeepOnlyLatest,\n\tsignInHolder,\n} from './email-sign-in';\nimport { countMailByAddress } from './mail-requests';\nimport { issueOneTime } from './one-time';\nimport { sendOnce } from './prepared';\nimport type {\n\tIssuedToken,\n\tMagicLinkApi,\n\tPreparedRequest,\n\tSignInResult,\n} from './types';\n\ntype IssuedLink = IssuedToken & { readonly user: AnyUser };\n\n/**\n * Signing in with a link sent to the user's e-mail: no password, and the\n * link proves the address — a sign-in code with nothing to type.\n *\n * The token is 32 random bytes, so there is nothing to guess and no attempt\n * to count: redeeming it is one conditional write, and of two redemptions\n * at once exactly one signs in. **At most one link is live per user**, as\n * for a sign-in code: `request` spends every other once it issued its own.\n * A token of its own kind, `magicLink`, so a sign-in code's challenge — which\n * the visitor holds — is never a link, nor a link a challenge.\n *\n * Whoever opens the link signs in, in the browser that opened it: the\n * application confirms it from a `POST`, never from the `GET` of the link,\n * which a mail scanner follows too.\n *\n * `request` is `prepare`, then `send`: counted, then looked up and issued\n * (`prepared.ts`).\n */\nexport function magicLinkFlows(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n\tfinish: Finish,\n): MagicLinkApi<AnyUser, SignInResult<AnyUser>>['magicLink'] {\n\treturn {\n\t\tasync request(email) {\n\t\t\tconst where = at('magicLink.request');\n\t\t\treturn (await prepareLink(context, type, String(email), where)).send();\n\t\t},\n\n\t\tasync prepare(email) {\n\t\t\tconst where = at('magicLink.prepare');\n\t\t\treturn prepareLink(context, type, String(email), where);\n\t\t},\n\n\t\tasync confirm(token, options) {\n\t\t\tconst where = at('magicLink.confirm');\n\t\t\tconst device = deviceHint(context, options, where);\n\t\t\treturn confirmLink(context, type, finish, String(token), where, device);\n\t\t},\n\t};\n}\n\n/**\n * Counts a link asked for `email` — before it is looked up: past the limit,\n * nobody and somebody are refused alike — and answers the `send` that\n * issues it, once.\n */\nasync function prepareLink(\n\tcontext: Context,\n\ttype: ResolvedType,\n\temail: string,\n\twhere: string,\n): Promise<PreparedRequest<IssuedLink>> {\n\tawait countMailByAddress(context, type, 'magicLink', email, where);\n\treturn Object.freeze({\n\t\tsend: sendOnce(where, () => issueLink(context, type, email)),\n\t});\n}\n\n/** Issues a link's token for the holder of `email`, and spends every other they had. */\nasync function issueLink(\n\tcontext: Context,\n\ttype: ResolvedType,\n\temail: string,\n): Promise<IssuedLink | null> {\n\t// Nobody, and an inactive user, get the same answer: no link.\n\tconst record = await signInHolder(context, type, email);\n\tif (record === null) return null;\n\n\tconst address = String(record.fields[type.email]);\n\tconst { secret, expiresAt } = await issueOneTime(context, {\n\t\tkind: 'magicLink',\n\t\tuserId: record.id,\n\t\taddress,\n\t\tttlMs: context.config.tokenTtlMs.magicLink,\n\t});\n\t// One live link per user: the ones sent before stop working.\n\tawait keepOnlyLatest(context, record.id, 'magicLink', secret);\n\treturn { token: secret, email: address, expiresAt, user: toUser(record) };\n}\n\n/** Spends a link's token, proves the e-mail, and finishes the sign-in. */\nasync function confirmLink(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tfinish: Finish,\n\tsecret: string,\n\twhere: string,\n\tdevice: DeviceHint,\n): Promise<SignInResult<AnyUser>> {\n\t// Spent first, whatever follows: a link is redeemed once, and a refused\n\t// one — stale, inactive, another type's — cannot be tried again.\n\tconst { token, user } = await redeemEmailToken(\n\t\tcontext,\n\t\ttype,\n\t\t'magicLink',\n\t\tsecret,\n\t\twhere,\n\t);\n\n\treturn finishEmailSignIn(context, type, finish, {\n\t\tuser,\n\t\ttoken,\n\t\twhere,\n\t\tnoun: 'token',\n\t\tdevice,\n\t});\n}\n",
57
- "/**\n * Signing in a user the application proved by its own means — an\n * invitation token it issued, a channel of its own: no credential checked\n * here, so nothing to count, nothing to send and nothing to spend.\n */\n\nimport { UserInactiveError } from '../errors/janus-error';\nimport type { At } from './at';\nimport type { ResolvedType } from './config';\nimport { type AnyUser, type Context, getRecord } from './context';\nimport { deviceHint, reportNewDevice } from './devices';\nimport type { Finish } from './email-sign-in';\nimport type { ProvenSignInApi, SignInResult, UserRef } from './types';\n\n/**\n * `signInProven` for one user type: the user read by id — `NOT_FOUND` for\n * nobody, as `get` — refused when inactive, then finished as every sign-in\n * is, by `secondFactor.finish`: a session, or a challenge for an active\n * factor.\n *\n * No throttle is counted and no count restarted, no token issued or spent,\n * no e-mail proved: the proof is the application's, and links and codes\n * already sent keep working.\n */\nexport function provenSignInFlows(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n\tfinish: Finish,\n): ProvenSignInApi<AnyUser, SignInResult<AnyUser>> {\n\treturn {\n\t\tasync signInProven(user, options) {\n\t\t\tconst where = at('signInProven');\n\t\t\tconst device = deviceHint(context, options, where);\n\t\t\tconst record = await getRecord(context, idOf(user), type.name, where);\n\t\t\tif (!record.active) {\n\t\t\t\tthrow new UserInactiveError(`${where}: the user is inactive`, {\n\t\t\t\t\tuserId: record.id,\n\t\t\t\t\tuserType: type.name,\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst result = await finish(record, where, device);\n\t\t\tawait reportNewDevice(context, result);\n\t\t\treturn result;\n\t\t},\n\t};\n}\n\n/**\n * The id a JavaScript caller's reference names, or `''` — malformed, and\n * so `NOT_FOUND` without reaching the store — for anything that names none.\n */\nfunction idOf(user: UserRef): string {\n\tif (typeof user === 'string') return user;\n\tconst id: unknown =\n\t\ttypeof user === 'object' && user !== null ? user.id : undefined;\n\treturn typeof id === 'string' ? id : '';\n}\n",
58
+ "/**\n * Signing in a user the application proved by its own means — an\n * invitation token it issued, a channel of its own: no credential checked\n * here, so nothing to count, nothing to send and nothing to spend.\n */\n\nimport { UserInactiveError } from '../errors/janus-error';\nimport type { At } from './at';\nimport type { ResolvedType } from './config';\nimport { type AnyUser, type Context, getRecord, refId } from './context';\nimport { deviceHint, reportNewDevice } from './devices';\nimport type { Finish } from './email-sign-in';\nimport type { ProvenSignInApi, SignInResult } from './types';\n\n/**\n * `signInProven` for one user type: the user read by id — `NOT_FOUND` for\n * nobody, as `get` — refused when inactive, then finished as every sign-in\n * is, by `secondFactor.finish`: a session, or a challenge for an active\n * factor.\n *\n * No throttle is counted and no count restarted, no token issued or spent,\n * no e-mail proved: the proof is the application's, and links and codes\n * already sent keep working.\n */\nexport function provenSignInFlows(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tat: At,\n\tfinish: Finish,\n): ProvenSignInApi<AnyUser, SignInResult<AnyUser>> {\n\treturn {\n\t\tasync signInProven(user, options) {\n\t\t\tconst where = at('signInProven');\n\t\t\tconst device = deviceHint(context, options, where);\n\t\t\tconst record = await getRecord(context, refId(user), type.name, where);\n\t\t\tif (!record.active) {\n\t\t\t\tthrow new UserInactiveError(`${where}: the user is inactive`, {\n\t\t\t\t\tuserId: record.id,\n\t\t\t\t\tuserType: type.name,\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst result = await finish(record, where, device);\n\t\t\tawait reportNewDevice(context, result);\n\t\t\treturn result;\n\t\t},\n\t};\n}\n",
58
59
  "/**\n * The passwords tried at one login, counted by the store per window —\n * `janus({ signIn: { throttle } })`, ten per fifteen minutes by default.\n * Past the last one, `signIn` answers `CREDENTIALS_INVALID` with\n * `retryAfter`, the right password included, until the window ends. **Nothing\n * locks** past a window — but somebody who keeps trying a login keeps its\n * password sign-in shut, window after window: a per-client limit is the\n * application's, and a sign-in code still opens the account.\n *\n * Counted per login, **known or not**: an unknown login is counted as a\n * registered one is, so the throttle does not tell them apart. Counted\n * before anything is looked up or compared, so of twenty guesses at once,\n * exactly as many as the limit are compared.\n *\n * Counted in an attempt window (`one-time/window.ts`), in `secondFactor`\n * tokens stored under no user: the `userId` of each is a keyed hash of the\n * login, never the login (`counter-key.ts`). A sign-in that opens a session\n * spends the link it counts on, and the login's count **restarts** from\n * zero.\n *\n * A store that cannot count throws `STORE_FAILED`: never a refusal, and\n * never a sign-in let through uncounted.\n */\n\nimport { CredentialError, StoreFailure } from '../errors/janus-error';\nimport type { ResolvedType } from './config';\nimport type { Context } from './context';\nimport { counterKey, keyed } from './counter-key';\nimport { type CountedAttempt, countInWindow } from './one-time';\nimport type { UserRecord } from './port/types';\nimport { hashSecret } from './secrets';\n\n/** What the key is derived for. Renamed, every count in progress would start over. */\nconst PURPOSE = 'janus/sign-in/attempts/v1';\n\n/** One attempt counted at `login`, already normalised, or `null` with the throttle off. */\nasync function countLogin(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tlogin: string,\n\twhere: string,\n): Promise<CountedAttempt | null> {\n\tconst throttle = context.config.signInThrottle;\n\tif (throttle === null) return null;\n\tconst key = counterKey(context, PURPOSE);\n\tconst loginKey = keyed(key, [type.name, login]);\n\treturn countInWindow(context, {\n\t\twindowMs: throttle.windowMs,\n\t\tspent: 'restart',\n\t\tuserId: loginKey,\n\t\tlinkHash: (window, link) =>\n\t\t\thashSecret(keyed(key, [loginKey, String(window), String(link)])),\n\t\t// A store that lost what it just stored cannot count: an outage.\n\t\tvanished: () =>\n\t\t\tnew StoreFailure(\n\t\t\t\t`${where}: the store dropped the attempts it had just stored`,\n\t\t\t\t{ slot: 'tokens', operation: 'countAttempt' },\n\t\t\t),\n\t});\n}\n\n/**\n * Counts one password tried at `login` — already normalised — before it is\n * looked up, and refuses past the last one: the right password included.\n */\nexport async function countSignInAttempt(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tlogin: string,\n\twhere: string,\n): Promise<void> {\n\tconst counted = await countLogin(context, type, login, where);\n\tconst limit = context.config.signInThrottle?.attempts;\n\tif (counted === null || limit === undefined || counted.attempts <= limit) {\n\t\treturn;\n\t}\n\tconst now = context.clock.now().getTime();\n\tthrow new CredentialError(\n\t\t'CREDENTIALS_INVALID',\n\t\t`${where}: too many passwords tried at this login — wait for the next window`,\n\t\t{\n\t\t\treason: 'throttled',\n\t\t\tuserType: type.name,\n\t\t\tretryAfter: Math.max(1, Math.ceil((counted.endsAt - now) / 1000)),\n\t\t},\n\t);\n}\n\n/**\n * Starts the user's count again, once a sign-in opens a session: after the\n * password alone, or after the second factor's code — never after the\n * password of a user whose second factor is still to come, so knowing the\n * password buys no more challenges. It counts one attempt on the current\n * link, and spends it: the next one counts from zero.\n */\nexport async function restartSignInCount(\n\tcontext: Context,\n\ttype: ResolvedType,\n\trecord: UserRecord,\n\twhere: string,\n): Promise<void> {\n\tconst rule = type.password;\n\tconst login = rule === null ? undefined : record.fields[rule.login];\n\tif (rule === null || typeof login !== 'string') return;\n\tconst counted = await countLogin(context, type, rule.normalize(login), where);\n\tif (counted?.link == null) return;\n\tawait context.store.tokens.consumeToken(\n\t\tcounted.link,\n\t\t'secondFactor',\n\t\tcontext.clock.now(),\n\t);\n}\n",
59
60
  "import { SecondFactorError, UserInactiveError } from '../../errors/janus-error';\nimport type { ResolvedType } from '../config';\nimport { type Context, findRecord } from '../context';\nimport {\n\tburnOneTime,\n\tcodeInvalid,\n\tcountCodeAttempt,\n\tspendOneTime,\n\tunknownChallenge,\n} from '../one-time';\nimport type { SecondFactorRecord, UserRecord } from '../port/types';\nimport { isActive, requireSettings, type Settings } from './factor';\n\n/**\n * What redeeming `signIn`'s challenge takes before any code is compared —\n * with an app's code (`confirm`) or a recovery code (`recover`): the attempt\n * counted, then the user read, and refused when gone, inactive or without an\n * active factor any more.\n */\n\n/** A challenge counted, and the user it waits for, whose factor is active. */\nexport interface OpenedChallenge {\n\treadonly configured: Settings;\n\treadonly secret: string;\n\treadonly attemptsLeft: number;\n\treadonly record: UserRecord & {\n\t\treadonly secondFactor: SecondFactorRecord & { readonly confirmedAt: Date };\n\t};\n}\n\n/** Spends a second-factor challenge, refusing it when this call did not. */\nexport const spendChallenge = (\n\tcontext: Context,\n\tchallenge: string,\n\twhere: string,\n) => spendOneTime(context, challenge, 'secondFactor', where, 'challenge');\n\n/**\n * Counts one attempt at the challenge, then reads its user: refused for a\n * user gone, of another type, inactive, or whose factor was disabled since.\n */\nexport async function openChallenge(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tchallenge: string,\n\twhere: string,\n): Promise<OpenedChallenge> {\n\tconst configured = requireSettings(\n\t\tcontext,\n\t\twhere,\n\t\t'a second factor is being confirmed',\n\t);\n\tconst secret = String(challenge);\n\n\tconst { token, attemptsLeft } = await countCodeAttempt(\n\t\tcontext,\n\t\tsecret,\n\t\t'secondFactor',\n\t\twhere,\n\t\ttype.name,\n\t);\n\n\t// A user gone since, or of another type, is as good as no challenge.\n\tconst record = await findRecord(context, token.userId, type.name);\n\tif (record === null) {\n\t\tthrow await unknownChallenge(context, token, secret, where);\n\t}\n\tif (!record.active) {\n\t\tawait spendChallenge(context, secret, where);\n\t\tthrow new UserInactiveError(`${where}: the user is inactive`, {\n\t\t\tuserId: record.id,\n\t\t\tuserType: type.name,\n\t\t});\n\t}\n\tconst factor = record.secondFactor;\n\tif (!isActive(factor)) {\n\t\tawait spendChallenge(context, secret, where);\n\t\tthrow new SecondFactorError(\n\t\t\t'SECOND_FACTOR_NOT_ENROLLED',\n\t\t\t`${where}: the user no longer has a second factor — sign in again`,\n\t\t\t{ operation: where, userId: record.id, userType: type.name },\n\t\t);\n\t}\n\treturn {\n\t\tconfigured,\n\t\tsecret,\n\t\tattemptsLeft,\n\t\trecord: { ...record, secondFactor: factor },\n\t};\n}\n\n/** A code that does not match: on the last attempt, the challenge is spent. */\nexport async function refuseCode(\n\tcontext: Context,\n\ttype: ResolvedType,\n\topened: OpenedChallenge,\n\twhere: string,\n): Promise<never> {\n\tif (opened.attemptsLeft === 0) {\n\t\tawait burnOneTime(context, opened.secret, 'secondFactor');\n\t}\n\tthrow codeInvalid(where, opened.record.id, type.name, opened.attemptsLeft);\n}\n",
60
61
  "import type { At } from '../at';\nimport type { ResolvedType } from '../config';\nimport type { AnyUser, Context } from '../context';\nimport { deviceHint, reportNewDevice } from '../devices';\nimport { issueOneTime } from '../one-time';\nimport type { UserRecord } from '../port/types';\nimport { openSession } from '../sessions';\nimport { restartSignInCount } from '../sign-in-attempts';\nimport type { SecondFactorRequired, SignedIn, SignInOptions } from '../types';\nimport { acceptCode, requireSettings } from './factor';\nimport { openChallenge, refuseCode, spendChallenge } from './redeem';\n\n/**\n * The challenge `signIn` answers instead of a session, and the code that\n * redeems it. **Only the challenge's hash is stored**, like a session\n * token's.\n */\nexport function challengeFlows(context: Context, type: ResolvedType, at: At) {\n\treturn {\n\t\tasync issue(\n\t\t\trecord: UserRecord,\n\t\t\twhere: string,\n\t\t): Promise<SecondFactorRequired> {\n\t\t\tconst configured = requireSettings(\n\t\t\t\tcontext,\n\t\t\t\twhere,\n\t\t\t\t\"the user's second factor is active\",\n\t\t\t);\n\t\t\tconst { secret, expiresAt } = await issueOneTime(context, {\n\t\t\t\tkind: 'secondFactor',\n\t\t\t\tuserId: record.id,\n\t\t\t\t// Nothing is sent for a challenge: there is no address.\n\t\t\t\taddress: '',\n\t\t\t\tttlMs: configured.challengeTtlMs,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tstatus: 'secondFactor',\n\t\t\t\tchallenge: secret,\n\t\t\t\texpiresAt,\n\t\t\t\tuserId: record.id,\n\t\t\t};\n\t\t},\n\n\t\tasync confirm(\n\t\t\tchallenge: string,\n\t\t\tcode: string,\n\t\t\toptions?: SignInOptions,\n\t\t): Promise<SignedIn<AnyUser>> {\n\t\t\treturn confirmChallenge(context, type, challenge, code, at, options);\n\t\t},\n\t};\n}\n\n/**\n * Redeems a challenge with its code: counted first, then refused for a user\n * gone, inactive or without a factor any more, then compared — and the factor\n * written under the version read before the session opens.\n */\nasync function confirmChallenge(\n\tcontext: Context,\n\ttype: ResolvedType,\n\tchallenge: string,\n\tcode: string,\n\tat: At,\n\toptions: SignInOptions | undefined,\n): Promise<SignedIn<AnyUser>> {\n\tconst where = at('secondFactor.confirm');\n\tconst device = deviceHint(context, options, where);\n\tconst opened = await openChallenge(context, type, challenge, where);\n\tconst { record } = opened;\n\n\tconst now = context.clock.now();\n\tconst accepted = acceptCode(\n\t\topened.configured,\n\t\trecord,\n\t\trecord.secondFactor,\n\t\tString(code),\n\t\tnow,\n\t\twhere,\n\t);\n\tif (accepted === null) return refuseCode(context, type, opened, where);\n\n\t// Read, decided, then written under the version read: of two codes\n\t// accepted at once, the second write is VERSION_CONFLICT.\n\tconst written = await context.store.users.updateUser(\n\t\trecord.id,\n\t\t{ secondFactor: accepted, updatedAt: now },\n\t\trecord.version,\n\t);\n\tawait spendChallenge(context, opened.secret, where);\n\t// The sign-in is complete: the password's count starts again.\n\tawait restartSignInCount(context, type, written, where);\n\tconst signedIn = await openSession(context, type, written, device);\n\tawait reportNewDevice(context, signedIn);\n\treturn signedIn;\n}\n",
@@ -89,7 +90,7 @@
89
90
  "import { guardRelations } from '../stores/guard';\nimport { systemClock } from '../time/clock';\nimport { type JanusConfig, resolveConfig } from './config';\nimport { warnThrottleWindow } from './config/warn-throttle-window';\nimport { createContext } from './context';\nimport { resolveEvents } from './events';\nimport { guardStores } from './outage';\nimport { assertStores } from './port/assert-stores';\nimport { sharedApi } from './sessions';\nimport type { Checked, Janus } from './types';\nimport { typeApi } from './users';\n\n/**\n * Wires the identities side over the stores the application opened. **Synchronous,\n * and does no I/O**: it connects to nothing.\n *\n * ```ts\n * // One user type\n * const auth = janus({\n * user: z.object({ email: z.email(), name: z.string() }),\n * password: { login: 'email' },\n * store: createMemoryStores(),\n * hasher: scryptHasher(),\n * });\n * const { user, token } = await auth.signUp({ email, name, password });\n *\n * // Several\n * const auth = janus({\n * users: {\n * patient: { schema: Patient, password: { login: 'email' } },\n * staff: { schema: Staff, password: { login: 'email' }, session: { lifespan: '8h' } },\n * },\n * store, hasher,\n * });\n * await auth.staff.signIn({ email, password });\n * const current = await auth.authenticate(request, { type: 'staff' });\n * ```\n *\n * The types refuse first, on the offending key: a login or an e-mail that\n * names no required string field, a schema declaring a field `janus` sets, a\n * user type named like a method. What follows at run time is the net for\n * JavaScript callers, each a bare `TypeError` because only wiring produces one:\n * a store slot missing or incomplete; a password type with no hasher — there\n * is no silent fallback; two hashers claiming the same prefix, which would make\n * verification depend on the order they were listed in.\n */\nexport function janus<const C extends JanusConfig>(\n\tconfig: C & Checked<C>,\n): Janus<C> {\n\tconst where = 'janus';\n\tconst resolved = resolveConfig(config, where);\n\twarnThrottleWindow(resolved, where);\n\tconst capabilities = assertStores(config.store, where);\n\n\tconst hasher = config.hasher ?? null;\n\tconst verifiers = [\n\t\t...(hasher === null ? [] : [hasher]),\n\t\t...(config.verifiers ?? []),\n\t];\n\tconst prefixes = new Set<string>();\n\tfor (const verifier of verifiers) {\n\t\tif (typeof verifier?.prefix !== 'string' || verifier.prefix === '') {\n\t\t\tthrow new TypeError(`${where}: every hasher needs a non-empty prefix`);\n\t\t}\n\t\tif (prefixes.has(verifier.prefix)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`${where}: two hashers claim the prefix \"${verifier.prefix}\" — which one verifies would depend on their order`,\n\t\t\t);\n\t\t}\n\t\tprefixes.add(verifier.prefix);\n\t}\n\n\tconst relations = config.relations ?? null;\n\tif (\n\t\trelations !== null &&\n\t\ttypeof (relations as { deleteEntity?: unknown }).deleteEntity !== 'function'\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`${where}: relations must be a relation store — relations.deleteEntity is missing`,\n\t\t);\n\t}\n\n\tconst context = createContext(\n\t\tresolved,\n\t\tguardStores(config.store),\n\t\trelations === null ? null : guardRelations(relations),\n\t\tcapabilities,\n\t\tconfig.clock ?? systemClock,\n\t\thasher,\n\t\tverifiers,\n\t\tresolveEvents(config.events, where),\n\t);\n\n\tconst shared = sharedApi(context);\n\tconst types = Object.fromEntries(\n\t\t[...resolved.types.values()].map((type) => [\n\t\t\ttype.name,\n\t\t\ttypeApi(context, type),\n\t\t]),\n\t);\n\n\t// The one cast at the boundary: every field was validated against its\n\t// type's schema before any of these answers was built.\n\tconst surface = resolved.single\n\t\t? { ...shared, ...types['user'] }\n\t\t: { ...shared, ...types };\n\treturn surface as unknown as Janus<C>;\n}\n",
90
91
  "/**\n * `assertFresh`: whether a session proved who it is recently enough for a\n * sensitive action — signed in, or confirmed by a step-up, less than\n * `maxAge` ago.\n */\n\nimport { StepUpRequiredError } from '../../errors/janus-error';\nimport { type Clock, systemClock } from '../../time/clock';\nimport { type Duration, parseDuration } from '../../time/duration';\nimport type { Session } from '../types';\n\n/**\n * Refuses a session whose credentials were last presented `maxAge` ago or\n * more — at its sign-in, or since by `stepUp.confirm` — with\n * `STEP_UP_REQUIRED` (403): ask for a step-up, then run the action again. One\n * field of the session `authenticate` already answered, so no store is read.\n *\n * ```ts\n * const current = await auth.authenticate(request);\n * if (current === null) return new Response(null, { status: 401 });\n * assertFresh(current.session, '10m'); // STEP_UP_REQUIRED past ten minutes\n * ```\n *\n * Pass the `clock` given to `janus()` when it is not the system's. A\n * `maxAge` that is not a duration is a `TypeError`: it is written in the\n * code, never read from a request.\n */\nexport function assertFresh(\n\tsession: Pick<Session, 'authenticatedAt' | 'userId'>,\n\tmaxAge: Duration,\n\tclock: Clock = systemClock,\n): void {\n\tconst maxAgeMs = parseDuration(maxAge, 'assertFresh: maxAge');\n\tconst age = clock.now().getTime() - session.authenticatedAt.getTime();\n\tif (age >= maxAgeMs) {\n\t\tthrow new StepUpRequiredError(\n\t\t\t'assertFresh: the session proved who it is longer ago than maxAge — confirm with a step-up',\n\t\t\t{ userId: session.userId },\n\t\t);\n\t}\n}\n"
91
92
  ],
92
- "mappings": "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",
93
- "debugId": "8864B5F285AA35A664756E2164756E21",
93
+ "mappings": "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",
94
+ "debugId": "D104C8FB67042A0864756E2164756E21",
94
95
  "names": []
95
96
  }