3.6 KiB
3.6 KiB
Taskbuffer Hints
Error Handling (v3.6.0+)
Tasknow hascatchErrorsconstructor option (default:false)- Default behavior:
trigger()rejects when taskFunction throws (breaking change from pre-3.6) - Set
catchErrors: trueto swallow errors (old behavior) - returnsundefinedon 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.logcalls replaced withlogger.log()throughout
Breaking API Rename (TaskRunner)
maxParrallelJobs→maxParallelJobsqeuedTasks→queuedTasks- JSDoc typos fixed: "qeue" → "queue", "wether" → "whether", "loose" → "lose"
- The
setMaxParallelJobs()parameter also renamed frommaxParrallelJobsArgtomaxParallelJobsArg
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 (viaCycleCounter.informOfCycleError) instead of silently resolving withundefined - TaskChain stubs completed:
removeTask(task)returnsboolean,shiftTask()returnsTask | undefined
Task Labels (v4.1.0+)
Taskconstructor accepts optionallabels?: Record<string, string>- Helper methods:
setLabel(key, value),getLabel(key),removeLabel(key),hasLabel(key, value?) getMetadata()includeslabels(shallow copy)TaskManager.getTasksByLabel(key, value)returns matchingTask[]TaskManager.getTasksMetadataByLabel(key, value)returns matchingITaskMetadata[]
Push-Based Events (v4.1.0+)
Task.eventSubject: rxjsSubject<ITaskEvent>emitting'started','step','completed','failed'eventsTaskManager.taskSubject: aggregatedSubject<ITaskEvent>from all added tasksTaskManager.removeTask(task)unsubscribes and removes from mapTaskManager.stop()cleans up all event subscriptions- Exported types:
ITaskEvent,TTaskEventType
Project Structure
- Source in
ts/, web components ints_web/ - Tests in
test/- naming:*.node.ts,*.chromium.ts(preferred),*.both.ts- Note:
*.browser.tsis deprecated, use*.chromium.tsfor browser tests
- Note:
- Logger:
ts/taskbuffer.logging.tsexportslogger(ConsoleLog from smartlog) - Build:
pnpm build(tsbuild tsfolders) - Test:
pnpm testortstest test/test.XX.name.ts --verbose
Web Components (ts_web/)
- Uses
@design.estate/dees-elementwith TC39 decorators - Decorators require the
accessorkeyword:@property({ type: String }) accessor myProp = 'default'; @state() accessor count = 0;
Dependencies (as of v4.1.1)
@design.estate/dees-element^2.1.6 - TC39 decorators withaccessorkeyword@push.rocks/lik^6.2.2 - Data structures@push.rocks/smartdelay^3.0.5 - Delay utilities@push.rocks/smartlog^3.1.10 - Logging@push.rocks/smartpromise^4.2.3 - Promise utilities@push.rocks/smartrx^3.0.10 - RxJS wrapper@push.rocks/smarttime^4.1.1 - Time/cron utilities@push.rocks/smartunique^3.0.9 - Unique ID generation@git.zone/tsbuild^4.1.2 - Build tool@git.zone/tsbundle^2.8.3 - Bundler (for browser tests)@git.zone/tsrun^2.0.1 - TypeScript runner@git.zone/tstest^3.1.8 - Test runner (supports.chromium.tsfiles)@types/node^25.1.0 - Node.js type definitions