3.6 KiB
3.6 KiB
Tasks: enterprise-streams
- Change ID: enterprise-streams
- Package:
@suaveplan/streams - Date: 2026-04-24
Prerequisites (must be published to Verdaccio first)
@suaveplan/error@suaveplan/types
Tasks
1. Scaffold package
- Create
universal/streams/streams/directory tree per file layout inproposal.md - Write
package.json(name@suaveplan/streams, version0.1.0,sideEffects: false, correct workspace deps and catalog externals) - Write
tsconfig.jsonextending@suaveplan/typescript-config/library.json - Write
vitest.config.tsusingcreateTestConfig()from@suaveplan/testing/config
2. Error codes (src/error-codes.ts)
- Define
StreamErrorCodeunion type - Call
defineCodesto register allSTREAM.*codes - Export
registerStreamErrorCodes()andStreamError
3. Types (src/types/common.ts)
- Define and export
ReadableOptions,TransformOptions,InstrumentOptions - Write
common.md
4. Readable factories
fromArrayinsrc/readable/from-array/fromAsyncGeneratorinsrc/readable/from-generator/fromBytesinsrc/readable/from-bytes/- Each:
.ts,.md,.test.ts,index.ts
5. Transform factories
mapStream,filterStream,flatMapStream,batchStream,tapStream,limitStreaminsrc/transforms/encodeTextStream,decodeTextStreaminsrc/transforms/text-codec/compressStream,decompressStream(usingCompressionStream/DecompressionStreamWHATWG API) insrc/transforms/compress/- Each:
.ts,.md,.test.ts,index.ts;highWaterMarkandAbortSignalsupport
6. Sink utilities
toArray,toBytes,toString,forEach,toWritableinsrc/sinks/- Each:
.ts,.md,.test.ts,index.ts;AbortSignalcancellation
7. Pipeline builder (src/pipeline/pipeline-builder/)
- Implement type-safe
PipelineBuilder<T>with.pipe(),.collect(),.drain(),.forEach() fanOutandmergein respectivesrc/pipeline/subdirectories- Each:
.ts,.md,.types.ts,.test.ts,index.ts
8. Instrumentation (src/instrument/instrument-transform/)
- Implement
instrumentTransformwrapping any named transform with OTel span + counters - Write
.md,.types.ts,.test.ts,index.ts
9. Node.js adapters (src/node/node-adapters.ts)
fromNodeReadable,toNodeReadable,fromNodeWritable- Guard with
typeof process !== 'undefined'check; throwStreamErrorin browser contexts - Write
node-adapters.mdandnode-adapters.test.ts
10. OTel instrumentation
- Add spans, counters, histograms per
proposal.md§4
11. Tests
- Unit tests co-located (100% coverage target)
tests/integration.test.ts— multi-stage pipelines including Node adaptertests/property.test.ts— fast-check properties perproposal.md§5
12. Benchmarks (src/__benchmarks__/streams.bench.ts)
- Implement benchmark cases per
proposal.md§6
13. Docs
- Every
.tsimplementation file has a sibling.md - Root
README.md
14. Pre-publish gate
bunx turbo lint typecheck test --filter=@suaveplan/streamsgreenbunx turbo test:coverage --filter=@suaveplan/streams≥ 100% on touched modules
15. Publish
bun scripts/publish.ts --package @suaveplan/streams
16. Archive
- Fold spec delta into
openspec/specs/streams/spec.md mv openspec/changes/enterprise-streams openspec/archive/2026-04-24-enterprise-streams