Open the box to unleash the power
All-in-one utilities ecosystem for modern web development. Zero dependencies. 100% TypeScript. Modules designed to work together, more than the sum of their parts.
- ๐ก๏ธ Production-Ready - 100% test coverage, 100% mutation score, integration demos
- ๐ Interchangeable APIs - 100% compatible with Neverthrow and fp-ts
- โก๏ธ Ultra-Performance - High-speed execution with perfect tree-shaking
- ๐๏ธ Type it once, infer it everywhere - Full TypeScript inference, no manual generics, no
anyleaks
pnpm install @pithos/coreimport { ensure } from "@pithos/core/bridges/ensure";
import { string, object, optional, coerceDate } from "@pithos/core/kanon";
// Kanon validates, Zygos wraps - one function, two modules
const userSchema = object({
name: string(),
email: string(),
birthdate: optional(coerceDate()),
});
const result = ensure(userSchema, formData);
if (result.isOk()) {
save(result.value); // fully typed, validated, coerced
} else {
showError(result.error); // validation error as string
}
// Or chain with map/mapErr - it's a full Zygos Result
ensure(userSchema, formData)
.map(user => ({ ...user, name: user.name.trim() }))
.mapErr(error => `Validation failed: ${error}`);No manual try/catch, no .safeParse() + if (!result.success) boilerplate. That's the point of having an ecosystem.
| Module | Role | Alternative to |
|---|---|---|
| Arkhe (แผฯฯฮฎ - origin) | Core utilities & data manipulation | Lodash, Underscore, Ramda |
| Kanon (ฮบฮฑฮฝฯฮฝ - rule) | Schema validation | Zod, Yup, Joi |
| Zygos (ฮถฯ ฮณฯฯ - balance) | Result/Either/Option patterns | Neverthrow, fp-ts |
| Sphalma (ฯฯฮฌฮปฮผฮฑ - error) | Typed error factories | - |
| Taphos (ฯฮฌฯฮฟฯ - tomb) | Deprecated utils with migration paths | "You Don't Need Lodash" |
All modules are stable and production-ready with 100% test coverage.
Like Pandora's pithos that contained both problems and solutions, this ecosystem tackles common development pain points while providing the tools you need. By the way, Pandora's "box" was actually a large jar - pithos in Greek ๐
Direct imports for optimal bundle size:
// โ
Only what you use
import { chunk } from "@pithos/core/arkhe/array/chunk";
import { debounce } from "@pithos/core/arkhe/function/debounce";Modules with cohesive APIs (Kanon, Zygos, Sphalma) also expose barrels:
// โ
Also fine - negligible overhead with modern bundlers
import { string, object, optional } from "@pithos/core/kanon";pnpm run dev # Build in watch mode
pnpm cli # Interactive CLI for tests, benchmarks, docs, and moreFull documentation, use cases, benchmarks, and migration guides at pithos.dev
Contributions welcome! See the contribution guide for setup and guidelines.