@scolladon/tsgit
v3.0.0
Published
Lightning-fast git, pure TypeScript, everywhere.
Maintainers
Readme
tsgit
Lightning-fast git, pure TypeScript, everywhere.
Pure TypeScript git — Node.js, browser, Deno, Bun, and Cloudflare Workers. Zero native deps. Zero WASM. Stable v1, semver-tracked — see BACKLOG for the roadmap.
Install
npm install @scolladon/tsgit60-second quickstart
import { openRepository } from '@scolladon/tsgit';
const repo = await openRepository({ cwd: process.cwd() });
const commits = await repo.log({ limit: 10 });
const { clean, branch, changes, untracked } = await repo.status();
await repo.dispose();| Runtime | Import |
|---|---|
| Node.js 22+ | @scolladon/tsgit |
| Browser (OPFS) | @scolladon/tsgit/auto/browser |
| In-memory (tests) | @scolladon/tsgit/auto/memory |
| Deno | npm:@scolladon/tsgit |
| Bun | @scolladon/tsgit |
| Cloudflare Workers | @scolladon/tsgit/auto/memory |
→ Full quickstart per runtime · recipes — partial clone, sparse checkout, hooks, …
Capabilities
- Zero runtime dependencies — no transitive surface
- Pure TypeScript — no native code, no WASM, no
gitbinary required - Cross-runtime — Node 22+ · Deno · Bun · Cloudflare Workers · Browser (OPFS) · in-memory
- Tree-shakeable —
sideEffects: false; each primitive is an independent entry - CJS + ESM dual-publish, verified by
arethetypeswrong - 43 Tier-1 commands · 20+ AsyncIterable primitives · operator toolkit (
pipe,filter,map, …) - Snapshot+join surface — query tree / index / workdir / stash through one lazy, atomic-iteration pipeline (primer)
- Type-safe — branded
ObjectId/RefName/FilePath, discriminated-union errors, noany - AbortSignal lifetime —
repo.dispose()cancels in-flight work
→ Commands · primitives · snapshots · errors
Documentation
- 📖 Get started — Node, browser, memory, migration from isomorphic-git
- 🛠️ Use it — commands, primitives, recipes, errors
- 🧠 Understand it — architecture, design decisions, performance, security
Contribute
See CONTRIBUTING.md.
