pond-ts 0.19.0 → 0.20.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/CHANGELOG.md +25 -1
- package/dist/batch/aggregate-columns.d.ts +1 -7
- package/dist/batch/aggregate-columns.d.ts.map +1 -1
- package/dist/columnar/column.d.ts +0 -7
- package/dist/columnar/column.d.ts.map +1 -1
- package/dist/columnar/key-column.d.ts +0 -45
- package/dist/columnar/key-column.d.ts.map +1 -1
- package/dist/live/live-chunked-storage.d.ts +28 -1
- package/dist/live/live-chunked-storage.d.ts.map +1 -1
- package/dist/live/live-chunked-storage.js +175 -26
- package/dist/live/live-chunked-storage.js.map +1 -1
- package/dist/live/live-partitioned-fused-rolling.d.ts +0 -18
- package/dist/live/live-partitioned-fused-rolling.d.ts.map +1 -1
- package/dist/live/live-partitioned-series.d.ts +1 -32
- package/dist/live/live-partitioned-series.d.ts.map +1 -1
- package/dist/live/live-partitioned-series.js +126 -14
- package/dist/live/live-partitioned-series.js.map +1 -1
- package/dist/live/live-partitioned-sync-rolling.d.ts +0 -6
- package/dist/live/live-partitioned-sync-rolling.d.ts.map +1 -1
- package/dist/live/live-series.d.ts +0 -39
- package/dist/live/live-series.d.ts.map +1 -1
- package/dist/live/live-series.js +128 -28
- package/dist/live/live-series.js.map +1 -1
- package/dist/live/live-view.d.ts.map +1 -1
- package/dist/live/live-view.js +31 -3
- package/dist/live/live-view.js.map +1 -1
- package/dist/schema/series.d.ts +0 -2
- package/dist/schema/series.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,12 +7,36 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
7
7
|
file covers both packages. Pre-1.0: minor bumps may include new features and
|
|
8
8
|
type-level changes; patch bumps are strictly additive.
|
|
9
9
|
|
|
10
|
-
[Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.
|
|
10
|
+
[Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.20.0...HEAD
|
|
11
|
+
[0.20.0]: https://github.com/pjm17971/pond-ts/compare/v0.19.0...v0.20.0
|
|
11
12
|
[0.19.0]: https://github.com/pjm17971/pond-ts/compare/v0.18.0...v0.19.0
|
|
12
13
|
[0.18.0]: https://github.com/pjm17971/pond-ts/compare/v0.17.1...v0.18.0
|
|
13
14
|
|
|
14
15
|
## [Unreleased]
|
|
15
16
|
|
|
17
|
+
## [0.20.0] — 2026-06-04
|
|
18
|
+
|
|
19
|
+
Two internal performance improvements driven by the dashboard experiment at
|
|
20
|
+
256-host stress. **No public API changes** — both are behavior-preserving.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **Column-native partition routing.** `partitionBy(...)` over a strict
|
|
25
|
+
time-keyed source now routes its source chunks into per-partition
|
|
26
|
+
**chunked** sub-series via a coalescing staging tier, replacing the
|
|
27
|
+
per-partition `Event[]` retention. A large drop in retained memory and
|
|
28
|
+
object count at high partition counts (gRPC bench at 256 partitions: 60×
|
|
29
|
+
fewer columnar stores, −99.4% `Event` retention, +24% sustained throughput)
|
|
30
|
+
([#175](https://github.com/pjm17971/pond-ts/pull/175)). Behavior-preserving;
|
|
31
|
+
internal only — no public surface added.
|
|
32
|
+
- **`LiveView.toTimeSeries()` snapshot caching.** The built `TimeSeries` is
|
|
33
|
+
memoized against an internal mutation counter, so back-to-back
|
|
34
|
+
identical-state calls (multiple subscribers, framework commit batching,
|
|
35
|
+
StrictMode double-invoke) return the cached instance by reference instead of
|
|
36
|
+
rebuilding the whole snapshot — ~44 ms → ~0 at a 262k-event window. A
|
|
37
|
+
fresh-state call still builds; safe because `TimeSeries` is immutable
|
|
38
|
+
([#180](https://github.com/pjm17971/pond-ts/pull/180)).
|
|
39
|
+
|
|
16
40
|
## [0.19.0] — 2026-06-02
|
|
17
41
|
|
|
18
42
|
Adds an **experimental column-read surface to the live side** — read typed
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AggregateMap, AggregateOutputMap,
|
|
1
|
+
import type { AggregateMap, AggregateOutputMap, AggregateReducer, ScalarKind, SeriesSchema } from '../schema/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Normalised column spec used by both batch and live aggregation paths.
|
|
4
4
|
*
|
|
@@ -17,12 +17,6 @@ export type AggregateColumnSpec = {
|
|
|
17
17
|
reducer: AggregateReducer;
|
|
18
18
|
kind: ScalarKind;
|
|
19
19
|
};
|
|
20
|
-
/**
|
|
21
|
-
* @internal — discriminator between an `AggregateOutputSpec` (`{ from,
|
|
22
|
-
* using, kind? }`) and a bare reducer string/function passed in an
|
|
23
|
-
* `AggregateMap` slot.
|
|
24
|
-
*/
|
|
25
|
-
export declare function isAggregateOutputSpec<S extends SeriesSchema>(value: unknown): value is AggregateOutputSpec<S>;
|
|
26
20
|
/**
|
|
27
21
|
* Resolve a user-supplied `mapping` (either `AggregateMap<S>` or
|
|
28
22
|
* `AggregateOutputMap<S>`) against the source `schema` into a flat
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-columns.d.ts","sourceRoot":"","sources":["../../src/batch/aggregate-columns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,
|
|
1
|
+
{"version":3,"file":"aggregate-columns.d.ts","sourceRoot":"","sources":["../../src/batch/aggregate-columns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAElB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACb,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAkBF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,YAAY,EAC9D,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAC/C,mBAAmB,EAAE,CAuDvB"}
|
|
@@ -127,13 +127,6 @@ export declare class Float64Column implements ColumnBase<number, 'number'> {
|
|
|
127
127
|
readonly kind: "number";
|
|
128
128
|
readonly storage: "packed";
|
|
129
129
|
readonly length: number;
|
|
130
|
-
/**
|
|
131
|
-
* @internal Substrate-level raw buffer handle. May be oversized
|
|
132
|
-
* (`_values.length > length` for capacity-grown columns). Walk
|
|
133
|
-
* with `this.length` as the bound. For consumer code that wants
|
|
134
|
-
* a length-bounded `Float64Array`, use `toFloat64Array()`.
|
|
135
|
-
*/
|
|
136
|
-
readonly _values: Float64Array;
|
|
137
130
|
readonly validity?: ValidityBitmap;
|
|
138
131
|
constructor(values: Float64Array, length: number, validity?: ValidityBitmap);
|
|
139
132
|
read(i: number): number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/columnar/column.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,KAAK,cAAc,EAMpB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,UAAU,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU;IAC1C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAEnC,6DAA6D;IAC7D,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE/B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAErE;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAEjD;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,MAAM,GACd,aAAa,GACb,aAAa,GACb,YAAY,GACZ,WAAW,GACX,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,kBAAkB,CAAC;AAMvB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAc,YAAW,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC;IAChE,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,QAAQ,CAAC,OAAO,EAAG,QAAQ,CAAU;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/columnar/column.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,19 +88,6 @@ export declare class TimeKeyColumn implements KeyColumnBase<'time'> {
|
|
|
88
88
|
* O(1) on the key axis rather than O(e − s).
|
|
89
89
|
*/
|
|
90
90
|
sliceByRange(start: number, end: number): TimeKeyColumn;
|
|
91
|
-
/**
|
|
92
|
-
* @internal Trusted-buffer factory used by slice paths. Skips
|
|
93
|
-
* the per-row finiteness scan that the public constructor runs;
|
|
94
|
-
* the caller MUST pass a subarray of (or otherwise equivalently
|
|
95
|
-
* pre-validated) buffer from a `TimeKeyColumn` that was itself
|
|
96
|
-
* constructed via the public path. External callers must use
|
|
97
|
-
* `new TimeKeyColumn(...)`.
|
|
98
|
-
*
|
|
99
|
-
* Still validates structural invariants: finite non-negative
|
|
100
|
-
* integer `length` and `length <= begin.length`. Those are O(1)
|
|
101
|
-
* and protect against caller-passed garbage.
|
|
102
|
-
*/
|
|
103
|
-
static fromValidatedSubarray(begin: Float64Array, length: number): TimeKeyColumn;
|
|
104
91
|
/**
|
|
105
92
|
* Gathers rows by index into a new `TimeKeyColumn`. Out-of-range
|
|
106
93
|
* source indices produce a `0` slot in the output buffer — the
|
|
@@ -131,20 +118,6 @@ export declare class TimeRangeKeyColumn implements KeyColumnBase<'timeRange'> {
|
|
|
131
118
|
* See RFC §4 close-cases for why range-key max-end is deferred.
|
|
132
119
|
*/
|
|
133
120
|
sliceByRange(start: number, end: number): TimeRangeKeyColumn;
|
|
134
|
-
/**
|
|
135
|
-
* @internal Trusted-buffer factory for slice paths. Skips per-
|
|
136
|
-
* row finiteness scans on both buffers AND the `begin[i] <=
|
|
137
|
-
* end[i]` invariant check — the caller MUST pass subarrays of
|
|
138
|
-
* (or equivalently pre-validated) buffers from a
|
|
139
|
-
* `TimeRangeKeyColumn` that was itself constructed via the
|
|
140
|
-
* public path. External callers must use
|
|
141
|
-
* `new TimeRangeKeyColumn(...)`.
|
|
142
|
-
*
|
|
143
|
-
* Still validates O(1) structural invariants: finite non-
|
|
144
|
-
* negative integer `length`, and `length <= min(begin.length,
|
|
145
|
-
* end.length)`.
|
|
146
|
-
*/
|
|
147
|
-
static fromValidatedSubarray(begin: Float64Array, end: Float64Array, length: number): TimeRangeKeyColumn;
|
|
148
121
|
/**
|
|
149
122
|
* Gathers rows by index into a new `TimeRangeKeyColumn`. See
|
|
150
123
|
* `TimeKeyColumn.sliceByIndices` for the out-of-range semantics.
|
|
@@ -189,24 +162,6 @@ export declare class IntervalKeyColumn implements KeyColumnBase<'interval'> {
|
|
|
189
162
|
* `end[length - 1]`).
|
|
190
163
|
*/
|
|
191
164
|
sliceByRange(start: number, end: number): IntervalKeyColumn;
|
|
192
|
-
/**
|
|
193
|
-
* @internal Trusted-buffer factory for slice paths. Skips
|
|
194
|
-
* per-row validation: finiteness scans on begin/end, the
|
|
195
|
-
* begin[i] <= end[i] invariant check, AND the per-row label
|
|
196
|
-
* defined-and-type-matches check (which is the dominant cost
|
|
197
|
-
* for IntervalKeyColumn — `labels.read(i)` per row).
|
|
198
|
-
*
|
|
199
|
-
* Caller MUST pass subarrays / pre-validated buffers from an
|
|
200
|
-
* `IntervalKeyColumn` that was constructed via the public path
|
|
201
|
-
* (or compositionally from other trusted paths). External
|
|
202
|
-
* callers must use `new IntervalKeyColumn(...)`.
|
|
203
|
-
*
|
|
204
|
-
* The `labelKind` argument is explicit (rather than re-derived
|
|
205
|
-
* from `labels.kind`) so callers retain the source column's
|
|
206
|
-
* discriminator without an extra branch — trusted construction
|
|
207
|
-
* trusts the caller knows what they have.
|
|
208
|
-
*/
|
|
209
|
-
static fromValidatedSubarray(begin: Float64Array, end: Float64Array, labels: StringColumn | Float64Column, labelKind: IntervalLabelKind, length: number): IntervalKeyColumn;
|
|
210
165
|
/**
|
|
211
166
|
* Gathers rows by index into a new `IntervalKeyColumn`. The label
|
|
212
167
|
* column is `sliceByIndices`'d as well — for string labels the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-column.d.ts","sourceRoot":"","sources":["../../src/columnar/key-column.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,sDAAsD;AACtD,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AA0B/E;;;;GAIG;AACH,UAAU,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,GAAG,UAAU;IACjE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,iBAAiB;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAE3B,8DAA8D;IAC9D,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAMD,qBAAa,aAAc,YAAW,aAAa,CAAC,MAAM,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;gBAEf,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAc/C,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAS1B,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAIxB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"key-column.d.ts","sourceRoot":"","sources":["../../src/columnar/key-column.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,10 +48,25 @@ import type { ReadableLiveStorage } from './live-storage.js';
|
|
|
48
48
|
* after the listeners run), so they don't defeat the heap win.
|
|
49
49
|
*/
|
|
50
50
|
export declare function materializeEventsFromStore<S extends SeriesSchema>(store: ColumnarStore<S>, schema: S): EventForSchema<S>[];
|
|
51
|
+
/**
|
|
52
|
+
* Like {@link materializeEventsFromStore} but over a subset of rows
|
|
53
|
+
* (`indices`, in order) — the transient `'event'` / `'batch'` fan-out
|
|
54
|
+
* for the column-native partition router's staged slice. NOT cached
|
|
55
|
+
* (young-gen), so it doesn't defeat the heap win.
|
|
56
|
+
*/
|
|
57
|
+
export declare function materializeEventsFromStoreAt<S extends SeriesSchema>(store: ColumnarStore<S>, indices: ArrayLike<number>, schema: S): EventForSchema<S>[];
|
|
51
58
|
export declare class ChunkedColumnarLiveStorage<S extends SeriesSchema> implements ReadableLiveStorage<S> {
|
|
52
59
|
#private;
|
|
53
|
-
constructor(schema: S);
|
|
60
|
+
constructor(schema: S, flushThreshold?: number);
|
|
54
61
|
get length(): number;
|
|
62
|
+
/**
|
|
63
|
+
* Number of committed (compacted) chunks. Test/bench observability for
|
|
64
|
+
* the coalescing win — under thin partition routing this stays bounded
|
|
65
|
+
* (≈ rows / flushThreshold) instead of one chunk per source batch.
|
|
66
|
+
*/
|
|
67
|
+
get committedChunkCount(): number;
|
|
68
|
+
/** Rows currently in the un-flushed staging tier (`< flushThreshold`). */
|
|
69
|
+
get pendingCount(): number;
|
|
55
70
|
/**
|
|
56
71
|
* Validate a batch of rows directly into columns and append it as a
|
|
57
72
|
* chunk. No per-row `Event` is created. The caller (`LiveSeries`)
|
|
@@ -66,6 +81,18 @@ export declare class ChunkedColumnarLiveStorage<S extends SeriesSchema> implemen
|
|
|
66
81
|
* convenience used by the isolated tests.
|
|
67
82
|
*/
|
|
68
83
|
appendStore(store: ColumnarStore<S>): void;
|
|
84
|
+
/**
|
|
85
|
+
* Stage a partition's slice of a source chunk: gather rows `indices`
|
|
86
|
+
* from `store` into the pending tier (cheap tuples — NO per-batch
|
|
87
|
+
* `ColumnarStore`), flushing one packed chunk when the tier reaches
|
|
88
|
+
* `#flushThreshold`. The column-native partition-routing path
|
|
89
|
+
* (`LivePartitionedSeries.#routeChunk`); the coalescing fix for thin
|
|
90
|
+
* scatter (gRPC V7: naive one-chunk-per-slice was 23.5× the object
|
|
91
|
+
* count + a throughput collapse). The caller guarantees the gathered
|
|
92
|
+
* rows are `>=` the current last key (strict source + order-preserving
|
|
93
|
+
* scatter). Time-keyed only — the chunked routing gate is strict+time.
|
|
94
|
+
*/
|
|
95
|
+
stageRows(store: ColumnarStore<S>, indices: ArrayLike<number>): void;
|
|
69
96
|
at(index: number): EventForSchema<S> | undefined;
|
|
70
97
|
keyAt(index: number): EventKey | undefined;
|
|
71
98
|
beginAt(index: number): number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-chunked-storage.d.ts","sourceRoot":"","sources":["../../src/live/live-chunked-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,YAAY,EAC/D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,CAAC,GACR,cAAc,CAAC,CAAC,CAAC,EAAE,CAoBrB;AAiBD,qBAAa,0BAA0B,CACrC,CAAC,SAAS,YAAY,CACtB,YAAW,mBAAmB,CAAC,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"live-chunked-storage.d.ts","sourceRoot":"","sources":["../../src/live/live-chunked-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,YAAY,EAC/D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,CAAC,GACR,cAAc,CAAC,CAAC,CAAC,EAAE,CAoBrB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,YAAY,EACjE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,EAC1B,MAAM,EAAE,CAAC,GACR,cAAc,CAAC,CAAC,CAAC,EAAE,CAqBrB;AAiBD,qBAAa,0BAA0B,CACrC,CAAC,SAAS,YAAY,CACtB,YAAW,mBAAmB,CAAC,CAAC,CAAC;;gBAsBrB,MAAM,EAAE,CAAC,EAAE,cAAc,SAAM;IAkB3C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;OAIG;IACH,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,0EAA0E;IAC1E,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAY/D;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAY1C;;;;;;;;;;OAUG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAyDpE,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAehD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAa1C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAS1C,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IAIrC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IASxD,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAM3B,KAAK,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAYzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;CAkGtC"}
|
|
@@ -68,6 +68,33 @@ export function materializeEventsFromStore(store, schema) {
|
|
|
68
68
|
}
|
|
69
69
|
return out;
|
|
70
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Like {@link materializeEventsFromStore} but over a subset of rows
|
|
73
|
+
* (`indices`, in order) — the transient `'event'` / `'batch'` fan-out
|
|
74
|
+
* for the column-native partition router's staged slice. NOT cached
|
|
75
|
+
* (young-gen), so it doesn't defeat the heap win.
|
|
76
|
+
*/
|
|
77
|
+
export function materializeEventsFromStoreAt(store, indices, schema) {
|
|
78
|
+
const keyKind = schema[0].kind;
|
|
79
|
+
const valueNames = [];
|
|
80
|
+
for (let i = 1; i < schema.length; i += 1) {
|
|
81
|
+
valueNames.push(schema[i].name);
|
|
82
|
+
}
|
|
83
|
+
const out = new Array(indices.length);
|
|
84
|
+
for (let j = 0; j < indices.length; j += 1) {
|
|
85
|
+
const i = indices[j];
|
|
86
|
+
const begin = store.beginAt(i);
|
|
87
|
+
const key = keyKind === 'time'
|
|
88
|
+
? new Time(begin)
|
|
89
|
+
: new TimeRange({ start: begin, end: store.endAt(i) });
|
|
90
|
+
const data = {};
|
|
91
|
+
for (let v = 0; v < valueNames.length; v += 1) {
|
|
92
|
+
data[valueNames[v]] = store.valueAt(i, valueNames[v]);
|
|
93
|
+
}
|
|
94
|
+
out[j] = new Event(key, data);
|
|
95
|
+
}
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
71
98
|
/** Row-range slice of a store: sliced keys + each column sliced in lockstep. */
|
|
72
99
|
function sliceStore(store, start, end) {
|
|
73
100
|
const keys = store.keys.sliceByRange(start, end);
|
|
@@ -83,20 +110,49 @@ export class ChunkedColumnarLiveStorage {
|
|
|
83
110
|
#keyKind;
|
|
84
111
|
#valueNames;
|
|
85
112
|
#chunks = [];
|
|
86
|
-
|
|
113
|
+
/** Rows committed to `#chunks` (excludes the pending staging tier). */
|
|
114
|
+
#committed = 0;
|
|
115
|
+
/**
|
|
116
|
+
* Staging tier — gathered row tuples not yet compacted into a chunk.
|
|
117
|
+
* The coalescing fix for thin partition routing (scatter delivers ~1
|
|
118
|
+
* row per partition per source batch; one chunk each would be ~23×
|
|
119
|
+
* the object count of the Events it replaces — see PLAN "Deferred").
|
|
120
|
+
* Rows accumulate here (cheap pushes, no per-batch `ColumnarStore`),
|
|
121
|
+
* then flush as ONE packed chunk at `#flushThreshold`. Readable in
|
|
122
|
+
* place so the live series' `length` / `at(i)` / retention see staged
|
|
123
|
+
* rows immediately. Bounded to `[0, #flushThreshold)` at any instant.
|
|
124
|
+
*/
|
|
125
|
+
#pending = [];
|
|
126
|
+
#flushThreshold;
|
|
87
127
|
/** Lazy event materialization cache, keyed by logical index. */
|
|
88
128
|
#cache = new Map();
|
|
89
|
-
constructor(schema) {
|
|
129
|
+
constructor(schema, flushThreshold = 256) {
|
|
90
130
|
this.#schema = schema;
|
|
91
131
|
const keyKind = schema[0].kind;
|
|
92
132
|
if (keyKind !== 'time' && keyKind !== 'timeRange') {
|
|
93
133
|
throw new Error(`ChunkedColumnarLiveStorage: unsupported key kind '${keyKind}' (expected 'time' | 'timeRange')`);
|
|
94
134
|
}
|
|
135
|
+
if (!Number.isInteger(flushThreshold) || flushThreshold < 1) {
|
|
136
|
+
throw new Error(`ChunkedColumnarLiveStorage: flushThreshold must be a positive integer, got ${flushThreshold}`);
|
|
137
|
+
}
|
|
95
138
|
this.#keyKind = keyKind;
|
|
139
|
+
this.#flushThreshold = flushThreshold;
|
|
96
140
|
this.#valueNames = schema.slice(1).map((c) => c.name);
|
|
97
141
|
}
|
|
98
142
|
get length() {
|
|
99
|
-
return this.#
|
|
143
|
+
return this.#committed + this.#pending.length;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Number of committed (compacted) chunks. Test/bench observability for
|
|
147
|
+
* the coalescing win — under thin partition routing this stays bounded
|
|
148
|
+
* (≈ rows / flushThreshold) instead of one chunk per source batch.
|
|
149
|
+
*/
|
|
150
|
+
get committedChunkCount() {
|
|
151
|
+
return this.#chunks.length;
|
|
152
|
+
}
|
|
153
|
+
/** Rows currently in the un-flushed staging tier (`< flushThreshold`). */
|
|
154
|
+
get pendingCount() {
|
|
155
|
+
return this.#pending.length;
|
|
100
156
|
}
|
|
101
157
|
/**
|
|
102
158
|
* Validate a batch of rows directly into columns and append it as a
|
|
@@ -123,12 +179,72 @@ export class ChunkedColumnarLiveStorage {
|
|
|
123
179
|
appendStore(store) {
|
|
124
180
|
if (store.length === 0)
|
|
125
181
|
return;
|
|
182
|
+
// A direct chunk lands logically AFTER any staged rows, so flush
|
|
183
|
+
// pending first to keep committed order correct. (In practice a
|
|
184
|
+
// storage uses either appendStore — the source's big batches — or
|
|
185
|
+
// stageRows — partition routing — not both; the guard keeps the
|
|
186
|
+
// order contract unconditional.)
|
|
187
|
+
if (this.#pending.length > 0)
|
|
188
|
+
this.#flushPending();
|
|
126
189
|
this.#chunks.push(store);
|
|
127
|
-
this.#
|
|
190
|
+
this.#committed += store.length;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Stage a partition's slice of a source chunk: gather rows `indices`
|
|
194
|
+
* from `store` into the pending tier (cheap tuples — NO per-batch
|
|
195
|
+
* `ColumnarStore`), flushing one packed chunk when the tier reaches
|
|
196
|
+
* `#flushThreshold`. The column-native partition-routing path
|
|
197
|
+
* (`LivePartitionedSeries.#routeChunk`); the coalescing fix for thin
|
|
198
|
+
* scatter (gRPC V7: naive one-chunk-per-slice was 23.5× the object
|
|
199
|
+
* count + a throughput collapse). The caller guarantees the gathered
|
|
200
|
+
* rows are `>=` the current last key (strict source + order-preserving
|
|
201
|
+
* scatter). Time-keyed only — the chunked routing gate is strict+time.
|
|
202
|
+
*/
|
|
203
|
+
stageRows(store, indices) {
|
|
204
|
+
if (this.#keyKind !== 'time') {
|
|
205
|
+
throw new Error(`ChunkedColumnarLiveStorage.stageRows: only 'time' keys are stageable (got '${this.#keyKind}')`);
|
|
206
|
+
}
|
|
207
|
+
const k = indices.length;
|
|
208
|
+
if (k === 0)
|
|
209
|
+
return;
|
|
210
|
+
const valueNames = this.#valueNames;
|
|
211
|
+
for (let j = 0; j < k; j += 1) {
|
|
212
|
+
const i = indices[j];
|
|
213
|
+
const row = [store.beginAt(i)];
|
|
214
|
+
for (let v = 0; v < valueNames.length; v += 1) {
|
|
215
|
+
row.push(store.valueAt(i, valueNames[v]));
|
|
216
|
+
}
|
|
217
|
+
this.#pending.push(row);
|
|
218
|
+
}
|
|
219
|
+
if (this.#pending.length >= this.#flushThreshold)
|
|
220
|
+
this.#flushPending();
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Compact the pending tier into one packed chunk. Rows are trusted
|
|
224
|
+
* (gathered from a validated source store), but reusing
|
|
225
|
+
* `validateAndNormalizeColumnar` is fine — it runs once per
|
|
226
|
+
* `#flushThreshold` rows (amortized O(N)), and avoids re-implementing
|
|
227
|
+
* per-kind column + validity construction.
|
|
228
|
+
*/
|
|
229
|
+
#flushPending() {
|
|
230
|
+
if (this.#pending.length === 0)
|
|
231
|
+
return;
|
|
232
|
+
const { keys, columns } = validateAndNormalizeColumnar({
|
|
233
|
+
name: 'live-chunk',
|
|
234
|
+
schema: this.#schema,
|
|
235
|
+
rows: this.#pending,
|
|
236
|
+
});
|
|
237
|
+
this.#chunks.push(ColumnarStore.fromTrustedStore(this.#schema, keys, columns));
|
|
238
|
+
this.#committed += this.#pending.length;
|
|
239
|
+
this.#pending = [];
|
|
128
240
|
}
|
|
129
|
-
/**
|
|
241
|
+
/**
|
|
242
|
+
* Locate a COMMITTED logical index `i` as `[chunkIndex, localIndex]`,
|
|
243
|
+
* or null if out of the committed range. Pending-tier indices
|
|
244
|
+
* (`i >= #committed`) are handled by the callers, not here.
|
|
245
|
+
*/
|
|
130
246
|
#locate(i) {
|
|
131
|
-
if (i < 0 || i >= this.#
|
|
247
|
+
if (i < 0 || i >= this.#committed)
|
|
132
248
|
return null;
|
|
133
249
|
let acc = 0;
|
|
134
250
|
for (let c = 0; c < this.#chunks.length; c += 1) {
|
|
@@ -140,33 +256,44 @@ export class ChunkedColumnarLiveStorage {
|
|
|
140
256
|
return null; // unreachable given the range guard
|
|
141
257
|
}
|
|
142
258
|
at(index) {
|
|
143
|
-
|
|
144
|
-
if (loc === null)
|
|
259
|
+
if (index < 0 || index >= this.length)
|
|
145
260
|
return undefined;
|
|
146
261
|
let event = this.#cache.get(index);
|
|
147
262
|
if (event === undefined) {
|
|
148
|
-
|
|
263
|
+
if (index < this.#committed) {
|
|
264
|
+
const loc = this.#locate(index);
|
|
265
|
+
event = this.#materializeAt(loc[0], loc[1]);
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
event = this.#materializePending(index - this.#committed);
|
|
269
|
+
}
|
|
149
270
|
this.#cache.set(index, event);
|
|
150
271
|
}
|
|
151
272
|
return event;
|
|
152
273
|
}
|
|
153
274
|
keyAt(index) {
|
|
154
|
-
|
|
155
|
-
if (loc === null)
|
|
275
|
+
if (index < 0 || index >= this.length)
|
|
156
276
|
return undefined;
|
|
157
277
|
const cached = this.#cache.get(index);
|
|
158
278
|
if (cached !== undefined)
|
|
159
279
|
return cached.key();
|
|
160
|
-
|
|
280
|
+
if (index < this.#committed) {
|
|
281
|
+
const loc = this.#locate(index);
|
|
282
|
+
return this.#keyAt(loc[0], loc[1]);
|
|
283
|
+
}
|
|
284
|
+
return new Time(this.#pending[index - this.#committed][0]);
|
|
161
285
|
}
|
|
162
286
|
beginAt(index) {
|
|
163
|
-
|
|
164
|
-
if (loc === null)
|
|
287
|
+
if (index < 0 || index >= this.length)
|
|
165
288
|
return undefined;
|
|
166
|
-
|
|
289
|
+
if (index < this.#committed) {
|
|
290
|
+
const loc = this.#locate(index);
|
|
291
|
+
return this.#chunks[loc[0]].beginAt(loc[1]);
|
|
292
|
+
}
|
|
293
|
+
return this.#pending[index - this.#committed][0];
|
|
167
294
|
}
|
|
168
295
|
last() {
|
|
169
|
-
return this.at(this
|
|
296
|
+
return this.at(this.length - 1);
|
|
170
297
|
}
|
|
171
298
|
evictPrefix(n) {
|
|
172
299
|
if (n <= 0)
|
|
@@ -185,24 +312,24 @@ export class ChunkedColumnarLiveStorage {
|
|
|
185
312
|
this.#shiftCacheBy(n);
|
|
186
313
|
}
|
|
187
314
|
clear() {
|
|
188
|
-
const len = this
|
|
315
|
+
const len = this.length;
|
|
189
316
|
if (len === 0)
|
|
190
317
|
return [];
|
|
191
318
|
const all = new Array(len);
|
|
192
319
|
for (let i = 0; i < len; i += 1)
|
|
193
320
|
all[i] = this.at(i);
|
|
194
321
|
this.#chunks = [];
|
|
195
|
-
this.#
|
|
322
|
+
this.#committed = 0;
|
|
323
|
+
this.#pending = [];
|
|
196
324
|
this.#cache.clear();
|
|
197
325
|
return all;
|
|
198
326
|
}
|
|
199
327
|
snapshot(name) {
|
|
200
|
-
// Walk chunks
|
|
201
|
-
// snapshot — concatSorted(chunks) → trusted
|
|
202
|
-
// deferred follow-up; snapshot isn't the hot path.
|
|
203
|
-
// array backing's row-rebuild for now.)
|
|
328
|
+
// Walk committed chunks then the pending tier, materializing rows.
|
|
329
|
+
// (A columnar fast-path snapshot — concatSorted(chunks) → trusted
|
|
330
|
+
// TimeSeries — is a deferred follow-up; snapshot isn't the hot path.)
|
|
204
331
|
const schema = this.#schema;
|
|
205
|
-
const rows = new Array(this
|
|
332
|
+
const rows = new Array(this.length);
|
|
206
333
|
let r = 0;
|
|
207
334
|
for (let c = 0; c < this.#chunks.length; c += 1) {
|
|
208
335
|
const store = this.#chunks[c];
|
|
@@ -215,25 +342,37 @@ export class ChunkedColumnarLiveStorage {
|
|
|
215
342
|
r += 1;
|
|
216
343
|
}
|
|
217
344
|
}
|
|
345
|
+
for (let p = 0; p < this.#pending.length; p += 1) {
|
|
346
|
+
const pr = this.#pending[p];
|
|
347
|
+
rows[r] = [new Time(pr[0]), ...pr.slice(1)];
|
|
348
|
+
r += 1;
|
|
349
|
+
}
|
|
218
350
|
return new TimeSeries({ name, schema, rows: rows });
|
|
219
351
|
}
|
|
220
|
-
/**
|
|
352
|
+
/**
|
|
353
|
+
* Drop exactly the oldest `n` rows: whole committed chunks, then a
|
|
354
|
+
* boundary slice, then the pending tier (only reached when the
|
|
355
|
+
* retention window is smaller than the pending tail — tiny windows).
|
|
356
|
+
*/
|
|
221
357
|
#evictExact(n) {
|
|
222
358
|
let toEvict = n;
|
|
223
359
|
while (toEvict > 0 && this.#chunks.length > 0) {
|
|
224
360
|
const c0 = this.#chunks[0];
|
|
225
361
|
if (c0.length <= toEvict) {
|
|
226
362
|
toEvict -= c0.length;
|
|
227
|
-
this.#
|
|
363
|
+
this.#committed -= c0.length;
|
|
228
364
|
this.#chunks.shift();
|
|
229
365
|
}
|
|
230
366
|
else {
|
|
231
367
|
// Partial: slice the oldest `toEvict` rows off the boundary chunk.
|
|
232
368
|
this.#chunks[0] = sliceStore(c0, toEvict, c0.length);
|
|
233
|
-
this.#
|
|
369
|
+
this.#committed -= toEvict;
|
|
234
370
|
toEvict = 0;
|
|
235
371
|
}
|
|
236
372
|
}
|
|
373
|
+
if (toEvict > 0 && this.#pending.length > 0) {
|
|
374
|
+
this.#pending.splice(0, Math.min(toEvict, this.#pending.length));
|
|
375
|
+
}
|
|
237
376
|
}
|
|
238
377
|
/** Remap the cache after evicting `n` head rows: drop `<n`, shift the rest down. */
|
|
239
378
|
#shiftCacheBy(n) {
|
|
@@ -257,6 +396,16 @@ export class ChunkedColumnarLiveStorage {
|
|
|
257
396
|
end: store.endAt(localIdx),
|
|
258
397
|
});
|
|
259
398
|
}
|
|
399
|
+
/** Materialize an Event from a pending-tier row tuple (time-keyed). */
|
|
400
|
+
#materializePending(p) {
|
|
401
|
+
const row = this.#pending[p];
|
|
402
|
+
const key = new Time(row[0]);
|
|
403
|
+
const data = {};
|
|
404
|
+
for (let v = 0; v < this.#valueNames.length; v += 1) {
|
|
405
|
+
data[this.#valueNames[v]] = row[v + 1];
|
|
406
|
+
}
|
|
407
|
+
return new Event(key, data);
|
|
408
|
+
}
|
|
260
409
|
#materializeAt(chunkIdx, localIdx) {
|
|
261
410
|
const store = this.#chunks[chunkIdx];
|
|
262
411
|
const begin = store.beginAt(localIdx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-chunked-storage.js","sourceRoot":"","sources":["../../src/live/live-chunked-storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live-chunked-storage.js","sourceRoot":"","sources":["../../src/live/live-chunked-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { type ClockTrigger } from './triggers.js';
|
|
2
|
-
import { type HistoryOption } from './live-history.js';
|
|
3
1
|
import type { EventForSchema, LiveSource, SeriesSchema } from '../schema/index.js';
|
|
4
|
-
import type { FusedMapping } from '../schema/index.js';
|
|
5
2
|
type EventListener = (event: any) => void;
|
|
6
3
|
/**
|
|
7
4
|
* Synchronised partitioned fused multi-window rolling. Maintains N
|
|
@@ -35,25 +32,10 @@ export declare class LivePartitionedFusedRolling<S extends SeriesSchema, K exten
|
|
|
35
32
|
#private;
|
|
36
33
|
readonly name: string;
|
|
37
34
|
readonly schema: Out;
|
|
38
|
-
/**
|
|
39
|
-
* @internal — constructed by `LivePartitionedSeries.rolling`'s
|
|
40
|
-
* keyed-form clock-trigger overload.
|
|
41
|
-
*/
|
|
42
|
-
constructor(upstreamName: string, byColumn: string, byColumnKind: string, reducerInputSchema: SeriesSchema, fusedMapping: FusedMapping<SeriesSchema>, trigger: ClockTrigger, options?: {
|
|
43
|
-
minSamples?: number;
|
|
44
|
-
declaredGroups?: ReadonlyArray<K>;
|
|
45
|
-
history?: HistoryOption | undefined;
|
|
46
|
-
});
|
|
47
35
|
get length(): number;
|
|
48
36
|
at(index: number): EventForSchema<Out> | undefined;
|
|
49
37
|
on(type: 'event', fn: EventListener): () => void;
|
|
50
38
|
dispose(): void;
|
|
51
|
-
/**
|
|
52
|
-
* @internal — used by `LivePartitionedSeries.rolling` to register
|
|
53
|
-
* each per-partition `'event'` listener disposer so this fused
|
|
54
|
-
* rolling can detach them on `dispose()`.
|
|
55
|
-
*/
|
|
56
|
-
_registerUnsubscribe(unsub: () => void): void;
|
|
57
39
|
/**
|
|
58
40
|
* Called by `LivePartitionedSeries` for each event arriving on a
|
|
59
41
|
* partition's `LiveSource`. Updates that partition's per-window
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-partitioned-fused-rolling.d.ts","sourceRoot":"","sources":["../../src/live/live-partitioned-fused-rolling.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"live-partitioned-fused-rolling.d.ts","sourceRoot":"","sources":["../../src/live/live-partitioned-fused-rolling.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAIV,cAAc,EACd,UAAU,EACV,YAAY,EACb,MAAM,oBAAoB,CAAC;AAoD5B,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;AAkB1C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,2BAA2B,CACtC,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,MAAM,EAChB,GAAG,SAAS,YAAY,CACxB,YAAW,UAAU,CAAC,GAAG,CAAC;;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IAyJrB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS;IAKlD,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,GAAG,MAAM,IAAI;IAYhD,OAAO,IAAI,IAAI;IAkBf;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IA8LvD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,IAAI;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB;CA2BF"}
|