mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 16:33:15 +01:00
40 lines
877 B
JavaScript
40 lines
877 B
JavaScript
export class StreamBase {
|
|
|
|
attach(observer) {}
|
|
|
|
map(fn) {
|
|
return new MapStream(this, fn);
|
|
}
|
|
|
|
filter(predicate) {
|
|
return new FilterStream(this, predicate);
|
|
}
|
|
|
|
pairwise(first) {
|
|
return new PairwiseStream(this, first);
|
|
}
|
|
|
|
scan(initAccumulator) {
|
|
return new ScanStream(this, initAccumulator);
|
|
}
|
|
|
|
remember(initialValue, usingStream) {
|
|
if (!usingStream) {
|
|
usingStream = StateStream;
|
|
}
|
|
let stateStream = new usingStream(initialValue);
|
|
this.attach(v => stateStream.next(v));
|
|
return stateStream;
|
|
}
|
|
|
|
distinct() {
|
|
return new DistinctStream(this);
|
|
}
|
|
}
|
|
|
|
const {MapStream} = require('./map');
|
|
const {FilterStream} = require('./filter');
|
|
const {StateStream} = require('./state');
|
|
const {PairwiseStream} = require('./pairwise');
|
|
const {ScanStream} = require('./scan');
|
|
const {DistinctStream} = require('./distinct');
|