The README collapsed to API-only prose once the old match/P surface was dropped. Rebuild its entry-point shape: a quick-start Synopsis walked through a Contact union, a dedicated Installation section, and a real-world Examples section (primitive-union dispatch, a fallback, a property union narrowed by the tagged-union matcher, and the widening variant). Set the tagline and Description to the library's identity — exhaustive, type-safe pattern matching for TypeScript — and state the goal Moose-style: type-safe pattern matching with a lean syntax, accomplished by exhaustive branches and typed per-branch handler parameters, backed by autocomplete and a tiny footprint. Drop the F#-style framing and the stale "matches method is a type guard" and "(not regex)" copy from the README, AGENTS.md and the package.json description. Every fence is a doc-test, so the examples cannot drift from the API.
50 lines
3.1 KiB
Plaintext
50 lines
3.1 KiB
Plaintext
Tasks
|
|
|
|
Backlog and tracking for tiny-pattern-ts. Managed in vscode-todotasks format.
|
|
|
|
---
|
|
|
|
Setup:
|
|
☐ Split off template into separate package => pi --session 01a07dde-7050-7054-bb36-1606d7eb2bc3 @low
|
|
|
|
v1.0:
|
|
✔ API surface is stable and fully typed @done
|
|
✔ Finalize public exports in `src/index.ts` @done
|
|
✔ Document all exported types and functions @done
|
|
✔ Add JSDoc for public APIs @done
|
|
✔ Test coverage meets threshold @done
|
|
✔ Achieve 100% branch coverage on `src/primitive-union.ts` @done
|
|
✔ Achieve 100% branch coverage on `src/index.ts` @done
|
|
|
|
Matcher:
|
|
✔ when using a union type as a property, the current behavior of tagged union matcher is @done
|
|
to pass never to handler parameters
|
|
→ new matcher function needed or can be fixed in tagged union matcher
|
|
✔ optional discriminant (`{ type?: "x" }`) is the same hole: the boolean/nullish change now admits the `undefined` tag, so the factory accepts the key, but `Extract<T, Record<K, V>>` still passes `never` to both the `x` and `undefined` handlers @done
|
|
|
|
Documentation:
|
|
✔ Bring README.md back to its previous form — synopsis and examples restored, in the correct place @done
|
|
→ previous section order: title, tagline, Synopsis, Description, Requirements, Examples, API, License, Contributing
|
|
→ previous Examples order: literal/exhaustive, typeof, structural/discriminated unions, when, any
|
|
☐ Create `examples/` directory with runnable snippets
|
|
☐ Add comparison section vs. other TS pattern-matching libs in Readme.md
|
|
☐ Why do we do this? => exhaustiveness encoded type safe
|
|
☐ Why this form? little syntax, data last, very small, autocomplete, strict typing in the handler; for more features use ts-pattern
|
|
✔ Write migration guide for users coming from discriminated unions @done (9/24/2026, 10:21:17 PM)
|
|
✔ Create backlog tasks for implementation @done (9/24/2026, 10:21:16 PM)
|
|
✔ Validate code fences in Markdown (start with README.md) — compile the TypeScript examples against `src/` so the docs cannot drift from the API @done
|
|
|
|
Maintenance:
|
|
☐ Serve CI coverage over a tiny self-hosted webserver (replace the zip artifact) @low
|
|
☐ Explore serving coverage for non-tag pushes (e.g. `main/coverage`, PR previews) @low
|
|
→ design: no deploy step in CI; the webserver just exposes the shared directory (decided over Gitea Pages / Codecov — neither confirmed available/ wanted)
|
|
☐ serve docs over self hosted server @low
|
|
☐ Add a minimal dir-listing webserver to the gitea docker setup for serving docs (reuse existing reverse proxy)
|
|
☐ CI writes docs to a shared volume keyed by project + tag (e.g. `/docs/tiny-pattern-ts/<tag>/`)
|
|
☐ Browse to `…/docs/<repo>/<tag>/index.html` in the browser
|
|
☐ serve landing page over self hosted server @low
|
|
☐ Add a minimal dir-listing webserver to the gitea docker setup for serving landing page (reuse existing reverse proxy)
|
|
☐ CI writes landing page to a shared volume keyed by project + tag (e.g. `/landing/tiny-pattern-ts/<tag>/`)
|
|
☐ Browse to `…/tiny-pattern-ts/index.html` in the browser
|
|
☐ Add testing with TypeScript 5.0 baseline in CI
|