@crossdelta/cloudevents 0.5.0 → 0.5.1
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
CHANGED
|
@@ -58,21 +58,20 @@ export default handleEvent(
|
|
|
58
58
|
**2. Ensure stream exists** (once, during setup):
|
|
59
59
|
|
|
60
60
|
```typescript
|
|
61
|
-
import {
|
|
61
|
+
import { ensureJetStreams } from '@crossdelta/cloudevents'
|
|
62
62
|
|
|
63
|
-
await
|
|
64
|
-
stream: 'ORDERS',
|
|
65
|
-
subjects: ['orders.*'],
|
|
63
|
+
await ensureJetStreams({
|
|
64
|
+
streams: [{ stream: 'ORDERS', subjects: ['orders.*'] }],
|
|
66
65
|
})
|
|
67
66
|
```
|
|
68
67
|
|
|
69
68
|
**3. Start consuming:**
|
|
70
69
|
|
|
71
70
|
```typescript
|
|
72
|
-
import {
|
|
71
|
+
import { consumeJetStreams } from '@crossdelta/cloudevents'
|
|
73
72
|
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
consumeJetStreams({
|
|
74
|
+
streams: ['ORDERS'],
|
|
76
75
|
consumer: 'my-service',
|
|
77
76
|
discover: './src/events/**/*.event.ts',
|
|
78
77
|
})
|
|
@@ -162,27 +161,32 @@ await publish('orders.created', orderData)
|
|
|
162
161
|
Create the stream once during infrastructure setup:
|
|
163
162
|
|
|
164
163
|
```typescript
|
|
165
|
-
import {
|
|
166
|
-
|
|
167
|
-
await
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
164
|
+
import { ensureJetStreams } from '@crossdelta/cloudevents'
|
|
165
|
+
|
|
166
|
+
await ensureJetStreams({
|
|
167
|
+
streams: [
|
|
168
|
+
{
|
|
169
|
+
stream: 'ORDERS',
|
|
170
|
+
subjects: ['orders.>'],
|
|
171
|
+
config: {
|
|
172
|
+
maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days retention
|
|
173
|
+
replicas: 3, // For HA
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
],
|
|
174
177
|
})
|
|
175
178
|
```
|
|
176
179
|
|
|
177
180
|
### Consuming
|
|
178
181
|
|
|
179
182
|
```typescript
|
|
183
|
+
import { consumeJetStreams } from '@crossdelta/cloudevents'
|
|
184
|
+
|
|
180
185
|
// JetStream (recommended) — persistent, retries, exactly-once
|
|
181
|
-
|
|
182
|
-
|
|
186
|
+
consumeJetStreams({
|
|
187
|
+
streams: ['ORDERS'],
|
|
183
188
|
consumer: 'billing',
|
|
184
189
|
discover: './src/events/**/*.event.ts',
|
|
185
|
-
filterSubjects: ['orders.created', 'orders.updated'], // Optional: filter at consumer level
|
|
186
190
|
})
|
|
187
191
|
|
|
188
192
|
// Core NATS — fire-and-forget, simpler
|
|
@@ -207,28 +211,33 @@ NATS_PASSWORD=mypass # optional
|
|
|
207
211
|
### Stream Options
|
|
208
212
|
|
|
209
213
|
```typescript
|
|
210
|
-
await
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
214
|
+
await ensureJetStreams({
|
|
215
|
+
streams: [
|
|
216
|
+
{
|
|
217
|
+
// Required
|
|
218
|
+
stream: 'ORDERS',
|
|
219
|
+
subjects: ['orders.>'],
|
|
220
|
+
|
|
221
|
+
// Optional
|
|
222
|
+
config: {
|
|
223
|
+
maxAge: 7 * 24 * 60 * 60 * 1000, // Message retention (ms)
|
|
224
|
+
replicas: 1, // Replication factor
|
|
225
|
+
storage: 'file', // 'file' or 'memory'
|
|
226
|
+
retention: 'limits', // 'limits', 'interest', or 'workqueue'
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
],
|
|
215
230
|
// Optional
|
|
216
231
|
servers: 'nats://localhost:4222',
|
|
217
|
-
config: {
|
|
218
|
-
maxAge: 7 * 24 * 60 * 60 * 1000, // Message retention (ms)
|
|
219
|
-
replicas: 1, // Replication factor
|
|
220
|
-
storage: 'file', // 'file' or 'memory'
|
|
221
|
-
retention: 'limits', // 'limits', 'interest', or 'workqueue'
|
|
222
|
-
}
|
|
223
232
|
})
|
|
224
233
|
```
|
|
225
234
|
|
|
226
235
|
### Consumer Options
|
|
227
236
|
|
|
228
237
|
```typescript
|
|
229
|
-
|
|
238
|
+
consumeJetStreams({
|
|
230
239
|
// Required
|
|
231
|
-
|
|
240
|
+
streams: ['ORDERS'],
|
|
232
241
|
consumer: 'my-service',
|
|
233
242
|
discover: './src/events/**/*.event.ts',
|
|
234
243
|
|
|
@@ -375,8 +384,9 @@ app.use('/events', cloudEvents({ discover: 'src/events/**/*.event.ts' }))
|
|
|
375
384
|
|----------|---------|
|
|
376
385
|
| `handleEvent(options, handler)` | Create a handler |
|
|
377
386
|
| `createContract(options)` | Create shared event contract |
|
|
378
|
-
| `
|
|
379
|
-
| `
|
|
387
|
+
| `ensureJetStreams(options)` | Create/update JetStream streams (preferred) |
|
|
388
|
+
| `consumeJetStreams(options)` | Consume from multiple streams (preferred) |
|
|
389
|
+
| `consumeJetStreamEvents(options)` | Consume single stream (legacy) |
|
|
380
390
|
| `consumeNatsEvents(options)` | Consume fire-and-forget |
|
|
381
391
|
| `publish(type, data)` | Publish event |
|
|
382
392
|
|
package/dist/index.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export { clearHandlerCache, cloudEvents } from './middlewares';
|
|
|
6
6
|
export { checkAndMarkProcessed, createInMemoryIdempotencyStore, getDefaultIdempotencyStore, resetDefaultIdempotencyStore, } from './processing/idempotency';
|
|
7
7
|
export * from './publishing';
|
|
8
8
|
export type { JetStreamConsumerOptions, JetStreamStreamOptions, JetStreamStreamsConsumerOptions, JetStreamStreamsOptions, StreamConfig, StreamDefinition, } from './transports/nats';
|
|
9
|
-
export { consumeJetStreamEvents, consumeJetStreamStreams, consumeNatsEvents, ensureJetStreamStream, ensureJetStreamStreams, } from './transports/nats';
|
|
9
|
+
export { consumeJetStreamEvents, consumeJetStreamStreams, consumeJetStreams, consumeNatsEvents, ensureJetStreamStream, ensureJetStreamStreams, ensureJetStreams, } from './transports/nats';
|
package/dist/index.js
CHANGED
|
@@ -3,4 +3,4 @@ export { createContract, eventSchema, extractTypeFromSchema, handleEvent } from
|
|
|
3
3
|
export { clearHandlerCache, cloudEvents } from './middlewares';
|
|
4
4
|
export { checkAndMarkProcessed, createInMemoryIdempotencyStore, getDefaultIdempotencyStore, resetDefaultIdempotencyStore, } from './processing/idempotency';
|
|
5
5
|
export * from './publishing';
|
|
6
|
-
export { consumeJetStreamEvents, consumeJetStreamStreams, consumeNatsEvents, ensureJetStreamStream, ensureJetStreamStreams, } from './transports/nats';
|
|
6
|
+
export { consumeJetStreamEvents, consumeJetStreamStreams, consumeJetStreams, consumeNatsEvents, ensureJetStreamStream, ensureJetStreamStreams, ensureJetStreams, } from './transports/nats';
|
|
@@ -205,3 +205,13 @@ export interface JetStreamStreamsConsumerOptions extends Pick<CloudEventsOptions
|
|
|
205
205
|
* ```
|
|
206
206
|
*/
|
|
207
207
|
export declare function consumeJetStreamStreams(options: JetStreamStreamsConsumerOptions): Promise<ConsumerMessages[]>;
|
|
208
|
+
/**
|
|
209
|
+
* Alias for ensureJetStreamStreams - shorter name
|
|
210
|
+
* @see ensureJetStreamStreams
|
|
211
|
+
*/
|
|
212
|
+
export declare const ensureJetStreams: typeof ensureJetStreamStreams;
|
|
213
|
+
/**
|
|
214
|
+
* Alias for consumeJetStreamStreams - shorter name
|
|
215
|
+
* @see consumeJetStreamStreams
|
|
216
|
+
*/
|
|
217
|
+
export declare const consumeJetStreams: typeof consumeJetStreamStreams;
|
|
@@ -355,3 +355,13 @@ export async function consumeJetStreamStreams(options) {
|
|
|
355
355
|
}
|
|
356
356
|
return allMessages;
|
|
357
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* Alias for ensureJetStreamStreams - shorter name
|
|
360
|
+
* @see ensureJetStreamStreams
|
|
361
|
+
*/
|
|
362
|
+
export const ensureJetStreams = ensureJetStreamStreams;
|
|
363
|
+
/**
|
|
364
|
+
* Alias for consumeJetStreamStreams - shorter name
|
|
365
|
+
* @see consumeJetStreamStreams
|
|
366
|
+
*/
|
|
367
|
+
export const consumeJetStreams = consumeJetStreamStreams;
|