1 | 'use strict';
|
2 |
|
3 | var _from = require('rxjs/observable/from');
|
4 |
|
5 | var _catch2 = require('rxjs/operator/catch');
|
6 |
|
7 | var _concatMap = require('rxjs/operator/concatMap');
|
8 |
|
9 | var _filter = require('rxjs/operator/filter');
|
10 |
|
11 | var _require = require('rxjs/Observable');
|
12 |
|
13 | var Observable = _require.Observable;
|
14 |
|
15 | var _require2 = require('./ast.js');
|
16 |
|
17 | var Collection = _require2.Collection;
|
18 |
|
19 | var HorizonSocket = require('./socket.js');
|
20 |
|
21 | var _require3 = require('./logging.js');
|
22 |
|
23 | var log = _require3.log;
|
24 | var logError = _require3.logError;
|
25 | var enableLogging = _require3.enableLogging;
|
26 |
|
27 | var _require4 = require('./auth');
|
28 |
|
29 | var authEndpoint = _require4.authEndpoint;
|
30 | var TokenStorage = _require4.TokenStorage;
|
31 | var clearAuthTokens = _require4.clearAuthTokens;
|
32 |
|
33 |
|
34 | var defaultHost = typeof window !== 'undefined' && window.location && '' + window.location.host || 'localhost:8181';
|
35 | var defaultSecure = typeof window !== 'undefined' && window.location && window.location.protocol === 'https:' || false;
|
36 |
|
37 | function Horizon() {
|
38 | var _context;
|
39 |
|
40 | var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
41 |
|
42 | var _ref$host = _ref.host;
|
43 | var host = _ref$host === undefined ? defaultHost : _ref$host;
|
44 | var _ref$secure = _ref.secure;
|
45 | var secure = _ref$secure === undefined ? defaultSecure : _ref$secure;
|
46 | var _ref$path = _ref.path;
|
47 | var path = _ref$path === undefined ? 'horizon' : _ref$path;
|
48 | var _ref$lazyWrites = _ref.lazyWrites;
|
49 | var lazyWrites = _ref$lazyWrites === undefined ? false : _ref$lazyWrites;
|
50 | var _ref$authType = _ref.authType;
|
51 | var authType = _ref$authType === undefined ? 'unauthenticated' : _ref$authType;
|
52 |
|
53 |
|
54 |
|
55 | var tokenStorage = new TokenStorage(authType);
|
56 | tokenStorage.setAuthFromQueryParams();
|
57 |
|
58 | var socket = new HorizonSocket(host, secure, path, tokenStorage.handshake.bind(tokenStorage));
|
59 |
|
60 |
|
61 |
|
62 | socket.handshake.subscribe(function (handshake) {
|
63 | return tokenStorage.set(handshake.token);
|
64 | });
|
65 |
|
66 |
|
67 |
|
68 |
|
69 | function horizon(name) {
|
70 | return new Collection(sendRequest, name, lazyWrites);
|
71 | }
|
72 |
|
73 | horizon.dispose = function () {
|
74 | socket.complete();
|
75 | };
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 | horizon.connect = function () {
|
82 | var onError = arguments.length <= 0 || arguments[0] === undefined ? function (err) {
|
83 | console.error('Received an error: ' + err);
|
84 | } : arguments[0];
|
85 |
|
86 | socket.subscribe(function () {}, onError);
|
87 | };
|
88 |
|
89 |
|
90 |
|
91 | horizon.status = subscribeOrObservable(socket.status);
|
92 |
|
93 |
|
94 | horizon.onDisconnected = subscribeOrObservable((_context = socket.status, _filter.filter).call(_context, function (x) {
|
95 | return x.type === 'disconnected';
|
96 | }));
|
97 |
|
98 |
|
99 | horizon.onConnected = subscribeOrObservable((_context = socket.status, _filter.filter).call(_context, function (x) {
|
100 | return x.type === 'connected';
|
101 | }));
|
102 |
|
103 |
|
104 | horizon.onReady = subscribeOrObservable((_context = socket.status, _filter.filter).call(_context, function (x) {
|
105 | return x.type === 'ready';
|
106 | }));
|
107 |
|
108 |
|
109 | horizon.onSocketError = subscribeOrObservable((_context = socket.status, _filter.filter).call(_context, function (x) {
|
110 | return x.type === 'error';
|
111 | }));
|
112 |
|
113 | horizon._authMethods = null;
|
114 | horizon._horizonPath = path;
|
115 | horizon.authEndpoint = authEndpoint;
|
116 | horizon.hasAuthToken = tokenStorage.hasAuthToken.bind(tokenStorage);
|
117 |
|
118 | return horizon;
|
119 |
|
120 |
|
121 |
|
122 | function sendRequest(type, options) {
|
123 | var _context2;
|
124 |
|
125 |
|
126 | var normalizedType = type === 'removeAll' ? 'remove' : type;
|
127 | return (_context2 = (_context2 = socket.makeRequest({ type: normalizedType, options: options })
|
128 | , _concatMap.concatMap).call(_context2, function (resp) {
|
129 |
|
130 | if (resp.data) {
|
131 | return _from.from.call(Observable, resp.data);
|
132 | } else {
|
133 |
|
134 | return _from.from.call(Observable, [{ state: resp.state, type: resp.type }]);
|
135 | }
|
136 | }), _catch2._catch).call(_context2, function (e) {
|
137 | return Observable.create(function (observer) {
|
138 | observer.error(e);
|
139 | });
|
140 | });
|
141 | }
|
142 | }
|
143 |
|
144 | function subscribeOrObservable(observable) {
|
145 | return function () {
|
146 | if (arguments.length > 0) {
|
147 | return observable.subscribe.apply(observable, arguments);
|
148 | } else {
|
149 | return observable;
|
150 | }
|
151 | };
|
152 | }
|
153 |
|
154 | Horizon.log = log;
|
155 | Horizon.logError = logError;
|
156 | Horizon.enableLogging = enableLogging;
|
157 | Horizon.Socket = HorizonSocket;
|
158 | Horizon.clearAuthTokens = clearAuthTokens;
|
159 |
|
160 | module.exports = Horizon;
|
161 |
|
\ | No newline at end of file |