@rotorsoft/act 1.20.0 → 1.22.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 +55 -43
- package/dist/@types/act.d.ts.map +1 -1
- package/dist/@types/adapters/in-memory-store.d.ts +13 -4
- package/dist/@types/adapters/in-memory-store.d.ts.map +1 -1
- package/dist/@types/builders/state-builder.d.ts +35 -9
- package/dist/@types/builders/state-builder.d.ts.map +1 -1
- package/dist/@types/internal/autoclose-config.d.ts +39 -15
- package/dist/@types/internal/autoclose-config.d.ts.map +1 -1
- package/dist/@types/internal/autoclose-policy.d.ts +39 -13
- package/dist/@types/internal/autoclose-policy.d.ts.map +1 -1
- package/dist/@types/internal/autoclose-reaction.d.ts.map +1 -1
- package/dist/@types/internal/close-cycle.d.ts +5 -0
- package/dist/@types/internal/close-cycle.d.ts.map +1 -1
- package/dist/@types/internal/close-signal.d.ts +8 -0
- package/dist/@types/internal/close-signal.d.ts.map +1 -1
- package/dist/@types/internal/index.d.ts +2 -2
- package/dist/@types/internal/index.d.ts.map +1 -1
- package/dist/@types/internal/reactions.d.ts.map +1 -1
- package/dist/@types/types/action.d.ts +46 -13
- package/dist/@types/types/action.d.ts.map +1 -1
- package/dist/@types/types/ports.d.ts +29 -3
- package/dist/@types/types/ports.d.ts.map +1 -1
- package/dist/{chunk-TODGOWEZ.js → chunk-KBTC3NGQ.js} +64 -14
- package/dist/chunk-KBTC3NGQ.js.map +1 -0
- package/dist/index.cjs +237 -38
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +175 -26
- package/dist/index.js.map +1 -1
- package/dist/test/index.cjs +63 -13
- package/dist/test/index.cjs.map +1 -1
- package/dist/test/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-TODGOWEZ.js.map +0 -1
package/dist/@types/act.d.ts
CHANGED
|
@@ -159,60 +159,47 @@ export type ActOptions<TLanes extends string = string> = {
|
|
|
159
159
|
*/
|
|
160
160
|
readonly circuitBreaker?: CircuitBreakerOptions;
|
|
161
161
|
/**
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
* set, this is the poll interval and should be shorter than the
|
|
172
|
-
* window.
|
|
173
|
-
*
|
|
174
|
-
* Zero-cost when no state declares `.autocloses(...)` — the
|
|
175
|
-
* controller is never constructed in that case.
|
|
162
|
+
* @deprecated Since #1175 this knob is accepted, validated, and
|
|
163
|
+
* ignored. It paced the off-hours re-check of the pre-#1090 autoclose
|
|
164
|
+
* sweep; the synthesized autoclose reaction now derives its re-check
|
|
165
|
+
* directly from `autocloseWindow` — a tick landing outside the window
|
|
166
|
+
* parks until the exact instant the window opens, so there is no
|
|
167
|
+
* polling cadence to configure (and nothing minute-denominated on the
|
|
168
|
+
* close surface). Still validated as an integer `[1, 1440]` so typos
|
|
169
|
+
* keep failing loudly at `act().build()`. Will be removed in the next
|
|
170
|
+
* major.
|
|
176
171
|
*/
|
|
177
172
|
readonly autocloseCycleMinutes?: number;
|
|
178
173
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* run can close in total.
|
|
184
|
-
*
|
|
185
|
-
* Default {@link DEFAULT_CLOSE_BATCH_SIZE} (64). Validated
|
|
186
|
-
* `[1, 1024]`; above 1024 the builder throws.
|
|
174
|
+
* @deprecated Dead since #1090 replaced the autoclose sweep with a
|
|
175
|
+
* synthesized per-aggregate reaction — nothing pages the store in
|
|
176
|
+
* batches anymore, so nothing reads this. Accepted and validated
|
|
177
|
+
* (`[1, 1024]`) for compatibility; will be removed in the next major.
|
|
187
178
|
*/
|
|
188
179
|
readonly closeBatchSize?: number;
|
|
189
180
|
/**
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
* generally don't need it because they don't serialize writers
|
|
195
|
-
* globally.
|
|
196
|
-
*
|
|
197
|
-
* Validated `[0, 1000]`.
|
|
181
|
+
* @deprecated Dead since #1090 — the sweep that yielded between
|
|
182
|
+
* successive `Store.truncate` calls no longer exists; closes are
|
|
183
|
+
* staged per stream by the autoclose reaction. Accepted and validated
|
|
184
|
+
* (`[0, 1000]`) for compatibility; will be removed in the next major.
|
|
198
185
|
*/
|
|
199
186
|
readonly closeYieldMs?: number;
|
|
200
187
|
/**
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
188
|
+
* @deprecated Dead since #1090 — the sweep-side predicate try/catch
|
|
189
|
+
* this flag steered no longer exists; a throwing policy predicate now
|
|
190
|
+
* follows the reaction retry path (`blockOnError: false`, three
|
|
191
|
+
* retries). Accepted for compatibility; will be removed in the next
|
|
192
|
+
* major.
|
|
205
193
|
*/
|
|
206
194
|
readonly closeOnError?: boolean;
|
|
207
195
|
/**
|
|
208
|
-
* Optional off-hours window restricting when
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
* are `[0, 23]` integers in
|
|
212
|
-
* DST-correct); `start > end` is
|
|
213
|
-
* `{ start: 22, end: 6 }`).
|
|
214
|
-
*
|
|
215
|
-
* every tick regardless of clock time.
|
|
196
|
+
* Optional off-hours window restricting when autoclose evaluates. A
|
|
197
|
+
* synthesized autoclose reaction that triggers outside the window
|
|
198
|
+
* defers to the next instant the window opens — derived from the
|
|
199
|
+
* window itself, no polling cadence. Hours are `[0, 23]` integers in
|
|
200
|
+
* `timeZone` (IANA, default `"UTC"`, DST-correct); `start > end` is
|
|
201
|
+
* an overnight window (e.g. `{ start: 22, end: 6 }`). Omit to
|
|
202
|
+
* evaluate regardless of clock time.
|
|
216
203
|
*/
|
|
217
204
|
readonly autocloseWindow?: {
|
|
218
205
|
readonly start: number;
|
|
@@ -1036,7 +1023,19 @@ export declare class Act<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
1036
1023
|
* 7. **Cache** — invalidate (tombstoned) or warm (restarted)
|
|
1037
1024
|
* 8. **Emit "closed"** — lifecycle event with results
|
|
1038
1025
|
*
|
|
1039
|
-
*
|
|
1026
|
+
* Targets carrying `before` take the **windowed** branch instead —
|
|
1027
|
+
* close the books on a rolling window: probe the min consumer
|
|
1028
|
+
* watermark (so the boundary never rises past a lagging reaction),
|
|
1029
|
+
* run the archive callback against the cutoff, then prune the prefix
|
|
1030
|
+
* below the closest safe `__snapshot__`. No tombstone guard (the
|
|
1031
|
+
* pre-cutoff prefix is immutable), no seed, cache untouched — the
|
|
1032
|
+
* stream stays live and keeps accepting actions. Requires the state
|
|
1033
|
+
* to snapshot via `.snap(...)`; no qualifying snapshot ⇒ the stream
|
|
1034
|
+
* lands in `skipped` (retry after the next snapshot). Windowed
|
|
1035
|
+
* entries in the result echo `before` and carry the surviving
|
|
1036
|
+
* boundary snapshot as `committed`.
|
|
1037
|
+
*
|
|
1038
|
+
* @param targets - Per-stream close options (stream, restart?, archive?, before?)
|
|
1040
1039
|
* @returns `{ truncated: TruncateResult, skipped: string[] }`
|
|
1041
1040
|
*
|
|
1042
1041
|
* @example Archive and close
|
|
@@ -1054,6 +1053,19 @@ export declare class Act<TSchemaReg extends SchemaRegister<TActions>, TEvents ex
|
|
|
1054
1053
|
* { stream: "counter-2" }, // tombstoned
|
|
1055
1054
|
* ]);
|
|
1056
1055
|
* ```
|
|
1056
|
+
*
|
|
1057
|
+
* @example Windowed close — keep the last 180 days of real events
|
|
1058
|
+
* ```typescript
|
|
1059
|
+
* const cutoff = new Date();
|
|
1060
|
+
* cutoff.setDate(cutoff.getDate() - 180);
|
|
1061
|
+
* await app.close([
|
|
1062
|
+
* {
|
|
1063
|
+
* stream: "ledger-acme",
|
|
1064
|
+
* before: cutoff,
|
|
1065
|
+
* archive: async () => { await archiveToS3("ledger-acme", cutoff); },
|
|
1066
|
+
* },
|
|
1067
|
+
* ]);
|
|
1068
|
+
* ```
|
|
1057
1069
|
*/
|
|
1058
1070
|
close(targets: CloseTarget[]): Promise<CloseResult>;
|
|
1059
1071
|
/**
|
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,EASL,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EAelB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAuB,KAAK,MAAM,EAAiB,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EACV,KAAK,EACL,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,KAAK,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,IAAI,EACJ,UAAU,EACV,KAAK,EACL,UAAU,EAEV,KAAK,EACL,QAAQ,EACR,WAAW,EACX,UAAU,EACV,MAAM,EACN,cAAc,EACd,OAAO,EACP,aAAa,EACb,QAAQ,EACR,KAAK,EAEL,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,MAAM,EACP,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAO7C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,+BAA+B,EAC/B,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAC5B,UAAU,SAAS,cAAc,CAAC,QAAQ,CAAC,EAC3C,OAAO,SAAS,OAAO,EACvB,QAAQ,SAAS,OAAO,IACtB;IACF,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;IAC3C,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,QAAQ,EAAE,iBAAiB,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D;;;;;;;;OAQG;IACH,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC;CAClD,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IACvD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAChD
|
|
1
|
+
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,12 +71,14 @@ import type { BlockedLease, Committed, EventMeta, Lease, Message, Query, QuerySt
|
|
|
71
71
|
*/
|
|
72
72
|
export declare class InMemoryStore implements Store {
|
|
73
73
|
private _events;
|
|
74
|
+
private _next_id;
|
|
74
75
|
private _streams;
|
|
75
76
|
private _stream_versions;
|
|
76
77
|
private _max_event_id_by_stream;
|
|
77
78
|
private _max_non_snap_event_id;
|
|
78
79
|
private _pii;
|
|
79
80
|
private _reset_indexes;
|
|
81
|
+
private _first_index_after;
|
|
80
82
|
private _with_pii;
|
|
81
83
|
/**
|
|
82
84
|
* Dispose of the store and clear all events.
|
|
@@ -249,16 +251,23 @@ export declare class InMemoryStore implements Store {
|
|
|
249
251
|
query_stats<E extends Schemas>(input: string[] | Pick<StreamFilter, "stream" | "stream_exact">, options?: QueryStatsOptions<E>): Promise<Map<string, StreamStats<E>>>;
|
|
250
252
|
/**
|
|
251
253
|
* Atomically truncates streams and seeds each with a snapshot or tombstone.
|
|
252
|
-
*
|
|
254
|
+
* Windowed targets (`before` set) prune the prefix below the closest safe
|
|
255
|
+
* `__snapshot__` instead — no seed, subscriptions untouched, no-op when no
|
|
256
|
+
* snapshot qualifies.
|
|
257
|
+
* @param targets - Streams to truncate with optional snapshot state and meta,
|
|
258
|
+
* or a `before`/`max_id` boundary for a windowed prefix delete.
|
|
253
259
|
* @returns Map keyed by stream name, each entry with `deleted` count and `committed` event.
|
|
254
260
|
*/
|
|
255
261
|
truncate(targets: Array<{
|
|
256
262
|
stream: string;
|
|
257
263
|
snapshot?: Schema;
|
|
258
264
|
meta?: EventMeta;
|
|
265
|
+
before?: Date;
|
|
266
|
+
max_id?: number;
|
|
259
267
|
}>): Promise<Map<string, {
|
|
260
268
|
deleted: number;
|
|
261
269
|
committed: Committed<Schemas, keyof Schemas>;
|
|
270
|
+
before?: Date;
|
|
262
271
|
}>>;
|
|
263
272
|
/**
|
|
264
273
|
* Atomically wipe-and-rebuild the store under an in-process snapshot.
|
|
@@ -268,9 +277,9 @@ export declare class InMemoryStore implements Store {
|
|
|
268
277
|
* throw inside the driver restores the snapshot, leaving the store
|
|
269
278
|
* byte-for-byte unchanged from the operator's perspective.
|
|
270
279
|
*
|
|
271
|
-
* `id`s are reassigned `0..N-1` as events arrive (
|
|
272
|
-
*
|
|
273
|
-
*
|
|
280
|
+
* `id`s are reassigned `0..N-1` as events arrive (dense — the
|
|
281
|
+
* monotonic id counter restarts at 0 for the rebuild). `created` is
|
|
282
|
+
* preserved verbatim from the source.
|
|
274
283
|
*/
|
|
275
284
|
restore(driver: (callback: (event: Committed<Schemas, keyof Schemas>) => Promise<number>) => Promise<void>): Promise<void>;
|
|
276
285
|
}
|
|
@@ -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;AA6N3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,qBAAa,aAAc,YAAW,KAAK;IAEzC,OAAO,CAAC,OAAO,CAA2C;
|
|
1
|
+
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../../src/adapters/in-memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,10 +102,14 @@ type ActionEntry<TKey extends string = string, TNewActions extends Schema = Sche
|
|
|
102
102
|
* @template TEvents - Event schemas type
|
|
103
103
|
* @template TActions - Action schemas type
|
|
104
104
|
* @template TName - State name literal type
|
|
105
|
+
* @template TSnap - `true` once `.snap(...)` has been called. Gates the
|
|
106
|
+
* `.autocloses({ keep })` rolling-window option — a windowed close is
|
|
107
|
+
* meaningless without snapshots, so `keep` only typechecks after
|
|
108
|
+
* `.snap` in the chain.
|
|
105
109
|
*
|
|
106
110
|
* @see {@link state} for complete usage examples
|
|
107
111
|
*/
|
|
108
|
-
export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActions extends Schemas, TName extends string = string> = {
|
|
112
|
+
export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActions extends Schemas, TName extends string = string, TSnap extends boolean = false> = {
|
|
109
113
|
/**
|
|
110
114
|
* Defines an action (command) that can be executed on this state.
|
|
111
115
|
*
|
|
@@ -219,12 +223,12 @@ export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActio
|
|
|
219
223
|
[P in TKey]: TNewActions;
|
|
220
224
|
}, TKey>): ActionBuilder<TState, TEvents, TActions & {
|
|
221
225
|
[P in TKey]: TNewActions;
|
|
222
|
-
}, TName>;
|
|
226
|
+
}, TName, TSnap>;
|
|
223
227
|
/** Passthrough — the action payload becomes the event data
|
|
224
228
|
* directly. Must reference an event declared in `.emits()`. */
|
|
225
229
|
(event_name: keyof TEvents & string): ActionBuilder<TState, TEvents, TActions & {
|
|
226
230
|
[P in TKey]: TNewActions;
|
|
227
|
-
}, TName>;
|
|
231
|
+
}, TName, TSnap>;
|
|
228
232
|
};
|
|
229
233
|
};
|
|
230
234
|
/**
|
|
@@ -265,10 +269,10 @@ export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActio
|
|
|
265
269
|
[P in TKey]: TNewActions;
|
|
266
270
|
}, TKey>): ActionBuilder<TState, TEvents, TActions & {
|
|
267
271
|
[P in TKey]: TNewActions;
|
|
268
|
-
}, TName>;
|
|
272
|
+
}, TName, TSnap>;
|
|
269
273
|
(event_name: keyof TEvents & string): ActionBuilder<TState, TEvents, TActions & {
|
|
270
274
|
[P in TKey]: TNewActions;
|
|
271
|
-
}, TName>;
|
|
275
|
+
}, TName, TSnap>;
|
|
272
276
|
};
|
|
273
277
|
};
|
|
274
278
|
/**
|
|
@@ -302,7 +306,7 @@ export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActio
|
|
|
302
306
|
* })
|
|
303
307
|
* ```
|
|
304
308
|
*/
|
|
305
|
-
snap: (snap: (snapshot: Snapshot<TState, TEvents>) => boolean) => ActionBuilder<TState, TEvents, TActions, TName>;
|
|
309
|
+
snap: (snap: (snapshot: Snapshot<TState, TEvents>) => boolean) => ActionBuilder<TState, TEvents, TActions, TName, true>;
|
|
306
310
|
/**
|
|
307
311
|
* Declares the disclosure predicate for `sensitive(...)`-marked event
|
|
308
312
|
* fields. Gates external reads: returning `true` allows the actor to see
|
|
@@ -332,7 +336,7 @@ export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActio
|
|
|
332
336
|
* actor.id === event.stream || actor.roles?.includes("admin"))
|
|
333
337
|
* ```
|
|
334
338
|
*/
|
|
335
|
-
discloses: (disclose: (event: Committed<TEvents, keyof TEvents & string>, actor: Actor) => boolean) => ActionBuilder<TState, TEvents, TActions, TName>;
|
|
339
|
+
discloses: (disclose: (event: Committed<TEvents, keyof TEvents & string>, actor: Actor) => boolean) => ActionBuilder<TState, TEvents, TActions, TName, TSnap>;
|
|
336
340
|
/**
|
|
337
341
|
* Declares the online close predicate for this state. The
|
|
338
342
|
* orchestrator's autoclose cycle iterates the state's streams once
|
|
@@ -401,8 +405,30 @@ export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActio
|
|
|
401
405
|
* ```typescript
|
|
402
406
|
* .autocloses({ or: { is: "TicketResolved", reaches: 10_000 } })
|
|
403
407
|
* ```
|
|
408
|
+
*
|
|
409
|
+
* @example Rolling window — keep the last 180 days of real events on a
|
|
410
|
+
* live stream (requires `.snap(...)` earlier in the chain; `keep`
|
|
411
|
+
* won't typecheck without it). Each eligible cycle prunes the prefix
|
|
412
|
+
* below the closest safe snapshot older than `now − keep`.
|
|
413
|
+
* ```typescript
|
|
414
|
+
* .snap((s) => s.patches >= 100)
|
|
415
|
+
* .autocloses({ keep: { days: 180 } })
|
|
416
|
+
* ```
|
|
417
|
+
*
|
|
418
|
+
* @example Terminate AND prune — close 90 days after resolution,
|
|
419
|
+
* meanwhile keep open streams pruned to a 180-day window.
|
|
420
|
+
* ```typescript
|
|
421
|
+
* .snap((s) => s.patches >= 100)
|
|
422
|
+
* .autocloses({ is: "TicketResolved", after: { days: 90 }, keep: { days: 180 } })
|
|
423
|
+
* ```
|
|
404
424
|
*/
|
|
405
|
-
autocloses: (policy: AutoclosePolicy
|
|
425
|
+
autocloses: (policy: [TSnap] extends [true] ? AutoclosePolicy : Omit<AutoclosePolicy, "keep"> & {
|
|
426
|
+
/** Rolling-window retention requires `.snap(...)` earlier in
|
|
427
|
+
* the builder chain — a windowed close prunes behind a real
|
|
428
|
+
* snapshot, so a state that never snapshots has nothing to
|
|
429
|
+
* prune behind. */
|
|
430
|
+
keep?: never;
|
|
431
|
+
}) => ActionBuilder<TState, TEvents, TActions, TName, TSnap>;
|
|
406
432
|
/**
|
|
407
433
|
* Declares the archiver the online close cycle runs **before**
|
|
408
434
|
* truncating a stream this state's `.autocloses(...)` predicate
|
|
@@ -440,7 +466,7 @@ export type ActionBuilder<TState extends Schema, TEvents extends Schemas, TActio
|
|
|
440
466
|
* })
|
|
441
467
|
* ```
|
|
442
468
|
*/
|
|
443
|
-
archives: (archive: AutocloseArchiver<TEvents>) => ActionBuilder<TState, TEvents, TActions, TName>;
|
|
469
|
+
archives: (archive: AutocloseArchiver<TEvents>) => ActionBuilder<TState, TEvents, TActions, TName, TSnap>;
|
|
444
470
|
/**
|
|
445
471
|
* Finalizes and builds the state definition.
|
|
446
472
|
*
|
|
@@ -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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"}
|
|
@@ -18,27 +18,28 @@ import { z } from "zod";
|
|
|
18
18
|
import type { ActOptions } from "../act.js";
|
|
19
19
|
/**
|
|
20
20
|
* Default {@link ActOptions.autocloseCycleMinutes}: 720 (12 h).
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* the
|
|
27
|
-
* {@link ActOptions.autocloseWindow}), the ceiling lets operators run
|
|
28
|
-
* it once a day.
|
|
21
|
+
*
|
|
22
|
+
* @deprecated The knob it defaults is deprecated (#1175) — the
|
|
23
|
+
* off-window re-check is derived from `autocloseWindow` via
|
|
24
|
+
* {@link next_window_open}, so nothing consumes the cadence. Kept so
|
|
25
|
+
* existing imports and the compat validation keep working; removed in
|
|
26
|
+
* the next major.
|
|
29
27
|
*/
|
|
30
28
|
export declare const DEFAULT_AUTOCLOSE_CYCLE_MINUTES = 720;
|
|
31
29
|
/**
|
|
32
|
-
* Default {@link ActOptions.closeBatchSize}: 64.
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
30
|
+
* Default {@link ActOptions.closeBatchSize}: 64.
|
|
31
|
+
*
|
|
32
|
+
* @deprecated Dead since #1090 removed the autoclose sweep — nothing
|
|
33
|
+
* pages the store in batches. Kept for compat; removed in the next
|
|
34
|
+
* major.
|
|
36
35
|
*/
|
|
37
36
|
export declare const DEFAULT_CLOSE_BATCH_SIZE = 64;
|
|
38
37
|
/**
|
|
39
|
-
* Default {@link ActOptions.closeYieldMs}: 0.
|
|
40
|
-
*
|
|
41
|
-
*
|
|
38
|
+
* Default {@link ActOptions.closeYieldMs}: 0.
|
|
39
|
+
*
|
|
40
|
+
* @deprecated Dead since #1090 removed the autoclose sweep — there is
|
|
41
|
+
* no truncate loop to yield between. Kept for compat; removed in the
|
|
42
|
+
* next major.
|
|
42
43
|
*/
|
|
43
44
|
export declare const DEFAULT_CLOSE_YIELD_MS = 0;
|
|
44
45
|
/**
|
|
@@ -101,5 +102,28 @@ export declare function hour_in_zone(now: Date, timeZone: string): number;
|
|
|
101
102
|
* @internal
|
|
102
103
|
*/
|
|
103
104
|
export declare function in_autoclose_window(window: AutocloseConfig["autocloseWindow"], now: Date): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* The next instant the off-hours window opens at or after `now`. The
|
|
107
|
+
* synthesized autoclose reaction defers to this when a tick lands
|
|
108
|
+
* outside the window — parking until the window actually opens instead
|
|
109
|
+
* of blind-polling on a configured cadence (the pre-#1175 behavior,
|
|
110
|
+
* where a poll interval longer than the window could oscillate around
|
|
111
|
+
* it and miss it repeatedly).
|
|
112
|
+
*
|
|
113
|
+
* Walks forward hour by hour and asks `Intl` for the local hour at each
|
|
114
|
+
* step, so DST transitions resolve exactly the way the runtime's zone
|
|
115
|
+
* database says they do — a 23- or 25-hour day never desynchronizes the
|
|
116
|
+
* walk. The window validates as non-empty at build, and every zone hits
|
|
117
|
+
* each `[0, 23]` hour label within any 48-hour span, so the walk always
|
|
118
|
+
* terminates; the bound is a defensive backstop, with "one day out" as
|
|
119
|
+
* the fallback no real zone can reach.
|
|
120
|
+
*
|
|
121
|
+
* Minute/second offsets within the opening hour are preserved from
|
|
122
|
+
* `now` shifted by whole hours — the contract is hour-granular, matching
|
|
123
|
+
* the window's own `[start, end)` hour semantics.
|
|
124
|
+
*
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
127
|
+
export declare function next_window_open(window: NonNullable<AutocloseConfig["autocloseWindow"]>, now: Date): Date;
|
|
104
128
|
export {};
|
|
105
129
|
//# sourceMappingURL=autoclose-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoclose-config.d.ts","sourceRoot":"","sources":["../../../src/internal/autoclose-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C
|
|
1
|
+
{"version":3,"file":"autoclose-config.d.ts","sourceRoot":"","sources":["../../../src/internal/autoclose-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAkDjD;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,sBAAsB;;;;;;;;;;iBAgB1B,CAAC;AAEH;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErE;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,UAAU,GAAG,SAAS,GAC9B,eAAe,CAQjB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,EAC1C,GAAG,EAAE,IAAI,GACR,OAAO,CAMT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,EACvD,GAAG,EAAE,IAAI,GACR,IAAI,CAON"}
|
|
@@ -41,6 +41,10 @@
|
|
|
41
41
|
*/
|
|
42
42
|
import { z } from "zod";
|
|
43
43
|
import type { AutoclosePredicate, Schemas } from "../types/action.js";
|
|
44
|
+
/** The `Date` that lies `days` after `date`. @internal */
|
|
45
|
+
export declare function days_after(date: Date, days: number): Date;
|
|
46
|
+
/** The `Date` that lies `days` in the past. @internal */
|
|
47
|
+
export declare function days_before_now(days: number): Date;
|
|
44
48
|
/**
|
|
45
49
|
* Zod schema for the declarative {@link AutoclosePolicy} bag.
|
|
46
50
|
* Internal `const` per the config-validation-schema standard (CLAUDE.md
|
|
@@ -64,6 +68,9 @@ declare const AutoclosePolicySchema: z.ZodObject<{
|
|
|
64
68
|
is: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString>>]>>;
|
|
65
69
|
reaches: z.ZodOptional<z.ZodNumber>;
|
|
66
70
|
}, z.core.$strict>>;
|
|
71
|
+
keep: z.ZodOptional<z.ZodObject<{
|
|
72
|
+
days: z.ZodNumber;
|
|
73
|
+
}, z.core.$strip>>;
|
|
67
74
|
}, z.core.$strict>;
|
|
68
75
|
/**
|
|
69
76
|
* Declarative close-policy options consumed by `.autocloses({...})`.
|
|
@@ -72,9 +79,9 @@ declare const AutoclosePolicySchema: z.ZodObject<{
|
|
|
72
79
|
* not mean "match everything."
|
|
73
80
|
*
|
|
74
81
|
* @property after - Close when `head.created` is at least the resolved
|
|
75
|
-
* window in the past.
|
|
76
|
-
*
|
|
77
|
-
*
|
|
82
|
+
* window in the past. Days are the close surface's only unit;
|
|
83
|
+
* fractional `days` cover sub-day cooldowns (`{ days: 1/24 }` is one
|
|
84
|
+
* hour) without introducing another denomination.
|
|
78
85
|
* @property is - Close when `head.name` matches. String for the
|
|
79
86
|
* single-terminal-event case (the most common); `readonly string[]`
|
|
80
87
|
* for multi-terminal states (`Order: Shipped | Delivered |
|
|
@@ -86,6 +93,14 @@ declare const AutoclosePolicySchema: z.ZodObject<{
|
|
|
86
93
|
* `or` matches. Used for safety-net backstops layered onto a
|
|
87
94
|
* primary cooldown policy (e.g. *"(Resolved AND 90 days) OR reaches
|
|
88
95
|
* 10k"*). Nested `or` inside `or` rejects at build time.
|
|
96
|
+
* @property keep - Rolling-window retention (#1011), **independent** of
|
|
97
|
+
* the terminate fields: while the stream stays open, prune events
|
|
98
|
+
* older than `now − keep` behind the closest safe snapshot via a
|
|
99
|
+
* windowed close. Does not participate in the AND group or the `or`
|
|
100
|
+
* block — a policy may terminate, prune, or both. Requires
|
|
101
|
+
* `.snap(...)` earlier in the builder chain (type-gated) and a
|
|
102
|
+
* window of at least one day — the close cycle is low-cadence
|
|
103
|
+
* housekeeping, never sub-day realtime.
|
|
89
104
|
*/
|
|
90
105
|
export type AutoclosePolicy = z.infer<typeof AutoclosePolicySchema>;
|
|
91
106
|
/**
|
|
@@ -117,21 +132,32 @@ export type AutoclosePolicy = z.infer<typeof AutoclosePolicySchema>;
|
|
|
117
132
|
* @internal
|
|
118
133
|
*/
|
|
119
134
|
/**
|
|
120
|
-
* The smallest `after` window (in
|
|
121
|
-
* top-level `after` and the `or.after` block — or `undefined` when
|
|
122
|
-
* policy has no time component.
|
|
135
|
+
* The smallest `after` window (in days) anywhere in a policy — across
|
|
136
|
+
* the top-level `after` and the `or.after` block — or `undefined` when
|
|
137
|
+
* the policy has no time component.
|
|
123
138
|
*
|
|
124
139
|
* 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
|
-
*
|
|
127
|
-
* one (`is` / `reaches` only) has no time gate, so the reaction
|
|
128
|
-
* for the next event to re-trigger rather than parking on a
|
|
129
|
-
* Conservative — the min across branches never defers past
|
|
130
|
-
* branch could fire.
|
|
140
|
+
* wait: a policy with an `after` defers its re-check to `head.created`
|
|
141
|
+
* plus this many days (the earliest its time gate could open); a policy
|
|
142
|
+
* without one (`is` / `reaches` only) has no time gate, so the reaction
|
|
143
|
+
* just waits for the next event to re-trigger rather than parking on a
|
|
144
|
+
* due-time. Conservative — the min across branches never defers past
|
|
145
|
+
* the soonest a branch could fire.
|
|
146
|
+
*
|
|
147
|
+
* @internal
|
|
148
|
+
*/
|
|
149
|
+
export declare function policy_min_after_days(options: AutoclosePolicy): number | undefined;
|
|
150
|
+
/**
|
|
151
|
+
* The rolling-window width (in days) of a policy's `keep` field, or
|
|
152
|
+
* `undefined` when the policy declares no rolling window. The
|
|
153
|
+
* synthesized autoclose reaction prunes the prefix older than the
|
|
154
|
+
* window (via a windowed close) and derives its prune due-time as
|
|
155
|
+
* `tail.created` plus this many days — the earliest the oldest
|
|
156
|
+
* surviving domain event can age out of the window.
|
|
131
157
|
*
|
|
132
158
|
* @internal
|
|
133
159
|
*/
|
|
134
|
-
export declare function
|
|
160
|
+
export declare function policy_keep_days(options: AutoclosePolicy): number | undefined;
|
|
135
161
|
export declare function compile_autoclose_policy(options: AutoclosePolicy): AutoclosePredicate<Schemas>;
|
|
136
162
|
export {};
|
|
137
163
|
//# 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;
|
|
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;AA2BtE,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAElD;AAmED;;;;;;;;;GASG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;kBAoBxB,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAwBpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,MAAM,GAAG,SAAS,CAMpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAG7E;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,GACvB,kBAAkB,CAAC,OAAO,CAAC,CAiC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoclose-reaction.d.ts","sourceRoot":"","sources":["../../../src/internal/autoclose-reaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAEV,QAAQ,EACR,cAAc,EACd,OAAO,EACP,KAAK,EACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"autoclose-reaction.d.ts","sourceRoot":"","sources":["../../../src/internal/autoclose-reaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAEV,QAAQ,EACR,cAAc,EACd,OAAO,EACP,KAAK,EACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,uBAAuB,CAAC;AAK/B;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,SAAS,cAAc,CAAC,QAAQ,CAAC,EAC3C,OAAO,SAAS,OAAO,EACvB,QAAQ,SAAS,OAAO,EAExB,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EACjD,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACjD,MAAM,EAAE,eAAe,GACtB,IAAI,CAgGN"}
|
|
@@ -53,6 +53,11 @@ export declare const SAFETY_PROBE_PAGE_SIZE = 1000;
|
|
|
53
53
|
* Run the full close cycle for the given targets. Caller owns the
|
|
54
54
|
* lifecycle event emission.
|
|
55
55
|
*
|
|
56
|
+
* Targets carrying a `before` cutoff take the **windowed** branch — a
|
|
57
|
+
* pure prefix delete behind an existing snapshot (see
|
|
58
|
+
* {@link run_windowed_closes}); the rest run the guarded
|
|
59
|
+
* tombstone/restart pipeline below.
|
|
60
|
+
*
|
|
56
61
|
* @internal
|
|
57
62
|
*/
|
|
58
63
|
export declare function run_close_cycle(targets: CloseTarget[], deps: CloseCycleDeps): Promise<CloseResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-cycle.d.ts","sourceRoot":"","sources":["../../../src/internal/close-cycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,MAAM,EAEN,KAAK,EACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAc3C
|
|
1
|
+
{"version":3,"file":"close-cycle.d.ts","sourceRoot":"","sources":["../../../src/internal/close-cycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,MAAM,EAEN,KAAK,EACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAc3C;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,WAAW,CAAC,CAoEtB"}
|
|
@@ -42,10 +42,18 @@ export declare class CloseSignal extends Error {
|
|
|
42
42
|
* event id when omitted.
|
|
43
43
|
*/
|
|
44
44
|
readonly at?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Windowed close (#1011): prune events older than this cutoff behind
|
|
47
|
+
* the closest safe snapshot instead of retiring the stream. Thrown by
|
|
48
|
+
* the autoclose reaction of a `.autocloses({ keep })` state; flows
|
|
49
|
+
* into {@link CloseTarget.before}. Omitted → a full close.
|
|
50
|
+
*/
|
|
51
|
+
readonly before?: Date;
|
|
45
52
|
constructor(opts?: {
|
|
46
53
|
stream?: string;
|
|
47
54
|
archive?: () => Promise<void>;
|
|
48
55
|
at?: number;
|
|
56
|
+
before?: Date;
|
|
49
57
|
});
|
|
50
58
|
}
|
|
51
59
|
//# sourceMappingURL=close-signal.d.ts.map
|
|
@@ -1 +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;
|
|
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;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;gBAEX,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;QACZ,MAAM,CAAC,EAAE,IAAI,CAAC;KACf;CAQF"}
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
* @internal
|
|
18
18
|
*/
|
|
19
19
|
export { type AuditDeps, audit } from "./audit.js";
|
|
20
|
-
export { type AutocloseConfig, DEFAULT_AUTOCLOSE_CYCLE_MINUTES, DEFAULT_CLOSE_BATCH_SIZE, DEFAULT_CLOSE_YIELD_MS, hour_in_zone, in_autoclose_window, resolveAutocloseConfig, } from "./autoclose-config.js";
|
|
21
|
-
export { type AutoclosePolicy, compile_autoclose_policy,
|
|
20
|
+
export { type AutocloseConfig, DEFAULT_AUTOCLOSE_CYCLE_MINUTES, DEFAULT_CLOSE_BATCH_SIZE, DEFAULT_CLOSE_YIELD_MS, hour_in_zone, in_autoclose_window, next_window_open, resolveAutocloseConfig, } from "./autoclose-config.js";
|
|
21
|
+
export { type AutoclosePolicy, compile_autoclose_policy, days_after, days_before_now, policy_keep_days, policy_min_after_days, } from "./autoclose-policy.js";
|
|
22
22
|
export { AUTOCLOSE_TARGET_PREFIX, synthesize_autoclose_reactions, } from "./autoclose-reaction.js";
|
|
23
23
|
export type { EventLaneSet } from "./build-classify.js";
|
|
24
24
|
export { ALL_LANES, classify_registry } from "./build-classify.js";
|