@pawells/rxjs-events 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -15
- package/build/event-filter.d.ts.map +1 -1
- package/build/event-filter.js +2 -17
- package/build/event-filter.js.map +1 -1
- package/build/event-operators.d.ts.map +1 -1
- package/build/event-operators.js +8 -32
- package/build/event-operators.js.map +1 -1
- package/build/event-pipeline.d.ts +5 -0
- package/build/event-pipeline.d.ts.map +1 -1
- package/build/event-pipeline.js +11 -2
- package/build/event-pipeline.js.map +1 -1
- package/build/handler.d.ts +7 -3
- package/build/handler.d.ts.map +1 -1
- package/build/handler.js +8 -4
- package/build/handler.js.map +1 -1
- package/build/nestjs-pubsub.d.ts +1 -1
- package/build/nestjs-pubsub.d.ts.map +1 -1
- package/build/nestjs-pubsub.js +29 -10
- package/build/nestjs-pubsub.js.map +1 -1
- package/package.json +8 -7
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@pawells/rxjs-events)
|
|
4
4
|
[](https://github.com/PhillipAWells/rxjs-events/releases)
|
|
5
5
|
[](https://github.com/PhillipAWells/rxjs-events/actions/workflows/ci.yml)
|
|
6
|
-
[](https://nodejs.org)
|
|
7
7
|
[](./LICENSE)
|
|
8
8
|
[](https://github.com/sponsors/PhillipAWells)
|
|
9
9
|
|
|
@@ -86,8 +86,8 @@ async function processOnce() {
|
|
|
86
86
|
import { AsyncObservable, BackpressureStrategy } from '@pawells/rxjs-events';
|
|
87
87
|
|
|
88
88
|
const obs = new AsyncObservable<string>({
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
maxBufferSize: 100,
|
|
90
|
+
overflowStrategy: BackpressureStrategy.DropOldest,
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
for await (const item of obs) {
|
|
@@ -117,14 +117,16 @@ Main event handler class wrapping an RxJS `Subject`.
|
|
|
117
117
|
|
|
118
118
|
| Method | Signature | Description |
|
|
119
119
|
|--------|-----------|-------------|
|
|
120
|
-
| `constructor` | `(name:
|
|
121
|
-
| `Name` | `string` (
|
|
122
|
-
| `Subscribe` | `(
|
|
123
|
-
| `Unsubscribe` | `(
|
|
124
|
-
| `Trigger` | `(data: TObject
|
|
120
|
+
| `constructor` | `(name: string)` | Creates a handler with the given event name (cannot be empty or whitespace-only) |
|
|
121
|
+
| `Name` | `string` (readonly) | Returns the event name |
|
|
122
|
+
| `Subscribe` | `(onEvent: TEventFunction<TEvent>) => number` | Subscribes and returns a numeric ID |
|
|
123
|
+
| `Unsubscribe` | `(subscription: number) => void` | Removes subscription by ID |
|
|
124
|
+
| `Trigger` | `(data: TObject) => void` | Emits the event with the given payload |
|
|
125
125
|
| `Destroy` | `() => void` | Completes the Subject and cleans up all subscriptions |
|
|
126
|
-
| `GetAsyncIterableIterator` | `() => AsyncIterableIterator<
|
|
127
|
-
| `GetAsyncIterator` | `() =>
|
|
126
|
+
| `GetAsyncIterableIterator` | `() => AsyncIterableIterator<TEvent>` | Returns an async iterable iterator |
|
|
127
|
+
| `GetAsyncIterator` | `() => AsyncIterator<TEvent>` | Returns an async iterator |
|
|
128
|
+
| `GetSubscriptionCount` | `() => number` | Returns the count of active subscriptions |
|
|
129
|
+
| `GetActiveSubscriptionIds` | `() => number[]` | Returns array of active subscription IDs |
|
|
128
130
|
|
|
129
131
|
Subscription IDs are recycled internally — allocation is O(1).
|
|
130
132
|
|
|
@@ -132,10 +134,10 @@ Subscription IDs are recycled internally — allocation is O(1).
|
|
|
132
134
|
|
|
133
135
|
An `Observable` subclass with a push buffer and configurable backpressure. Implements `Symbol.asyncIterator`.
|
|
134
136
|
|
|
135
|
-
| Option | Type | Description |
|
|
136
|
-
|
|
137
|
-
| `
|
|
138
|
-
| `
|
|
137
|
+
| Option | Type | Default | Description |
|
|
138
|
+
|--------|------|---------|-------------|
|
|
139
|
+
| `maxBufferSize` | `number` | 1000 | Maximum number of buffered items |
|
|
140
|
+
| `overflowStrategy` | `BackpressureStrategy` | `DropOldest` | How to handle buffer overflow: `DropOldest`, `DropNewest`, or `Error` |
|
|
139
141
|
|
|
140
142
|
Throws `BufferOverflowError` when strategy is `Error` and the buffer is full.
|
|
141
143
|
|
|
@@ -202,7 +204,7 @@ yarn vitest run src/path/to/file.test.ts
|
|
|
202
204
|
|
|
203
205
|
## Requirements
|
|
204
206
|
|
|
205
|
-
- Node.js >=
|
|
207
|
+
- Node.js >= 22.0.0
|
|
206
208
|
- ESM-only (`"type": "module"`) — use ESM imports throughout
|
|
207
209
|
|
|
208
210
|
## License
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-filter.d.ts","sourceRoot":"","sources":["../src/event-filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,wBAAgB,WAAW,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EACjE,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"event-filter.d.ts","sourceRoot":"","sources":["../src/event-filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,wBAAgB,WAAW,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EACjE,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACtC,OAAO,CAmBT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EAC1E,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACtC,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAGhC"}
|
package/build/event-filter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ObjectFilter } from '@pawells/typescript-common';
|
|
2
2
|
/**
|
|
3
3
|
* Filters events based on payload property matching criteria.
|
|
4
4
|
* Performs strict equality comparison between event payload properties and filter arguments.
|
|
@@ -77,22 +77,7 @@ export function EventFilter(event, args) {
|
|
|
77
77
|
const payload = event[eventKey];
|
|
78
78
|
if (!payload)
|
|
79
79
|
throw new Error('No Payload');
|
|
80
|
-
|
|
81
|
-
// Support nested paths using dot notation
|
|
82
|
-
const payloadValue = ObjectGetPropertyByPath(payload, key);
|
|
83
|
-
// Support predicate functions as filter values
|
|
84
|
-
if (typeof filterValue === 'function') {
|
|
85
|
-
const predicate = filterValue;
|
|
86
|
-
if (!predicate(payloadValue))
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
// Standard equality check
|
|
91
|
-
if (payloadValue !== filterValue)
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return true;
|
|
80
|
+
return ObjectFilter(payload, args);
|
|
96
81
|
}
|
|
97
82
|
/**
|
|
98
83
|
* Partitions an event into matching and non-matching tuples based on filter criteria.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-filter.js","sourceRoot":"","sources":["../src/event-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"event-filter.js","sourceRoot":"","sources":["../src/event-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,MAAM,UAAU,WAAW,CAC1B,KAAa,EACb,IAAwC;IAExC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,oEAAoE;IACpE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,uBAAuB;IACvB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAErC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;IACpI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAiB,CAAC;IAE9C,mCAAmC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAiC,CAAC;IAEhE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAE5C,OAAO,YAAY,CAAC,OAAO,EAAE,IAA+B,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,oBAAoB,CACnC,KAAa,EACb,IAAwC;IAExC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-operators.d.ts","sourceRoot":"","sources":["../src/event-operators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EACjE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAClC,IAAI,EAAE,MAAM,GACV,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAsBjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EACrE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAClC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GACnC,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"event-operators.d.ts","sourceRoot":"","sources":["../src/event-operators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EACjE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAClC,IAAI,EAAE,MAAM,GACV,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAsBjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EACrE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAClC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GACnC,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CA2EhE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EAAE,IAAI,GAAG,MAAM,EACzF,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAClC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAC9B,SAAS,EAAE,MAAM,GACf,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAmC5C"}
|
package/build/event-operators.js
CHANGED
|
@@ -73,7 +73,8 @@ export function PartitionEvents(handler, predicate) {
|
|
|
73
73
|
const nonMatchingQueue = [];
|
|
74
74
|
let matchingResolve;
|
|
75
75
|
let nonMatchingResolve;
|
|
76
|
-
|
|
76
|
+
// Track reference count for proper cleanup
|
|
77
|
+
let activeIterators = 2;
|
|
77
78
|
// Subscribe to the handler and distribute events to appropriate queues
|
|
78
79
|
const subscriptionId = handler.Subscribe((event) => {
|
|
79
80
|
if (predicate(event)) {
|
|
@@ -98,7 +99,7 @@ export function PartitionEvents(handler, predicate) {
|
|
|
98
99
|
if (closed) {
|
|
99
100
|
return { done: true, value: undefined };
|
|
100
101
|
}
|
|
101
|
-
while (queue.length === 0
|
|
102
|
+
while (queue.length === 0) {
|
|
102
103
|
await new Promise((resolve) => {
|
|
103
104
|
if (queue === matchingQueue) {
|
|
104
105
|
matchingResolve = resolve;
|
|
@@ -120,7 +121,11 @@ export function PartitionEvents(handler, predicate) {
|
|
|
120
121
|
async return() {
|
|
121
122
|
await Promise.resolve();
|
|
122
123
|
closed = true;
|
|
123
|
-
|
|
124
|
+
activeIterators--;
|
|
125
|
+
// Only unsubscribe when all iterators have closed
|
|
126
|
+
if (activeIterators === 0) {
|
|
127
|
+
handler.Unsubscribe(subscriptionId);
|
|
128
|
+
}
|
|
124
129
|
return { done: true, value: undefined };
|
|
125
130
|
},
|
|
126
131
|
};
|
|
@@ -128,35 +133,6 @@ export function PartitionEvents(handler, predicate) {
|
|
|
128
133
|
// Create iterators that share the same queues and handler
|
|
129
134
|
const matchingIterator = createIterator(matchingQueue);
|
|
130
135
|
const nonMatchingIterator = createIterator(nonMatchingQueue);
|
|
131
|
-
// Add destroy handlers to both iterators to clean up when iteration is done
|
|
132
|
-
Promise.allSettled([
|
|
133
|
-
(async () => {
|
|
134
|
-
try {
|
|
135
|
-
for await (const _ of matchingIterator) {
|
|
136
|
-
// Consumer will iterate; we just need to wait for completion
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
finally {
|
|
140
|
-
handlerComplete = true;
|
|
141
|
-
if (nonMatchingResolve)
|
|
142
|
-
nonMatchingResolve();
|
|
143
|
-
}
|
|
144
|
-
})(),
|
|
145
|
-
(async () => {
|
|
146
|
-
try {
|
|
147
|
-
for await (const _ of nonMatchingIterator) {
|
|
148
|
-
// Consumer will iterate; we just need to wait for completion
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
finally {
|
|
152
|
-
handlerComplete = true;
|
|
153
|
-
if (matchingResolve)
|
|
154
|
-
matchingResolve();
|
|
155
|
-
}
|
|
156
|
-
})(),
|
|
157
|
-
]).catch(() => {
|
|
158
|
-
// Silently handle any errors to avoid unhandled rejection warnings
|
|
159
|
-
});
|
|
160
136
|
return [matchingIterator, nonMatchingIterator];
|
|
161
137
|
}
|
|
162
138
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-operators.js","sourceRoot":"","sources":["../src/event-operators.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW,CAC1B,OAAkC,EAClC,IAAY;IAEZ,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,KAAK,SAAS,CAAC;QACtB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAElB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;gBACjB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB,CAAC;QACF,CAAC;QAED,gDAAgD;QAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,eAAe,CAC9B,OAAkC,EAClC,SAAqC;IAErC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,IAAI,eAAyC,CAAC;IAC9C,IAAI,kBAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"event-operators.js","sourceRoot":"","sources":["../src/event-operators.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,11 @@ export declare function ThrottleEvents<TObject extends object = object, TEvent e
|
|
|
65
65
|
* @param fns - Transform functions to apply in sequence
|
|
66
66
|
* @returns AsyncIterableIterator of transformed results
|
|
67
67
|
*
|
|
68
|
+
* @remarks
|
|
69
|
+
* Due to the underlying Pipe utility from @pawells/typescript-common accepting `(arg: any) => any`,
|
|
70
|
+
* the transform functions must use implicit typing or explicit any casts. The first function
|
|
71
|
+
* receives the event, and subsequent functions receive the output of the previous function.
|
|
72
|
+
*
|
|
68
73
|
* @example
|
|
69
74
|
* ```typescript
|
|
70
75
|
* interface MessageEvent extends TEventData {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-pipeline.d.ts","sourceRoot":"","sources":["../src/event-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,UAAU,GAAG,UAAU,EACrG,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,EAAE,EAAE,MAAM,GACR,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"event-pipeline.d.ts","sourceRoot":"","sources":["../src/event-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,UAAU,GAAG,UAAU,EACrG,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,EAAE,EAAE,MAAM,GACR,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAS/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,UAAU,GAAG,UAAU,EACrG,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,EAAE,EAAE,MAAM,GACR,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAS/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,UAAU,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,GAAG,GAAG,EAC/E,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAClC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,GAC5B,qBAAqB,CAAC,OAAO,CAAC,CAahC"}
|
package/build/event-pipeline.js
CHANGED
|
@@ -29,7 +29,9 @@ import { EventHandler } from './handler.js';
|
|
|
29
29
|
export function DebounceEvents(handler, ms) {
|
|
30
30
|
const debouncedHandler = new EventHandler(handler.Name);
|
|
31
31
|
const debouncedTrigger = Debounce((event) => {
|
|
32
|
-
|
|
32
|
+
// Extract payload from the event object before triggering to avoid double-wrapping
|
|
33
|
+
const payload = event[handler.Name];
|
|
34
|
+
debouncedHandler.Trigger(payload);
|
|
33
35
|
}, ms);
|
|
34
36
|
handler.Subscribe((event) => debouncedTrigger(event));
|
|
35
37
|
return debouncedHandler;
|
|
@@ -63,7 +65,9 @@ export function DebounceEvents(handler, ms) {
|
|
|
63
65
|
export function ThrottleEvents(handler, ms) {
|
|
64
66
|
const throttledHandler = new EventHandler(handler.Name);
|
|
65
67
|
const throttledTrigger = Throttle((event) => {
|
|
66
|
-
|
|
68
|
+
// Extract payload from the event object before triggering to avoid double-wrapping
|
|
69
|
+
const payload = event[handler.Name];
|
|
70
|
+
throttledHandler.Trigger(payload);
|
|
67
71
|
}, ms);
|
|
68
72
|
handler.Subscribe((event) => throttledTrigger(event));
|
|
69
73
|
return throttledHandler;
|
|
@@ -79,6 +83,11 @@ export function ThrottleEvents(handler, ms) {
|
|
|
79
83
|
* @param fns - Transform functions to apply in sequence
|
|
80
84
|
* @returns AsyncIterableIterator of transformed results
|
|
81
85
|
*
|
|
86
|
+
* @remarks
|
|
87
|
+
* Due to the underlying Pipe utility from @pawells/typescript-common accepting `(arg: any) => any`,
|
|
88
|
+
* the transform functions must use implicit typing or explicit any casts. The first function
|
|
89
|
+
* receives the event, and subsequent functions receive the output of the previous function.
|
|
90
|
+
*
|
|
82
91
|
* @example
|
|
83
92
|
* ```typescript
|
|
84
93
|
* interface MessageEvent extends TEventData {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-pipeline.js","sourceRoot":"","sources":["../src/event-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,cAAc,CAC7B,OAAsC,EACtC,EAAU;IAEV,MAAM,gBAAgB,GAAG,IAAI,YAAY,CAAkB,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,KAAa,EAAE,EAAE;QACnD,gBAAgB,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"event-pipeline.js","sourceRoot":"","sources":["../src/event-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,cAAc,CAC7B,OAAsC,EACtC,EAAU;IAEV,MAAM,gBAAgB,GAAG,IAAI,YAAY,CAAkB,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,KAAa,EAAE,EAAE;QACnD,mFAAmF;QACnF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAoB,CAAY,CAAC;QAC/D,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,cAAc,CAC7B,OAAsC,EACtC,EAAU;IAEV,MAAM,gBAAgB,GAAG,IAAI,YAAY,CAAkB,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,KAAa,EAAE,EAAE;QACnD,mFAAmF;QACnF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAoB,CAAY,CAAC;QAC/D,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,UAAU,CACzB,OAAkC,EAClC,GAAG,GAA2B;IAE9B,OAAO,CAAC,KAAK,SAAS,CAAC;QACtB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBACnC,MAAM,KAAuB,CAAC;YAC/B,CAAC;YACD,OAAO;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAI,GAAuB,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YACnC,MAAM,QAAQ,CAAC,KAAK,CAAY,CAAC;QAClC,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;AACN,CAAC"}
|
package/build/handler.d.ts
CHANGED
|
@@ -8,6 +8,10 @@ import { TEventFunction } from './event-function.js';
|
|
|
8
8
|
* @template TObject - The type of data objects that can be triggered as events
|
|
9
9
|
* @template TEvent - The event data type extending TEventData that will be received by subscribers
|
|
10
10
|
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* **Error Handling:** Subscribe-based handlers log errors to console.error and stop receiving events.
|
|
13
|
+
* For in-band error propagation, use GetAsyncIterableIterator() instead, which throws on errors.
|
|
14
|
+
*
|
|
11
15
|
* @example
|
|
12
16
|
* ```typescript
|
|
13
17
|
* interface MessageData {
|
|
@@ -33,7 +37,7 @@ import { TEventFunction } from './event-function.js';
|
|
|
33
37
|
* // Unsubscribe
|
|
34
38
|
* handler.Unsubscribe(subscription);
|
|
35
39
|
*
|
|
36
|
-
* // Async iteration
|
|
40
|
+
* // Async iteration (propagates errors)
|
|
37
41
|
* for await (const event of handler.GetAsyncIterableIterator()) {
|
|
38
42
|
* console.log('Async event:', event.MessageReceived.text);
|
|
39
43
|
* break; // Important: break to avoid infinite loop
|
|
@@ -49,8 +53,8 @@ export declare class EventHandler<TObject extends object = object, TEvent extend
|
|
|
49
53
|
/**
|
|
50
54
|
* Creates a new EventHandler instance.
|
|
51
55
|
*
|
|
52
|
-
* @param name - The name of the event type to handle. Cannot be empty.
|
|
53
|
-
* @throws {Error} 'Event Name is Empty' - When the provided name is an empty string
|
|
56
|
+
* @param name - The name of the event type to handle. Cannot be empty or whitespace-only.
|
|
57
|
+
* @throws {Error} 'Event Name is Empty' - When the provided name is an empty string or contains only whitespace
|
|
54
58
|
*
|
|
55
59
|
* @example
|
|
56
60
|
* ```typescript
|
package/build/handler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,UAAU,GAAG,UAAU;IAChG;;;OAGG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;;;;;;;;OAWG;gBACS,IAAI,EAAE,MAAM;IAKxB,oEAAoE;IACpE,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAmC;IAEtF;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAEhE,uEAAuE;IACvE,OAAO,CAAC,OAAO,CAAa;IAE5B,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IAEnE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACY,wBAAwB,IAAI,qBAAqB,CAAC,MAAM,CAAC;IAsExE;;;;;;;;;;;;;;;;;;OAkBG;IACI,gBAAgB,IAAI,aAAa,CAAC,MAAM,CAAC;IAIhD;;;;;;;;;;;OAWG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC;IAI9D;;;;;;;;;;;;;;;;;OAiBG;IACI,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACI,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM;IA6BzD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAW9C;;;;;;;;;;OAUG;IACI,OAAO,IAAI,IAAI;IAatB;;;;;;;;;;;;OAYG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;;;;;;;;;;;;;OAcG;IACI,wBAAwB,IAAI,MAAM,EAAE;CAG3C"}
|
package/build/handler.js
CHANGED
|
@@ -6,6 +6,10 @@ import { Subject } from 'rxjs';
|
|
|
6
6
|
* @template TObject - The type of data objects that can be triggered as events
|
|
7
7
|
* @template TEvent - The event data type extending TEventData that will be received by subscribers
|
|
8
8
|
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* **Error Handling:** Subscribe-based handlers log errors to console.error and stop receiving events.
|
|
11
|
+
* For in-band error propagation, use GetAsyncIterableIterator() instead, which throws on errors.
|
|
12
|
+
*
|
|
9
13
|
* @example
|
|
10
14
|
* ```typescript
|
|
11
15
|
* interface MessageData {
|
|
@@ -31,7 +35,7 @@ import { Subject } from 'rxjs';
|
|
|
31
35
|
* // Unsubscribe
|
|
32
36
|
* handler.Unsubscribe(subscription);
|
|
33
37
|
*
|
|
34
|
-
* // Async iteration
|
|
38
|
+
* // Async iteration (propagates errors)
|
|
35
39
|
* for await (const event of handler.GetAsyncIterableIterator()) {
|
|
36
40
|
* console.log('Async event:', event.MessageReceived.text);
|
|
37
41
|
* break; // Important: break to avoid infinite loop
|
|
@@ -47,8 +51,8 @@ export class EventHandler {
|
|
|
47
51
|
/**
|
|
48
52
|
* Creates a new EventHandler instance.
|
|
49
53
|
*
|
|
50
|
-
* @param name - The name of the event type to handle. Cannot be empty.
|
|
51
|
-
* @throws {Error} 'Event Name is Empty' - When the provided name is an empty string
|
|
54
|
+
* @param name - The name of the event type to handle. Cannot be empty or whitespace-only.
|
|
55
|
+
* @throws {Error} 'Event Name is Empty' - When the provided name is an empty string or contains only whitespace
|
|
52
56
|
*
|
|
53
57
|
* @example
|
|
54
58
|
* ```typescript
|
|
@@ -58,7 +62,7 @@ export class EventHandler {
|
|
|
58
62
|
*/
|
|
59
63
|
constructor(name) {
|
|
60
64
|
this.Name = name;
|
|
61
|
-
if (this.Name.length === 0)
|
|
65
|
+
if (this.Name.length === 0 || !this.Name.trim())
|
|
62
66
|
throw new Error('Event Name is Empty');
|
|
63
67
|
}
|
|
64
68
|
/** Internal map storing active subscriptions by their unique IDs */
|
package/build/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,MAAM,CAAC;AAI7C
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
|
package/build/nestjs-pubsub.d.ts
CHANGED
|
@@ -138,7 +138,7 @@ export declare class EventHandlerPubSub implements IPubSubEngine {
|
|
|
138
138
|
*
|
|
139
139
|
* @template T - The type of values yielded
|
|
140
140
|
* @param triggers - Array of trigger names
|
|
141
|
-
* @returns Merged async iterator
|
|
141
|
+
* @returns Merged async iterator that yields events from all triggers concurrently
|
|
142
142
|
*/
|
|
143
143
|
private _mergeAsyncIterators;
|
|
144
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nestjs-pubsub.d.ts","sourceRoot":"","sources":["../src/nestjs-pubsub.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D;;;;;;OAMG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtH;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;;;;OAKG;IACH,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAC9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACvD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkD;IAE5E;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4D;IAE3F;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAK;IAEhC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;;OAKG;IACU,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE;;;;;;;OAOG;IACU,SAAS,CACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,EACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC;IAYlB;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASvC;;;;;;;;;;;;;;;;OAgBG;IACI,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAoBpF;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"nestjs-pubsub.d.ts","sourceRoot":"","sources":["../src/nestjs-pubsub.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D;;;;;;OAMG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtH;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;;;;OAKG;IACH,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAC9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACvD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkD;IAE5E;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4D;IAE3F;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAK;IAEhC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;;OAKG;IACU,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE;;;;;;;OAOG;IACU,SAAS,CACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,EACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC;IAYlB;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASvC;;;;;;;;;;;;;;;;OAgBG;IACI,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAoBpF;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;CA6C5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC3B,eAAe,EAAE,MAAM,qBAAqB,CAAC,CAAC,CAAC,EAC/C,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAClD,qBAAqB,CAAC,CAAC,CAAC,CAa1B"}
|
package/build/nestjs-pubsub.js
CHANGED
|
@@ -144,25 +144,44 @@ export class EventHandlerPubSub {
|
|
|
144
144
|
*
|
|
145
145
|
* @template T - The type of values yielded
|
|
146
146
|
* @param triggers - Array of trigger names
|
|
147
|
-
* @returns Merged async iterator
|
|
147
|
+
* @returns Merged async iterator that yields events from all triggers concurrently
|
|
148
148
|
*/
|
|
149
149
|
_mergeAsyncIterators(triggers) {
|
|
150
150
|
const handlers = triggers.map((trigger) => this._getOrCreateHandler(trigger));
|
|
151
|
-
const self = this;
|
|
152
151
|
return (async function* () {
|
|
153
152
|
const iterators = handlers.map((h) => h.GetAsyncIterableIterator());
|
|
154
|
-
|
|
155
|
-
// Use Promise.race to get the first event from any handler
|
|
156
|
-
// This is a simplified implementation; production systems may want more sophisticated merging
|
|
153
|
+
let activeIterators = iterators.length;
|
|
157
154
|
try {
|
|
158
|
-
|
|
159
|
-
|
|
155
|
+
// Create promises for each iterator's next() call
|
|
156
|
+
const createNextPromises = () => {
|
|
157
|
+
return iterators.map((iter) => iter.next()
|
|
158
|
+
.then((result) => {
|
|
159
|
+
if (result.done) {
|
|
160
|
+
activeIterators--;
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
})
|
|
164
|
+
.catch((err) => {
|
|
165
|
+
activeIterators--;
|
|
166
|
+
throw err;
|
|
167
|
+
}));
|
|
168
|
+
};
|
|
169
|
+
let promises = createNextPromises();
|
|
170
|
+
while (activeIterators > 0) {
|
|
171
|
+
const result = await Promise.race(promises);
|
|
172
|
+
if (!result.done) {
|
|
173
|
+
yield result.value;
|
|
174
|
+
promises = createNextPromises();
|
|
175
|
+
}
|
|
160
176
|
}
|
|
161
177
|
}
|
|
162
178
|
finally {
|
|
163
|
-
// Clean up
|
|
164
|
-
|
|
165
|
-
|
|
179
|
+
// Clean up all iterators
|
|
180
|
+
for (const iterator of iterators) {
|
|
181
|
+
if (typeof iterator.return === 'function') {
|
|
182
|
+
await iterator.return?.();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
166
185
|
}
|
|
167
186
|
})();
|
|
168
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nestjs-pubsub.js","sourceRoot":"","sources":["../src/nestjs-pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA0C5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,kBAAkB;IAC9B;;;OAGG;IACc,SAAS,GAAwC,IAAI,GAAG,EAAE,CAAC;IAE5E;;;OAGG;IACc,cAAc,GAAkD,IAAI,GAAG,EAAE,CAAC;IAE3F;;OAEG;IACK,mBAAmB,GAAG,CAAC,CAAC;IAEhC;;;;;OAKG;IACK,mBAAmB,CAAC,WAAmB;QAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,OAAY;QACrD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACtD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,SAAS,CACrB,WAAmB,EACnB,SAAiC,EACjC,QAAkC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAElD,0DAA0D;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAEhE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,KAAa;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,YAAY,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC;YAC7C,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,aAAa,CAAU,QAA2B;QACxD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAErE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,mDAAmD;YACnD,OAAO,CAAC,KAAK,SAAS,CAAC;gBACtB,iBAAiB;YAClB,CAAC,CAAC,EAAE,CAAC;QACN,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,6DAA6D;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,OAAO,CAAC,wBAAwB,EAA8B,CAAC;QACvE,CAAC;QAED,wDAAwD;QACxD,OAAO,IAAI,CAAC,oBAAoB,CAAI,YAAY,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;OAOG;IACK,oBAAoB,CAAU,QAAkB;QACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QAE9E,
|
|
1
|
+
{"version":3,"file":"nestjs-pubsub.js","sourceRoot":"","sources":["../src/nestjs-pubsub.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pawells/rxjs-events",
|
|
3
3
|
"displayName": "RxJS Events",
|
|
4
|
-
"version": "1.0
|
|
4
|
+
"version": "1.1.0",
|
|
5
5
|
"description": "RxJS-based event handling library with reactive observables and async event streams.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./build/index.js",
|
|
@@ -23,26 +23,27 @@
|
|
|
23
23
|
"test": "vitest run",
|
|
24
24
|
"test:ui": "vitest --ui",
|
|
25
25
|
"test:coverage": "vitest --coverage",
|
|
26
|
+
"pipeline": "yarn typecheck && yarn lint && yarn test && yarn build",
|
|
26
27
|
"prepublishOnly": "npm run build",
|
|
27
28
|
"prepare": "husky"
|
|
28
29
|
},
|
|
29
30
|
"dependencies": {
|
|
30
|
-
"@pawells/typescript-common": "^1.1
|
|
31
|
+
"@pawells/typescript-common": "^1.4.1",
|
|
31
32
|
"rxjs": "^7.8.2"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
35
|
"@eslint/js": "^10.0.1",
|
|
35
|
-
"@stylistic/eslint-plugin": "^5.
|
|
36
|
-
"@types/node": "^25.3.
|
|
36
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
37
|
+
"@types/node": "^25.3.3",
|
|
37
38
|
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
|
38
39
|
"@typescript-eslint/parser": "^8.56.1",
|
|
39
40
|
"@vitest/coverage-v8": "^4.0.18",
|
|
40
41
|
"@vitest/ui": "^4.0.18",
|
|
41
|
-
"eslint": "^10.0.
|
|
42
|
+
"eslint": "^10.0.3",
|
|
42
43
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
43
44
|
"eslint-plugin-import": "^2.31.0",
|
|
44
45
|
"eslint-plugin-unused-imports": "^4.0.0",
|
|
45
|
-
"globals": "^17.
|
|
46
|
+
"globals": "^17.4.0",
|
|
46
47
|
"husky": "^9.1.7",
|
|
47
48
|
"typescript": "^5.3.3",
|
|
48
49
|
"vitest": "^4.0.18"
|
|
@@ -67,7 +68,7 @@
|
|
|
67
68
|
},
|
|
68
69
|
"homepage": "https://github.com/PhillipAWells/rxjs-events#readme",
|
|
69
70
|
"engines": {
|
|
70
|
-
"node": ">=
|
|
71
|
+
"node": ">=22.0.0"
|
|
71
72
|
},
|
|
72
73
|
"packageManager": "yarn@4.12.0",
|
|
73
74
|
"files": [
|