Skip to content

Lightweight zero-dependency utility ecosystem for JavaScript and TypeScript

License

Notifications You must be signed in to change notification settings

jdsalasca/solvejs

SolveJS

SolveJS is a zero-dependency utility ecosystem for JavaScript and TypeScript apps.

CI Release npm

Promise

Zero-dependency JS/TS utilities for real production pain points. Install one package or only the modules you need.

Popular Use Cases

  • 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, path get/set).
  • Control async workflows (retry, timeout, pMap, pSettle) without extra dependencies.

Why Teams Adopt SolveJS

  • 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.

Install

npm i @jdsalasc/solvejs

Install only specific modules:

npm i @jdsalasc/solvejs-date @jdsalasc/solvejs-validators @jdsalasc/solvejs-objects

Packages

  • @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.

Quick Example

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"))]);

Development

npm install
npm run build
npm test
npm run benchmark

Community

  • 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

License

MIT

About

Lightweight zero-dependency utility ecosystem for JavaScript and TypeScript

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published