test:ci now runs c8 with --all --include "src/**/*.ts" --100, so the build job fails when any runtime file under src/ is untested. --all is what makes the gate non-vacuous: without it c8 counts only the files the suite happened to load, and a new untested module stays invisible. Add src/index.test.ts to load the public barrel, which was previously never imported at runtime and so read as 0% under --all. matcher-shared.ts is types-only (an empty runtime image) and carries a file-level c8 ignore with the reason. Why 100% and the rejected alternatives: development/ci.md § Coverage threshold.
4.6 KiB
4.6 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
- gate CI at 100% coverage:
test:ciruns c8 with--all --100oversrc/, and a test loads theindex.tsbarrel so it is measured - pin the duplicate-tag union collapse (members sharing a tag dispatch through one handler) with tests
- track a TypeScript 5.0 baseline in the backlog
0.8.0 - 2026-09-23
- reject a universe that mixes a literal with a broad type (e.g.
"a" | \x-${number}``), which the finite-literal gate let through - narrow the tagged-union matcher's handler parameters for a union-valued or
optional discriminant, and its fallback to the unhandled tags, instead of
passing
never
0.7.1 - 2026-09-23
- upgrade dependencies
0.7.0 - 2026-09-23
- reject broad universes (
string,number, template literals) and value/stringification collisions (true | "true",1 | "1") at the factory - type handler parameters by the matched member, so a
standalone
"true"universe is typed"true"rather thantrue
0.6.0 - 2026-09-22
- add
getTaggedUnionMatcher/getTaggedUnionMatcherWfor discriminated unions - rename the primitive matcher to primitive-union:
getMatcher/getMatcherW→getPrimitiveUnionMatcher/getPrimitiveUnionMatcherW, andsrc/primitive.ts/src/primitive.test.ts→src/primitive-union.*
0.5.0 - 2026-09-21
- reject a fallback when the handler map already covers the universe
- allow boolean, null and undefined in the matcher universe
0.4.0 - 2026-09-20
- move the
_fallback out of handlers
0.3.0 - 2026-09-18
- condensed primitive matcher factories down to 2 from formerly 4
- house shared test helpers under
src/util/__tests__/
0.2.0 - 2026-09-16
- allow ternaries and lowercase comments in oxlint
- switch
src/primitive.tsprose from block comments to line comments - remove the template's
match/Pexample modules and their documentation, and pointsrc/index.tsat the primitive matchers
0.1.8 - 2026-09-16
- upgrade dependencies
- ignore
@types/nodeinmaintain:outdated(misleadinglatestdist-tag) - require extremely concise prose in
development/
0.1.7 - 2026-09-16
- require a short summary under
[Unreleased]in the changelog before a branch is finished - let
create:branchstart from amainthat is ahead of its upstream, so a finished merge no longer blocks the next branch until it is pushed
0.1.6 - 2026-09-15
- restructure the documentation: README.md for users, CONTRIBUTING.md for contributors, and development/ for the decisions, rejected alternatives and known issues
- document the decisions and known issues for CI, tooling, testing, publishing and the workflow
0.1.5 - 2026-09-15
- improve CI configuration
0.1.4 - 2026-09-14
- fix CI to node from custom image
- upgrade dependencies
0.1.3 - 2026-09-14
- change to custom image for CI
0.1.2 - 2026-09-14
- upgrade dependencies
0.1.1 - 2026-09-14
- upgrade dependencies
0.1.0 - 2026-09-14
- basic setup