docs: add LICENSE, README, CHANGELOG, and license headers for npm publish
- Add combined MIT + Apache-2.0 LICENSE file (Copyright 2026 alk.dev) - Add README.md with quick start for each adapter, lifecycle/close docs, operators, EventEnvelope, TypeScript, exports table, upstream attribution - Add CHANGELOG.md with 0.1.0 entry - Add SPDX license headers to original source files (WS client, WS server, Worker, index barrel) - Update package.json: add author, repository, homepage, bugs; include CHANGELOG.md in files; update description
This commit is contained in:
43
CHANGELOG.md
Normal file
43
CHANGELOG.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Changelog
|
||||
|
||||
## 0.1.0
|
||||
|
||||
Initial release.
|
||||
|
||||
### Core
|
||||
|
||||
- `createPubSub` factory with type-safe `publish`/`subscribe` API (adapted from graphql-yoga, MIT)
|
||||
- `TypedEventTarget`, `TypedEvent`, `EventEnvelope` types
|
||||
- `Repeater` class for backpressure-aware async iteration (inlined from @repeaterjs/repeater, MIT)
|
||||
- Operators: `filter`, `map`, `pipe`, `take`, `reduce`, `toArray`, `batch`, `dedupe`, `window`, `flat`, `groupBy`, `chain`, `join`
|
||||
|
||||
### Adapters
|
||||
|
||||
- **Redis** — `createRedisEventTarget` (peer dep: `ioredis`). Pub/sub with optional prefix and custom serializer.
|
||||
- **WebSocket Client** — `createWebSocketClientEventTarget`. Subscribe/publish over a WebSocket connection.
|
||||
- **WebSocket Server** — `createWebSocketServerEventTarget`. Fan-out hub for WebSocket spokes with topic-based routing, backpressure handling, and subscription control protocol (`__subscribe`/`__unsubscribe`).
|
||||
- **Worker Host** — `createWorkerHostEventTarget`. Communicate with a Worker thread from the main thread.
|
||||
- **Worker Thread** — `createWorkerThreadEventTarget`. Communicate with the main thread from inside a Worker.
|
||||
|
||||
### Lifecycle
|
||||
|
||||
All transport adapters provide a `close()` method for graceful teardown:
|
||||
|
||||
- Unsubscribes from all channels/topics
|
||||
- Restores any intercepted `onmessage`/`onclose` handlers
|
||||
- Removes message listeners
|
||||
- Clears internal state maps
|
||||
- Does **not** destroy the underlying transport (caller-owned)
|
||||
- Idempotent — safe to call multiple times
|
||||
|
||||
### Build
|
||||
|
||||
- Dual ESM + CJS output via tsup
|
||||
- Sub-path exports for each adapter (`@alkdev/pubsub/event-target-redis`, etc.)
|
||||
- Zero runtime dependencies (Repeater is inlined)
|
||||
- `sideEffects: false`
|
||||
- TypeScript declarations (`.d.ts` + `.d.cts`)
|
||||
|
||||
### License
|
||||
|
||||
Dual-licensed MIT OR Apache-2.0. Portions adapted from graphql-yoga (MIT) and @repeaterjs/repeater (MIT) retain their upstream attribution.
|
||||
Reference in New Issue
Block a user