SolveJS is a zero-dependency utility ecosystem for JavaScript and TypeScript apps.
Zero-dependency JS/TS utilities for real production pain points. Install one package or only the modules you need.
- Parse dates from mixed input formats and convert wall-clock time across UTC offsets.
- Validate forms and API payloads with explicit error codes (phone, postal, IBAN, BIC, UUID, IPv4).
- Normalize strings for slugs/search and safely trim/mask UI output.
- Transform arrays/objects with predictable helpers (
groupBy,flatten,deepMerge, pathget/set). - Control async workflows (
retry,timeout,pMap,pSettle) without extra dependencies.
- Predictable APIs with no runtime dependencies.
- ESM + CJS + TypeScript declarations across all packages.
- Structured validator responses for better UX/API error mapping.
- Problem-first cookbook docs with searchable recipes and integration guides.
npm i @jdsalasc/solvejsInstall only specific modules:
npm i @jdsalasc/solvejs-date @jdsalasc/solvejs-validators @jdsalasc/solvejs-objects@jdsalasc/solvejs-date:parseDateMany,parseDateOrThrow,formatInUtcOffset,convertUtcOffset.@jdsalasc/solvejs-string:slugify,stripHtml,toTitleCase,truncate,mask.@jdsalasc/solvejs-list:uniqueBy,groupBy,flatten,partition,sortBy.@jdsalasc/solvejs-regex:REGEX_PATTERNS,validateByName,escapeRegex.@jdsalasc/solvejs-constants:TIME,FILE_SIZE_BYTES,HTTP_METHODS,parseBooleanString.@jdsalasc/solvejs-numbers:toNumber,safeDivide,percentChange,toCurrency.@jdsalasc/solvejs-validators:validateCellphoneNumber,validateIBAN,validateBIC,validateUuidV4.@jdsalasc/solvejs-objects:pick,omit,get,set,deepMerge.@jdsalasc/solvejs-async:sleep,timeout,retry,pMap,pSettle.@jdsalasc/solvejs-schema:s.object,parse/safeParse,Infer,toJsonSchema.
import { parseDateOrThrow, DateParseFormat, slugify, flatten, validateIBAN, deepMerge, retry, pSettle } from "@jdsalasc/solvejs";
parseDateOrThrow("07/02/2026", [DateParseFormat.DAY_MONTH_YEAR_SLASH]);
slugify("Build Better JS Apps");
flatten([1, [2, 3], 4]);
validateIBAN("GB33BUKB20201555555555");
deepMerge({ app: { env: "dev" } }, { app: { version: 2 } });
await retry(() => fetch("https://example.com/health"), { retries: 2, delayMs: 150 });
await pSettle([Promise.resolve("ok"), Promise.reject(new Error("fail"))]);npm install
npm run build
npm test
npm run benchmark- Contribution guide:
CONTRIBUTING.md - Code of conduct:
CODE_OF_CONDUCT.md - Community roadmap:
TODO.md - Docs structure guide:
docs/README.md - Growth snippets pack:
docs/growth/social-snippets-10x.md - 4-week content calendar:
docs/growth/content-calendar-4-weeks.md - Archived strategy docs:
docs/archive/ - Monthly vote automation:
.github/workflows/community-vote.yml - Docs cookbook:
https://jdsalasca.github.io/solvejs/ - Package inventory:
docs/guides/package-inventory.md
MIT