@desolint/otp-shared
v0.0.1
Published
Shared OTP contract types and constants for Desol Int. projects
Readme
@desolint/otp-shared
The OTP contract that both sides of a Desol Int. project agree on.
- Expiry and regenerate windows, and the OTP token's claim shape — the
values
@desolint/otp-serverand@desolint/otp-clientwould otherwise each define separately and risk drifting apart. - No runtime dependencies.
[!WARNING] Do not install this package directly.
@desolint/otp-serverand@desolint/otp-clientboth pin it exactly and re-export what it exposes. Installing it yourself risks a second, mismatched copy — and a mismatch here means the client counts down against a deadline the server never set.
Requirements
No runtime dependencies and no peer dependencies — this package is types plus constants, so it imposes no version constraints of its own.
Install
You normally do not install this package directly. It is a pinned dependency of
@desolint/otp-server and @desolint/otp-client, and the server re-exports
everything it exposes — so installing either side gives you these types.
Install it directly only if you consume the contract without either side:
npm install @desolint/otp-sharedAPI
Constants
| Export | Value | What it's for |
| -------------------------------- | ----- | ----------------------------------------------------------------------------------------------------- |
| OTP_EXPIRE_TIME_IN_SECONDS | 300 | Default lifetime of an issued otp, before regenerateAfterSeconds or expiresInSeconds override it. |
| OTP_REGENERATE_TIME_IN_SECONDS | 30 | Default resend cooldown window. |
| secretKeyLength | 64 | Length used when generating an otpSecret. |
Types
| Export | Shape | What it's for |
| ----------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| OtpClaims | {otpRegenerateAllowedAfter: number, exp: number, ...} | The flow token's claim shape. @desolint/otp-server writes it; @desolint/otp-client decodes the same token. |
Functions
| Export | Signature | What it does |
| --------------------------- | --------------------------- | -------------------------------------------------------------------------------- |
| getCurrentEpochSeconds() | () => number | The current time in epoch seconds — matches a JWT's exp claim. |
| getSecondsRemaining(args) | ({until, now?}) => number | Seconds left until until, floored at 0. Used to compute cooldown countdowns. |
Both functions are re-exported from @desolint/otp-server, so a consumer of
that package never imports this one by name.
Development
npm install # install dependencies (from the repo root)
npm run build # build all three packages
npm test # type-check + jest
npm run lint # eslintThis package is part of the package-otp workspaces monorepo — run the commands
from the repository root, not this directory.
License
MIT © Desolint — see LICENSE.
