watchword-core
The types watchword's server and frontends share: identities, roles,
account state, the JSON wire types of the /api/auth routes,
AuthError, and input validation.
Apps normally use these through watchword, which re-exports them as
watchword::types and at its crate root, or through a frontend crate such
as watchword-yew023. Released in lockstep with watchword.
Features
The crate is no_std, and safe to build for wasm32-unknown-unknown with
any feature but axum08 and sqll015. Only std is on by default.
| Feature | What it provides |
|---|---|
| (none) | UserId, Role, Access, Method, Conflict, AuthConfig, MIN_PASSWORD_LEN and is_same_origin_path, the rule a ?next= is followed by |
alloc |
the wire types that hold strings (UserInfo, LoginRequest, CreatedUser, ...), AuthError and its Invalid reasons, validate_password and normalize_email, and AuthRequest and AuthResponse, every operation of watchword's service as one value, which the server's Auth::dispatch runs and a frontend's transport carries |
std (default) |
alloc, and the standard library for the dependencies that have it |
musli02 |
musli 0.2 Encode/Decode on the types, so an app can embed them in its own WebSocket messages |
musliweb05 |
alloc + musli02 + musliweb05: the account, user-management and Cloudflare Access settings endpoints and AuthBroadcast as musli-web 0.5 API types, with their ids pinned in 32000–32255 |
axum08 |
std + axum 0.8 IntoResponse for AuthError, answering with its JSON body and status, and for AuthResponse; watchword's axum08 feature turns it on (not for wasm) |
sqll015 |
std + sqll 0.15 BindValue, Bind and FromColumn for UserId (an integer with the same bits) and for Role, Access and Method (their names as text), so an app's own statements bind and read them directly; watchword's sqll015 feature turns it on. It takes sqll with threadsafe only; the app names bundled or links its own SQLite (not for wasm) |
phrasebookcatalog01 |
phrasebookcatalog01: L10N, watchword's messages (the text of its Yew components) as a phrasebook-catalog 0.1 catalog, which phrasebook 0.2 takes, for a tool such as an app's localization checker that needs them without building a frontend; it needs neither std nor alloc. watchword-yew023 re-exports it, and watchword's phrasebookcatalog01 and yew023 features turn it on |