pond-ts 0.11.7 → 0.11.8
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 +53 -1
- package/dist/LiveRollingAggregation.d.ts +35 -0
- package/dist/LiveRollingAggregation.d.ts.map +1 -1
- package/dist/LiveRollingAggregation.js +41 -0
- package/dist/LiveRollingAggregation.js.map +1 -1
- package/dist/LiveSequenceRollingAggregation.d.ts +100 -0
- package/dist/LiveSequenceRollingAggregation.d.ts.map +1 -0
- package/dist/LiveSequenceRollingAggregation.js +170 -0
- package/dist/LiveSequenceRollingAggregation.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,10 +7,62 @@ 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.11.
|
|
10
|
+
[Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.11.8...HEAD
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [0.11.8] — 2026-04-30
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- **`rolling.sample(sequence)`** on `LiveRollingAggregation` — taps a
|
|
19
|
+
rolling aggregation and emits one snapshot of the rolling state each
|
|
20
|
+
time a source event crosses an epoch-aligned boundary of `sequence`.
|
|
21
|
+
Closes the frontend-telemetry gap: collect high-frequency timing
|
|
22
|
+
events, sample p95 latency to a backend every 30 s, while the same
|
|
23
|
+
rolling drives an in-app live display (no duplicated deque).
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
const rolling = timings.rolling('1m', { latency: 'p95' });
|
|
27
|
+
|
|
28
|
+
// One sampler → backend report every 30 s of event time
|
|
29
|
+
const reported = rolling.sample(Sequence.every('30s'));
|
|
30
|
+
reported.on('event', (e) =>
|
|
31
|
+
fetch('/api/telemetry', { method: 'POST', body: JSON.stringify(e.data()) }),
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// Same rolling drives the UI live display
|
|
35
|
+
useLiveQuery(timings, () => rolling.value());
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`sequence` must be a fixed-step `Sequence`; calendar sequences
|
|
39
|
+
(`Sequence.daily()` etc.) are rejected upfront — boundary indexing
|
|
40
|
+
needs a constant step.
|
|
41
|
+
|
|
42
|
+
Emission is **data-driven**: no `setInterval`. If the source goes
|
|
43
|
+
quiet, no events fire. A single source event spanning multiple
|
|
44
|
+
boundaries fires exactly one event at the new bucket. Snapshot is
|
|
45
|
+
taken after the boundary-crossing event is ingested by the rolling,
|
|
46
|
+
so the emitted value includes that event's contribution.
|
|
47
|
+
|
|
48
|
+
**Independent lifetimes.** `sample.dispose()` only detaches the
|
|
49
|
+
sampler from the rolling; the rolling's lifecycle stays the user's
|
|
50
|
+
responsibility. One rolling can power multiple `.sample()` cadences
|
|
51
|
+
plus direct `rolling.value()` reads without coupling.
|
|
52
|
+
|
|
53
|
+
- **`LiveSequenceRollingAggregation` exported** from package root with
|
|
54
|
+
full `LiveSource<Out>` surface and the same view-transform set as
|
|
55
|
+
`LiveRollingAggregation` (`filter`, `map`, `select`, `window`,
|
|
56
|
+
`diff`, `rate`, `pctChange`, `fill`, `cumulative`, `rolling`,
|
|
57
|
+
`aggregate`).
|
|
58
|
+
|
|
59
|
+
- **Telemetry-reporting recipe** at
|
|
60
|
+
`website/docs/recipes/telemetry-reporting.mdx` — end-to-end
|
|
61
|
+
frontend-collection → backend-summary pattern using `.sample()`,
|
|
62
|
+
plus the React in-app display via `useLiveQuery`.
|
|
63
|
+
|
|
64
|
+
[0.11.8]: https://github.com/pjm17971/pond-ts/compare/v0.11.7...v0.11.8
|
|
65
|
+
|
|
14
66
|
## [0.11.7] — 2026-04-29
|
|
15
67
|
|
|
16
68
|
### Added
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LiveAggregation } from './LiveAggregation.js';
|
|
2
|
+
import { LiveSequenceRollingAggregation } from './LiveSequenceRollingAggregation.js';
|
|
2
3
|
import { LiveView, type LiveFillMapping, type LiveFillStrategy } from './LiveView.js';
|
|
3
4
|
import type { Sequence } from './Sequence.js';
|
|
4
5
|
import type { AggregateMap, DiffSchema, EventDataForSchema, EventForSchema, LiveSource, NumericColumnNameForSchema, ColumnValue, SelectSchema, SeriesSchema } from './types.js';
|
|
@@ -47,6 +48,40 @@ export declare class LiveRollingAggregation<S extends SeriesSchema, Out extends
|
|
|
47
48
|
[K in Targets]: 'sum' | 'max' | 'min' | 'count' | ((acc: number, value: number) => number);
|
|
48
49
|
}): LiveView<DiffSchema<Out, Targets>>;
|
|
49
50
|
aggregate<const M extends AggregateMap<Out>>(sequence: Sequence, mapping: M): LiveAggregation<Out>;
|
|
51
|
+
/**
|
|
52
|
+
* Returns a live source that emits one snapshot of this rolling
|
|
53
|
+
* aggregation each time a source event crosses an epoch-aligned
|
|
54
|
+
* boundary of `sequence`. The output is time-keyed at boundary
|
|
55
|
+
* timestamps; the value is the rolling-window aggregate as it stood
|
|
56
|
+
* the moment the boundary-crossing event was ingested.
|
|
57
|
+
*
|
|
58
|
+
* **Emission is data-driven.** No wall-clock timer; if the source
|
|
59
|
+
* goes quiet, no events are emitted. If a single source event jumps
|
|
60
|
+
* multiple boundaries, exactly one event fires at the new bucket's
|
|
61
|
+
* start, not one per skipped boundary.
|
|
62
|
+
*
|
|
63
|
+
* **Independent lifetimes.** The returned sampler holds a reference
|
|
64
|
+
* to `this` rolling but does not own it — `sample.dispose()` only
|
|
65
|
+
* detaches the sampler. Call `rolling.dispose()` separately when
|
|
66
|
+
* done with the rolling itself. This lets one rolling drive several
|
|
67
|
+
* downstream consumers (e.g. a `.sample('30s')` for the backend plus
|
|
68
|
+
* direct `rolling.value()` reads for an in-app display) without
|
|
69
|
+
* coupling their lifetimes.
|
|
70
|
+
*
|
|
71
|
+
* `sequence` must be a fixed-step `Sequence` (e.g. `Sequence.every('30s')`).
|
|
72
|
+
* Calendar sequences (`Sequence.daily()` etc.) are rejected because
|
|
73
|
+
* boundary indexing requires a constant step.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* const rolling = timings.rolling('1m', { latency: 'p95' });
|
|
78
|
+
* const reported = rolling.sample(Sequence.every('30s'));
|
|
79
|
+
* reported.on('event', e =>
|
|
80
|
+
* fetch('/api/telemetry', { method: 'POST', body: JSON.stringify(e.data()) }),
|
|
81
|
+
* );
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
sample(sequence: Sequence): LiveSequenceRollingAggregation<S, Out>;
|
|
50
85
|
dispose(): void;
|
|
51
86
|
}
|
|
52
87
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveRollingAggregation.d.ts","sourceRoot":"","sources":["../src/LiveRollingAggregation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LiveRollingAggregation.d.ts","sourceRoot":"","sources":["../src/LiveRollingAggregation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Event } from './Event.js';
|
|
2
2
|
import { LiveAggregation } from './LiveAggregation.js';
|
|
3
|
+
import { LiveSequenceRollingAggregation } from './LiveSequenceRollingAggregation.js';
|
|
3
4
|
import { LiveView, makeDiffView, makeFillView, makeCumulativeView, } from './LiveView.js';
|
|
4
5
|
import { resolveReducer } from './reducers/index.js';
|
|
5
6
|
import { parseDuration } from './utils/duration.js';
|
|
@@ -142,6 +143,46 @@ export class LiveRollingAggregation {
|
|
|
142
143
|
aggregate(sequence, mapping) {
|
|
143
144
|
return new LiveAggregation(this, sequence, mapping);
|
|
144
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns a live source that emits one snapshot of this rolling
|
|
148
|
+
* aggregation each time a source event crosses an epoch-aligned
|
|
149
|
+
* boundary of `sequence`. The output is time-keyed at boundary
|
|
150
|
+
* timestamps; the value is the rolling-window aggregate as it stood
|
|
151
|
+
* the moment the boundary-crossing event was ingested.
|
|
152
|
+
*
|
|
153
|
+
* **Emission is data-driven.** No wall-clock timer; if the source
|
|
154
|
+
* goes quiet, no events are emitted. If a single source event jumps
|
|
155
|
+
* multiple boundaries, exactly one event fires at the new bucket's
|
|
156
|
+
* start, not one per skipped boundary.
|
|
157
|
+
*
|
|
158
|
+
* **Independent lifetimes.** The returned sampler holds a reference
|
|
159
|
+
* to `this` rolling but does not own it — `sample.dispose()` only
|
|
160
|
+
* detaches the sampler. Call `rolling.dispose()` separately when
|
|
161
|
+
* done with the rolling itself. This lets one rolling drive several
|
|
162
|
+
* downstream consumers (e.g. a `.sample('30s')` for the backend plus
|
|
163
|
+
* direct `rolling.value()` reads for an in-app display) without
|
|
164
|
+
* coupling their lifetimes.
|
|
165
|
+
*
|
|
166
|
+
* `sequence` must be a fixed-step `Sequence` (e.g. `Sequence.every('30s')`).
|
|
167
|
+
* Calendar sequences (`Sequence.daily()` etc.) are rejected because
|
|
168
|
+
* boundary indexing requires a constant step.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* const rolling = timings.rolling('1m', { latency: 'p95' });
|
|
173
|
+
* const reported = rolling.sample(Sequence.every('30s'));
|
|
174
|
+
* reported.on('event', e =>
|
|
175
|
+
* fetch('/api/telemetry', { method: 'POST', body: JSON.stringify(e.data()) }),
|
|
176
|
+
* );
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
sample(sequence) {
|
|
180
|
+
if (sequence.kind() !== 'fixed') {
|
|
181
|
+
throw new TypeError('rolling.sample(sequence) requires a fixed-step Sequence; ' +
|
|
182
|
+
'calendar sequences have no constant boundary spacing.');
|
|
183
|
+
}
|
|
184
|
+
return new LiveSequenceRollingAggregation(this, sequence);
|
|
185
|
+
}
|
|
145
186
|
dispose() {
|
|
146
187
|
this.#unsubscribe();
|
|
147
188
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveRollingAggregation.js","sourceRoot":"","sources":["../src/LiveRollingAggregation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LiveRollingAggregation.js","sourceRoot":"","sources":["../src/LiveRollingAggregation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { LiveAggregation } from './LiveAggregation.js';
|
|
2
|
+
import { LiveRollingAggregation, type LiveRollingOptions, type RollingWindow } from './LiveRollingAggregation.js';
|
|
3
|
+
import { LiveView, type LiveFillMapping, type LiveFillStrategy } from './LiveView.js';
|
|
4
|
+
import { Sequence } from './Sequence.js';
|
|
5
|
+
import type { AggregateMap, DiffSchema, EventDataForSchema, EventForSchema, NumericColumnNameForSchema, RollingSchema, SelectSchema, SeriesSchema } from './types.js';
|
|
6
|
+
type EventListener = (event: any) => void;
|
|
7
|
+
/**
|
|
8
|
+
* A live source that emits one snapshot of a `LiveRollingAggregation` each
|
|
9
|
+
* time a source event crosses an epoch-aligned boundary of the configured
|
|
10
|
+
* `Sequence`. Output events are time-keyed at the boundary timestamp and
|
|
11
|
+
* carry the rolling-window aggregate as it stood the moment the
|
|
12
|
+
* boundary-crossing event was ingested.
|
|
13
|
+
*
|
|
14
|
+
* **Created via `rolling.sample(sequence)`.** The user retains the
|
|
15
|
+
* underlying `LiveRollingAggregation` reference, so the rolling state is
|
|
16
|
+
* available for direct reads (`rolling.value()`) and for reuse — e.g.
|
|
17
|
+
* driving an in-app live display alongside a sampled backend report.
|
|
18
|
+
*
|
|
19
|
+
* **Emission is data-driven.** If no source events arrive during an
|
|
20
|
+
* interval, no event is emitted for that interval. Consistent with the
|
|
21
|
+
* rest of pond-ts: data is the clock.
|
|
22
|
+
*
|
|
23
|
+
* **One emission per crossing, not per skipped interval.** If a source
|
|
24
|
+
* event jumps multiple boundaries at once (e.g. an event at 90 001 ms
|
|
25
|
+
* after a gap since 0 ms with a 30 s sequence), exactly one event is
|
|
26
|
+
* emitted — at the start of the new bucket (90 000 ms). The 30 s and
|
|
27
|
+
* 60 s intervals had no data and produce no output.
|
|
28
|
+
*
|
|
29
|
+
* **Snapshot timing.** The rolling-window snapshot is read after the
|
|
30
|
+
* boundary-crossing event has been ingested by the rolling. The emitted
|
|
31
|
+
* value therefore includes that event's contribution to the trailing
|
|
32
|
+
* aggregate.
|
|
33
|
+
*
|
|
34
|
+
* **Dispose independence.** `sample.dispose()` only detaches this
|
|
35
|
+
* sampler from its upstream rolling — it does NOT dispose the rolling
|
|
36
|
+
* itself. The rolling's lifetime is the user's responsibility (call
|
|
37
|
+
* `rolling.dispose()` when done with it). This lets one rolling drive
|
|
38
|
+
* multiple downstream consumers (e.g. one `.sample('30s')` for the
|
|
39
|
+
* backend, plus direct `rolling.value()` reads for the UI) without
|
|
40
|
+
* coupling their lifetimes.
|
|
41
|
+
*
|
|
42
|
+
* **Out-of-order events** (when the upstream rolling sees a late event
|
|
43
|
+
* under `'reorder'` ordering) do not trigger emission — only events
|
|
44
|
+
* advancing the bucket index do. Late arrivals are absorbed by the
|
|
45
|
+
* rolling window's normal recompute; this sampler stays silent.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const timings = new LiveSeries<TimingSchema>();
|
|
50
|
+
*
|
|
51
|
+
* const rolling = timings.rolling('1m', { latency: 'p95' });
|
|
52
|
+
*
|
|
53
|
+
* // Backend report every 30 s of event time
|
|
54
|
+
* const reported = rolling.sample(Sequence.every('30s'));
|
|
55
|
+
* reported.on('event', e =>
|
|
56
|
+
* fetch('/api/telemetry', { method: 'POST', body: JSON.stringify(e.data()) }),
|
|
57
|
+
* );
|
|
58
|
+
*
|
|
59
|
+
* // In-app display reads the same rolling state continuously
|
|
60
|
+
* setInterval(() => render(rolling.value()), 1_000);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare class LiveSequenceRollingAggregation<S extends SeriesSchema, Out extends SeriesSchema = SeriesSchema> {
|
|
64
|
+
#private;
|
|
65
|
+
readonly name: string;
|
|
66
|
+
readonly schema: Out;
|
|
67
|
+
/** Internal — use `rolling.sample(sequence)` instead. */
|
|
68
|
+
constructor(rolling: LiveRollingAggregation<S, Out>, sequence: Sequence);
|
|
69
|
+
get length(): number;
|
|
70
|
+
at(index: number): EventForSchema<Out> | undefined;
|
|
71
|
+
on(type: 'event', fn: EventListener): () => void;
|
|
72
|
+
/**
|
|
73
|
+
* Detach this sampler from its upstream rolling. The upstream rolling
|
|
74
|
+
* is not disposed — call `rolling.dispose()` separately when done.
|
|
75
|
+
*/
|
|
76
|
+
dispose(): void;
|
|
77
|
+
filter(predicate: (event: EventForSchema<Out>) => boolean): LiveView<Out>;
|
|
78
|
+
map(fn: (event: EventForSchema<Out>) => EventForSchema<Out>): LiveView<Out>;
|
|
79
|
+
select<const Keys extends readonly (keyof EventDataForSchema<Out>)[]>(...keys: Keys): LiveView<SelectSchema<Out, Keys[number] & string>>;
|
|
80
|
+
window(size: RollingWindow): LiveView<Out>;
|
|
81
|
+
diff<const Target extends NumericColumnNameForSchema<Out>>(columns: Target | readonly Target[], options?: {
|
|
82
|
+
drop?: boolean;
|
|
83
|
+
}): LiveView<DiffSchema<Out, Target>>;
|
|
84
|
+
rate<const Target extends NumericColumnNameForSchema<Out>>(columns: Target | readonly Target[], options?: {
|
|
85
|
+
drop?: boolean;
|
|
86
|
+
}): LiveView<DiffSchema<Out, Target>>;
|
|
87
|
+
pctChange<const Target extends NumericColumnNameForSchema<Out>>(columns: Target | readonly Target[], options?: {
|
|
88
|
+
drop?: boolean;
|
|
89
|
+
}): LiveView<DiffSchema<Out, Target>>;
|
|
90
|
+
fill(strategy: LiveFillStrategy | LiveFillMapping<Out>, options?: {
|
|
91
|
+
limit?: number;
|
|
92
|
+
}): LiveView<Out>;
|
|
93
|
+
cumulative<const Targets extends NumericColumnNameForSchema<Out>>(spec: {
|
|
94
|
+
[K in Targets]: 'sum' | 'max' | 'min' | 'count' | ((acc: number, value: number) => number);
|
|
95
|
+
}): LiveView<DiffSchema<Out, Targets>>;
|
|
96
|
+
rolling<const M extends AggregateMap<Out>>(window: RollingWindow, mapping: M, options?: LiveRollingOptions): LiveRollingAggregation<Out, RollingSchema<Out, M>>;
|
|
97
|
+
aggregate<const M extends AggregateMap<Out>>(sequence: Sequence, mapping: M): LiveAggregation<Out>;
|
|
98
|
+
}
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=LiveSequenceRollingAggregation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveSequenceRollingAggregation.d.ts","sourceRoot":"","sources":["../src/LiveSequenceRollingAggregation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { Event } from './Event.js';
|
|
2
|
+
import { Time } from './Time.js';
|
|
3
|
+
import { LiveAggregation } from './LiveAggregation.js';
|
|
4
|
+
import { LiveRollingAggregation, } from './LiveRollingAggregation.js';
|
|
5
|
+
import { LiveView, makeDiffView, makeFillView, makeCumulativeView, } from './LiveView.js';
|
|
6
|
+
/**
|
|
7
|
+
* A live source that emits one snapshot of a `LiveRollingAggregation` each
|
|
8
|
+
* time a source event crosses an epoch-aligned boundary of the configured
|
|
9
|
+
* `Sequence`. Output events are time-keyed at the boundary timestamp and
|
|
10
|
+
* carry the rolling-window aggregate as it stood the moment the
|
|
11
|
+
* boundary-crossing event was ingested.
|
|
12
|
+
*
|
|
13
|
+
* **Created via `rolling.sample(sequence)`.** The user retains the
|
|
14
|
+
* underlying `LiveRollingAggregation` reference, so the rolling state is
|
|
15
|
+
* available for direct reads (`rolling.value()`) and for reuse — e.g.
|
|
16
|
+
* driving an in-app live display alongside a sampled backend report.
|
|
17
|
+
*
|
|
18
|
+
* **Emission is data-driven.** If no source events arrive during an
|
|
19
|
+
* interval, no event is emitted for that interval. Consistent with the
|
|
20
|
+
* rest of pond-ts: data is the clock.
|
|
21
|
+
*
|
|
22
|
+
* **One emission per crossing, not per skipped interval.** If a source
|
|
23
|
+
* event jumps multiple boundaries at once (e.g. an event at 90 001 ms
|
|
24
|
+
* after a gap since 0 ms with a 30 s sequence), exactly one event is
|
|
25
|
+
* emitted — at the start of the new bucket (90 000 ms). The 30 s and
|
|
26
|
+
* 60 s intervals had no data and produce no output.
|
|
27
|
+
*
|
|
28
|
+
* **Snapshot timing.** The rolling-window snapshot is read after the
|
|
29
|
+
* boundary-crossing event has been ingested by the rolling. The emitted
|
|
30
|
+
* value therefore includes that event's contribution to the trailing
|
|
31
|
+
* aggregate.
|
|
32
|
+
*
|
|
33
|
+
* **Dispose independence.** `sample.dispose()` only detaches this
|
|
34
|
+
* sampler from its upstream rolling — it does NOT dispose the rolling
|
|
35
|
+
* itself. The rolling's lifetime is the user's responsibility (call
|
|
36
|
+
* `rolling.dispose()` when done with it). This lets one rolling drive
|
|
37
|
+
* multiple downstream consumers (e.g. one `.sample('30s')` for the
|
|
38
|
+
* backend, plus direct `rolling.value()` reads for the UI) without
|
|
39
|
+
* coupling their lifetimes.
|
|
40
|
+
*
|
|
41
|
+
* **Out-of-order events** (when the upstream rolling sees a late event
|
|
42
|
+
* under `'reorder'` ordering) do not trigger emission — only events
|
|
43
|
+
* advancing the bucket index do. Late arrivals are absorbed by the
|
|
44
|
+
* rolling window's normal recompute; this sampler stays silent.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const timings = new LiveSeries<TimingSchema>();
|
|
49
|
+
*
|
|
50
|
+
* const rolling = timings.rolling('1m', { latency: 'p95' });
|
|
51
|
+
*
|
|
52
|
+
* // Backend report every 30 s of event time
|
|
53
|
+
* const reported = rolling.sample(Sequence.every('30s'));
|
|
54
|
+
* reported.on('event', e =>
|
|
55
|
+
* fetch('/api/telemetry', { method: 'POST', body: JSON.stringify(e.data()) }),
|
|
56
|
+
* );
|
|
57
|
+
*
|
|
58
|
+
* // In-app display reads the same rolling state continuously
|
|
59
|
+
* setInterval(() => render(rolling.value()), 1_000);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export class LiveSequenceRollingAggregation {
|
|
63
|
+
name;
|
|
64
|
+
schema;
|
|
65
|
+
#rolling;
|
|
66
|
+
#stepMs;
|
|
67
|
+
#anchorMs;
|
|
68
|
+
#outputEvents;
|
|
69
|
+
#onEvent;
|
|
70
|
+
#unsubscribe;
|
|
71
|
+
#lastBucketIdx;
|
|
72
|
+
/** Internal — use `rolling.sample(sequence)` instead. */
|
|
73
|
+
constructor(rolling, sequence) {
|
|
74
|
+
this.name = rolling.name;
|
|
75
|
+
this.schema = rolling.schema;
|
|
76
|
+
this.#rolling = rolling;
|
|
77
|
+
this.#stepMs = sequence.stepMs();
|
|
78
|
+
this.#anchorMs = sequence.anchor();
|
|
79
|
+
this.#outputEvents = [];
|
|
80
|
+
this.#onEvent = new Set();
|
|
81
|
+
this.#lastBucketIdx = undefined;
|
|
82
|
+
this.#unsubscribe = rolling.on('event', (event) => {
|
|
83
|
+
this.#check(event);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
get length() {
|
|
87
|
+
return this.#outputEvents.length;
|
|
88
|
+
}
|
|
89
|
+
at(index) {
|
|
90
|
+
if (index < 0)
|
|
91
|
+
index = this.#outputEvents.length + index;
|
|
92
|
+
return this.#outputEvents[index];
|
|
93
|
+
}
|
|
94
|
+
on(type, fn) {
|
|
95
|
+
this.#onEvent.add(fn);
|
|
96
|
+
return () => {
|
|
97
|
+
this.#onEvent.delete(fn);
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Detach this sampler from its upstream rolling. The upstream rolling
|
|
102
|
+
* is not disposed — call `rolling.dispose()` separately when done.
|
|
103
|
+
*/
|
|
104
|
+
dispose() {
|
|
105
|
+
this.#unsubscribe();
|
|
106
|
+
}
|
|
107
|
+
// ── View transforms (mirrors LiveRollingAggregation) ────────────
|
|
108
|
+
filter(predicate) {
|
|
109
|
+
return new LiveView(this, (event) => predicate(event) ? event : undefined);
|
|
110
|
+
}
|
|
111
|
+
map(fn) {
|
|
112
|
+
return new LiveView(this, fn);
|
|
113
|
+
}
|
|
114
|
+
select(...keys) {
|
|
115
|
+
const newSchema = Object.freeze([
|
|
116
|
+
this.schema[0],
|
|
117
|
+
...this.schema.slice(1).filter((c) => keys.includes(c.name)),
|
|
118
|
+
]);
|
|
119
|
+
return new LiveView(this, (event) => event.select(...keys), {
|
|
120
|
+
schema: newSchema,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
window(size) {
|
|
124
|
+
return new LiveView(this, (event) => event).window(size);
|
|
125
|
+
}
|
|
126
|
+
diff(columns, options) {
|
|
127
|
+
return makeDiffView(this, 'diff', columns, options);
|
|
128
|
+
}
|
|
129
|
+
rate(columns, options) {
|
|
130
|
+
return makeDiffView(this, 'rate', columns, options);
|
|
131
|
+
}
|
|
132
|
+
pctChange(columns, options) {
|
|
133
|
+
return makeDiffView(this, 'pctChange', columns, options);
|
|
134
|
+
}
|
|
135
|
+
fill(strategy, options) {
|
|
136
|
+
return makeFillView(this, strategy, options);
|
|
137
|
+
}
|
|
138
|
+
cumulative(spec) {
|
|
139
|
+
return makeCumulativeView(this, spec);
|
|
140
|
+
}
|
|
141
|
+
rolling(window, mapping, options) {
|
|
142
|
+
return new LiveRollingAggregation(this, window, mapping, options);
|
|
143
|
+
}
|
|
144
|
+
aggregate(sequence, mapping) {
|
|
145
|
+
return new LiveAggregation(this, sequence, mapping);
|
|
146
|
+
}
|
|
147
|
+
// ── Private ─────────────────────────────────────────────────────
|
|
148
|
+
#check(event) {
|
|
149
|
+
const ts = event.begin();
|
|
150
|
+
const bucketIdx = Math.floor((ts - this.#anchorMs) / this.#stepMs);
|
|
151
|
+
if (this.#lastBucketIdx === undefined) {
|
|
152
|
+
// First event — record which bucket we're in; no emission yet.
|
|
153
|
+
this.#lastBucketIdx = bucketIdx;
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (bucketIdx > this.#lastBucketIdx) {
|
|
157
|
+
// Crossed one or more bucket boundaries.
|
|
158
|
+
// Emit once with the current rolling snapshot, timestamped at the
|
|
159
|
+
// start of the new bucket (= end of the just-closed bucket).
|
|
160
|
+
const boundaryMs = this.#anchorMs + bucketIdx * this.#stepMs;
|
|
161
|
+
const snap = this.#rolling.value();
|
|
162
|
+
const outputEvent = new Event(new Time(boundaryMs), snap);
|
|
163
|
+
this.#outputEvents.push(outputEvent);
|
|
164
|
+
for (const fn of this.#onEvent)
|
|
165
|
+
fn(outputEvent);
|
|
166
|
+
this.#lastBucketIdx = bucketIdx;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=LiveSequenceRollingAggregation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveSequenceRollingAggregation.js","sourceRoot":"","sources":["../src/LiveSequenceRollingAggregation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export { LiveSeries } from './LiveSeries.js';
|
|
|
8
8
|
export { LiveView } from './LiveView.js';
|
|
9
9
|
export type { LiveFillMapping, LiveFillStrategy } from './LiveView.js';
|
|
10
10
|
export { LiveRollingAggregation } from './LiveRollingAggregation.js';
|
|
11
|
+
export { LiveSequenceRollingAggregation } from './LiveSequenceRollingAggregation.js';
|
|
11
12
|
export { PartitionedTimeSeries } from './PartitionedTimeSeries.js';
|
|
12
13
|
export { Time } from './Time.js';
|
|
13
14
|
export { TimeRange, toTimeRange } from './TimeRange.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export { LivePartitionedSeries, LivePartitionedView, } from './LivePartitionedSe
|
|
|
6
6
|
export { LiveSeries } from './LiveSeries.js';
|
|
7
7
|
export { LiveView } from './LiveView.js';
|
|
8
8
|
export { LiveRollingAggregation } from './LiveRollingAggregation.js';
|
|
9
|
+
export { LiveSequenceRollingAggregation } from './LiveSequenceRollingAggregation.js';
|
|
9
10
|
export { PartitionedTimeSeries } from './PartitionedTimeSeries.js';
|
|
10
11
|
export { Time } from './Time.js';
|
|
11
12
|
export { TimeRange, toTimeRange } from './TimeRange.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GAEpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GAEpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|