@johnhenry/iteration 0.0.1 → 0.1.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.
@@ -24,6 +24,19 @@ export { HALT as HAULT };
24
24
  export interface ReducerStep<in In> {
25
25
  (buffer: unknown[], item: In, iterator?: Iterable<In> | AsyncIterable<In>): unknown[] | Halt;
26
26
  complete?: (buffer: unknown[]) => unknown[];
27
+ /**
28
+ * What this step (and the steps after it) keep between calls: a half-full
29
+ * `group`, `partitionBy`'s open run, `accumulate`'s running value,
30
+ * `dedupe`'s last key. Steps that keep nothing omit it. Cascades like
31
+ * `complete`.
32
+ */
33
+ held?: () => unknown[];
34
+ /**
35
+ * Let go of the held items for which `predicate` is true, and return how
36
+ * many were let go. It never emits, and never changes what is later
37
+ * emitted beyond leaving the dropped items out. Cascades like `complete`.
38
+ */
39
+ drop?: (predicate: (held: unknown) => boolean) => number;
27
40
  }
28
41
  /**
29
42
  * A transducer: transforms a step that consumes `Out` items into a step
@@ -1 +1 @@
1
- {"version":3,"file":"iterator-tools.d.ts","sourceRoot":"","sources":["../src/iterator-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iterator-tools.d.ts","sourceRoot":"","sources":["../src/iterator-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"iterator-tools.js","sourceRoot":"","sources":["../src/iterator-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iterator-tools.js","sourceRoot":"","sources":["../src/iterator-tools.ts"],"names":[],"mappings":"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"}
@@ -93,6 +93,22 @@ export interface PushTransducer<In, Out> {
93
93
  * ends, or after `halted` becomes true. Later calls return `[]`.
94
94
  */
95
95
  complete(): Out[];
96
+ /**
97
+ * What the stateful transducers keep between steps, upstream first: a
98
+ * half-full `group`'s items, `partitionBy`'s open run, `accumulate`'s
99
+ * running value, `dedupe`'s last key. A copy: changing it changes nothing.
100
+ */
101
+ held(): unknown[];
102
+ /**
103
+ * Let go of the held items `predicate` matches, and return how many. For a
104
+ * caller that must stop an operator keeping something (a value removed
105
+ * elsewhere). It never emits and never changes what is later emitted
106
+ * beyond leaving the dropped items out: a `group` still waits for its full
107
+ * size, a `partitionBy` run left empty is closed without being emitted,
108
+ * `accumulate` starts again from its initial value, and `dedupe` forgets
109
+ * its key (so an equal item passes once).
110
+ */
111
+ drop(predicate: (held: unknown) => boolean): number;
96
112
  /** True once a transducer returned HALT (e.g. `take(n)` saw item n + 1). */
97
113
  readonly halted: boolean;
98
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transduce.d.ts","sourceRoot":"","sources":["../src/transduce.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transduce.d.ts","sourceRoot":"","sources":["../src/transduce.ts"],"names":[],"mappings":"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"}
package/dist/transduce.js CHANGED
@@ -55,6 +55,12 @@ export function transducePush(...functions) {
55
55
  completed = true;
56
56
  return step.complete ? step.complete([]) : [];
57
57
  },
58
+ held() {
59
+ return step.held ? step.held() : [];
60
+ },
61
+ drop(predicate) {
62
+ return step.drop ? step.drop(predicate) : 0;
63
+ },
58
64
  get halted() {
59
65
  return halted;
60
66
  },
@@ -1 +1 @@
1
- {"version":3,"file":"transduce.js","sourceRoot":"","sources":["../src/transduce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAoB,WAAW,EAAE,UAAU,EAAmB,MAAM,qBAAqB,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,IAAI,GAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,cAAsB,EACtB,OAAyD,EACzD,WAA+B,EAC/B,IAAe,EACf,MAAqF,EAC7E,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,gBAAgB,GACpB,CAAC,GAAG,SAA8C,EAAE,EAAE,CACtD,CAAC,KAA2B,EAAwB,EAAE,CACpD,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AA0D/D,MAAM,UAAU,cAAc,CAAC,GAAG,SAAsC;IACtE,OAAO,CAAC,cAA0D,EAAE,EAAE,MAAM,KAAoB,EAAE,EAAE,EAAE,CACpG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACvH,CAAC;AAwDD,MAAM,UAAU,aAAa,CAAC,GAAG,SAAsC;IACrE,OAAO,CAAC,cAAiC,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrH,CAAC;AAmED,MAAM,UAAU,aAAa,CAAC,GAAG,SAAsC;IACrE,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO;QACL,IAAI,CAAC,KAAK;YACR,IAAI,MAAM,IAAI,SAAS;gBAAE,OAAO,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,QAAQ;YACN,IAAI,SAAS;gBAAE,OAAO,EAAE,CAAC;YACzB,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,MAAM;YACR,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transduce.js","sourceRoot":"","sources":["../src/transduce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAoB,WAAW,EAAE,UAAU,EAAmB,MAAM,qBAAqB,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,IAAI,GAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,cAAsB,EACtB,OAAyD,EACzD,WAA+B,EAC/B,IAAe,EACf,MAAqF,EAC7E,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,gBAAgB,GACpB,CAAC,GAAG,SAA8C,EAAE,EAAE,CACtD,CAAC,KAA2B,EAAwB,EAAE,CACpD,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AA0D/D,MAAM,UAAU,cAAc,CAAC,GAAG,SAAsC;IACtE,OAAO,CAAC,cAA0D,EAAE,EAAE,MAAM,KAAoB,EAAE,EAAE,EAAE,CACpG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACvH,CAAC;AAwDD,MAAM,UAAU,aAAa,CAAC,GAAG,SAAsC;IACrE,OAAO,CAAC,cAAiC,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrH,CAAC;AAmFD,MAAM,UAAU,aAAa,CAAC,GAAG,SAAsC;IACrE,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO;QACL,IAAI,CAAC,KAAK;YACR,IAAI,MAAM,IAAI,SAAS;gBAAE,OAAO,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,QAAQ;YACN,IAAI,SAAS;gBAAE,OAAO,EAAE,CAAC;YACzB,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,CAAC;QACD,IAAI;YACF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,SAAS;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,MAAM;YACR,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transducers.d.ts","sourceRoot":"","sources":["../src/transducers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAiB9E;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,GACb,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,KAAG,UAAU,CAAC,EAAE,EAAE,GAAG,CAEe,CAAC;AAE7E;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,GAChB,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,OAAO,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAEiC,CAAC;AAE7F;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GACd,EAAE,EAAE,OAAO,MAAM,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAKrC,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,GACd,EAAE,EAAE,OAAO,MAAM,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAQrC,CAAC;AAEJ;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,GAChB,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,OAAO,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAEiC,CAAC;AAE7F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,GACf,EAAE,EAAE,OAAO,MAAM,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,CAgBvC,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACpB,EAAE,EAAE,GAAG,GAAG,EAAE,EACX,OAAM,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,GACmC,EACzE,UAAS,GAAyB,KACjC,UAAU,CAAC,EAAE,EAAE,GAAG,CAYpB,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,GAChB,EAAE,EAAE,QAAO,CAAC,IAAI,EAAE,EAAE,KAAK,OAAkB,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAa/D,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GACnB,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,WAAW,GAAG,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CActD,CAAC;AAEJ;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,GACrB,EAAE,EAAE,QAAO,CAAC,IAAI,EAAE,EAAE,KAAK,OAAkB,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,CA4BjE,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,GAAG,GACb,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,OAAO,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAK9C,CAAC"}
1
+ {"version":3,"file":"transducers.d.ts","sourceRoot":"","sources":["../src/transducers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAoD9E;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,GACb,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,KAAG,UAAU,CAAC,EAAE,EAAE,GAAG,CAEe,CAAC;AAE7E;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,GAChB,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,OAAO,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAEiC,CAAC;AAE7F;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GACd,EAAE,EAAE,OAAO,MAAM,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAKrC,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,GACd,EAAE,EAAE,OAAO,MAAM,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAQrC,CAAC;AAEJ;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,GAChB,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,OAAO,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAEiC,CAAC;AAE7F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,GACf,EAAE,EAAE,OAAO,MAAM,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,CAqBvC,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACpB,EAAE,EAAE,GAAG,GAAG,EAAE,EACX,OAAM,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,GACmC,EACzE,UAAS,GAAyB,KACjC,UAAU,CAAC,EAAE,EAAE,GAAG,CAwBpB,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,GAChB,EAAE,EAAE,QAAO,CAAC,IAAI,EAAE,EAAE,KAAK,OAAkB,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAuB/D,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GACnB,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,WAAW,GAAG,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CActD,CAAC;AAEJ;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,GACrB,EAAE,EAAE,QAAO,CAAC,IAAI,EAAE,EAAE,KAAK,OAAkB,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,CA0CjE,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,GAAG,GACb,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,OAAO,KAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAK9C,CAAC"}
@@ -19,8 +19,37 @@ import { HALT } from "./iterator-tools.js";
19
19
  const forwardComplete = (next, step) => {
20
20
  if (next.complete)
21
21
  step.complete = next.complete;
22
+ if (next.held)
23
+ step.held = next.held;
24
+ if (next.drop)
25
+ step.drop = next.drop;
22
26
  return step;
23
27
  };
28
+ /**
29
+ * Give a stateful step `held`/`drop` over its own state, then the inner
30
+ * step's, so the hooks cascade the way `.complete` does. `own` lists the
31
+ * step's held items; `ownDrop` lets go of the ones `predicate` matches and
32
+ * returns how many.
33
+ * @ignore
34
+ */
35
+ const holding = (next, step, own, ownDrop) => {
36
+ step.held = () => [...own(), ...(next.held ? next.held() : [])];
37
+ step.drop = (predicate) => ownDrop(predicate) + (next.drop ? next.drop(predicate) : 0);
38
+ return step;
39
+ };
40
+ /** Remove, in place, the items of `list` that `predicate` matches; returns how many. */
41
+ const dropFrom = (list, predicate) => {
42
+ let kept = 0;
43
+ let dropped = 0;
44
+ for (const item of list) {
45
+ if (predicate(item))
46
+ dropped++;
47
+ else
48
+ list[kept++] = item;
49
+ }
50
+ list.length = kept;
51
+ return dropped;
52
+ };
24
53
  /**
25
54
  * Create a transducer that maps values
26
55
  * @kind function
@@ -102,7 +131,7 @@ export const group = (limit) => (conjoin) => {
102
131
  const buffer = out === HALT ? init : out;
103
132
  return conjoin.complete ? conjoin.complete(buffer) : buffer;
104
133
  };
105
- return step;
134
+ return holding(conjoin, step, () => [...partition], (predicate) => dropFrom(partition, predicate));
106
135
  };
107
136
  /**
108
137
  * Create a transducer that accumulates items into a result and emits them
@@ -120,9 +149,17 @@ export const accumulate = (func = (a, b) => (a + b), initial = 0) => (conjoin) =
120
149
  // directly here would carry accumulated state over into the *next*
121
150
  // transduce run that reuses this same accumulate(...) instance.
122
151
  let accumulated = initial;
123
- return forwardComplete(conjoin, (init, item) => {
152
+ let has = false;
153
+ return holding(conjoin, forwardComplete(conjoin, (init, item) => {
124
154
  accumulated = func(accumulated, item);
155
+ has = true;
125
156
  return conjoin(init, accumulated);
157
+ }), () => (has ? [accumulated] : []), (predicate) => {
158
+ if (!has || !predicate(accumulated))
159
+ return 0;
160
+ accumulated = initial;
161
+ has = false;
162
+ return 1;
126
163
  });
127
164
  };
128
165
  /**
@@ -139,7 +176,7 @@ export const accumulate = (func = (a, b) => (a + b), initial = 0) => (conjoin) =
139
176
  export const dedupe = (keyFn = (x) => x) => (conjoin) => {
140
177
  let hasLast = false;
141
178
  let lastKey;
142
- return forwardComplete(conjoin, (init, item) => {
179
+ return holding(conjoin, forwardComplete(conjoin, (init, item) => {
143
180
  const key = keyFn(item);
144
181
  if (hasLast && Object.is(key, lastKey)) {
145
182
  return init;
@@ -147,6 +184,12 @@ export const dedupe = (keyFn = (x) => x) => (conjoin) => {
147
184
  hasLast = true;
148
185
  lastKey = key;
149
186
  return conjoin(init, item);
187
+ }), () => (hasLast ? [lastKey] : []), (predicate) => {
188
+ if (!hasLast || !predicate(lastKey))
189
+ return 0;
190
+ hasLast = false;
191
+ lastKey = undefined;
192
+ return 1;
150
193
  });
151
194
  };
152
195
  /**
@@ -212,7 +255,16 @@ export const partitionBy = (keyFn = (x) => x) => (conjoin) => {
212
255
  const buffer = out === HALT ? init : out;
213
256
  return conjoin.complete ? conjoin.complete(buffer) : buffer;
214
257
  };
215
- return step;
258
+ return holding(conjoin, step, () => (hasCurrent ? [...bucket] : []), (predicate) => {
259
+ const dropped = dropFrom(bucket, predicate);
260
+ if (hasCurrent && bucket.length === 0) {
261
+ // A run with nothing left isn't open: the next item starts a fresh
262
+ // one, and complete() has no empty run to flush.
263
+ hasCurrent = false;
264
+ currentKey = undefined;
265
+ }
266
+ return dropped;
267
+ });
216
268
  };
217
269
  /**
218
270
  * Create a transducer that calls `fn(item)` for its side effect and passes
@@ -1 +1 @@
1
- {"version":3,"file":"transducers.js","sourceRoot":"","sources":["../src/transducers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transducers.js","sourceRoot":"","sources":["../src/transducers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -88,7 +88,7 @@
88
88
  "url": "git+https://github.com/johnhenry/math.git",
89
89
  "directory": "packages/iteration"
90
90
  },
91
- "version": "0.0.1",
91
+ "version": "0.1.0",
92
92
  "description": "Sync + async iterator algebra for TypeScript — transducers, Python-itertools parity, terminal consumers, bounded concurrency, cancellation, and backpressure-aware channels. Zero runtime dependencies.",
93
93
  "main": "./dist/index.js",
94
94
  "types": "./dist/index.d.ts",
package/readme.md CHANGED
@@ -420,6 +420,40 @@ socket.onmessage = (event) => pipe.step(event.data).forEach(send); // "a+b", "c+
420
420
  socket.onclose = () => pipe.complete().forEach(send); // a trailing "e", if any
421
421
  ```
422
422
 
423
+ #### `held()` and `drop(predicate)`: see and let go of what a pipeline keeps
424
+
425
+ Stateful transducers keep items between steps: a half-full `group`,
426
+ `partitionBy`'s open run, `accumulate`'s running value, `dedupe`'s last key.
427
+ `pipe.held()` returns a copy of what is held (upstream stages first), and
428
+ `pipe.drop(predicate)` lets go of the held items `predicate` matches and returns
429
+ how many. Use it when something held must go (a value removed elsewhere, a
430
+ buffer that must not keep a large object alive).
431
+
432
+ ```javascript
433
+ const pipe = transducePush(group(3));
434
+ pipe.step(a);
435
+ pipe.step(b);
436
+ pipe.held(); // [a, b]
437
+ pipe.drop((x) => x === a); // 1
438
+ pipe.step(c); // [] -- still waiting for a full group of 3
439
+ pipe.step(d); // [[b, c, d]]
440
+ ```
441
+
442
+ Dropping never emits and never changes what is later emitted beyond leaving the
443
+ dropped items out:
444
+
445
+ - `group` keeps waiting for its full size (the batch stays that long), and
446
+ `complete()` flushes what is left.
447
+ - `partitionBy` removes the items from its open run; a run left empty is closed
448
+ without being emitted.
449
+ - `accumulate` can't un-fold one item, so when the predicate matches its running
450
+ value it starts again from its initial value.
451
+ - `dedupe` forgets its last key when the predicate matches it, so the next item
452
+ passes even if equal to it.
453
+ - Stateless transducers (`map`, `filter`, ...) hold nothing and pass the hooks
454
+ through. A custom stateful transducer takes part by setting `held` and `drop`
455
+ on its step (as it does `complete`) and calling the inner step's.
456
+
423
457
  It uses the same composition order, `.complete` flush and `HALT` as
424
458
  `transduceSync`: pushing every item of `xs` and then calling `complete()`
425
459
  returns exactly what `transduceSync(...)(xs)` yields. What it does **not**
@@ -28,6 +28,19 @@ export { HALT as HAULT };
28
28
  export interface ReducerStep<in In> {
29
29
  (buffer: unknown[], item: In, iterator?: Iterable<In> | AsyncIterable<In>): unknown[] | Halt;
30
30
  complete?: (buffer: unknown[]) => unknown[];
31
+ /**
32
+ * What this step (and the steps after it) keep between calls: a half-full
33
+ * `group`, `partitionBy`'s open run, `accumulate`'s running value,
34
+ * `dedupe`'s last key. Steps that keep nothing omit it. Cascades like
35
+ * `complete`.
36
+ */
37
+ held?: () => unknown[];
38
+ /**
39
+ * Let go of the held items for which `predicate` is true, and return how
40
+ * many were let go. It never emits, and never changes what is later
41
+ * emitted beyond leaving the dropped items out. Cascades like `complete`.
42
+ */
43
+ drop?: (predicate: (held: unknown) => boolean) => number;
31
44
  }
32
45
 
33
46
  /**
package/src/transduce.ts CHANGED
@@ -177,6 +177,22 @@ export interface PushTransducer<In, Out> {
177
177
  * ends, or after `halted` becomes true. Later calls return `[]`.
178
178
  */
179
179
  complete(): Out[];
180
+ /**
181
+ * What the stateful transducers keep between steps, upstream first: a
182
+ * half-full `group`'s items, `partitionBy`'s open run, `accumulate`'s
183
+ * running value, `dedupe`'s last key. A copy: changing it changes nothing.
184
+ */
185
+ held(): unknown[];
186
+ /**
187
+ * Let go of the held items `predicate` matches, and return how many. For a
188
+ * caller that must stop an operator keeping something (a value removed
189
+ * elsewhere). It never emits and never changes what is later emitted
190
+ * beyond leaving the dropped items out: a `group` still waits for its full
191
+ * size, a `partitionBy` run left empty is closed without being emitted,
192
+ * `accumulate` starts again from its initial value, and `dedupe` forgets
193
+ * its key (so an equal item passes once).
194
+ */
195
+ drop(predicate: (held: unknown) => boolean): number;
180
196
  /** True once a transducer returned HALT (e.g. `take(n)` saw item n + 1). */
181
197
  readonly halted: boolean;
182
198
  }
@@ -244,6 +260,12 @@ export function transducePush(...functions: Array<Transducer<any, any>>): PushTr
244
260
  completed = true;
245
261
  return step.complete ? step.complete([]) : [];
246
262
  },
263
+ held() {
264
+ return step.held ? step.held() : [];
265
+ },
266
+ drop(predicate) {
267
+ return step.drop ? step.drop(predicate) : 0;
268
+ },
247
269
  get halted() {
248
270
  return halted;
249
271
  },
@@ -18,11 +18,46 @@ import { HALT, type ReducerStep, type Transducer } from "./iterator-tools.ts";
18
18
  * outermost step, which had no `.complete`, and the flush was lost.
19
19
  * @ignore
20
20
  */
21
- const forwardComplete = <In>(next: Pick<ReducerStep<never>, "complete">, step: ReducerStep<In>): ReducerStep<In> => {
21
+ const forwardComplete = <In>(
22
+ next: Pick<ReducerStep<never>, "complete" | "held" | "drop">,
23
+ step: ReducerStep<In>,
24
+ ): ReducerStep<In> => {
22
25
  if (next.complete) step.complete = next.complete;
26
+ if (next.held) step.held = next.held;
27
+ if (next.drop) step.drop = next.drop;
23
28
  return step;
24
29
  };
25
30
 
31
+ /**
32
+ * Give a stateful step `held`/`drop` over its own state, then the inner
33
+ * step's, so the hooks cascade the way `.complete` does. `own` lists the
34
+ * step's held items; `ownDrop` lets go of the ones `predicate` matches and
35
+ * returns how many.
36
+ * @ignore
37
+ */
38
+ const holding = <In>(
39
+ next: Pick<ReducerStep<never>, "held" | "drop">,
40
+ step: ReducerStep<In>,
41
+ own: () => unknown[],
42
+ ownDrop: (predicate: (held: unknown) => boolean) => number,
43
+ ): ReducerStep<In> => {
44
+ step.held = () => [...own(), ...(next.held ? next.held() : [])];
45
+ step.drop = (predicate) => ownDrop(predicate) + (next.drop ? next.drop(predicate) : 0);
46
+ return step;
47
+ };
48
+
49
+ /** Remove, in place, the items of `list` that `predicate` matches; returns how many. */
50
+ const dropFrom = (list: unknown[], predicate: (held: unknown) => boolean): number => {
51
+ let kept = 0;
52
+ let dropped = 0;
53
+ for (const item of list) {
54
+ if (predicate(item)) dropped++;
55
+ else list[kept++] = item;
56
+ }
57
+ list.length = kept;
58
+ return dropped;
59
+ };
60
+
26
61
  /**
27
62
  * Create a transducer that maps values
28
63
  * @kind function
@@ -124,7 +159,12 @@ export const group =
124
159
  const buffer = out === HALT ? init : out;
125
160
  return conjoin.complete ? conjoin.complete(buffer) : buffer;
126
161
  };
127
- return step;
162
+ return holding(
163
+ conjoin,
164
+ step,
165
+ () => [...partition],
166
+ (predicate) => dropFrom(partition, predicate),
167
+ );
128
168
  };
129
169
 
130
170
  /**
@@ -149,10 +189,22 @@ export const accumulate =
149
189
  // directly here would carry accumulated state over into the *next*
150
190
  // transduce run that reuses this same accumulate(...) instance.
151
191
  let accumulated = initial;
152
- return forwardComplete(conjoin, (init, item) => {
153
- accumulated = func(accumulated, item);
154
- return conjoin(init, accumulated);
155
- });
192
+ let has = false;
193
+ return holding(
194
+ conjoin,
195
+ forwardComplete(conjoin, (init, item) => {
196
+ accumulated = func(accumulated, item);
197
+ has = true;
198
+ return conjoin(init, accumulated);
199
+ }),
200
+ () => (has ? [accumulated] : []),
201
+ (predicate) => {
202
+ if (!has || !predicate(accumulated)) return 0;
203
+ accumulated = initial;
204
+ has = false;
205
+ return 1;
206
+ },
207
+ );
156
208
  };
157
209
 
158
210
  /**
@@ -171,15 +223,25 @@ export const dedupe =
171
223
  (conjoin) => {
172
224
  let hasLast = false;
173
225
  let lastKey: unknown;
174
- return forwardComplete(conjoin, (init, item) => {
175
- const key = keyFn(item);
176
- if (hasLast && Object.is(key, lastKey)) {
177
- return init;
178
- }
179
- hasLast = true;
180
- lastKey = key;
181
- return conjoin(init, item);
182
- });
226
+ return holding(
227
+ conjoin,
228
+ forwardComplete(conjoin, (init, item) => {
229
+ const key = keyFn(item);
230
+ if (hasLast && Object.is(key, lastKey)) {
231
+ return init;
232
+ }
233
+ hasLast = true;
234
+ lastKey = key;
235
+ return conjoin(init, item);
236
+ }),
237
+ () => (hasLast ? [lastKey] : []),
238
+ (predicate) => {
239
+ if (!hasLast || !predicate(lastKey)) return 0;
240
+ hasLast = false;
241
+ lastKey = undefined;
242
+ return 1;
243
+ },
244
+ );
183
245
  };
184
246
 
185
247
  /**
@@ -250,7 +312,21 @@ export const partitionBy =
250
312
  const buffer = out === HALT ? init : out;
251
313
  return conjoin.complete ? conjoin.complete(buffer) : buffer;
252
314
  };
253
- return step;
315
+ return holding(
316
+ conjoin,
317
+ step,
318
+ () => (hasCurrent ? [...bucket] : []),
319
+ (predicate) => {
320
+ const dropped = dropFrom(bucket, predicate);
321
+ if (hasCurrent && bucket.length === 0) {
322
+ // A run with nothing left isn't open: the next item starts a fresh
323
+ // one, and complete() has no empty run to flush.
324
+ hasCurrent = false;
325
+ currentKey = undefined;
326
+ }
327
+ return dropped;
328
+ },
329
+ );
254
330
  };
255
331
 
256
332
  /**