@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.
- package/dist/iterator-tools.d.ts +13 -0
- package/dist/iterator-tools.d.ts.map +1 -1
- package/dist/iterator-tools.js.map +1 -1
- package/dist/transduce.d.ts +16 -0
- package/dist/transduce.d.ts.map +1 -1
- package/dist/transduce.js +6 -0
- package/dist/transduce.js.map +1 -1
- package/dist/transducers.d.ts.map +1 -1
- package/dist/transducers.js +56 -4
- package/dist/transducers.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +34 -0
- package/src/iterator-tools.ts +13 -0
- package/src/transduce.ts +22 -0
- package/src/transducers.ts +92 -16
package/dist/iterator-tools.d.ts
CHANGED
|
@@ -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":"AAEA;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,OAAO,MAAuB,CAAC;AAClD,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC;AAE/B;;;GAGG;AACH,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;AAEzB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW,CAAC,EAAE,CAAC,EAAE;IAChC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;IAC7F,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC;
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEtE;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAkB,MAAM,CAAC,MAAM,CAAC,CAAC;AAGlD;;;GAGG;AACH,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"iterator-tools.js","sourceRoot":"","sources":["../src/iterator-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/transduce.d.ts
CHANGED
|
@@ -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
|
}
|
package/dist/transduce.d.ts.map
CHANGED
|
@@ -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
|
},
|
package/dist/transduce.js.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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"}
|
package/dist/transducers.js
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/transducers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transducers.js","sourceRoot":"","sources":["../src/transducers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAqC,MAAM,qBAAqB,CAAC;AAE9E;;;;;;;;;GASG;AACH,MAAM,eAAe,GAAG,
|
|
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
|
|
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**
|
package/src/iterator-tools.ts
CHANGED
|
@@ -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
|
},
|
package/src/transducers.ts
CHANGED
|
@@ -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>(
|
|
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
|
|
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
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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
|
|
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
|
/**
|