pond-ts 0.11.7 → 0.12.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 CHANGED
@@ -7,10 +7,196 @@ 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.7...HEAD
10
+ [Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.12.0...HEAD
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [0.12.0] — 2026-05-01
15
+
16
+ The "triggers" release. Major redesign of how live accumulators
17
+ control emission cadence — `Trigger` is now a first-class concept
18
+ shaped by two converging real-world use cases (synchronised
19
+ partitioned tick aggregation in the gRPC pipeline experiment,
20
+ sequence-sampled rolling in webapp telemetry).
21
+
22
+ Two correctness audits before publish: a Layer 2 Claude review
23
+ (column collision, dispose, late-spawn, peer-dep) and a Codex
24
+ adversarial review (quiet-partition stale samples, pre-existing
25
+ data replay at construction, spawn-listener cleanup). All findings
26
+ fixed and pinned with regression tests. 1039 / 1039 tests pass.
27
+
28
+ ### Added
29
+
30
+ - **Trigger as a first-class concept.** A new `Trigger` factory
31
+ exposed at the package root lets `LiveRollingAggregation` switch
32
+ emission cadence without changing any other shape:
33
+
34
+ ```ts
35
+ import { LiveSeries, Sequence, Trigger } from 'pond-ts';
36
+
37
+ // Webapp telemetry: rolling 1m p95, emit on every 30 s of event-time
38
+ const rolling = timings.rolling(
39
+ '1m',
40
+ { latency: 'p95' },
41
+ { trigger: Trigger.clock(Sequence.every('30s')) },
42
+ );
43
+
44
+ rolling.on('event', (e) =>
45
+ fetch('/api/telemetry', { method: 'POST', body: JSON.stringify(e.data()) }),
46
+ );
47
+ rolling.value(); // current rolling-window snapshot, independent of trigger
48
+ ```
49
+
50
+ Two trigger variants in this release:
51
+ - **`Trigger.event()`** — per-event emission. Default; the historical
52
+ behavior of `LiveRollingAggregation` when no trigger is specified.
53
+ - **`Trigger.clock(sequence)`** — sequence-triggered emission. One
54
+ snapshot fires when a source event crosses an epoch-aligned
55
+ boundary of the (fixed-step) `Sequence`. Output keyed at boundary
56
+ instants. Calendar sequences are rejected upfront.
57
+
58
+ Future variants (`Trigger.count(n)`, custom predicates, compound
59
+ triggers) are reserved but not yet shipped.
60
+
61
+ - **Synchronised partitioned rolling.** `LivePartitionedSeries.rolling`
62
+ now accepts a clock trigger. The output is a
63
+ `LiveSource<RowSchema>` whose schema is `[time, <partitionColumn>,
64
+ ...mappingColumns]`; on every boundary crossing, one event fires
65
+ per known partition, all sharing the same boundary timestamp.
66
+ Synchronised across partitions by construction (the bucket index is
67
+ shared, not per-partition).
68
+
69
+ ```ts
70
+ // Dashboard tick aggregation: 100 hosts, 200ms cadence
71
+ const ticks = live
72
+ .partitionBy('host')
73
+ .rolling(
74
+ '1m',
75
+ { cpu: 'avg' },
76
+ { trigger: Trigger.clock(Sequence.every('200ms')) },
77
+ );
78
+
79
+ ticks.on('event', (e) => {
80
+ // e.begin() === <boundary timestamp>, same for every host this tick
81
+ // e.get('host') === 'api-1' | 'api-2' | …
82
+ // e.get('cpu') === <rolling avg for that host>
83
+ });
84
+ ```
85
+
86
+ Restricted to direct-after-`partitionBy` in this release: chained
87
+ sugar (`partitionBy(c).fill(...).rolling(...)`) rejects clock
88
+ triggers with a clear error. Lifts in a future release once a real
89
+ use case appears.
90
+
91
+ Closes the gRPC experiment's M3.5 dashboard friction note (the
92
+ hand-rolled `HostAggregator` becomes ~10 lines of pond code).
93
+
94
+ ### Removed (breaking — pre-1.0)
95
+
96
+ - **`LiveSequenceRollingAggregation`** class deleted. Its capability
97
+ is preserved as `LiveRollingAggregation` with
98
+ `{ trigger: Trigger.clock(sequence) }`. Migration: replace
99
+ `live.rolling('1m', m).sample(seq)` with
100
+ `live.rolling('1m', m, { trigger: Trigger.clock(seq) })`. Single
101
+ rolling object now serves both backend reporting and direct
102
+ `.value()` reads (no separate sampler reference).
103
+ - **`.sample(sequence)`** method removed from `LiveRollingAggregation`.
104
+ Use the trigger option above.
105
+
106
+ ### Changed
107
+
108
+ - **`LiveRollingOptions`** gains an optional `trigger?: Trigger`
109
+ field. Default behavior (no `trigger` specified) is unchanged from
110
+ v0.11.x — per-event emission. Backward compatible for everyone
111
+ who didn't use `.sample()`.
112
+
113
+ ### Performance
114
+
115
+ - New benchmark `scripts/perf-triggers.mjs` covers both
116
+ non-partitioned and synchronised partitioned cases. Headline numbers
117
+ on a current MacBook Pro:
118
+ - Non-partitioned: clock(30s) ~50% faster than per-event baseline
119
+ (emission is rarer); clock(1s) similar.
120
+ - Synchronised partitioned (100 hosts, 30k events at realistic
121
+ rates): ~300 ns/emission at 200ms cadence; +205% over per-
122
+ partition baseline at the high end. Well within budget for the
123
+ motivating dashboard use case.
124
+
125
+ ### Notes
126
+
127
+ - **`docs/rfcs/triggers.md`** captures the full design rationale,
128
+ the four sign-off questions, and the migration plan. Read this if
129
+ you want the "why this shape" context.
130
+
131
+ ### Known limitations
132
+
133
+ - **Synchronised partitioned rolling output type is loose** —
134
+ `LiveSource<SeriesSchema>` rather than a schema-narrowed shape.
135
+ Runtime schema is correct; only static types widen. Tightening is
136
+ queued for a follow-up release.
137
+ - **Synchronised partitioned rolling rejects column-name collisions**
138
+ between the partition column and any reducer-output column at
139
+ construction (e.g. `partitionBy('cpu').rolling('1m', { cpu: 'avg' }, { trigger })`).
140
+ Rename the reducer output (once `AggregateOutputMap` lands on live
141
+ rolling) or partition by a different column.
142
+ - **Late-spawn partitions only appear in ticks after their first event
143
+ arrives.** A partition unknown to the sync source contributes no
144
+ row to the current tick. Use `partitionBy(col, { groups: [...] })`
145
+ to eagerly include partitions from construction.
146
+
147
+ ## [0.11.8] — 2026-04-30
148
+
149
+ ### Added
150
+
151
+ - **`rolling.sample(sequence)`** on `LiveRollingAggregation` — taps a
152
+ rolling aggregation and emits one snapshot of the rolling state each
153
+ time a source event crosses an epoch-aligned boundary of `sequence`.
154
+ Closes the frontend-telemetry gap: collect high-frequency timing
155
+ events, sample p95 latency to a backend every 30 s, while the same
156
+ rolling drives an in-app live display (no duplicated deque).
157
+
158
+ ```ts
159
+ const rolling = timings.rolling('1m', { latency: 'p95' });
160
+
161
+ // One sampler → backend report every 30 s of event time
162
+ const reported = rolling.sample(Sequence.every('30s'));
163
+ reported.on('event', (e) =>
164
+ fetch('/api/telemetry', { method: 'POST', body: JSON.stringify(e.data()) }),
165
+ );
166
+
167
+ // Same rolling drives the UI live display
168
+ useLiveQuery(timings, () => rolling.value());
169
+ ```
170
+
171
+ `sequence` must be a fixed-step `Sequence`; calendar sequences
172
+ (`Sequence.daily()` etc.) are rejected upfront — boundary indexing
173
+ needs a constant step.
174
+
175
+ Emission is **data-driven**: no `setInterval`. If the source goes
176
+ quiet, no events fire. A single source event spanning multiple
177
+ boundaries fires exactly one event at the new bucket. Snapshot is
178
+ taken after the boundary-crossing event is ingested by the rolling,
179
+ so the emitted value includes that event's contribution.
180
+
181
+ **Independent lifetimes.** `sample.dispose()` only detaches the
182
+ sampler from the rolling; the rolling's lifecycle stays the user's
183
+ responsibility. One rolling can power multiple `.sample()` cadences
184
+ plus direct `rolling.value()` reads without coupling.
185
+
186
+ - **`LiveSequenceRollingAggregation` exported** from package root with
187
+ full `LiveSource<Out>` surface and the same view-transform set as
188
+ `LiveRollingAggregation` (`filter`, `map`, `select`, `window`,
189
+ `diff`, `rate`, `pctChange`, `fill`, `cumulative`, `rolling`,
190
+ `aggregate`).
191
+
192
+ - **Telemetry-reporting recipe** at
193
+ `website/docs/recipes/telemetry-reporting.mdx` — end-to-end
194
+ frontend-collection → backend-summary pattern using `.sample()`,
195
+ plus the React in-app display via `useLiveQuery`.
196
+
197
+ [0.12.0]: https://github.com/pjm17971/pond-ts/compare/v0.11.8...v0.12.0
198
+ [0.11.8]: https://github.com/pjm17971/pond-ts/compare/v0.11.7...v0.11.8
199
+
14
200
  ## [0.11.7] — 2026-04-29
15
201
 
16
202
  ### Added
@@ -1,5 +1,6 @@
1
1
  import { LiveSeries, type LiveSeriesOptions } from './LiveSeries.js';
2
2
  import { type LiveFillMapping, type LiveFillStrategy } from './LiveView.js';
3
+ import type { Trigger } from './triggers.js';
3
4
  import { type AggregateMap, type DiffSchema, type EventDataForSchema, type LiveSource, type NumericColumnNameForSchema, type RollingSchema, type SeriesSchema } from './types.js';
4
5
  import type { DurationInput } from './utils/duration.js';
5
6
  import type { LiveRollingOptions, RollingWindow } from './LiveRollingAggregation.js';
@@ -177,7 +178,16 @@ export declare class LivePartitionedSeries<S extends SeriesSchema, K extends str
177
178
  * // ^^^^^^^^^^^^^^
178
179
  * ```
179
180
  */
180
- rolling<const M extends AggregateMap<S>>(window: RollingWindow, mapping: M, options?: LiveRollingOptions): LivePartitionedView<S, RollingSchema<S, M>, K>;
181
+ rolling<const M extends AggregateMap<S>>(window: RollingWindow, mapping: M, options?: LiveRollingOptions & {
182
+ trigger?: {
183
+ kind: 'event';
184
+ };
185
+ }): LivePartitionedView<S, RollingSchema<S, M>, K>;
186
+ rolling<const M extends AggregateMap<S>>(window: RollingWindow, mapping: M, options: LiveRollingOptions & {
187
+ trigger: {
188
+ kind: 'clock';
189
+ } & Trigger;
190
+ }): LiveSource<SeriesSchema>;
181
191
  /**
182
192
  * Dispose of the partitioned view: unsubscribe from the source,
183
193
  * disconnect every per-partition pipeline subscriber (created
@@ -1 +1 @@
1
- {"version":3,"file":"LivePartitionedSeries.d.ts","sourceRoot":"","sources":["../src/LivePartitionedSeries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LivePartitionedSeries.d.ts","sourceRoot":"","sources":["../src/LivePartitionedSeries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGrE,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,kBAAkB,EAEvB,KAAK,UAAU,EACf,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAElB,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,6BAA6B,CAAC;AAOrC;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,IAAI;IACrD,2EAA2E;IAC3E,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACtE,0DAA0D;IAC1D,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CACrE,CAAC;AAWF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,qBAAqB,CAChC,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,MAAM,GAAG,MAAM;;IASzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;gBAajC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,EAAE,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,EACxC,OAAO,GAAE,sBAAsB,CAAC,CAAC,CAAM;IAsDzC;;;;;OAKG;IACH,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAI9B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IA+C/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,KAAK,CAAC,CAAC,SAAS,YAAY,EAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAC9C,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GACtC,UAAU,CAAC,CAAC,CAAC;IAmFhB,yDAAyD;IACzD,IAAI,CACF,QAAQ,EAAE,gBAAgB,GAAG,eAAe,CAAC,CAAC,CAAC,EAC/C,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAM/B,yDAAyD;IACzD,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,0BAA0B,CAAC,CAAC,CAAC,EACrD,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,mBAAmB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAUnD,yDAAyD;IACzD,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,0BAA0B,CAAC,CAAC,CAAC,EACrD,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,mBAAmB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAUnD,mEAAmE;IACnE,SAAS,CAAC,KAAK,CAAC,MAAM,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAC1D,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,mBAAmB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAanD,qEAAqE;IACrE,UAAU,CAAC,KAAK,CAAC,OAAO,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;SACnE,CAAC,IAAI,OAAO,GACT,KAAK,GACL,KAAK,GACL,KAAK,GACL,OAAO,GACP,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;KAC7C,GAAG,mBAAmB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAUrD;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,kBAAkB,GAAG;QAAE,OAAO,CAAC,EAAE;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,GAC7D,mBAAmB,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,kBAAkB,GAAG;QAAE,OAAO,EAAE;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAA;KAAE,GACrE,UAAU,CAAC,YAAY,CAAC;IAsG3B;;;;;;;;;;;;OAYG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;CAwCnC;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,mBAAmB,CAC9B,KAAK,SAAS,YAAY,EAC1B,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,MAAM,GAAG,MAAM;;IAKzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnB,kDAAkD;gBAEhD,IAAI,EAAE,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,EACrC,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;IAepD,wFAAwF;IACxF,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAI/D;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,YAAY,EAC3B,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC,EAC/C,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,GACvC,UAAU,CAAC,EAAE,CAAC;IAQjB;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAqB9B,IAAI,CACF,QAAQ,EAAE,gBAAgB,GAAG,eAAe,CAAC,CAAC,CAAC,EAC/C,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAOnC,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,0BAA0B,CAAC,CAAC,CAAC,EACrD,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAcvD,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,0BAA0B,CAAC,CAAC,CAAC,EACrD,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAcvD,SAAS,CAAC,KAAK,CAAC,MAAM,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAC1D,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAcvD,UAAU,CAAC,KAAK,CAAC,OAAO,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;SACnE,CAAC,IAAI,OAAO,GACT,KAAK,GACL,KAAK,GACL,KAAK,GACL,OAAO,GACP,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;KAC7C,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAWzD;;;;;OAKG;IACH,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,kBAAkB,GAC3B,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAyBtD"}
@@ -1,5 +1,6 @@
1
1
  import { LiveSeries } from './LiveSeries.js';
2
2
  import { LiveRollingAggregation } from './LiveRollingAggregation.js';
3
+ import { LivePartitionedSyncRolling } from './LivePartitionedSyncRolling.js';
3
4
  import { makeCumulativeView, makeDiffView, makeFillView, } from './LiveView.js';
4
5
  /** Encoder for partition values → keys. Mirrors the batch single-column case. */
5
6
  function partitionKey(event, col) {
@@ -314,22 +315,63 @@ export class LivePartitionedSeries {
314
315
  cumulative(spec) {
315
316
  return new LivePartitionedView(this, (sub) => makeCumulativeView(sub, spec));
316
317
  }
317
- /**
318
- * Per-partition `rolling`. See {@link LiveSeries.rolling}.
319
- *
320
- * **Partition column drops by default.** `rolling`'s output
321
- * schema only retains columns named in `mapping`. Without
322
- * including the partition column, the unified output of the
323
- * chain loses the partition tag (e.g. `host` becomes
324
- * `undefined`). To keep the partition column visible, include
325
- * it in `mapping` with a passthrough reducer:
326
- *
327
- * ```ts
328
- * partitioned.rolling('5m', { cpu: 'avg', host: 'last' })
329
- * // ^^^^^^^^^^^^^^
330
- * ```
331
- */
332
318
  rolling(window, mapping, options) {
319
+ // Clock trigger → synchronised partitioned emission. Returns a
320
+ // LiveSource<RowSchema> directly (no LivePartitionedView wrap)
321
+ // because the output is already a flat per-partition-row stream;
322
+ // each tick fires N events (one per known partition) at the same
323
+ // boundary timestamp.
324
+ if (options?.trigger?.kind === 'clock') {
325
+ const syncOptions = {};
326
+ if (options.minSamples !== undefined)
327
+ syncOptions.minSamples = options.minSamples;
328
+ if (this.groups !== undefined)
329
+ syncOptions.declaredGroups = this.groups;
330
+ const sync = new LivePartitionedSyncRolling(this.name, this.schema, this.by, window, mapping, options.trigger, syncOptions);
331
+ // Wire existing partitions and future spawns into the sync
332
+ // rolling. Each per-partition LiveSeries emits its own events;
333
+ // we forward them all into the shared sync state.
334
+ //
335
+ // Disposer ownership: each partition listener's unsubscribe is
336
+ // registered with BOTH the sync rolling (so `sync.dispose()`
337
+ // detaches them) and the parent series's `#disposers` (so the
338
+ // parent's dispose path also detaches them). Both paths are
339
+ // idempotent — calling them in either order, or both, is safe.
340
+ const subscribe = (key, partition) => {
341
+ const unsub = partition.on('event', (event) => sync.ingest(key, event));
342
+ sync._registerUnsubscribe(unsub);
343
+ this.#disposers.add(unsub);
344
+ };
345
+ const existing = [];
346
+ for (const [key, partition] of this.#partitions) {
347
+ for (let i = 0; i < partition.length; i++) {
348
+ const ev = partition.at(i);
349
+ existing.push({ ts: ev.begin(), key, event: ev });
350
+ }
351
+ }
352
+ existing.sort((a, b) => a.ts - b.ts);
353
+ for (const { key, event } of existing) {
354
+ sync.ingest(key, event);
355
+ }
356
+ // Subscribe to future events on every existing partition.
357
+ for (const [key, partition] of this.#partitions) {
358
+ subscribe(key, partition);
359
+ }
360
+ // Spawn listener — captures `sync` to subscribe future
361
+ // partitions. Register a remover with `sync.dispose()` so the
362
+ // parent series doesn't retain a closure on the disposed sync
363
+ // (which would prevent garbage collection on long-lived
364
+ // high-cardinality partitioned sources with create/dispose
365
+ // cycles).
366
+ const onSpawnSet = this.#onSpawn;
367
+ const spawnHandler = (key, partition) => {
368
+ subscribe(key, partition);
369
+ };
370
+ onSpawnSet.add(spawnHandler);
371
+ sync._registerUnsubscribe(() => onSpawnSet.delete(spawnHandler));
372
+ return sync;
373
+ }
374
+ // Default: per-partition rolling with per-partition emission.
333
375
  return new LivePartitionedView(this, (sub) => new LiveRollingAggregation(sub, window, mapping, options));
334
376
  }
335
377
  /**
@@ -533,6 +575,16 @@ export class LivePartitionedView {
533
575
  * `host: 'last'`) to keep it visible in the unified output.
534
576
  */
535
577
  rolling(window, mapping, options) {
578
+ // MVP cap: synchronised partitioned rolling (clock trigger) is
579
+ // only supported directly after partitionBy(), not after chained
580
+ // sugar like fill().rolling(...). The chained shape needs the
581
+ // factory output's schema threaded into the sync rolling, which
582
+ // we'll plumb when a real use case appears.
583
+ if (options?.trigger && options.trigger.kind !== 'event') {
584
+ throw new TypeError('Clock-triggered partitioned rolling is only supported directly ' +
585
+ 'after partitionBy(), not after chained sugar methods. Restructure as ' +
586
+ '`live.partitionBy(col).rolling(window, mapping, { trigger: ... })`.');
587
+ }
536
588
  const prev = this.#factory;
537
589
  return new LivePartitionedView(this.#root, (sub) => new LiveRollingAggregation(prev(sub), window, mapping, options));
538
590
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LivePartitionedSeries.js","sourceRoot":"","sources":["../src/LivePartitionedSeries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LivePartitionedSeries.js","sourceRoot":"","sources":["../src/LivePartitionedSeries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { type ClockTrigger } from './triggers.js';
2
+ import type { RollingWindow } from './LiveRollingAggregation.js';
3
+ import type { AggregateMap, EventForSchema, LiveSource, SeriesSchema } from './types.js';
4
+ type EventListener = (event: any) => void;
5
+ /**
6
+ * A `LiveSource<Out>` produced by `LivePartitionedSeries.rolling(window, mapping, { trigger: Trigger.clock(...) })`.
7
+ * Maintains a rolling-window aggregation per partition and emits a
8
+ * **synchronised burst of events on every clock-trigger boundary
9
+ * crossing**: when any partition's event crosses the boundary, every
10
+ * known partition's rolling-window snapshot fires at the same instant.
11
+ *
12
+ * Output schema is `[time, <partitionColumn>, ...mappingColumns]` —
13
+ * the partition column is added automatically so each emitted row
14
+ * carries the partition tag for downstream consumers to rebucket on.
15
+ *
16
+ * **Internal** — no public class name. The public API surface is
17
+ * `LiveSource<Out>`. Constructed via `LivePartitionedSeries.rolling`'s
18
+ * trigger-bearing overload; user code never imports this class.
19
+ */
20
+ export declare class LivePartitionedSyncRolling<S extends SeriesSchema, K extends string, Out extends SeriesSchema> implements LiveSource<Out> {
21
+ #private;
22
+ readonly name: string;
23
+ readonly schema: Out;
24
+ constructor(upstreamName: string, upstreamSchema: S, byColumn: string, window: RollingWindow, mapping: AggregateMap<S>, trigger: ClockTrigger, options?: {
25
+ minSamples?: number;
26
+ declaredGroups?: ReadonlyArray<K>;
27
+ });
28
+ get length(): number;
29
+ at(index: number): EventForSchema<Out> | undefined;
30
+ on(type: 'event', fn: EventListener): () => void;
31
+ /**
32
+ * Detach this sync source from every upstream partition it has
33
+ * subscribed to. Idempotent — calling twice is a no-op. After
34
+ * dispose, subsequent source events do not update internal state
35
+ * and no further events are emitted.
36
+ *
37
+ * The sync source's lifetime is independent of the
38
+ * `LivePartitionedSeries` that produced it: disposing the sync
39
+ * does not detach the partitioned series's other consumers, and
40
+ * disposing the partitioned series detaches this sync via the
41
+ * parent-disposer wiring in `LivePartitionedSeries.rolling`.
42
+ */
43
+ dispose(): void;
44
+ /**
45
+ * @internal — used by `LivePartitionedSeries.rolling` to register
46
+ * each per-partition `'event'` listener disposer so this sync
47
+ * source can detach them on `dispose()`.
48
+ */
49
+ _registerUnsubscribe(unsub: () => void): void;
50
+ /**
51
+ * Called by `LivePartitionedSeries` for each event arriving on a
52
+ * partition's `LiveSource`. Updates that partition's rolling window
53
+ * state and, if the bucket index advances, emits a synchronised
54
+ * burst of one event per known partition at the new boundary
55
+ * timestamp.
56
+ */
57
+ ingest(partitionKey: K, event: EventForSchema<S>): void;
58
+ }
59
+ export {};
60
+ //# sourceMappingURL=LivePartitionedSyncRolling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LivePartitionedSyncRolling.d.ts","sourceRoot":"","sources":["../src/LivePartitionedSyncRolling.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EACd,UAAU,EACV,YAAY,EACb,MAAM,YAAY,CAAC;AAoBpB,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;AAE1C;;;;;;;;;;;;;;GAcG;AACH,qBAAa,0BAA0B,CACrC,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;gBA8BnB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,CAAC,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;KAAO;IA0G1E,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;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,IAAI;IASf;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,IAAI;IAM7C;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;CA+HxD"}
@@ -0,0 +1,307 @@
1
+ import { Event } from './Event.js';
2
+ import { Time } from './Time.js';
3
+ import { resolveReducer } from './reducers/index.js';
4
+ import { bucketIndexFor, boundaryTimestampFor, } from './triggers.js';
5
+ import { parseDuration } from './utils/duration.js';
6
+ /**
7
+ * A `LiveSource<Out>` produced by `LivePartitionedSeries.rolling(window, mapping, { trigger: Trigger.clock(...) })`.
8
+ * Maintains a rolling-window aggregation per partition and emits a
9
+ * **synchronised burst of events on every clock-trigger boundary
10
+ * crossing**: when any partition's event crosses the boundary, every
11
+ * known partition's rolling-window snapshot fires at the same instant.
12
+ *
13
+ * Output schema is `[time, <partitionColumn>, ...mappingColumns]` —
14
+ * the partition column is added automatically so each emitted row
15
+ * carries the partition tag for downstream consumers to rebucket on.
16
+ *
17
+ * **Internal** — no public class name. The public API surface is
18
+ * `LiveSource<Out>`. Constructed via `LivePartitionedSeries.rolling`'s
19
+ * trigger-bearing overload; user code never imports this class.
20
+ */
21
+ export class LivePartitionedSyncRolling {
22
+ name;
23
+ schema;
24
+ #byColumn;
25
+ #columns;
26
+ #trigger;
27
+ #windowMs;
28
+ #windowCount;
29
+ #minSamples;
30
+ #partitionStates;
31
+ /**
32
+ * Partition keys in observation order — used as the stable iteration
33
+ * order when emitting per-tick frames. If `groups` was provided
34
+ * upstream, those keys are pre-seeded in declared order so emission
35
+ * is deterministic across runs even before any events arrive.
36
+ */
37
+ #partitionOrder;
38
+ #lastBucketIdx;
39
+ #outputEvents;
40
+ #onEvent;
41
+ /**
42
+ * Disposer functions for upstream subscriptions (one per partition
43
+ * `'event'` listener registered by the wiring in
44
+ * `LivePartitionedSeries.rolling`). `dispose()` runs and clears them.
45
+ */
46
+ #unsubscribes;
47
+ #disposed;
48
+ constructor(upstreamName, upstreamSchema, byColumn, window, mapping, trigger, options = {}) {
49
+ this.name = upstreamName;
50
+ this.#byColumn = byColumn;
51
+ this.#trigger = trigger;
52
+ this.#minSamples = options.minSamples ?? 0;
53
+ if (!Number.isInteger(this.#minSamples) || this.#minSamples < 0) {
54
+ throw new TypeError('rolling minSamples must be a non-negative integer (default 0)');
55
+ }
56
+ if (typeof window === 'number' && Number.isInteger(window) && window > 0) {
57
+ this.#windowMs = undefined;
58
+ this.#windowCount = window;
59
+ }
60
+ else {
61
+ this.#windowMs =
62
+ typeof window === 'string' ? parseDuration(window) : undefined;
63
+ if (this.#windowMs === undefined && typeof window === 'number') {
64
+ throw new TypeError('window must be a positive integer (event count) or duration string');
65
+ }
66
+ this.#windowCount = undefined;
67
+ }
68
+ // Resolve the rolling output columns from `mapping`.
69
+ const colsByName = new Map(upstreamSchema.slice(1).map((c) => [c.name, c]));
70
+ this.#columns = [];
71
+ for (const [name, reducer] of Object.entries(mapping)) {
72
+ const col = colsByName.get(name);
73
+ if (!col)
74
+ throw new TypeError(`unknown column '${name}'`);
75
+ const outputKind = resolveReducer(reducer).outputKind;
76
+ const kind = outputKind === 'number'
77
+ ? 'number'
78
+ : outputKind === 'array'
79
+ ? 'array'
80
+ : col.kind;
81
+ this.#columns.push({ source: name, reducer, kind });
82
+ }
83
+ // Locate the partition column's kind in the upstream schema.
84
+ const byCol = upstreamSchema.find((c) => c.name === byColumn);
85
+ if (!byCol) {
86
+ throw new TypeError(`LivePartitionedSyncRolling: column '${byColumn}' not in upstream schema`);
87
+ }
88
+ // Reject column-name collisions between the partition column and
89
+ // any reducer output column. Without this, the emit loop's record
90
+ // would overwrite the partition tag with the reducer output (or
91
+ // vice versa) silently — both columns share a name in the output
92
+ // schema, but `record[name]` only holds one value. Catch it at
93
+ // construction with a clear error.
94
+ if (this.#columns.some((c) => c.source === byColumn)) {
95
+ throw new TypeError(`LivePartitionedSyncRolling: partition column '${byColumn}' collides ` +
96
+ `with a reducer-output column of the same name. Rename the reducer ` +
97
+ `output (e.g. via a dedicated alias once AggregateOutputMap is ` +
98
+ `supported on live rolling), or partition by a different column.`);
99
+ }
100
+ // Also reject collision with 'time' — though unlikely (partition
101
+ // columns can't be the first column of the schema), defend against
102
+ // future schema shapes that might break this assumption.
103
+ if (byColumn === 'time') {
104
+ throw new TypeError("LivePartitionedSyncRolling: partition column cannot be named 'time' " +
105
+ '(reserved for the time-keyed first column of the output schema).');
106
+ }
107
+ // Output schema: [time, <byColumn>, ...mappingColumns].
108
+ this.schema = Object.freeze([
109
+ { name: 'time', kind: 'time' },
110
+ { name: byColumn, kind: byCol.kind, required: false },
111
+ ...this.#columns.map((c) => ({
112
+ name: c.source,
113
+ kind: c.kind,
114
+ required: false,
115
+ })),
116
+ ]);
117
+ this.#partitionStates = new Map();
118
+ this.#partitionOrder = [];
119
+ this.#lastBucketIdx = undefined;
120
+ this.#outputEvents = [];
121
+ this.#onEvent = new Set();
122
+ this.#unsubscribes = new Set();
123
+ this.#disposed = false;
124
+ if (options.declaredGroups) {
125
+ for (const k of options.declaredGroups) {
126
+ this.#ensurePartition(k);
127
+ }
128
+ }
129
+ }
130
+ // ── LiveSource<Out> contract ────────────────────────────────
131
+ get length() {
132
+ return this.#outputEvents.length;
133
+ }
134
+ at(index) {
135
+ if (index < 0)
136
+ index = this.#outputEvents.length + index;
137
+ return this.#outputEvents[index];
138
+ }
139
+ on(type, fn) {
140
+ if (type !== 'event') {
141
+ throw new TypeError(`LivePartitionedSyncRolling.on: unsupported event type '${String(type)}'`);
142
+ }
143
+ this.#onEvent.add(fn);
144
+ return () => {
145
+ this.#onEvent.delete(fn);
146
+ };
147
+ }
148
+ /**
149
+ * Detach this sync source from every upstream partition it has
150
+ * subscribed to. Idempotent — calling twice is a no-op. After
151
+ * dispose, subsequent source events do not update internal state
152
+ * and no further events are emitted.
153
+ *
154
+ * The sync source's lifetime is independent of the
155
+ * `LivePartitionedSeries` that produced it: disposing the sync
156
+ * does not detach the partitioned series's other consumers, and
157
+ * disposing the partitioned series detaches this sync via the
158
+ * parent-disposer wiring in `LivePartitionedSeries.rolling`.
159
+ */
160
+ dispose() {
161
+ if (this.#disposed)
162
+ return;
163
+ this.#disposed = true;
164
+ for (const unsub of this.#unsubscribes) {
165
+ unsub();
166
+ }
167
+ this.#unsubscribes.clear();
168
+ }
169
+ /**
170
+ * @internal — used by `LivePartitionedSeries.rolling` to register
171
+ * each per-partition `'event'` listener disposer so this sync
172
+ * source can detach them on `dispose()`.
173
+ */
174
+ _registerUnsubscribe(unsub) {
175
+ this.#unsubscribes.add(unsub);
176
+ }
177
+ // ── Wiring entry point ──────────────────────────────────────
178
+ /**
179
+ * Called by `LivePartitionedSeries` for each event arriving on a
180
+ * partition's `LiveSource`. Updates that partition's rolling window
181
+ * state and, if the bucket index advances, emits a synchronised
182
+ * burst of one event per known partition at the new boundary
183
+ * timestamp.
184
+ */
185
+ ingest(partitionKey, event) {
186
+ if (this.#disposed)
187
+ return;
188
+ const state = this.#ensurePartition(partitionKey);
189
+ const data = event.data();
190
+ const values = this.#columns.map((c) => data[c.source]);
191
+ const index = state.nextIndex++;
192
+ const ts = event.begin();
193
+ const entry = { index, timestamp: ts, values };
194
+ for (let i = 0; i < this.#columns.length; i++) {
195
+ state.states[i].add(index, values[i]);
196
+ }
197
+ state.entries.push(entry);
198
+ this.#evictPartition(state, ts);
199
+ const bucketIdx = bucketIndexFor(this.#trigger, ts);
200
+ if (this.#lastBucketIdx === undefined) {
201
+ // First event — establish the starting bucket; no emission yet.
202
+ this.#lastBucketIdx = bucketIdx;
203
+ return;
204
+ }
205
+ if (bucketIdx > this.#lastBucketIdx) {
206
+ // Pass `ts` (the triggering event's timestamp) into emitTick so
207
+ // every partition's window is evicted against "now" before we
208
+ // snapshot. Without this, a quiet partition's stale entries from
209
+ // before the window cutoff would still appear in the emitted
210
+ // aggregate — corrupting synchronized rollups for sparse
211
+ // partitions.
212
+ this.#emitTick(bucketIdx, ts);
213
+ this.#lastBucketIdx = bucketIdx;
214
+ }
215
+ }
216
+ // ── Internal ────────────────────────────────────────────────
217
+ #ensurePartition(key) {
218
+ let state = this.#partitionStates.get(key);
219
+ if (state)
220
+ return state;
221
+ state = {
222
+ states: this.#columns.map((c) => resolveReducer(c.reducer).rollingState()),
223
+ entries: [],
224
+ nextIndex: 0,
225
+ };
226
+ this.#partitionStates.set(key, state);
227
+ this.#partitionOrder.push(key);
228
+ return state;
229
+ }
230
+ #evictPartition(state, latestTs) {
231
+ if (this.#windowMs !== undefined) {
232
+ const cutoff = latestTs - this.#windowMs;
233
+ while (state.entries.length > 0 && state.entries[0].timestamp < cutoff) {
234
+ const entry = state.entries.shift();
235
+ for (let i = 0; i < this.#columns.length; i++) {
236
+ state.states[i].remove(entry.index, entry.values[i]);
237
+ }
238
+ }
239
+ }
240
+ if (this.#windowCount !== undefined) {
241
+ while (state.entries.length > this.#windowCount) {
242
+ const entry = state.entries.shift();
243
+ for (let i = 0; i < this.#columns.length; i++) {
244
+ state.states[i].remove(entry.index, entry.values[i]);
245
+ }
246
+ }
247
+ }
248
+ }
249
+ /**
250
+ * Walk every known partition (in observation / declared-groups
251
+ * order), evict each partition's rolling-window state against the
252
+ * triggering event's timestamp `latestTs`, then emit one row per
253
+ * partition keyed at the new bucket's boundary timestamp. All
254
+ * emitted events share the same boundary `ts`.
255
+ *
256
+ * **Why eviction here?** The partition that received the
257
+ * boundary-crossing event was already evicted in `ingest()`, but
258
+ * other (quiet) partitions haven't been touched since their last
259
+ * event. If a partition's last event landed before the window
260
+ * cutoff (`latestTs - windowMs`), its entries are stale from the
261
+ * data clock's perspective — they shouldn't contribute to a
262
+ * snapshot taken at "now." Without this pass, a 30 s window can
263
+ * still emit a 90-second-old value from a partition that went
264
+ * silent at t=0.
265
+ *
266
+ * Hot path: hoists invariants (column count, listener iterable,
267
+ * byColumn name) out of the per-partition loop, uses an indexed
268
+ * for over `partitionOrder` (cheaper than for-of), and constructs
269
+ * the record object via a plain assignment rather than a computed-
270
+ * property literal (which V8 deopts at scale).
271
+ */
272
+ #emitTick(bucketIdx, latestTs) {
273
+ const boundaryMs = boundaryTimestampFor(this.#trigger, bucketIdx);
274
+ const time = new Time(boundaryMs);
275
+ const order = this.#partitionOrder;
276
+ const states = this.#partitionStates;
277
+ const cols = this.#columns;
278
+ const colsLen = cols.length;
279
+ const byCol = this.#byColumn;
280
+ const minSamples = this.#minSamples;
281
+ const out = this.#outputEvents;
282
+ const listeners = this.#onEvent;
283
+ const orderLen = order.length;
284
+ for (let p = 0; p < orderLen; p++) {
285
+ const key = order[p];
286
+ const state = states.get(key);
287
+ // Evict this partition's stale window entries against the
288
+ // triggering event's timestamp before snapshotting.
289
+ this.#evictPartition(state, latestTs);
290
+ const warmup = state.entries.length < minSamples;
291
+ const record = {};
292
+ record[byCol] = key;
293
+ for (let i = 0; i < colsLen; i++) {
294
+ record[cols[i].source] = warmup
295
+ ? undefined
296
+ : state.states[i].snapshot();
297
+ }
298
+ const evt = new Event(time, record);
299
+ out.push(evt);
300
+ if (listeners.size > 0) {
301
+ for (const fn of listeners)
302
+ fn(evt);
303
+ }
304
+ }
305
+ }
306
+ }
307
+ //# sourceMappingURL=LivePartitionedSyncRolling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LivePartitionedSyncRolling.js","sourceRoot":"","sources":["../src/LivePartitionedSyncRolling.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { LiveAggregation } from './LiveAggregation.js';
2
2
  import { LiveView, type LiveFillMapping, type LiveFillStrategy } from './LiveView.js';
3
3
  import type { Sequence } from './Sequence.js';
4
- import type { AggregateMap, DiffSchema, EventDataForSchema, EventForSchema, LiveSource, NumericColumnNameForSchema, ColumnValue, SelectSchema, SeriesSchema } from './types.js';
4
+ import { type Trigger } from './triggers.js';
5
+ import type { AggregateMap, DiffSchema, EventDataForSchema, EventForSchema, LiveSource, NumericColumnNameForSchema, SelectSchema, SeriesSchema, ColumnValue } from './types.js';
5
6
  import type { DurationInput } from './utils/duration.js';
6
7
  type UpdateListener = (value: Record<string, ColumnValue | undefined>) => void;
7
8
  type EventListener = (event: any) => void;
@@ -15,6 +16,29 @@ export type LiveRollingOptions = {
15
16
  * opens — output is `undefined` forever.
16
17
  */
17
18
  minSamples?: number;
19
+ /**
20
+ * Emission cadence. Defaults to `Trigger.event()` — emits one
21
+ * snapshot per source event push (the historical behavior).
22
+ *
23
+ * Pass `Trigger.clock(Sequence.every('30s'))` to switch to
24
+ * sequence-triggered emission: one snapshot fires when a source
25
+ * event crosses an epoch-aligned boundary of the sequence; output
26
+ * timestamps are the boundary instants. If no events arrive during
27
+ * an interval, no event is emitted (data-driven, not wall-clock-
28
+ * driven).
29
+ *
30
+ * For partitioned rollings (`live.partitionBy(col).rolling(...)`),
31
+ * a clock trigger emits **synchronised across partitions**: when
32
+ * any partition's event crosses the boundary, every partition's
33
+ * rolling-window snapshot fires at the same instant. See
34
+ * {@link Trigger} for the full trigger taxonomy.
35
+ *
36
+ * @experimental Trigger types beyond `clock` and `event` are
37
+ * reserved for future expansion (`count`, `custom`, compound
38
+ * triggers). The current API surface is locked at these two for
39
+ * the experimental release.
40
+ */
41
+ trigger?: Trigger;
18
42
  };
19
43
  export declare class LiveRollingAggregation<S extends SeriesSchema, Out extends SeriesSchema = SeriesSchema> {
20
44
  #private;
@@ -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,7 +1,9 @@
1
1
  import { Event } from './Event.js';
2
+ import { Time } from './Time.js';
2
3
  import { LiveAggregation } from './LiveAggregation.js';
3
4
  import { LiveView, makeDiffView, makeFillView, makeCumulativeView, } from './LiveView.js';
4
5
  import { resolveReducer } from './reducers/index.js';
6
+ import { bucketIndexFor, boundaryTimestampFor, } from './triggers.js';
5
7
  import { parseDuration } from './utils/duration.js';
6
8
  export class LiveRollingAggregation {
7
9
  name;
@@ -13,6 +15,18 @@ export class LiveRollingAggregation {
13
15
  #windowCount;
14
16
  #minSamples;
15
17
  #nextIndex;
18
+ /**
19
+ * The configured trigger. Stored as a strict union; emission paths
20
+ * dispatch on `kind`.
21
+ */
22
+ #trigger;
23
+ /**
24
+ * For clock triggers: the bucket index of the most recently
25
+ * crossed boundary. Undefined until the first event is ingested
26
+ * (the first event establishes the starting bucket; emission begins
27
+ * on the next crossing).
28
+ */
29
+ #lastClockBucketIdx;
16
30
  #outputEvents;
17
31
  #onUpdate;
18
32
  #onEvent;
@@ -24,6 +38,8 @@ export class LiveRollingAggregation {
24
38
  throw new TypeError('rolling minSamples must be a non-negative integer (default 0)');
25
39
  }
26
40
  this.#minSamples = minSamples;
41
+ this.#trigger = options.trigger ?? { kind: 'event' };
42
+ this.#lastClockBucketIdx = undefined;
27
43
  if (typeof window === 'number' && Number.isInteger(window) && window > 0) {
28
44
  this.#windowMs = undefined;
29
45
  this.#windowCount = window;
@@ -160,6 +176,21 @@ export class LiveRollingAggregation {
160
176
  }
161
177
  this.#entries.push(entry);
162
178
  this.#evict(event.begin());
179
+ // Emission is gated by the configured trigger.
180
+ switch (this.#trigger.kind) {
181
+ case 'event':
182
+ this.#emitEvent(event.key());
183
+ return;
184
+ case 'clock':
185
+ this.#emitClock(event.begin(), this.#trigger);
186
+ return;
187
+ }
188
+ }
189
+ /**
190
+ * Emit one output event keyed at `key`, carrying the current
191
+ * rolling-window snapshot. Used by Trigger.event() (the default).
192
+ */
193
+ #emitEvent(key) {
163
194
  const warmup = this.#entries.length < this.#minSamples;
164
195
  const record = {};
165
196
  for (let i = 0; i < this.#columns.length; i++) {
@@ -167,11 +198,32 @@ export class LiveRollingAggregation {
167
198
  ? undefined
168
199
  : this.#states[i].snapshot();
169
200
  }
170
- const outputEvent = new Event(event.key(), record);
201
+ const outputEvent = new Event(key, record);
171
202
  this.#outputEvents.push(outputEvent);
172
203
  for (const fn of this.#onEvent)
173
204
  fn(outputEvent);
174
205
  }
206
+ /**
207
+ * Clock-triggered emission: fire one output event at the new
208
+ * bucket's start timestamp when an incoming event crosses an
209
+ * epoch-aligned boundary. The first event ingested establishes
210
+ * the starting bucket; emission begins on the next crossing.
211
+ * A single event jumping multiple boundaries fires exactly one
212
+ * event at the new bucket's start, not one per skipped boundary.
213
+ */
214
+ #emitClock(eventTs, trigger) {
215
+ const bucketIdx = bucketIndexFor(trigger, eventTs);
216
+ if (this.#lastClockBucketIdx === undefined) {
217
+ // First event — record the starting bucket; no emission yet.
218
+ this.#lastClockBucketIdx = bucketIdx;
219
+ return;
220
+ }
221
+ if (bucketIdx > this.#lastClockBucketIdx) {
222
+ const boundaryMs = boundaryTimestampFor(trigger, bucketIdx);
223
+ this.#emitEvent(new Time(boundaryMs));
224
+ this.#lastClockBucketIdx = bucketIdx;
225
+ }
226
+ }
175
227
  #evict(latestTimestamp) {
176
228
  if (this.#windowMs !== undefined) {
177
229
  const cutoff = latestTimestamp - this.#windowMs;
@@ -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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"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,8 @@ 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 { Trigger } from './triggers.js';
12
+ export type { ClockTrigger, EventTrigger } from './triggers.js';
11
13
  export { PartitionedTimeSeries } from './PartitionedTimeSeries.js';
12
14
  export { Time } from './Time.js';
13
15
  export { TimeRange, toTimeRange } from './TimeRange.js';
@@ -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 { Trigger } from './triggers.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,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,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"}
@@ -0,0 +1,97 @@
1
+ import { Sequence } from './Sequence.js';
2
+ /**
3
+ * A `Trigger` describes when an accumulator should emit. Pond's live
4
+ * layer factors emission cadence as a first-class concept — orthogonal
5
+ * to the accumulator's aggregation choice — so the same primitive can
6
+ * fire on every event, on sequence boundaries, or (in future) on count
7
+ * thresholds.
8
+ *
9
+ * Triggers are constructed via the `Trigger` factory:
10
+ *
11
+ * ```ts
12
+ * import { Trigger, Sequence } from 'pond-ts';
13
+ *
14
+ * const event = Trigger.event(); // per-event (default)
15
+ * const clock = Trigger.clock(Sequence.every('30s')); // per sequence boundary
16
+ * ```
17
+ *
18
+ * Pass to an accumulator's `trigger` option to switch its emission
19
+ * cadence:
20
+ *
21
+ * ```ts
22
+ * live.rolling('1m', { latency: 'p95' }, {
23
+ * trigger: Trigger.clock(Sequence.every('30s')),
24
+ * });
25
+ * ```
26
+ *
27
+ * For partitioned accumulators, a clock trigger synchronises emission
28
+ * across all partitions: when any partition's event crosses a boundary,
29
+ * every partition emits its current rolling-window snapshot at the
30
+ * same boundary timestamp.
31
+ */
32
+ export type Trigger = ClockTrigger | EventTrigger;
33
+ /**
34
+ * Sequence-triggered emission. The accumulator emits one snapshot each
35
+ * time a source event crosses an epoch-aligned boundary of `sequence`.
36
+ *
37
+ * - **Output timestamps** are the boundary instants (`Sequence.every('30s')`
38
+ * → 0, 30 000, 60 000 … ms).
39
+ * - **Data-driven**, not wall-clock-driven. If no source events arrive
40
+ * during an interval, no event is emitted for that interval.
41
+ * - **One emission per crossing.** A single event jumping multiple
42
+ * boundaries fires exactly one event at the new bucket's start.
43
+ * - **Synchronised across partitions.** When applied via a partitioned
44
+ * accumulator's `trigger` option, all partitions share the same
45
+ * bucket index — any partition's event crossing a boundary fires
46
+ * emission for every partition at the same instant.
47
+ *
48
+ * Calendar sequences (`Sequence.calendar('day')`) are rejected — boundary
49
+ * indexing requires a constant millisecond step.
50
+ */
51
+ export type ClockTrigger = Readonly<{
52
+ kind: 'clock';
53
+ sequence: Sequence;
54
+ }>;
55
+ /**
56
+ * Per-event emission. The accumulator emits one snapshot per source
57
+ * event push. This is the default for accumulators that don't specify
58
+ * a trigger; calling `Trigger.event()` explicitly is useful for
59
+ * documentation but produces the same behavior as omitting the option.
60
+ */
61
+ export type EventTrigger = Readonly<{
62
+ kind: 'event';
63
+ }>;
64
+ /**
65
+ * Factory for constructing `Trigger` values. See {@link Trigger} for
66
+ * the conceptual overview and {@link ClockTrigger} / {@link EventTrigger}
67
+ * for the individual variants.
68
+ */
69
+ export declare const Trigger: Readonly<{
70
+ /**
71
+ * Construct a sequence-triggered emission rule. See
72
+ * {@link ClockTrigger} for full semantics.
73
+ *
74
+ * @throws TypeError if `sequence` is calendar-based — boundary indexing
75
+ * requires a constant millisecond step. Use a fixed-step sequence
76
+ * (`Sequence.every('30s')`, `Sequence.hourly()`, etc.).
77
+ */
78
+ clock(sequence: Sequence): ClockTrigger;
79
+ /**
80
+ * Construct a per-event trigger. This is the default behaviour of
81
+ * accumulators (`live.rolling(...)` etc.) when no `trigger` option
82
+ * is specified — passing `Trigger.event()` explicitly is documentary.
83
+ */
84
+ event(): EventTrigger;
85
+ }>;
86
+ /**
87
+ * Internal helper: compute the bucket index for a timestamp under a
88
+ * clock trigger. Used by accumulators implementing clock-triggered
89
+ * emission.
90
+ */
91
+ export declare function bucketIndexFor(trigger: ClockTrigger, ts: number): number;
92
+ /**
93
+ * Internal helper: compute the boundary timestamp at the start of a
94
+ * given bucket index for a clock trigger.
95
+ */
96
+ export declare function boundaryTimestampFor(trigger: ClockTrigger, bucketIdx: number): number;
97
+ //# sourceMappingURL=triggers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../src/triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAKvD;;;;GAIG;AACH,eAAO,MAAM,OAAO;IAClB;;;;;;;OAOG;oBACa,QAAQ,GAAG,YAAY;IAUvC;;;;OAIG;aACM,YAAY;EAGrB,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAIxE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,CAIR"}
@@ -0,0 +1,52 @@
1
+ /** Sentinel default trigger — frozen, shared. */
2
+ const EVENT_TRIGGER = Object.freeze({ kind: 'event' });
3
+ /**
4
+ * Factory for constructing `Trigger` values. See {@link Trigger} for
5
+ * the conceptual overview and {@link ClockTrigger} / {@link EventTrigger}
6
+ * for the individual variants.
7
+ */
8
+ export const Trigger = Object.freeze({
9
+ /**
10
+ * Construct a sequence-triggered emission rule. See
11
+ * {@link ClockTrigger} for full semantics.
12
+ *
13
+ * @throws TypeError if `sequence` is calendar-based — boundary indexing
14
+ * requires a constant millisecond step. Use a fixed-step sequence
15
+ * (`Sequence.every('30s')`, `Sequence.hourly()`, etc.).
16
+ */
17
+ clock(sequence) {
18
+ if (sequence.kind() !== 'fixed') {
19
+ throw new TypeError('Trigger.clock(sequence) requires a fixed-step Sequence; ' +
20
+ 'calendar sequences have no constant boundary spacing.');
21
+ }
22
+ return Object.freeze({ kind: 'clock', sequence });
23
+ },
24
+ /**
25
+ * Construct a per-event trigger. This is the default behaviour of
26
+ * accumulators (`live.rolling(...)` etc.) when no `trigger` option
27
+ * is specified — passing `Trigger.event()` explicitly is documentary.
28
+ */
29
+ event() {
30
+ return EVENT_TRIGGER;
31
+ },
32
+ });
33
+ /**
34
+ * Internal helper: compute the bucket index for a timestamp under a
35
+ * clock trigger. Used by accumulators implementing clock-triggered
36
+ * emission.
37
+ */
38
+ export function bucketIndexFor(trigger, ts) {
39
+ const stepMs = trigger.sequence.stepMs();
40
+ const anchorMs = trigger.sequence.anchor();
41
+ return Math.floor((ts - anchorMs) / stepMs);
42
+ }
43
+ /**
44
+ * Internal helper: compute the boundary timestamp at the start of a
45
+ * given bucket index for a clock trigger.
46
+ */
47
+ export function boundaryTimestampFor(trigger, bucketIdx) {
48
+ const stepMs = trigger.sequence.stepMs();
49
+ const anchorMs = trigger.sequence.anchor();
50
+ return anchorMs + bucketIdx * stepMs;
51
+ }
52
+ //# sourceMappingURL=triggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggers.js","sourceRoot":"","sources":["../src/triggers.ts"],"names":[],"mappings":"AA8DA,iDAAiD;AACjD,MAAM,aAAa,GAAiB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAErE;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC;;;;;;;OAOG;IACH,KAAK,CAAC,QAAkB;QACtB,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CACjB,0DAA0D;gBACxD,uDAAuD,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAqB,EAAE,EAAU;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAqB,EACrB,SAAiB;IAEjB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3C,OAAO,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AACvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pond-ts",
3
- "version": "0.11.7",
3
+ "version": "0.12.0",
4
4
  "description": "TypeScript-first time series primitives",
5
5
  "license": "MIT",
6
6
  "repository": {