BREAKING CHANGE(taskbuffer): Change default Task error handling: trigger() now rejects when taskFunction throws; add catchErrors option (default false) to preserve previous swallow behavior; track errors (lastError, errorCount) and expose them in metadata; improve error propagation and logging across runners, chains, parallels and debounced tasks; add tests and documentation for new behavior.
This commit is contained in:
@@ -1 +1,28 @@
|
||||
|
||||
# Taskbuffer Hints
|
||||
|
||||
## Error Handling (v3.6.0+)
|
||||
- `Task` now has `catchErrors` constructor option (default: `false`)
|
||||
- Default behavior: `trigger()` rejects when taskFunction throws (breaking change from pre-3.6)
|
||||
- Set `catchErrors: true` to swallow errors (old behavior) - returns `undefined` on error
|
||||
- Error state tracked via `lastError?: Error`, `errorCount: number`, `clearError()`
|
||||
- `getMetadata()` status uses all four values: `'idle'` | `'running'` | `'completed'` | `'failed'`
|
||||
- All peripheral classes (Taskchain, Taskparallel, TaskRunner, BufferRunner, TaskDebounced, TaskManager) have proper error propagation/handling
|
||||
- `console.log` calls replaced with `logger.log()` throughout
|
||||
|
||||
## Breaking API Rename (TaskRunner)
|
||||
- `maxParrallelJobs` → `maxParallelJobs`
|
||||
- `qeuedTasks` → `queuedTasks`
|
||||
- JSDoc typos fixed: "qeue" → "queue", "wether" → "whether", "loose" → "lose"
|
||||
- The `setMaxParallelJobs()` parameter also renamed from `maxParrallelJobsArg` to `maxParallelJobsArg`
|
||||
|
||||
## Error Context Improvements
|
||||
- **TaskChain**: Errors now wrap the original with context: chain name, failing task name, and task index. Original error preserved via `.cause`
|
||||
- **BufferRunner**: When `catchErrors: false`, buffered task errors now reject the trigger promise (via `CycleCounter.informOfCycleError`) instead of silently resolving with `undefined`
|
||||
- **TaskChain stubs completed**: `removeTask(task)` returns `boolean`, `shiftTask()` returns `Task | undefined`
|
||||
|
||||
## Project Structure
|
||||
- Source in `ts/`, web components in `ts_web/`
|
||||
- Tests in `test/` - naming: `*.node.ts`, `*.browser.ts`, `*.both.ts`
|
||||
- Logger: `ts/taskbuffer.logging.ts` exports `logger` (ConsoleLog from smartlog)
|
||||
- Build: `pnpm build` (tsbuild tsfolders)
|
||||
- Test: `pnpm test` or `tstest test/test.XX.name.ts --verbose`
|
||||
|
||||
Reference in New Issue
Block a user