https://github.com/falinor/web-streams-utils
Utility functions for the Web Stream API, for browsers and node.js
https://github.com/falinor/web-streams-utils
web-streams whatwg-streams
Last synced: 4 months ago
JSON representation
Utility functions for the Web Stream API, for browsers and node.js
- Host: GitHub
- URL: https://github.com/falinor/web-streams-utils
- Owner: Falinor
- Created: 2025-04-18T08:47:51.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-20T09:17:31.000Z (about 1 year ago)
- Last Synced: 2025-09-19T00:02:17.125Z (9 months ago)
- Topics: web-streams, whatwg-streams
- Language: TypeScript
- Homepage: https://falinor.github.io/web-streams-utils/
- Size: 261 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Web streams utils
A TypeScript library providing utility functions for working with the Web Stream
API.
## Installation
```bash
npm install web-streams-utils
```
## Features
- Fully typed with TypeScript
- Zero dependencies
- Works in both Node.js and browsers
- Provides common stream operations like map, filter, tap, etc.
- Compatible with the standard Web Streams API
- Supports both ESM and CommonJS imports
## Usage
### ESM (ECMAScript Modules)
```typescript
import { fromIterable, map, filter, toArray } from 'web-streams-utils'
async function example() {
const inputData = [1, 2, 3, 4, 5]
const stream = fromIterable(inputData)
.pipeThrough(filter(n => n % 2 === 0)) // Keep even numbers
.pipeThrough(map(n => n * 2)) // Double each number
const result = await toArray(stream)
console.log(result) // [4, 8]
}
example()
```
### CommonJS
```javascript
const { fromIterable, map, filter, toArray } = require('web-streams-utils')
async function example() {
const inputData = [1, 2, 3, 4, 5]
const stream = fromIterable(inputData)
.pipeThrough(filter(n => n % 2 === 0))
.pipeThrough(map(n => n * 2))
const result = await toArray(stream)
console.log(result) // [4, 8]
}
example()
```
## API Reference
### Transformation Functions
- `append(...items: T[]): TransformStream`
- `map(fn: (chunk: T) => R | Promise): TransformStream`
- `filter(predicate: (chunk: T) => boolean | Promise): TransformStream`
- `tap(fn: (chunk: T) => void | Promise): TransformStream`
- `batch(size: number): TransformStream`
- `flatten(): TransformStream`
- `take(limit: number): TransformStream`
- `skip(count: number): TransformStream`
- `scan(scanner: (accumulator: R, chunk: T) => R | Promise, initialValue: R): TransformStream`
- `compact(): TransformStream>`
- `flatMap(fn: (chunk: T) => R[] | Promise): TransformStream`
- `reduce(reducer: (accumulator: T, chunk: T) => T | Promise): TransformStream`
### Stream Creation
- `fromIterable(iterable: Iterable | AsyncIterable): ReadableStream`
- `interval(period: number): ReadableStream`
### Stream Combination
- `merge(...streams: ReadableStream[]): ReadableStream`
### Consumption
- `toArray(stream: ReadableStream): Promise`
## Documentation
The complete API documentation is available at [https://falinor.github.io/web-streams-utils/](https://falinor.github.io/web-streams-utils/).
You can also generate the documentation locally:
```bash
yarn docs
```
The documentation will be available in the `docs/` directory.
## Development
### Setup
```bash
corepack enable
yarn install
```
### Testing
```bash
yarn test
yarn test:watch
yarn test:coverage
```
### Formatting
```bash
yarn format
```
### Committing Changes
This project uses [Conventional Commits](https://www.conventionalcommits.org/)
for commit messages. You can use the following command to create a commit:
```bash
yarn commit
```
### Releasing
This project uses [semantic-release](https://semantic-release.gitbook.io/semantic-release/)
for automated versioning and releases. Releases are automatically triggered by
GitHub Actions when changes are pushed to the main branch. The workflow will:
1. Analyze commit messages to determine the next version
2. Generate release notes
3. Update the CHANGELOG.md
4. Publish to npm
5. Create a GitHub release
6. Deploy documentation to GitHub Pages
The release process requires the following GitHub secrets to be set:
- `GITHUB_TOKEN`: Automatically provided by GitHub Actions
- `NPM_TOKEN`: Your npm authentication token with publish permissions
## Browser Support
This library supports all modern browsers and Node.js 16+. It uses the Web
Streams API, which is available in all modern browsers and Node.js.
## License
MIT