Skip to content

Packages ​

TypeScript libraries and tools for Node.js ESM environments, each published to npm. For how they fit together in practice, see the demos.

Schemas and types

  • Juniper

    Build JSON Schemas in TypeScript with inferred static types — strict, Ajv-ready, JSON Schema 2020-12 and OpenAPI 3.0 output.

  • Juniper Validator

    Standard Schema compliant validators for Juniper schemas, with type guards and assertions.

  • genever

    Generate TypeScript types from JSON Schema files and OpenAPI documents, with strict schema checks and the same types Juniper infers.

Dependency injection and scripts

  • Haywire

    Compile-time checked dependency injection for TypeScript — no decorators, no reflect-metadata, no global state.

  • haywire-launcher

    Run a Haywire-built entry script in one line, building the container only when the script runs.

  • entry-script

    Node.js scripts whose main() only runs when they are the entry point, so tests can import them without side effects.

Testing

  • mocha-chain

    Chain Mocha hooks so each passes typed context to the next, instead of sharing nullable variables between hooks and tests.

  • vitest-chain

    The same hook chaining for Vitest, with typed context alongside Vitest’s own test context.

  • pg-dolly

    A fresh Postgres database for every test, cloned from a template built once from your schema’s SQL, safe next to dev data and across parallel runs.

  • pg-dolly-schema

    Keep a schema.sql of what your Postgres migrations build, for any migration tool, and fail CI when it’s stale.

Generated files and monorepo tooling

  • nx-lifecycle

    Nx plugin that derives every dependsOn from declared lifecycle stages (build, test, …) and the targets bound to them.

  • Barrelify

    Generate and CI-verify TypeScript barrel (index.ts) files with the correct ESM/CJS import extensions.

  • populate-files

    Write generated files from code, and fail CI when they are out of date or were edited by hand, with editable manual sections.

  • generated-signature

    Sign generated files so hand edits are detected by an ESLint rule or a single function call, while manual sections stay editable.

Data and caching

  • lease-cache

    Read-through caching on Valkey or Redis with leases, so each miss is loaded once across every instance, and a load that finishes after an invalidation never caches its outdated value.

  • normalized-react-query

    Type-safe TanStack Query definitions that pair each key with its fetcher, and link related queries so they load together, including for server rendering.

Errors

  • unknown-error

    Turn any caught unknown into a real Error without throwing, even for hostile values, other realms and deep or circular cause chains.