@rotorsoft/act 1.16.1 → 1.18.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/dist/.tsbuildinfo +1 -1
- package/dist/@types/act.d.ts +0 -9
- package/dist/@types/act.d.ts.map +1 -1
- package/dist/@types/adapters/in-memory-store.d.ts +10 -0
- package/dist/@types/adapters/in-memory-store.d.ts.map +1 -1
- package/dist/@types/builders/act-builder.d.ts +3 -6
- package/dist/@types/builders/act-builder.d.ts.map +1 -1
- package/dist/@types/builders/slice-builder.d.ts +16 -8
- package/dist/@types/builders/slice-builder.d.ts.map +1 -1
- package/dist/@types/builders/state-builder.d.ts +19 -26
- package/dist/@types/builders/state-builder.d.ts.map +1 -1
- package/dist/@types/index.d.ts +1 -0
- package/dist/@types/index.d.ts.map +1 -1
- package/dist/@types/internal/autoclose-policy.d.ts +16 -0
- package/dist/@types/internal/autoclose-policy.d.ts.map +1 -1
- package/dist/@types/internal/builder-utils.d.ts +65 -0
- package/dist/@types/internal/builder-utils.d.ts.map +1 -0
- package/dist/@types/internal/close-signal.d.ts +51 -0
- package/dist/@types/internal/close-signal.d.ts.map +1 -0
- package/dist/@types/internal/defer-config.d.ts +64 -0
- package/dist/@types/internal/defer-config.d.ts.map +1 -0
- package/dist/@types/internal/defer-signal.d.ts +35 -0
- package/dist/@types/internal/defer-signal.d.ts.map +1 -0
- package/dist/@types/internal/defer-timer.d.ts +67 -0
- package/dist/@types/internal/defer-timer.d.ts.map +1 -0
- package/dist/@types/internal/drain-cycle.d.ts +39 -17
- package/dist/@types/internal/drain-cycle.d.ts.map +1 -1
- package/dist/@types/internal/drain.d.ts +3 -1
- package/dist/@types/internal/drain.d.ts.map +1 -1
- package/dist/@types/internal/index.d.ts +7 -5
- package/dist/@types/internal/index.d.ts.map +1 -1
- package/dist/@types/internal/reactions.d.ts.map +1 -1
- package/dist/@types/internal/tracing.d.ts.map +1 -1
- package/dist/@types/types/action.d.ts +36 -0
- package/dist/@types/types/action.d.ts.map +1 -1
- package/dist/@types/types/ports.d.ts +31 -0
- package/dist/@types/types/ports.d.ts.map +1 -1
- package/dist/{chunk-46OCUAVF.js → chunk-7XME4ZLK.js} +52 -2
- package/dist/chunk-7XME4ZLK.js.map +1 -0
- package/dist/index.cjs +852 -754
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +728 -681
- package/dist/index.js.map +1 -1
- package/dist/test/index.cjs +55 -5
- package/dist/test/index.cjs.map +1 -1
- package/dist/test/index.js +5 -5
- package/dist/test/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/@types/internal/autoclose-cycle.d.ts +0 -185
- package/dist/@types/internal/autoclose-cycle.d.ts.map +0 -1
- package/dist/chunk-46OCUAVF.js.map +0 -1
package/dist/@types/act.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"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"}
|
|
@@ -167,6 +167,16 @@ export declare class InMemoryStore implements Store {
|
|
|
167
167
|
lagging: boolean;
|
|
168
168
|
lane: string;
|
|
169
169
|
}[]>;
|
|
170
|
+
/**
|
|
171
|
+
* Hold the matched streams out of {@link claim} until `deferred_at`
|
|
172
|
+
* (ms since epoch) — see {@link Store.defer}. Accepts an explicit list
|
|
173
|
+
* of names or a {@link StreamFilter}, mirroring {@link reset}/{@link unblock}.
|
|
174
|
+
* Persisted store state (unlike in-process backoff), so the skip is honored
|
|
175
|
+
* by every competing worker. Unknown names are silently skipped.
|
|
176
|
+
*
|
|
177
|
+
* @returns Count of streams whose `deferred_at` was set.
|
|
178
|
+
*/
|
|
179
|
+
defer(input: string[] | StreamFilter, deferred_at: number): Promise<number>;
|
|
170
180
|
/**
|
|
171
181
|
* Build a predicate from a {@link StreamFilter}. Compiled regexes are
|
|
172
182
|
* cached in the closure so callers can apply it across the streams
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../../src/adapters/in-memory-store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,MAAM,EACN,OAAO,EACP,KAAK,EACL,YAAY,EACZ,cAAc,EACd,WAAW,EACZ,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../../src/adapters/in-memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* Fluent builder for composing event-sourced applications.
|
|
6
6
|
*/
|
|
7
7
|
import { Act, type ActOptions } from "../act.js";
|
|
8
|
+
import { type ReactionOn } from "../internal/index.js";
|
|
8
9
|
import { DEFAULT_LANE } from "../ports.js";
|
|
9
|
-
import type { Actor,
|
|
10
|
+
import type { Actor, EventRegister, LaneConfig, Schema, SchemaRegister, Schemas, State } from "../types/index.js";
|
|
10
11
|
import type { Projection } from "./projection-builder.js";
|
|
11
12
|
import type { Slice } from "./slice-builder.js";
|
|
12
13
|
/**
|
|
@@ -118,11 +119,7 @@ export type ActBuilder<TSchemaReg extends SchemaRegister<TActions>, TEvents exte
|
|
|
118
119
|
* @param event - The event name to react to
|
|
119
120
|
* @returns An object with `.do()` method to define the reaction handler
|
|
120
121
|
*/
|
|
121
|
-
on: <TKey extends keyof TEvents>(event: TKey) =>
|
|
122
|
-
do: (handler: (event: Committed<TEvents, TKey>, stream: string, app: IAct<TEvents, TActions, TActor>) => Promise<Snapshot<Schema, TEvents> | void>, options?: Partial<ReactionOptions>) => ActBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes> & {
|
|
123
|
-
to: (resolver: ReactionResolver<TEvents, TKey, TLanes> | string) => ActBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes>;
|
|
124
|
-
};
|
|
125
|
-
};
|
|
122
|
+
on: <TKey extends keyof TEvents>(event: TKey) => ReactionOn<ActBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes>, TEvents, TActions, TActor, TLanes, TKey>;
|
|
126
123
|
/**
|
|
127
124
|
* Builds and returns the Act orchestrator instance.
|
|
128
125
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/act-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"act-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/act-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @module slice-builder
|
|
3
|
+
* @category Builders
|
|
4
|
+
*
|
|
5
|
+
* Fluent builder for composing partial states with scoped reactions into
|
|
6
|
+
* self-contained functional slices (vertical slice architecture).
|
|
7
|
+
*/
|
|
8
|
+
import { type ReactionOn } from "../internal/index.js";
|
|
9
|
+
import type { DEFAULT_LANE } from "../ports.js";
|
|
10
|
+
import type { Actor, EventRegister, LaneConfig, Schema, SchemaRegister, Schemas, State } from "../types/index.js";
|
|
3
11
|
import type { Projection } from "./projection-builder.js";
|
|
4
12
|
/**
|
|
5
13
|
* A self-contained functional slice grouping partial states with their
|
|
@@ -71,13 +79,13 @@ export type SliceBuilder<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
71
79
|
*/
|
|
72
80
|
withLane: <const TConfig extends LaneConfig>(config: TConfig) => SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes | TConfig["name"]>;
|
|
73
81
|
/**
|
|
74
|
-
* Begins defining a reaction scoped to this slice's events.
|
|
82
|
+
* Begins defining a reaction scoped to this slice's events. Chain `.do(...)`
|
|
83
|
+
* to run immediately, or `.defer(when).do(...)` to hold the reaction until a
|
|
84
|
+
* schedule is due (#1091). `.to(...)` follows `.do(...)` in both cases and,
|
|
85
|
+
* for a deferred reaction, is how you route it onto its own target when you
|
|
86
|
+
* don't want the hold to stall the aggregate's other reactions.
|
|
75
87
|
*/
|
|
76
|
-
on: <TKey extends keyof TEvents>(event: TKey) =>
|
|
77
|
-
do: (handler: (event: Committed<TEvents, TKey>, stream: string, app: IAct<TEvents, TActions, TActor>) => Promise<Snapshot<Schema, TEvents> | void>, options?: Partial<ReactionOptions>) => SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes> & {
|
|
78
|
-
to: (resolver: ReactionResolver<TEvents, TKey, TLanes> | string) => SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes>;
|
|
79
|
-
};
|
|
80
|
-
};
|
|
88
|
+
on: <TKey extends keyof TEvents>(event: TKey) => ReactionOn<SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes>, TEvents, TActions, TActor, TLanes, TKey>;
|
|
81
89
|
/**
|
|
82
90
|
* Builds and returns the Slice data structure.
|
|
83
91
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/slice-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slice-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/slice-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { ZodType } from "zod";
|
|
8
8
|
import { type AutoclosePolicy } from "../internal/index.js";
|
|
9
|
-
import type { ActionHandler, ActionOptions, Actor, AutocloseArchiver,
|
|
9
|
+
import type { ActionHandler, ActionOptions, Actor, AutocloseArchiver, Committed, Invariant, PatchHandlers, Schema, Schemas, Snapshot, State, ZodTypes } from "../types/index.js";
|
|
10
10
|
/**
|
|
11
11
|
* Builder interface for defining a state with event sourcing.
|
|
12
12
|
*
|
|
@@ -345,24 +345,23 @@ export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActio
|
|
|
345
345
|
* per-event). Absent → the state opts out of online close entirely;
|
|
346
346
|
* the cycle skips it and pays zero per-tick cost for it.
|
|
347
347
|
*
|
|
348
|
-
*
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
355
|
-
*
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
*
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
* @param
|
|
365
|
-
* Object form: declarative {@link AutoclosePolicy} bag.
|
|
348
|
+
* Pass a declarative {@link AutoclosePolicy} object literal covering the
|
|
349
|
+
* three operational pressure points (`after`, `is`, `reaches`). Top-level
|
|
350
|
+
* fields combine with AND; an optional `or: {...}` block opens an
|
|
351
|
+
* alternative OR path. Validated via Zod at build time; misconfiguration
|
|
352
|
+
* throws before `act().build()` completes.
|
|
353
|
+
*
|
|
354
|
+
* Under the hood this compiles to a synthesized reaction (#1090) that runs
|
|
355
|
+
* on a per-aggregate synthetic stream: it defers to `head.created + the
|
|
356
|
+
* policy's min after` while the cooldown holds and closes the stream once
|
|
357
|
+
* the policy matches. There is no background sweep.
|
|
358
|
+
*
|
|
359
|
+
* **The function-predicate form was removed (#1090).** `.autocloses` no
|
|
360
|
+
* longer accepts `(stream, head, count) => boolean`; an opaque predicate has
|
|
361
|
+
* no derivable due-time or terminal event to react to. For conditions the
|
|
362
|
+
* declarative form can't express, call `app.close(...)` from your own logic.
|
|
363
|
+
*
|
|
364
|
+
* @param policy The declarative {@link AutoclosePolicy} bag.
|
|
366
365
|
* @returns The ActionBuilder for chaining.
|
|
367
366
|
*
|
|
368
367
|
* @example Declarative — cooldown after terminal (a Ticket closes
|
|
@@ -402,14 +401,8 @@ export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActio
|
|
|
402
401
|
* ```typescript
|
|
403
402
|
* .autocloses({ or: { is: "TicketResolved", reaches: 10_000 } })
|
|
404
403
|
* ```
|
|
405
|
-
*
|
|
406
|
-
* @example Function — custom predicate the declarative form can't
|
|
407
|
-
* express (per-stream metadata or per-terminal cooldown).
|
|
408
|
-
* ```typescript
|
|
409
|
-
* .autocloses((stream, head) => stream.startsWith("ephemeral:"))
|
|
410
|
-
* ```
|
|
411
404
|
*/
|
|
412
|
-
autocloses: (
|
|
405
|
+
autocloses: (policy: AutoclosePolicy) => ActionBuilder<TState, TEvents, TActions, TName>;
|
|
413
406
|
/**
|
|
414
407
|
* Declares the archiver the online close cycle runs **before**
|
|
415
408
|
* truncating a stream this state's `.autocloses(...)` predicate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/state-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EACL,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"state-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/state-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/@types/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from "./adapters/index.js";
|
|
|
9
9
|
export * from "./builders/index.js";
|
|
10
10
|
export * from "./config.js";
|
|
11
11
|
export * from "./csv.js";
|
|
12
|
+
export { DeferSignal } from "./internal/index.js";
|
|
12
13
|
export * from "./ports.js";
|
|
13
14
|
export * from "./types/index.js";
|
|
14
15
|
export * from "./utils.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAEtB;;;;GAIG;AACH,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAEtB;;;;GAIG;AACH,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AAIzB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
|
@@ -116,6 +116,22 @@ export type AutoclosePolicy = z.infer<typeof AutoclosePolicySchema>;
|
|
|
116
116
|
*
|
|
117
117
|
* @internal
|
|
118
118
|
*/
|
|
119
|
+
/**
|
|
120
|
+
* The smallest `after` window (in ms) anywhere in a policy — across the
|
|
121
|
+
* top-level `after` and the `or.after` block — or `undefined` when the
|
|
122
|
+
* policy has no time component.
|
|
123
|
+
*
|
|
124
|
+
* The synthesized autoclose reaction (#1090) uses this to decide how to
|
|
125
|
+
* wait: a policy with an `after` defers its re-check to `head.created +
|
|
126
|
+
* min_after_ms` (the earliest its time gate could open); a policy without
|
|
127
|
+
* one (`is` / `reaches` only) has no time gate, so the reaction just waits
|
|
128
|
+
* for the next event to re-trigger rather than parking on a due-time.
|
|
129
|
+
* Conservative — the min across branches never defers past the soonest a
|
|
130
|
+
* branch could fire.
|
|
131
|
+
*
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
export declare function policy_min_after_ms(options: AutoclosePolicy): number | undefined;
|
|
119
135
|
export declare function compile_autoclose_policy(options: AutoclosePolicy): AutoclosePredicate<Schemas>;
|
|
120
136
|
export {};
|
|
121
137
|
//# sourceMappingURL=autoclose-policy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoclose-policy.d.ts","sourceRoot":"","sources":["../../../src/internal/autoclose-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AA2DtE;;;;;;;;;GASG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;kBAkBxB,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAyBpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CAAC,OAAO,CAAC,CAiC7B"}
|
|
1
|
+
{"version":3,"file":"autoclose-policy.d.ts","sourceRoot":"","sources":["../../../src/internal/autoclose-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AA2DtE;;;;;;;;;GASG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;kBAkBxB,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAyBpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,GACvB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CAAC,OAAO,CAAC,CAiC7B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module builder-utils
|
|
3
|
+
* @category Internal
|
|
4
|
+
*
|
|
5
|
+
* Shared builder machinery reused by both `act-builder.ts` and
|
|
6
|
+
* `slice-builder.ts`. The two builders expose the same reaction-registration
|
|
7
|
+
* and lane-declaration surface and differ only in the concrete builder type
|
|
8
|
+
* they return (`ActBuilder` vs `SliceBuilder`) and the event register they
|
|
9
|
+
* write into (`registry.events` vs the slice's `events`). This module owns the
|
|
10
|
+
* one copy of that logic so the builders stay thin delegations.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
import type { Actor, Committed, EventRegister, IAct, LaneConfig, ReactionHandler, ReactionOptions, ReactionResolver, Schema, Schemas, Snapshot } from "../types/index.js";
|
|
15
|
+
import { type DeferSchedule } from "./defer-config.js";
|
|
16
|
+
/**
|
|
17
|
+
* The `.do(handler)` step, parameterized by the builder it returns (`TReturn`).
|
|
18
|
+
* Identical for both builders modulo that return type.
|
|
19
|
+
*/
|
|
20
|
+
type ReactionDo<TReturn, TEvents extends Schemas, TActions extends Schemas, TActor extends Actor, TLanes extends string, TKey extends keyof TEvents> = (handler: (event: Committed<TEvents, TKey>, stream: string, app: IAct<TEvents, TActions, TActor>) => Promise<Snapshot<Schema, TEvents> | void>, options?: Partial<ReactionOptions>) => TReturn & {
|
|
21
|
+
to: (resolver: ReactionResolver<TEvents, TKey, TLanes> | string) => TReturn;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* The object `.on(event)` returns: run immediately with `.do(...)`, or hold
|
|
25
|
+
* with `.defer(when).do(...)`. Parameterized by the return builder so
|
|
26
|
+
* `act()` and `slice()` share one shape.
|
|
27
|
+
*/
|
|
28
|
+
export type ReactionOn<TReturn, TEvents extends Schemas, TActions extends Schemas, TActor extends Actor, TLanes extends string, TKey extends keyof TEvents> = {
|
|
29
|
+
do: ReactionDo<TReturn, TEvents, TActions, TActor, TLanes, TKey>;
|
|
30
|
+
defer: (schedule: DeferSchedule<Committed<TEvents, TKey>>) => {
|
|
31
|
+
do: ReactionDo<TReturn, TEvents, TActions, TActor, TLanes, TKey>;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Validate and register a drain lane (ACT-1103): the `"default"` name is
|
|
36
|
+
* reserved and each lane name must be unique. Mutates `lanes` in place; the
|
|
37
|
+
* caller returns its own builder for chaining.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare function register_lane(config: LaneConfig, lanes: LaneConfig[]): void;
|
|
42
|
+
/**
|
|
43
|
+
* Build the `.on(event)` step shared by both builders. Registers a reaction
|
|
44
|
+
* (named-function + duplicate guards, fail-fast literal-schedule validation,
|
|
45
|
+
* the default `_this_` resolver, and the `.defer` handler wrap) into
|
|
46
|
+
* `events[event].reactions`, and hands back `builder` patched with `.to(...)`
|
|
47
|
+
* for in-place resolver routing.
|
|
48
|
+
*
|
|
49
|
+
* The strict, builder-specific type is supplied by each builder's own `on`
|
|
50
|
+
* signature ({@link ReactionOn}); the runtime here is builder-agnostic.
|
|
51
|
+
*
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
export declare function reaction_on<TEvents extends Schemas, TKey extends keyof TEvents, TBuilder>(event: TKey, events: EventRegister<TEvents>, builder: TBuilder): {
|
|
55
|
+
do: (handler: ReactionHandler<TEvents, TKey>, options?: Partial<ReactionOptions>) => object & {
|
|
56
|
+
to(resolver: ReactionResolver<TEvents, TKey> | string): TBuilder;
|
|
57
|
+
};
|
|
58
|
+
defer: (schedule: DeferSchedule<Committed<TEvents, TKey>>) => {
|
|
59
|
+
do: (handler: ReactionHandler<TEvents, TKey>, options?: Partial<ReactionOptions>) => object & {
|
|
60
|
+
to(resolver: ReactionResolver<TEvents, TKey> | string): TBuilder;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=builder-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder-utils.d.ts","sourceRoot":"","sources":["../../../src/internal/builder-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,KAAK,EACL,SAAS,EACT,aAAa,EACb,IAAI,EACJ,UAAU,EAEV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,MAAM,EACN,OAAO,EACP,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,mBAAmB,CAAC;AAG3B;;;GAGG;AACH,KAAK,UAAU,CACb,OAAO,EACP,OAAO,SAAS,OAAO,EACvB,QAAQ,SAAS,OAAO,EACxB,MAAM,SAAS,KAAK,EACpB,MAAM,SAAS,MAAM,EACrB,IAAI,SAAS,MAAM,OAAO,IACxB,CACF,OAAO,EAAE,CACP,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,KACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,EAC9C,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,KAC/B,OAAO,GAAG;IACb,EAAE,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,KAAK,OAAO,CAAC;CAC7E,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,CACpB,OAAO,EACP,OAAO,SAAS,OAAO,EACvB,QAAQ,SAAS,OAAO,EACxB,MAAM,SAAS,KAAK,EACpB,MAAM,SAAS,MAAM,EACrB,IAAI,SAAS,MAAM,OAAO,IACxB;IACF,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjE,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK;QAC5D,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KAClE,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAM3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,OAAO,SAAS,OAAO,EACvB,IAAI,SAAS,MAAM,OAAO,EAC1B,QAAQ,EACR,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ;kBAyCjD,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,YAC7B,OAAO,CAAC,eAAe,CAAC;qBAVrB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM;;sBAYrC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;sBAE5C,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,YAC7B,OAAO,CAAC,eAAe,CAAC;yBAfvB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM;;;EAmB1D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module close-signal
|
|
3
|
+
* @category Internal
|
|
4
|
+
*
|
|
5
|
+
* The control-flow signal a reaction handler throws to *close* a stream
|
|
6
|
+
* (#1090). Like {@link "defer-signal".DeferSignal} it rides the dispatcher's
|
|
7
|
+
* `try/catch`, but where a defer holds the stream for later, a close asks the
|
|
8
|
+
* orchestrator to retire it: `build_handle` turns the signal into a
|
|
9
|
+
* `HandleResult.close` (a {@link CloseTarget}), `run_drain_cycle` acks the
|
|
10
|
+
* triggering event and collects the target, and the `DrainController` hands it
|
|
11
|
+
* to the orchestrator's `on_close` callback, which runs the same
|
|
12
|
+
* `run_close_cycle` machinery as `app.close`.
|
|
13
|
+
*
|
|
14
|
+
* Internal: the compiled autoclose reaction throws it. Closing stays an
|
|
15
|
+
* orchestrator capability — reactions only *signal* the intent, so the public
|
|
16
|
+
* reaction-scoped `IAct` gains no `close`.
|
|
17
|
+
*
|
|
18
|
+
* The autoclose reaction runs on a **synthetic stream** (`source` = the
|
|
19
|
+
* aggregate, `target` = a per-aggregate `__autoclose__` key) so it never
|
|
20
|
+
* shares a watermark with the aggregate's own reactions. That makes the close
|
|
21
|
+
* *target* distinct from the reaction's lease stream, so the signal carries the
|
|
22
|
+
* stream to close explicitly (`stream`); when omitted (a user reaction closing
|
|
23
|
+
* its own stream) it defaults to the lease stream.
|
|
24
|
+
*
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export declare class CloseSignal extends Error {
|
|
28
|
+
/**
|
|
29
|
+
* Stream to close. Omitted → the reaction's own lease stream (a self-close).
|
|
30
|
+
* The synthesized autoclose reaction sets it to the aggregate stream, since
|
|
31
|
+
* its lease runs on a synthetic `__autoclose__` target.
|
|
32
|
+
*/
|
|
33
|
+
readonly stream?: string;
|
|
34
|
+
/** Optional archive callback to run while the stream is guarded. */
|
|
35
|
+
readonly archive?: () => Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Watermark to ack the requesting reaction to before the close runs. The
|
|
38
|
+
* close-cycle safety guard skips a stream whose subscriptions (matched by
|
|
39
|
+
* source) lag the head; the autoclose reaction's `source` is the aggregate,
|
|
40
|
+
* so it must advance its own watermark to the live head id it evaluated
|
|
41
|
+
* against — otherwise it blocks its own close. Defaults to the triggering
|
|
42
|
+
* event id when omitted.
|
|
43
|
+
*/
|
|
44
|
+
readonly at?: number;
|
|
45
|
+
constructor(opts?: {
|
|
46
|
+
stream?: string;
|
|
47
|
+
archive?: () => Promise<void>;
|
|
48
|
+
at?: number;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=close-signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"close-signal.d.ts","sourceRoot":"","sources":["../../../src/internal/close-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;gBAET,IAAI,CAAC,EAAE;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;KACb;CAOF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module defer-config
|
|
3
|
+
* @category Internal
|
|
4
|
+
*
|
|
5
|
+
* The `when` options for the public `defer` surface (#1091, RFC 0001). A
|
|
6
|
+
* reaction defers itself to a future time either declaratively (the
|
|
7
|
+
* `.defer(when)` builder step) or imperatively (`throw new DeferSignal(when)`
|
|
8
|
+
* inside a handler); both resolve `when` through here.
|
|
9
|
+
*
|
|
10
|
+
* The load-bearing rule is **derivability**. A deferred stream's due-time must
|
|
11
|
+
* be recomputable by whichever worker re-claims it after the wait, so `when`
|
|
12
|
+
* never resolves against `Date.now()`. `after` is measured from the triggering
|
|
13
|
+
* event's `created` timestamp, and `at` is either a fixed `Date` or a pure
|
|
14
|
+
* function of the event. Either way, re-delivering the same event yields the
|
|
15
|
+
* same due-time, which is what makes a defer correct across restarts and
|
|
16
|
+
* competing workers.
|
|
17
|
+
*
|
|
18
|
+
* Validation follows the config-schema standard (CLAUDE.md): an internal
|
|
19
|
+
* `*OptionsSchema` const, a public inferred type, and a resolver. Slice 2
|
|
20
|
+
* ships `after` / `at`; recurrence (`every`) extends this in Slice 3 (#1092).
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
import type { Committed, DeferWhen, Schemas } from "../types/index.js";
|
|
25
|
+
/**
|
|
26
|
+
* Resolve `when` to an absolute due-time (ms since epoch) for a given
|
|
27
|
+
* triggering event. Validates via {@link DeferWhenSchema} (throws `ZodError`
|
|
28
|
+
* on a bad shape), then derives the time: `after` from `event.created`, `at`
|
|
29
|
+
* from its absolute `Date`. Never reads `Date.now()`, so the result is stable
|
|
30
|
+
* across re-delivery.
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolve_defer_at<E extends Schemas>(when: DeferWhen, event: Committed<E, keyof E>): number;
|
|
35
|
+
/**
|
|
36
|
+
* The schedule handed to the declarative `.defer` builder step: either a
|
|
37
|
+
* literal {@link DeferWhen} (fixed cooldown/deadline) or a function of the
|
|
38
|
+
* triggering event (read the payload to choose the schedule).
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export type DeferSchedule<TEvent> = DeferWhen | ((event: TEvent) => DeferWhen);
|
|
43
|
+
/**
|
|
44
|
+
* Validate a literal `when` at build time (fail fast, per the config-schema
|
|
45
|
+
* standard) — throws `ZodError` on a bad shape (both/neither of `after`/`at`,
|
|
46
|
+
* an empty or non-positive duration). The function form of a `.defer` schedule
|
|
47
|
+
* can only be checked when it runs, so builders pass just the literal here.
|
|
48
|
+
*
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
export declare function assert_defer_when(when: DeferWhen): void;
|
|
52
|
+
/**
|
|
53
|
+
* Wrap a reaction handler so it holds until its schedule is due, then runs.
|
|
54
|
+
* On each delivery it resolves the schedule against the triggering event; if
|
|
55
|
+
* the due-time hasn't arrived it throws {@link DeferSignal} (the drain holds
|
|
56
|
+
* the stream, no watermark advance, no retry bump), otherwise it runs the
|
|
57
|
+
* real handler. The wrapper keeps the original handler's `name` so reaction
|
|
58
|
+
* registration and de-dup are unaffected, and preserves the handler's exact
|
|
59
|
+
* type so the builder step is transparent.
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
export declare function make_deferred<H extends (...args: any[]) => Promise<unknown>>(handler: H, schedule: DeferSchedule<Parameters<H>[0]>): H;
|
|
64
|
+
//# sourceMappingURL=defer-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defer-config.d.ts","sourceRoot":"","sources":["../../../src/internal/defer-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAiDvE;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAChD,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAC3B,MAAM,CAIR;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;AAE/E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAEvD;AAED;;;;;;;;;;GAUG;AAGH,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAC1E,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACxC,CAAC,CAaH"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module defer-signal
|
|
3
|
+
* @category Internal
|
|
4
|
+
*
|
|
5
|
+
* The control-flow signal a reaction handler throws to *defer* itself
|
|
6
|
+
* (#1090, #1091). Unlike an error, a defer is not a failure: the dispatcher
|
|
7
|
+
* ({@link "reactions".build_handle}) catches it and produces a
|
|
8
|
+
* `HandleResult.defer` — the triggering events stay pending (watermark not
|
|
9
|
+
* advanced), `retry` is not bumped, and the drain re-visits the stream at the
|
|
10
|
+
* resolved due-time.
|
|
11
|
+
*
|
|
12
|
+
* `DeferSignal` is the **imperative escape hatch** and is re-exported from the
|
|
13
|
+
* package root, so reaction code can throw it directly when a static
|
|
14
|
+
* `.defer(when)` step isn't expressive enough (a deadline computed from loaded
|
|
15
|
+
* state, say). It carries the *unresolved* {@link DeferWhen}; the dispatcher
|
|
16
|
+
* resolves it against the triggering event it is already dispatching (via
|
|
17
|
+
* `resolve_defer_at`), which is what anchors `{ after }` and the `at` function
|
|
18
|
+
* form to that event and keeps the due-time derivable. Fully dynamic times go
|
|
19
|
+
* through `{ at: someDate }`.
|
|
20
|
+
*
|
|
21
|
+
* Modeled as an `Error` subclass — like `NonRetryableError` — so it rides the
|
|
22
|
+
* existing `try/catch` in the handler loop instead of needing a separate
|
|
23
|
+
* return channel through every dispatcher signature. The compiled autoclose
|
|
24
|
+
* reaction throws the same signal.
|
|
25
|
+
*/
|
|
26
|
+
import type { DeferWhen } from "../types/index.js";
|
|
27
|
+
export declare class DeferSignal extends Error {
|
|
28
|
+
/**
|
|
29
|
+
* The unresolved schedule. The dispatcher turns this into an absolute
|
|
30
|
+
* due-time by resolving it against the triggering event.
|
|
31
|
+
*/
|
|
32
|
+
readonly when: DeferWhen;
|
|
33
|
+
constructor(when: DeferWhen);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=defer-signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defer-signal.d.ts","sourceRoot":"","sources":["../../../src/internal/defer-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,WAAY,SAAQ,KAAK;IACpC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBAEb,IAAI,EAAE,SAAS;CAK5B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module defer-timer
|
|
3
|
+
* @category Internal
|
|
4
|
+
*
|
|
5
|
+
* The shared "next visit time" primitive (#1090). A `DeferTimer` holds a
|
|
6
|
+
* `stream → due-time` map and a single collapsed wake timer: it parks
|
|
7
|
+
* streams that should be re-visited later and fires one `on_wake` callback
|
|
8
|
+
* at the earliest pending due-time, garbage-collecting the entries that have
|
|
9
|
+
* come due.
|
|
10
|
+
*
|
|
11
|
+
* Two consumers ride it:
|
|
12
|
+
*
|
|
13
|
+
* - the {@link "drain-cycle".DrainController} — for per-reaction backoff (a
|
|
14
|
+
* retry's `next_attempt_at`) and, once handlers can express it, the
|
|
15
|
+
* `defer` outcome that holds a stream pending without advancing the
|
|
16
|
+
* watermark or bumping `retry`.
|
|
17
|
+
* - the autoclose controller — to schedule its next eligibility check at the
|
|
18
|
+
* precise time an `after`-style cooldown elapses, instead of a blind
|
|
19
|
+
* fixed-interval sweep.
|
|
20
|
+
*
|
|
21
|
+
* Lives in process memory, per worker — the same per-worker pacing trade-off
|
|
22
|
+
* documented for backoff. Durability comes from the data the due-time is
|
|
23
|
+
* *derived* from (an un-advanced watermark, an event's `created` timestamp),
|
|
24
|
+
* not from the map: a restart rebuilds it from the log.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare class DeferTimer {
|
|
29
|
+
private readonly _due;
|
|
30
|
+
private _timer;
|
|
31
|
+
private readonly _on_wake;
|
|
32
|
+
/**
|
|
33
|
+
* @param on_wake - invoked once each time the earliest due-time elapses,
|
|
34
|
+
* after the come-due entries have been removed. Consumers use it to
|
|
35
|
+
* re-arm their loop (the drain sets its `armed` flag; autoclose runs a
|
|
36
|
+
* tick).
|
|
37
|
+
*/
|
|
38
|
+
constructor(on_wake: () => void);
|
|
39
|
+
/** Number of currently parked streams. */
|
|
40
|
+
get size(): number;
|
|
41
|
+
/**
|
|
42
|
+
* True while `stream` is parked with a due-time still in the future.
|
|
43
|
+
* Consumers skip work for deferred streams until their window elapses.
|
|
44
|
+
*/
|
|
45
|
+
is_deferred: (stream: string) => boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Park `stream` for a re-visit at `at` (ms since epoch). A plain
|
|
48
|
+
* overwrite: the caller computes the authoritative next-visit for the
|
|
49
|
+
* stream (the drain's `handle` already reconciles a stream's reactions
|
|
50
|
+
* into one result per cycle), so there is no stale value to merge against.
|
|
51
|
+
*/
|
|
52
|
+
set(stream: string, at: number): void;
|
|
53
|
+
/** Drop `stream` from the parked set (e.g. on a successful ack or block). */
|
|
54
|
+
delete(stream: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* (Re)schedule the wake timer at the earliest pending due-time. Idempotent
|
|
57
|
+
* — collapses many parked streams into a single timer. A no-op clears any
|
|
58
|
+
* pending timer when the map is empty.
|
|
59
|
+
*
|
|
60
|
+
* The timer is `unref()`-ed so pending re-visits never keep the process
|
|
61
|
+
* alive on their own.
|
|
62
|
+
*/
|
|
63
|
+
schedule(): void;
|
|
64
|
+
/** Cancel any pending wake timer. Idempotent. Leaves the parked set intact. */
|
|
65
|
+
stop(): void;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=defer-timer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defer-timer.d.ts","sourceRoot":"","sources":["../../../src/internal/defer-timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAkBH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IAEtC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,IAAI;IAI/B,0CAA0C;IAC1C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,WAAW,GAAI,QAAQ,MAAM,KAAG,OAAO,CAGrC;IAEF;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAIrC,6EAA6E;IAC7E,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI;IA8BhB,+EAA+E;IAC/E,IAAI,IAAI,IAAI;CAMb"}
|