UNPKG

6.25 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var index_1 = require("../index");
4var PairwiseOperator = /** @class */ (function () {
5 function PairwiseOperator(ins) {
6 this.ins = ins;
7 this.type = 'pairwise';
8 this.val = null;
9 this.has = false;
10 this.out = null;
11 }
12 PairwiseOperator.prototype._start = function (out) {
13 this.out = out;
14 this.ins._add(this);
15 };
16 PairwiseOperator.prototype._stop = function () {
17 this.ins._remove(this);
18 this.has = false;
19 this.out = null;
20 this.val = null;
21 };
22 PairwiseOperator.prototype._n = function (t) {
23 var u = this.out;
24 if (!u)
25 return;
26 if (this.has) {
27 var prev = this.val;
28 this.val = t;
29 u._n([prev, t]);
30 }
31 else {
32 this.val = t;
33 this.has = true;
34 }
35 };
36 PairwiseOperator.prototype._e = function (err) {
37 var u = this.out;
38 if (!u)
39 return;
40 u._e(err);
41 };
42 PairwiseOperator.prototype._c = function () {
43 var u = this.out;
44 if (!u)
45 return;
46 u._c();
47 };
48 return PairwiseOperator;
49}());
50/**
51 * Group consecutive pairs of events as arrays. Each array has two items.
52 *
53 * Marble diagram:
54 *
55 * ```text
56 * ---1---2-----3-----4-----5--------|
57 * pairwise
58 * -------[1,2]-[2,3]-[3,4]-[4,5]----|
59 * ```
60 *
61 * Example:
62 *
63 * ```js
64 * import pairwise from 'xstream/extra/pairwise'
65 *
66 * const stream = xs.of(1, 2, 3, 4, 5, 6).compose(pairwise)
67 *
68 * stream.addListener({
69 * next: i => console.log(i),
70 * error: err => console.error(err),
71 * complete: () => console.log('completed')
72 * })
73 * ```
74 *
75 * ```text
76 * > [1,2]
77 * > [2,3]
78 * > [3,4]
79 * > [4,5]
80 * > [5,6]
81 * > completed
82 * ```
83 *
84 * @return {Stream}
85 */
86function pairwise(ins) {
87 return new index_1.Stream(new PairwiseOperator(ins));
88}
89exports.default = pairwise;
90//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpcndpc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXh0cmEvcGFpcndpc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQ0FBMEM7QUFFMUM7SUFNRSwwQkFBbUIsR0FBYztRQUFkLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFMMUIsU0FBSSxHQUFHLFVBQVUsQ0FBQztRQUNqQixRQUFHLEdBQWEsSUFBSSxDQUFDO1FBQ3JCLFFBQUcsR0FBWSxLQUFLLENBQUM7UUFDdEIsUUFBRyxHQUFtQixJQUFXLENBQUM7SUFHekMsQ0FBQztJQUVELGlDQUFNLEdBQU4sVUFBTyxHQUFtQjtRQUN4QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQ0FBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFXLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDbEIsQ0FBQztJQUVELDZCQUFFLEdBQUYsVUFBRyxDQUFJO1FBQ0wsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDZixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELDZCQUFFLEdBQUYsVUFBRyxHQUFRO1FBQ1QsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDZixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELDZCQUFFLEdBQUY7UUFDRSxJQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ25CLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTztRQUNmLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNULENBQUM7SUFDSCx1QkFBQztBQUFELENBQUMsQUE3Q0QsSUE2Q0M7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFDSCxrQkFBb0MsR0FBYztJQUNoRCxPQUFPLElBQUksY0FBTSxDQUFTLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRkQsMkJBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wZXJhdG9yLCBTdHJlYW19IGZyb20gJy4uL2luZGV4JztcblxuY2xhc3MgUGFpcndpc2VPcGVyYXRvcjxUPiBpbXBsZW1lbnRzIE9wZXJhdG9yPFQsIFtULCBUXT4ge1xuICBwdWJsaWMgdHlwZSA9ICdwYWlyd2lzZSc7XG4gIHByaXZhdGUgdmFsOiBUIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgaGFzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBvdXQ6IFN0cmVhbTxbVCwgVF0+ID0gbnVsbCBhcyBhbnk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluczogU3RyZWFtPFQ+KSB7XG4gIH1cblxuICBfc3RhcnQob3V0OiBTdHJlYW08W1QsIFRdPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gIH1cblxuICBfc3RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgIHRoaXMuaGFzID0gZmFsc2U7XG4gICAgdGhpcy5vdXQgPSBudWxsIGFzIGFueTtcbiAgICB0aGlzLnZhbCA9IG51bGw7XG4gIH1cblxuICBfbih0OiBUKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICghdSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmhhcykge1xuICAgICAgY29uc3QgcHJldiA9IHRoaXMudmFsO1xuICAgICAgdGhpcy52YWwgPSB0O1xuICAgICAgdS5fbihbcHJldiBhcyBULCB0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsID0gdDtcbiAgICAgIHRoaXMuaGFzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBfZShlcnI6IGFueSkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAoIXUpIHJldHVybjtcbiAgICB1Ll9lKGVycik7XG4gIH1cblxuICBfYygpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKCF1KSByZXR1cm47XG4gICAgdS5fYygpO1xuICB9XG59XG5cbi8qKlxuICogR3JvdXAgY29uc2VjdXRpdmUgcGFpcnMgb2YgZXZlbnRzIGFzIGFycmF5cy4gRWFjaCBhcnJheSBoYXMgdHdvIGl0ZW1zLlxuICpcbiAqIE1hcmJsZSBkaWFncmFtOlxuICpcbiAqIGBgYHRleHRcbiAqIC0tLTEtLS0yLS0tLS0zLS0tLS00LS0tLS01LS0tLS0tLS18XG4gKiAgICAgICBwYWlyd2lzZVxuICogLS0tLS0tLVsxLDJdLVsyLDNdLVszLDRdLVs0LDVdLS0tLXxcbiAqIGBgYFxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIGltcG9ydCBwYWlyd2lzZSBmcm9tICd4c3RyZWFtL2V4dHJhL3BhaXJ3aXNlJ1xuICpcbiAqIGNvbnN0IHN0cmVhbSA9IHhzLm9mKDEsIDIsIDMsIDQsIDUsIDYpLmNvbXBvc2UocGFpcndpc2UpXG4gKlxuICogc3RyZWFtLmFkZExpc3RlbmVyKHtcbiAqICAgbmV4dDogaSA9PiBjb25zb2xlLmxvZyhpKSxcbiAqICAgZXJyb3I6IGVyciA9PiBjb25zb2xlLmVycm9yKGVyciksXG4gKiAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnY29tcGxldGVkJylcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBgYGB0ZXh0XG4gKiA+IFsxLDJdXG4gKiA+IFsyLDNdXG4gKiA+IFszLDRdXG4gKiA+IFs0LDVdXG4gKiA+IFs1LDZdXG4gKiA+IGNvbXBsZXRlZFxuICogYGBgXG4gKlxuICogQHJldHVybiB7U3RyZWFtfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYWlyd2lzZTxUPihpbnM6IFN0cmVhbTxUPik6IFN0cmVhbTxbVCwgVF0+IHtcbiAgcmV0dXJuIG5ldyBTdHJlYW08W1QsIFRdPihuZXcgUGFpcndpc2VPcGVyYXRvcihpbnMpKTtcbn1cbiJdfQ==
\No newline at end of file