@rotorsoft/act 0.29.1 → 0.30.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 +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/@types/act.d.ts +57 -16
- package/dist/@types/act.d.ts.map +1 -1
- package/dist/@types/types/ports.d.ts +10 -4
- package/dist/@types/types/ports.d.ts.map +1 -1
- package/dist/@types/types/reaction.d.ts +4 -1
- package/dist/@types/types/reaction.d.ts.map +1 -1
- package/dist/index.cjs +81 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +81 -20
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/@types/act.d.ts
CHANGED
|
@@ -151,24 +151,22 @@ export declare class Act<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
151
151
|
* }
|
|
152
152
|
* ```
|
|
153
153
|
*
|
|
154
|
-
* @example Reaction triggering another action
|
|
154
|
+
* @example Reaction triggering another action (reactingTo auto-injected)
|
|
155
155
|
* ```typescript
|
|
156
156
|
* const app = act()
|
|
157
157
|
* .withState(Order)
|
|
158
158
|
* .withState(Inventory)
|
|
159
159
|
* .on("OrderPlaced")
|
|
160
|
-
* .do(async (event,
|
|
161
|
-
* //
|
|
162
|
-
*
|
|
160
|
+
* .do(async function reduceInventory(event, _stream, app) {
|
|
161
|
+
* // Inside reaction handlers, reactingTo is auto-injected when omitted.
|
|
162
|
+
* // The triggering event is used by default, maintaining the correlation chain.
|
|
163
|
+
* await app.do(
|
|
163
164
|
* "reduceStock",
|
|
164
|
-
* {
|
|
165
|
-
*
|
|
166
|
-
* actor: event.meta.causation.action.actor
|
|
167
|
-
* },
|
|
168
|
-
* { amount: event.data.items.length },
|
|
169
|
-
* event // Pass event for correlation tracking
|
|
165
|
+
* { stream: "inventory-1", actor: { id: "sys", name: "system" } },
|
|
166
|
+
* { amount: event.data.items.length }
|
|
170
167
|
* );
|
|
171
|
-
*
|
|
168
|
+
* // To use a different correlation, pass reactingTo explicitly:
|
|
169
|
+
* // await app.do("reduceStock", target, payload, customEvent);
|
|
172
170
|
* })
|
|
173
171
|
* .to("inventory-1")
|
|
174
172
|
* .build();
|
|
@@ -311,6 +309,11 @@ export declare class Act<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
311
309
|
* This is called by the main `drain` loop after fetching new events.
|
|
312
310
|
* It handles reactions, supporting retries, blocking, and error handling.
|
|
313
311
|
*
|
|
312
|
+
* Each handler receives a scoped `IAct` proxy that auto-injects the
|
|
313
|
+
* triggering event as `reactingTo` when `do()` is called without it,
|
|
314
|
+
* maintaining correlation chains by default (#587). Handlers can still
|
|
315
|
+
* pass an explicit `reactingTo` to override this behavior.
|
|
316
|
+
*
|
|
314
317
|
* @internal
|
|
315
318
|
* @param lease The lease to handle
|
|
316
319
|
* @param payloads The reactions to handle
|
|
@@ -508,6 +511,40 @@ export declare class Act<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
508
511
|
* @see {@link settle}
|
|
509
512
|
*/
|
|
510
513
|
stop_settling(): void;
|
|
514
|
+
/**
|
|
515
|
+
* Reset reaction stream watermarks and request a drain on the next
|
|
516
|
+
* `drain()` / `settle()` cycle.
|
|
517
|
+
*
|
|
518
|
+
* Use this to replay events through projections (or other reaction targets)
|
|
519
|
+
* after changing handler logic. Equivalent to calling `store().reset(streams)`
|
|
520
|
+
* directly, but also raises the orchestrator's internal "needs drain" flag —
|
|
521
|
+
* `store().reset(...)` alone leaves the flag untouched, so a settled app
|
|
522
|
+
* would short-circuit and skip the replay.
|
|
523
|
+
*
|
|
524
|
+
* Pair with `app.settle()` (or a single `app.drain()` for small streams).
|
|
525
|
+
* `settle()` loops correlate→drain until no progress is made, so one call
|
|
526
|
+
* fully catches up paginated streams without forcing callers to roll
|
|
527
|
+
* their own loop.
|
|
528
|
+
*
|
|
529
|
+
* @param streams - Reaction target streams (e.g., projection names) to reset
|
|
530
|
+
* @returns Count of streams that were actually reset
|
|
531
|
+
*
|
|
532
|
+
* @example Rebuild a projection (production)
|
|
533
|
+
* ```typescript
|
|
534
|
+
* await app.reset(["my-projection"]);
|
|
535
|
+
* app.settle({ eventLimit: 1000 }); // emits "settled" when fully replayed
|
|
536
|
+
* ```
|
|
537
|
+
*
|
|
538
|
+
* @example Rebuild a projection (tests / scripts)
|
|
539
|
+
* ```typescript
|
|
540
|
+
* await app.reset(["my-projection"]);
|
|
541
|
+
* await app.drain({ eventLimit: 1000 }); // small streams: one pass is enough
|
|
542
|
+
* ```
|
|
543
|
+
*
|
|
544
|
+
* @see {@link Store.reset} for the underlying store primitive
|
|
545
|
+
* @see {@link settle} for the debounced full-catch-up loop
|
|
546
|
+
*/
|
|
547
|
+
reset(streams: string[]): Promise<number>;
|
|
511
548
|
/**
|
|
512
549
|
* Close the books — guard, archive, truncate, and optionally restart streams.
|
|
513
550
|
*
|
|
@@ -545,15 +582,19 @@ export declare class Act<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
545
582
|
/**
|
|
546
583
|
* Debounced, non-blocking correlate→drain cycle.
|
|
547
584
|
*
|
|
548
|
-
* Call this after `app.do()` to schedule a background
|
|
549
|
-
* calls within the debounce window are coalesced
|
|
550
|
-
* correlate→drain in a loop until
|
|
551
|
-
*
|
|
585
|
+
* Call this after `app.do()` (or `app.reset()`) to schedule a background
|
|
586
|
+
* drain. Multiple rapid calls within the debounce window are coalesced
|
|
587
|
+
* into a single cycle. Runs correlate→drain in a loop until a pass makes
|
|
588
|
+
* no progress — no new subscriptions, no acks, no blocks — then emits
|
|
589
|
+
* the `"settled"` lifecycle event. This means a single `settle()` call
|
|
590
|
+
* fully catches up paginated streams (e.g. after `reset()` on a long
|
|
591
|
+
* projection) without forcing callers to loop.
|
|
552
592
|
*
|
|
553
593
|
* @param options - Settle configuration options
|
|
554
594
|
* @param options.debounceMs - Debounce window in milliseconds (default: 10)
|
|
555
595
|
* @param options.correlate - Query filter for correlation scans (default: `{ after: -1, limit: 100 }`)
|
|
556
|
-
* @param options.maxPasses -
|
|
596
|
+
* @param options.maxPasses - Cap on correlate→drain loops (default: `Infinity`).
|
|
597
|
+
* Early-exit on no-progress means the cap only matters in pathological cases.
|
|
557
598
|
* @param options.streamLimit - Maximum streams per drain cycle (default: 10)
|
|
558
599
|
* @param options.eventLimit - Maximum events per stream (default: 10)
|
|
559
600
|
* @param options.leaseMillis - Lease duration in milliseconds (default: 10000)
|
package/dist/@types/act.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"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"}
|
|
@@ -300,18 +300,24 @@ export interface Store extends Disposable {
|
|
|
300
300
|
* for replay from the beginning. Also clears retry, blocked, error,
|
|
301
301
|
* and lease state so the streams can be claimed immediately.
|
|
302
302
|
*
|
|
303
|
-
*
|
|
303
|
+
* **Prefer `Act.reset()` over calling this directly.** This primitive
|
|
304
|
+
* only resets the store; it does not raise the orchestrator's internal
|
|
305
|
+
* "needs drain" flag, so a settled `Act` instance will short-circuit and
|
|
306
|
+
* skip the replay. `Act.reset()` wraps this and arms the flag.
|
|
304
307
|
*
|
|
305
308
|
* @param streams - Stream names to reset
|
|
306
309
|
* @returns Count of streams that were actually reset
|
|
307
310
|
*
|
|
308
311
|
* @example
|
|
309
312
|
* ```typescript
|
|
310
|
-
*
|
|
311
|
-
*
|
|
313
|
+
* // Recommended
|
|
314
|
+
* await app.reset(["my-projection"]);
|
|
315
|
+
*
|
|
316
|
+
* // Low-level (does NOT trigger replay on settled apps)
|
|
317
|
+
* await store().reset(["my-projection"]);
|
|
312
318
|
* ```
|
|
313
319
|
*
|
|
314
|
-
* @see {@link Act.
|
|
320
|
+
* @see {@link Act.reset} for the high-level rebuild API
|
|
315
321
|
*/
|
|
316
322
|
reset: (streams: string[]) => Promise<number>;
|
|
317
323
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../src/types/ports.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACR,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAM/C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;CAClD;AAMD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,GAAG,CAC9B,MAAM,EACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAA;CAAE,CAClE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,WAAW,KAAM,SAAQ,UAAU;IACvC;;;;;;;;;;;;;OAaG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;;;;;;;;;;;OAaG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,MAAM,EAAE,CAAC,CAAC,SAAS,OAAO,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAC3B,IAAI,EAAE,SAAS,EACf,eAAe,CAAC,EAAE,MAAM,KACrB,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,EAAE,CAAC,CAAC,SAAS,OAAO,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,EAChD,KAAK,CAAC,EAAE,KAAK,KACV,OAAO,CAAC,MAAM,CAAC,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,KAAK,EAAE,CACL,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,EAAE,CACT,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,KAChD,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAExD;;;;;;;;;;;;;;;;;OAiBG;IACH,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,KAAK,EAAE,CACL,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,KACrC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAE/C
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../src/types/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -266,7 +266,10 @@ export type Drain<TEvents extends Schemas> = {
|
|
|
266
266
|
*
|
|
267
267
|
* @property debounceMs - Debounce window in milliseconds (default: 10)
|
|
268
268
|
* @property correlate - Query filter for correlation scans (default: `{ after: -1, limit: 100 }`)
|
|
269
|
-
* @property maxPasses -
|
|
269
|
+
* @property maxPasses - Cap on correlate→drain loops (default: `Infinity`).
|
|
270
|
+
* Settle exits early as soon as a pass makes no progress (no new
|
|
271
|
+
* subscriptions, no acks, no blocks), so the cap only matters in
|
|
272
|
+
* pathological cases.
|
|
270
273
|
*/
|
|
271
274
|
export type SettleOptions = DrainOptions & {
|
|
272
275
|
readonly debounceMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reaction.d.ts","sourceRoot":"","sources":["../../../src/types/reaction.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reaction.d.ts","sourceRoot":"","sources":["../../../src/types/reaction.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1105,24 +1105,22 @@ var Act = class {
|
|
|
1105
1105
|
* }
|
|
1106
1106
|
* ```
|
|
1107
1107
|
*
|
|
1108
|
-
* @example Reaction triggering another action
|
|
1108
|
+
* @example Reaction triggering another action (reactingTo auto-injected)
|
|
1109
1109
|
* ```typescript
|
|
1110
1110
|
* const app = act()
|
|
1111
1111
|
* .withState(Order)
|
|
1112
1112
|
* .withState(Inventory)
|
|
1113
1113
|
* .on("OrderPlaced")
|
|
1114
|
-
* .do(async (event,
|
|
1115
|
-
* //
|
|
1116
|
-
*
|
|
1114
|
+
* .do(async function reduceInventory(event, _stream, app) {
|
|
1115
|
+
* // Inside reaction handlers, reactingTo is auto-injected when omitted.
|
|
1116
|
+
* // The triggering event is used by default, maintaining the correlation chain.
|
|
1117
|
+
* await app.do(
|
|
1117
1118
|
* "reduceStock",
|
|
1118
|
-
* {
|
|
1119
|
-
*
|
|
1120
|
-
* actor: event.meta.causation.action.actor
|
|
1121
|
-
* },
|
|
1122
|
-
* { amount: event.data.items.length },
|
|
1123
|
-
* event // Pass event for correlation tracking
|
|
1119
|
+
* { stream: "inventory-1", actor: { id: "sys", name: "system" } },
|
|
1120
|
+
* { amount: event.data.items.length }
|
|
1124
1121
|
* );
|
|
1125
|
-
*
|
|
1122
|
+
* // To use a different correlation, pass reactingTo explicitly:
|
|
1123
|
+
* // await app.do("reduceStock", target, payload, customEvent);
|
|
1126
1124
|
* })
|
|
1127
1125
|
* .to("inventory-1")
|
|
1128
1126
|
* .build();
|
|
@@ -1258,6 +1256,11 @@ var Act = class {
|
|
|
1258
1256
|
* This is called by the main `drain` loop after fetching new events.
|
|
1259
1257
|
* It handles reactions, supporting retries, blocking, and error handling.
|
|
1260
1258
|
*
|
|
1259
|
+
* Each handler receives a scoped `IAct` proxy that auto-injects the
|
|
1260
|
+
* triggering event as `reactingTo` when `do()` is called without it,
|
|
1261
|
+
* maintaining correlation chains by default (#587). Handlers can still
|
|
1262
|
+
* pass an explicit `reactingTo` to override this behavior.
|
|
1263
|
+
*
|
|
1261
1264
|
* @internal
|
|
1262
1265
|
* @param lease The lease to handle
|
|
1263
1266
|
* @param payloads The reactions to handle
|
|
@@ -1268,10 +1271,24 @@ var Act = class {
|
|
|
1268
1271
|
const stream = lease.stream;
|
|
1269
1272
|
let at = payloads.at(0).event.id, handled = 0;
|
|
1270
1273
|
lease.retry > 0 && logger3.warn(`Retrying ${stream}@${at} (${lease.retry}).`);
|
|
1274
|
+
const doAction = this.do.bind(this);
|
|
1275
|
+
const scopedApp = {
|
|
1276
|
+
do: doAction,
|
|
1277
|
+
load: this.load.bind(this),
|
|
1278
|
+
query: this.query.bind(this),
|
|
1279
|
+
query_array: this.query_array.bind(this)
|
|
1280
|
+
};
|
|
1271
1281
|
for (const payload of payloads) {
|
|
1272
1282
|
const { event, handler, options } = payload;
|
|
1283
|
+
scopedApp.do = (action2, target, payload2, reactingTo, skipValidation) => doAction(
|
|
1284
|
+
action2,
|
|
1285
|
+
target,
|
|
1286
|
+
payload2,
|
|
1287
|
+
reactingTo ?? event,
|
|
1288
|
+
skipValidation
|
|
1289
|
+
);
|
|
1273
1290
|
try {
|
|
1274
|
-
await handler(event, stream,
|
|
1291
|
+
await handler(event, stream, scopedApp);
|
|
1275
1292
|
at = event.id;
|
|
1276
1293
|
handled++;
|
|
1277
1294
|
} catch (error) {
|
|
@@ -1677,6 +1694,46 @@ var Act = class {
|
|
|
1677
1694
|
this._settle_timer = void 0;
|
|
1678
1695
|
}
|
|
1679
1696
|
}
|
|
1697
|
+
/**
|
|
1698
|
+
* Reset reaction stream watermarks and request a drain on the next
|
|
1699
|
+
* `drain()` / `settle()` cycle.
|
|
1700
|
+
*
|
|
1701
|
+
* Use this to replay events through projections (or other reaction targets)
|
|
1702
|
+
* after changing handler logic. Equivalent to calling `store().reset(streams)`
|
|
1703
|
+
* directly, but also raises the orchestrator's internal "needs drain" flag —
|
|
1704
|
+
* `store().reset(...)` alone leaves the flag untouched, so a settled app
|
|
1705
|
+
* would short-circuit and skip the replay.
|
|
1706
|
+
*
|
|
1707
|
+
* Pair with `app.settle()` (or a single `app.drain()` for small streams).
|
|
1708
|
+
* `settle()` loops correlate→drain until no progress is made, so one call
|
|
1709
|
+
* fully catches up paginated streams without forcing callers to roll
|
|
1710
|
+
* their own loop.
|
|
1711
|
+
*
|
|
1712
|
+
* @param streams - Reaction target streams (e.g., projection names) to reset
|
|
1713
|
+
* @returns Count of streams that were actually reset
|
|
1714
|
+
*
|
|
1715
|
+
* @example Rebuild a projection (production)
|
|
1716
|
+
* ```typescript
|
|
1717
|
+
* await app.reset(["my-projection"]);
|
|
1718
|
+
* app.settle({ eventLimit: 1000 }); // emits "settled" when fully replayed
|
|
1719
|
+
* ```
|
|
1720
|
+
*
|
|
1721
|
+
* @example Rebuild a projection (tests / scripts)
|
|
1722
|
+
* ```typescript
|
|
1723
|
+
* await app.reset(["my-projection"]);
|
|
1724
|
+
* await app.drain({ eventLimit: 1000 }); // small streams: one pass is enough
|
|
1725
|
+
* ```
|
|
1726
|
+
*
|
|
1727
|
+
* @see {@link Store.reset} for the underlying store primitive
|
|
1728
|
+
* @see {@link settle} for the debounced full-catch-up loop
|
|
1729
|
+
*/
|
|
1730
|
+
async reset(streams) {
|
|
1731
|
+
const count = await store().reset(streams);
|
|
1732
|
+
if (count > 0 && this._reactive_events.size > 0) {
|
|
1733
|
+
this._needs_drain = true;
|
|
1734
|
+
}
|
|
1735
|
+
return count;
|
|
1736
|
+
}
|
|
1680
1737
|
/**
|
|
1681
1738
|
* Close the books — guard, archive, truncate, and optionally restart streams.
|
|
1682
1739
|
*
|
|
@@ -1844,15 +1901,19 @@ var Act = class {
|
|
|
1844
1901
|
/**
|
|
1845
1902
|
* Debounced, non-blocking correlate→drain cycle.
|
|
1846
1903
|
*
|
|
1847
|
-
* Call this after `app.do()` to schedule a background
|
|
1848
|
-
* calls within the debounce window are coalesced
|
|
1849
|
-
* correlate→drain in a loop until
|
|
1850
|
-
*
|
|
1904
|
+
* Call this after `app.do()` (or `app.reset()`) to schedule a background
|
|
1905
|
+
* drain. Multiple rapid calls within the debounce window are coalesced
|
|
1906
|
+
* into a single cycle. Runs correlate→drain in a loop until a pass makes
|
|
1907
|
+
* no progress — no new subscriptions, no acks, no blocks — then emits
|
|
1908
|
+
* the `"settled"` lifecycle event. This means a single `settle()` call
|
|
1909
|
+
* fully catches up paginated streams (e.g. after `reset()` on a long
|
|
1910
|
+
* projection) without forcing callers to loop.
|
|
1851
1911
|
*
|
|
1852
1912
|
* @param options - Settle configuration options
|
|
1853
1913
|
* @param options.debounceMs - Debounce window in milliseconds (default: 10)
|
|
1854
1914
|
* @param options.correlate - Query filter for correlation scans (default: `{ after: -1, limit: 100 }`)
|
|
1855
|
-
* @param options.maxPasses -
|
|
1915
|
+
* @param options.maxPasses - Cap on correlate→drain loops (default: `Infinity`).
|
|
1916
|
+
* Early-exit on no-progress means the cap only matters in pathological cases.
|
|
1856
1917
|
* @param options.streamLimit - Maximum streams per drain cycle (default: 10)
|
|
1857
1918
|
* @param options.eventLimit - Maximum events per stream (default: 10)
|
|
1858
1919
|
* @param options.leaseMillis - Lease duration in milliseconds (default: 10000)
|
|
@@ -1874,7 +1935,7 @@ var Act = class {
|
|
|
1874
1935
|
const {
|
|
1875
1936
|
debounceMs = 10,
|
|
1876
1937
|
correlate: correlateQuery = { after: -1, limit: 100 },
|
|
1877
|
-
maxPasses =
|
|
1938
|
+
maxPasses = Infinity,
|
|
1878
1939
|
...drainOptions
|
|
1879
1940
|
} = options;
|
|
1880
1941
|
if (this._settle_timer) clearTimeout(this._settle_timer);
|
|
@@ -1890,9 +1951,9 @@ var Act = class {
|
|
|
1890
1951
|
...correlateQuery,
|
|
1891
1952
|
after: this._correlation_checkpoint
|
|
1892
1953
|
});
|
|
1893
|
-
if (subscribed === 0 && i > 0) break;
|
|
1894
1954
|
lastDrain = await this.drain(drainOptions);
|
|
1895
|
-
|
|
1955
|
+
const made_progress = subscribed > 0 || lastDrain.acked.length > 0 || lastDrain.blocked.length > 0;
|
|
1956
|
+
if (!made_progress) break;
|
|
1896
1957
|
}
|
|
1897
1958
|
if (lastDrain) this.emit("settled", lastDrain);
|
|
1898
1959
|
})().catch((err) => logger3.error(err)).finally(() => {
|