@desolint/general-server
v0.0.1
Published
Node server utilities shared across Desol Int. projects. Early extraction — currently ships bcrypt hashing (/crypto), cron job creation (/cron) and tryCatch helpers.
Readme
@desolint/general-server
Node server utilities shared across Desol Int. projects.
Today this ships bcrypt hashing (/crypto), cron job creation (/cron) and
tryCatch helpers. There is no Express, Mongo or Socket.IO code in it.
Requirements
- Node.js 22 or newer (declared in
engines) - npm 7 or newer — npm 7+ installs peer dependencies automatically
Install
npm install @desolint/general-server@desolint/general-shared is a pinned regular dependency and comes down
automatically — you never install it yourself. bcrypt and cron are
optional peer dependencies; install whichever ones the subpaths you use
actually need:
npm install bcrypt # only if you use ./crypto
npm install cron # only if you use ./cronWhy bcrypt and cron are optional peer dependencies
Neither is needed by every consumer — a project using only ./tryCatch has no
reason to pull in a hashing library or a scheduler. Declaring them as peers
(rather than regular dependencies) means npm reuses the copy your application
already has instead of nesting a second one; marking them optional means
npm doesn't force-install either one just because you installed this package.
Quick start
Nothing is exported from the package root — each utility group lives behind its own subpath, so importing one never requires installing another's optional peer dependency:
import {hashString, compareHashedString} from '@desolint/general-server/crypto'; // needs bcrypt
import {createCronJob} from '@desolint/general-server/cron'; // needs cron
import {tryCatch, asyncTryCatch} from '@desolint/general-server/tryCatch'; // no extra deps/crypto
| Export | Notes |
| --------------------------------------------------- | ----------------------------------------------------------- |
| hashString({string}) | Promise<string>. Wraps bcrypt.hash with 10 salt rounds. |
| compareHashedString({simpleString, hashedString}) | Promise<boolean>. Wraps bcrypt.compare. |
/cron
| Export | Notes |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| createCronJob({timer, action, successMessage, failureMessage, logger?}) | Promise<CronJob>. Wraps cron's CronJob; catches whatever action throws and logs failureMessage instead of letting it escape. logger defaults to console and must satisfy CronJobLogger — pass e.g. a winston instance to route job logs elsewhere. |
| CronJobLogger | The {info, error} shape logger must satisfy. |
/tryCatch
Re-exported directly from @desolint/general-shared's ./tryCatch — see
its README for the API. Reachable
through this package's own ./tryCatch subpath so consumers don't need a
separate import from @desolint/general-shared.
Status
Scaffold stage — crypto, cron, and tryCatch are the only pieces ported so
far. A much larger backlog (errors, responses, mongo, controllers, services,
middleware, context, notifications, lib, socket, swagger, bootstrap,
observability) is planned but doesn't exist yet.
Development
npm install # install dependencies (from the repo root)
npm run build # builds general-shared -> general-server -> general-client, in that order
npm test # type-check + jest
npm run lint # eslintThis package is part of the package-general workspaces monorepo — run these
commands from the repository root, not this directory.
License
MIT © Desolint — see LICENSE.
