UNPKG

5.79 kBJavaScriptView Raw
1var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2 return new (P || (P = Promise))(function (resolve, reject) {
3 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
5 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
6 step((generator = generator.apply(thisArg, _arguments || [])).next());
7 });
8};
9var __generator = (this && this.__generator) || function (thisArg, body) {
10 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
11 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12 function verb(n) { return function (v) { return step([n, v]); }; }
13 function step(op) {
14 if (f) throw new TypeError("Generator is already executing.");
15 while (_) try {
16 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
17 if (y = 0, t) op = [op[0] & 2, t.value];
18 switch (op[0]) {
19 case 0: case 1: t = op; break;
20 case 4: _.label++; return { value: op[1], done: false };
21 case 5: _.label++; y = op[1]; op = [0]; continue;
22 case 7: op = _.ops.pop(); _.trys.pop(); continue;
23 default:
24 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
25 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
26 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
27 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
28 if (t[2]) _.ops.pop();
29 _.trys.pop(); continue;
30 }
31 op = body.call(thisArg, _);
32 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
33 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
34 }
35};
36import * as E from 'fp-ts/es6/Either';
37import { identity } from 'fp-ts/es6/function';
38import * as O from 'fp-ts/es6/Option';
39import { pipe, pipeable } from 'fp-ts/es6/pipeable';
40import { combineLatest, EMPTY, merge, of as rxOf, defer } from 'rxjs';
41import { map as rxMap, mergeMap } from 'rxjs/operators';
42/**
43 * @since 0.6.0
44 */
45export var URI = 'Observable';
46/**
47 * @since 0.6.0
48 */
49export function getMonoid() {
50 return {
51 concat: function (x, y) { return merge(x, y); },
52 empty: EMPTY
53 };
54}
55/**
56 * @since 0.6.6
57 */
58export function of(a) {
59 return rxOf(a);
60}
61/**
62 * @since 0.6.5
63 */
64export function fromOption(o) {
65 return O.isNone(o) ? EMPTY : of(o.value);
66}
67/**
68 * @since 0.6.5
69 */
70export function fromIO(io) {
71 var _this = this;
72 return defer(function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
73 return [2 /*return*/, io()];
74 }); }); });
75}
76/**
77 * @since 0.6.5
78 */
79export function fromTask(t) {
80 return defer(t);
81}
82/**
83 * @since 0.6.5
84 */
85export function toTask(o) {
86 return function () { return o.toPromise(); };
87}
88/**
89 * @since 0.6.0
90 */
91export var observable = {
92 URI: URI,
93 map: function (fa, f) { return fa.pipe(rxMap(f)); },
94 of: of,
95 ap: function (fab, fa) { return combineLatest([fab, fa]).pipe(rxMap(function (_a) {
96 var f = _a[0], a = _a[1];
97 return f(a);
98 })); },
99 chain: function (fa, f) { return fa.pipe(mergeMap(f)); },
100 zero: function () { return EMPTY; },
101 alt: function (fx, f) { return merge(fx, f()); },
102 compact: function (fa) { return observable.filterMap(fa, identity); },
103 separate: function (fa) { return observable.partitionMap(fa, identity); },
104 partitionMap: function (fa, f) { return ({
105 left: observable.filterMap(fa, function (a) {
106 return pipe(f(a), E.fold(O.some, function () { return O.none; }));
107 }),
108 right: observable.filterMap(fa, function (a) {
109 return pipe(f(a), E.fold(function () { return O.none; }, O.some));
110 })
111 }); },
112 partition: function (fa, p) { return observable.partitionMap(fa, E.fromPredicate(p, identity)); },
113 filterMap: function (fa, f) {
114 return fa.pipe(mergeMap(function (a) {
115 return pipe(f(a),
116 // tslint:disable-next-line: deprecation
117 O.fold(function () { return EMPTY; }, of));
118 }));
119 },
120 filter: function (fa, p) { return observable.filterMap(fa, O.fromPredicate(p)); },
121 fromIO: fromIO,
122 fromTask: fromTask,
123 fromObservable: identity
124};
125var _a = pipeable(observable), alt = _a.alt, ap = _a.ap, apFirst = _a.apFirst, apSecond = _a.apSecond, chain = _a.chain, chainFirst = _a.chainFirst, compact = _a.compact, filter = _a.filter, filterMap = _a.filterMap, flatten = _a.flatten, map = _a.map, partition = _a.partition, partitionMap = _a.partitionMap, separate = _a.separate;
126export {
127/**
128 * @since 0.6.0
129 */
130alt,
131/**
132 * @since 0.6.0
133 */
134ap,
135/**
136 * @since 0.6.0
137 */
138apFirst,
139/**
140 * @since 0.6.0
141 */
142apSecond,
143/**
144 * @since 0.6.0
145 */
146chain,
147/**
148 * @since 0.6.0
149 */
150chainFirst,
151/**
152 * @since 0.6.0
153 */
154compact,
155/**
156 * @since 0.6.0
157 */
158filter,
159/**
160 * @since 0.6.0
161 */
162filterMap,
163/**
164 * @since 0.6.0
165 */
166flatten,
167/**
168 * @since 0.6.0
169 */
170map,
171/**
172 * @since 0.6.0
173 */
174partition,
175/**
176 * @since 0.6.0
177 */
178partitionMap,
179/**
180 * @since 0.6.0
181 */
182separate };