Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .changeset/boundary-try.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/cli-node-publishable.md

This file was deleted.

16 changes: 0 additions & 16 deletions .changeset/eslint-plugin-publish-fixes.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changeset/redaction-globstar.md

This file was deleted.

13 changes: 0 additions & 13 deletions .changeset/taskresult-cancellation.md

This file was deleted.

20 changes: 20 additions & 0 deletions packages/eslint-plugin-faultline/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# eslint-plugin-faultline

## 0.3.0

### Minor Changes

- 7a010cc: Rule improvements and publish-readiness fixes.

Rules:

- `throw-type-mismatch` now inspects all overload signatures, not just the first — overloaded functions are fully checked for transitive error propagation.
- `throw-type-mismatch` reports `throw <identifier>` when the surrounding function declares a `TypedPromise` error type and the thrown variable's type has no resolvable `_tag`.
- `uncovered-catch` no longer misattributes throws inside async closures (e.g. `setTimeout(async () => ...)`) to the outer try's catch.
- Published `LIMITATIONS.md` documenting patterns the rules can't detect, plus an 11-pattern torture-fixture corpus guarding the rules.

Packaging:

- Ship the previously-missing `README.md` (it was already listed in `files`).
- Derive `meta.version` from `package.json` at build time so it can no longer drift from the published version (was hardcoded `0.1.0`).
- Run tests as part of `prepublishOnly`.
26 changes: 21 additions & 5 deletions packages/eslint-plugin-faultline/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "eslint-plugin-faultline",
"version": "0.2.0",
"version": "0.3.0",
"description": "ESLint rules for type-safe error handling — checks that catch blocks cover all throwable error types.",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand All @@ -12,16 +12,24 @@
}
}
},
"files": ["dist", "README.md", "LICENSE"],
"files": [
"dist",
"README.md",
"LICENSE"
],
"scripts": {
"build": "tsdown src/index.ts --format cjs --dts",
"test": "bun test",
"typecheck": "bunx tsc --noEmit",
"prepublishOnly": "bun run typecheck && bun run test && bun run build"
},
"publishConfig": { "access": "public" },
"publishConfig": {
"access": "public"
},
"sideEffects": false,
"engines": { "node": ">=18.0.0" },
"engines": {
"node": ">=18.0.0"
},
"repository": {
"type": "git",
"url": "https://github.com/danfry1/faultline.git",
Expand All @@ -42,5 +50,13 @@
"tsdown": "^0.9.0",
"typescript": "^5.9.3"
},
"keywords": ["eslint", "eslintplugin", "typescript", "errors", "error-handling", "type-safe", "faultline"]
"keywords": [
"eslint",
"eslintplugin",
"typescript",
"errors",
"error-handling",
"type-safe",
"faultline"
]
}
7 changes: 7 additions & 0 deletions packages/faultline-cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# faultline-cli

## 0.2.0

### Minor Changes

- 7a010cc: The CLI is now publishable to npm and runs on plain Node.js (>=18). The `bin` points at a built `dist/index.js` with a Node shebang (previously a raw `.ts` file with a `bun` shebang), `typescript` is declared as a runtime dependency, and the package ships a `files` allowlist, README, LICENSE, and full repository metadata.
2 changes: 1 addition & 1 deletion packages/faultline-cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "faultline-cli",
"version": "0.1.0",
"version": "0.2.0",
"description": "CLI for Faultline — error catalog, lint, doctor, and flow graph.",
"type": "module",
"bin": {
Expand Down
21 changes: 21 additions & 0 deletions packages/faultline/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
# Changelog

## 0.3.0

### Minor Changes

- 7a010cc: Add `boundary.try(error)` — a non-throwing variant of a boundary that returns `Result<To, System.BoundaryViolation>` instead of throwing on an unmapped tag. Boundaries usually sit at a transport edge where an uncaught throw is costly; `.try()` lets you handle an unexpected (untyped/foreign) error tag as a value. Exposes the `BoundaryViolationError` type.
- 7a010cc: Redaction: support a `**` globstar segment in `redactPaths` to redact a key at any depth (e.g. `**.password`). Redaction paths are matched against the serialized error structure and a non-matching path is a silent no-op (it fails open), so `**.<key>` is now the recommended form for sensitive keys — it can't silently miss a nested occurrence the way a brittle exact path can. Documented this behavior in the README and SECURITY.md.

Also clarified (docs only, no behavior change): `attemptAsync`/`TaskResult` cancellation is cooperative — aborting short-circuits _subsequent_ steps and stops the caller waiting, but does not preempt in-flight work unless your function threads the `AbortSignal` through. And `defineBoundary` throws `System.BoundaryViolation` (preserving the original as cause) when an unmapped error tag reaches it.

- 7a010cc: TaskResult cancellation, rejection safety, and API pruning.

Breaking changes:

- `TaskResult.toPromise()` removed. Use `.run()` instead — same signature.
- TaskResult chain methods (`.map`, `.andThen`, `.catchTag`, etc.) now widen their error union to include `System.Cancelled`. Exhaustive `match()` over a TaskResult needs a `'System.Cancelled'` handler or a `_` branch.
- `TaskResult.fromPromise` return type now widens to include `System.Unexpected`. Factory rejections are no longer unhandled — they are caught and wrapped as `System.Unexpected` with the original throw preserved as `.cause`.

Added:

- TaskResult chain steps check `context.signal?.aborted` between every step. Aborting the signal mid-pipeline short-circuits the remaining steps to `System.Cancelled` instead of running them to completion.

## 0.1.0

Initial release.
Expand Down
Binary file added packages/faultline/faultline-0.2.0.tgz
Binary file not shown.
2 changes: 1 addition & 1 deletion packages/faultline/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "faultline",
"version": "0.2.0",
"version": "0.3.0",
"description": "The incremental type-safe error system for TypeScript.",
"author": "Daniel Fry",
"license": "MIT",
Expand Down