@equinor/echo-framework 0.7.4 → 0.7.7

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.
Files changed (78) hide show
  1. package/dist/__tests__/realTimeDataHooks.test.d.ts +1 -0
  2. package/dist/__tests__/realTimeDataUtils.test.d.ts +1 -0
  3. package/dist/_virtual/_tslib.js +14 -0
  4. package/dist/components/errorBoundary/errorBoundary.d.ts +1 -0
  5. package/dist/components/index.d.ts +1 -0
  6. package/dist/components/panel/corePanelLeft.d.ts +4 -1
  7. package/dist/components/panel/corePanelRight.d.ts +4 -1
  8. package/dist/components/realTimeData/RealTimePopoverButton.d.ts +18 -0
  9. package/dist/components/realTimeData/components/IMSDropdown/RealTimeIMSDropdown.d.ts +7 -0
  10. package/dist/components/realTimeData/components/IMSDropdown/index.d.ts +1 -0
  11. package/dist/components/realTimeData/components/connectorForIMSTag/RealTimeConnectorForIMSTag.d.ts +6 -0
  12. package/dist/components/realTimeData/components/connectorForIMSTag/index.d.ts +1 -0
  13. package/dist/components/realTimeData/components/contextButton/RealTimeContextButton.d.ts +6 -0
  14. package/dist/components/realTimeData/components/contextButton/index.d.ts +1 -0
  15. package/dist/components/realTimeData/components/contextPopover/Popover.d.ts +6 -0
  16. package/dist/components/realTimeData/components/contextPopover/index.d.ts +1 -0
  17. package/dist/components/realTimeData/components/index.d.ts +4 -0
  18. package/dist/components/realTimeData/hooks/index.d.ts +3 -0
  19. package/dist/components/realTimeData/hooks/useRealTimeHub.d.ts +13 -0
  20. package/dist/components/realTimeData/hooks/useSignalR.d.ts +9 -0
  21. package/dist/components/realTimeData/hooks/useSignalRListener.d.ts +4 -0
  22. package/dist/components/realTimeData/index.d.ts +1 -0
  23. package/dist/coreApplication/EchoBarComponent.d.ts +6 -0
  24. package/dist/coreApplication/EchoContent.d.ts +1 -0
  25. package/dist/coreApplication/index.d.ts +1 -0
  26. package/dist/hooks/index.d.ts +1 -0
  27. package/dist/hooks/useIsLandscape.d.ts +1 -0
  28. package/dist/index.d.ts +2 -1
  29. package/dist/node_modules/@microsoft/signalr/dist/esm/AbortController.js +54 -0
  30. package/dist/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +96 -0
  31. package/dist/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +47 -0
  32. package/dist/node_modules/@microsoft/signalr/dist/esm/Errors.js +287 -0
  33. package/dist/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +281 -0
  34. package/dist/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +86 -0
  35. package/dist/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +20 -0
  36. package/dist/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +82 -0
  37. package/dist/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +1167 -0
  38. package/dist/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +1342 -0
  39. package/dist/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +165 -0
  40. package/dist/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +33 -0
  41. package/dist/node_modules/@microsoft/signalr/dist/esm/ILogger.js +37 -0
  42. package/dist/node_modules/@microsoft/signalr/dist/esm/ITransport.js +37 -0
  43. package/dist/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +179 -0
  44. package/dist/node_modules/@microsoft/signalr/dist/esm/Loggers.js +35 -0
  45. package/dist/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +444 -0
  46. package/dist/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +235 -0
  47. package/dist/node_modules/@microsoft/signalr/dist/esm/Subject.js +99 -0
  48. package/dist/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +45 -0
  49. package/dist/node_modules/@microsoft/signalr/dist/esm/Utils.js +433 -0
  50. package/dist/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +263 -0
  51. package/dist/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +133 -0
  52. package/dist/services/api/api-realtimedata.d.ts +2 -0
  53. package/dist/src/components/containers/layout.module.css.js +4 -1
  54. package/dist/src/components/containers/layouts.js +38 -8
  55. package/dist/src/components/panel/corePanelLeft.js +5 -2
  56. package/dist/src/components/panel/corePanelLeft.module.css.js +1 -1
  57. package/dist/src/components/panel/corePanelRight.js +4 -2
  58. package/dist/src/components/panel/corePanelRight.module.css.js +1 -1
  59. package/dist/src/components/projectSelector/ProcosysProjectSelector.js +1 -1
  60. package/dist/src/components/realTimeData/RealTimePopoverButton.js +136 -0
  61. package/dist/src/components/realTimeData/components/IMSDropdown/RealTimeIMSDropdown.js +81 -0
  62. package/dist/src/components/realTimeData/components/IMSDropdown/RealTimeIMSDropdown.module.css.js +15 -0
  63. package/dist/src/components/realTimeData/components/connectorForIMSTag/IMSConnector.module.css.js +16 -0
  64. package/dist/src/components/realTimeData/components/connectorForIMSTag/RealTimeConnectorForIMSTag.js +110 -0
  65. package/dist/src/components/realTimeData/components/contextButton/RealTimeContextButton.js +75 -0
  66. package/dist/src/components/realTimeData/components/contextButton/RealTimeContextButton.module.css.js +15 -0
  67. package/dist/src/components/realTimeData/components/contextPopover/Popover.js +37 -0
  68. package/dist/src/components/realTimeData/components/contextPopover/Popover.module.css.js +15 -0
  69. package/dist/src/components/realTimeData/hooks/useRealTimeHub.js +122 -0
  70. package/dist/src/components/realTimeData/hooks/useSignalR.js +159 -0
  71. package/dist/src/components/realTimeData/hooks/useSignalRListener.js +22 -0
  72. package/dist/src/coreApplication/EchoBarComponent.js +112 -0
  73. package/dist/src/coreApplication/EchoContent.js +7 -2
  74. package/dist/src/hooks/useIsLandscape.js +52 -0
  75. package/dist/src/index.js +9 -0
  76. package/dist/src/services/api/api-realtimedata.js +42 -0
  77. package/dist/types/realtimedata.d.ts +18 -0
  78. package/package.json +26 -23
@@ -0,0 +1,444 @@
1
+ 'use strict';
2
+
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+
7
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+
9
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
+
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
+
17
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
18
+
19
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
+
21
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
22
+
23
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
24
+
25
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
+
27
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
28
+
29
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
30
+
31
+ Object.defineProperty(exports, '__esModule', {
32
+ value: true
33
+ });
34
+
35
+ var AbortController = require('./AbortController.js');
36
+
37
+ var Errors = require('./Errors.js');
38
+
39
+ var HeaderNames = require('./HeaderNames.js');
40
+
41
+ var ILogger = require('./ILogger.js');
42
+
43
+ var ITransport = require('./ITransport.js');
44
+
45
+ var Utils = require('./Utils.js'); // Licensed to the .NET Foundation under one or more agreements.
46
+ // Not exported from 'index', this type is internal.
47
+
48
+ /** @private */
49
+
50
+
51
+ var LongPollingTransport = /*#__PURE__*/function () {
52
+ function LongPollingTransport(httpClient, accessTokenFactory, logger, options) {
53
+ _classCallCheck(this, LongPollingTransport);
54
+
55
+ this._httpClient = httpClient;
56
+ this._accessTokenFactory = accessTokenFactory;
57
+ this._logger = logger;
58
+ this._pollAbort = new AbortController.AbortController();
59
+ this._options = options;
60
+ this._running = false;
61
+ this.onreceive = null;
62
+ this.onclose = null;
63
+ } // This is an internal type, not exported from 'index' so this is really just internal.
64
+
65
+
66
+ _createClass(LongPollingTransport, [{
67
+ key: "pollAborted",
68
+ get: function get() {
69
+ return this._pollAbort.aborted;
70
+ }
71
+ }, {
72
+ key: "connect",
73
+ value: function () {
74
+ var _connect = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url, transferFormat) {
75
+ var _Utils$getUserAgentHe, _Utils$getUserAgentHe2, name, value, headers, pollOptions, token, pollUrl, response;
76
+
77
+ return regeneratorRuntime.wrap(function _callee$(_context) {
78
+ while (1) {
79
+ switch (_context.prev = _context.next) {
80
+ case 0:
81
+ Utils.Arg.isRequired(url, "url");
82
+ Utils.Arg.isRequired(transferFormat, "transferFormat");
83
+ Utils.Arg.isIn(transferFormat, ITransport.TransferFormat, "transferFormat");
84
+ this._url = url;
85
+
86
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) Connecting."); // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)
87
+
88
+
89
+ if (!(transferFormat === ITransport.TransferFormat.Binary && typeof XMLHttpRequest !== "undefined" && typeof new XMLHttpRequest().responseType !== "string")) {
90
+ _context.next = 7;
91
+ break;
92
+ }
93
+
94
+ throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");
95
+
96
+ case 7:
97
+ _Utils$getUserAgentHe = Utils.getUserAgentHeader(), _Utils$getUserAgentHe2 = _slicedToArray(_Utils$getUserAgentHe, 2), name = _Utils$getUserAgentHe2[0], value = _Utils$getUserAgentHe2[1];
98
+ headers = _objectSpread(_defineProperty({}, name, value), this._options.headers);
99
+ pollOptions = {
100
+ abortSignal: this._pollAbort.signal,
101
+ headers: headers,
102
+ timeout: 100000,
103
+ withCredentials: this._options.withCredentials
104
+ };
105
+
106
+ if (transferFormat === ITransport.TransferFormat.Binary) {
107
+ pollOptions.responseType = "arraybuffer";
108
+ }
109
+
110
+ _context.next = 13;
111
+ return this._getAccessToken();
112
+
113
+ case 13:
114
+ token = _context.sent;
115
+
116
+ this._updateHeaderToken(pollOptions, token); // Make initial long polling request
117
+ // Server uses first long polling request to finish initializing connection and it returns without data
118
+
119
+
120
+ pollUrl = "".concat(url, "&_=").concat(Date.now());
121
+
122
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) polling: ".concat(pollUrl, "."));
123
+
124
+ _context.next = 19;
125
+ return this._httpClient.get(pollUrl, pollOptions);
126
+
127
+ case 19:
128
+ response = _context.sent;
129
+
130
+ if (response.statusCode !== 200) {
131
+ this._logger.log(ILogger.LogLevel.Error, "(LongPolling transport) Unexpected response code: ".concat(response.statusCode, ".")); // Mark running as false so that the poll immediately ends and runs the close logic
132
+
133
+
134
+ this._closeError = new Errors.HttpError(response.statusText || "", response.statusCode);
135
+ this._running = false;
136
+ } else {
137
+ this._running = true;
138
+ }
139
+
140
+ this._receiving = this._poll(this._url, pollOptions);
141
+
142
+ case 22:
143
+ case "end":
144
+ return _context.stop();
145
+ }
146
+ }
147
+ }, _callee, this);
148
+ }));
149
+
150
+ function connect(_x, _x2) {
151
+ return _connect.apply(this, arguments);
152
+ }
153
+
154
+ return connect;
155
+ }()
156
+ }, {
157
+ key: "_getAccessToken",
158
+ value: function () {
159
+ var _getAccessToken2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
160
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
161
+ while (1) {
162
+ switch (_context2.prev = _context2.next) {
163
+ case 0:
164
+ if (!this._accessTokenFactory) {
165
+ _context2.next = 4;
166
+ break;
167
+ }
168
+
169
+ _context2.next = 3;
170
+ return this._accessTokenFactory();
171
+
172
+ case 3:
173
+ return _context2.abrupt("return", _context2.sent);
174
+
175
+ case 4:
176
+ return _context2.abrupt("return", null);
177
+
178
+ case 5:
179
+ case "end":
180
+ return _context2.stop();
181
+ }
182
+ }
183
+ }, _callee2, this);
184
+ }));
185
+
186
+ function _getAccessToken() {
187
+ return _getAccessToken2.apply(this, arguments);
188
+ }
189
+
190
+ return _getAccessToken;
191
+ }()
192
+ }, {
193
+ key: "_updateHeaderToken",
194
+ value: function _updateHeaderToken(request, token) {
195
+ if (!request.headers) {
196
+ request.headers = {};
197
+ }
198
+
199
+ if (token) {
200
+ request.headers[HeaderNames.HeaderNames.Authorization] = "Bearer ".concat(token);
201
+ return;
202
+ }
203
+
204
+ if (request.headers[HeaderNames.HeaderNames.Authorization]) {
205
+ delete request.headers[HeaderNames.HeaderNames.Authorization];
206
+ }
207
+ }
208
+ }, {
209
+ key: "_poll",
210
+ value: function () {
211
+ var _poll2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(url, pollOptions) {
212
+ var token, pollUrl, response;
213
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
214
+ while (1) {
215
+ switch (_context3.prev = _context3.next) {
216
+ case 0:
217
+ _context3.prev = 0;
218
+
219
+ case 1:
220
+ if (!this._running) {
221
+ _context3.next = 20;
222
+ break;
223
+ }
224
+
225
+ _context3.next = 4;
226
+ return this._getAccessToken();
227
+
228
+ case 4:
229
+ token = _context3.sent;
230
+
231
+ this._updateHeaderToken(pollOptions, token);
232
+
233
+ _context3.prev = 6;
234
+ pollUrl = "".concat(url, "&_=").concat(Date.now());
235
+
236
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) polling: ".concat(pollUrl, "."));
237
+
238
+ _context3.next = 11;
239
+ return this._httpClient.get(pollUrl, pollOptions);
240
+
241
+ case 11:
242
+ response = _context3.sent;
243
+
244
+ if (response.statusCode === 204) {
245
+ this._logger.log(ILogger.LogLevel.Information, "(LongPolling transport) Poll terminated by server.");
246
+
247
+ this._running = false;
248
+ } else if (response.statusCode !== 200) {
249
+ this._logger.log(ILogger.LogLevel.Error, "(LongPolling transport) Unexpected response code: ".concat(response.statusCode, ".")); // Unexpected status code
250
+
251
+
252
+ this._closeError = new Errors.HttpError(response.statusText || "", response.statusCode);
253
+ this._running = false;
254
+ } else {
255
+ // Process the response
256
+ if (response.content) {
257
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) data received. ".concat(Utils.getDataDetail(response.content, this._options.logMessageContent), "."));
258
+
259
+ if (this.onreceive) {
260
+ this.onreceive(response.content);
261
+ }
262
+ } else {
263
+ // This is another way timeout manifest.
264
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) Poll timed out, reissuing.");
265
+ }
266
+ }
267
+
268
+ _context3.next = 18;
269
+ break;
270
+
271
+ case 15:
272
+ _context3.prev = 15;
273
+ _context3.t0 = _context3["catch"](6);
274
+
275
+ if (!this._running) {
276
+ // Log but disregard errors that occur after stopping
277
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) Poll errored after shutdown: ".concat(_context3.t0.message));
278
+ } else {
279
+ if (_context3.t0 instanceof Errors.TimeoutError) {
280
+ // Ignore timeouts and reissue the poll.
281
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) Poll timed out, reissuing.");
282
+ } else {
283
+ // Close the connection with the error as the result.
284
+ this._closeError = _context3.t0;
285
+ this._running = false;
286
+ }
287
+ }
288
+
289
+ case 18:
290
+ _context3.next = 1;
291
+ break;
292
+
293
+ case 20:
294
+ _context3.prev = 20;
295
+
296
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) Polling complete."); // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.
297
+ // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.
298
+
299
+
300
+ if (!this.pollAborted) {
301
+ this._raiseOnClose();
302
+ }
303
+
304
+ return _context3.finish(20);
305
+
306
+ case 24:
307
+ case "end":
308
+ return _context3.stop();
309
+ }
310
+ }
311
+ }, _callee3, this, [[0,, 20, 24], [6, 15]]);
312
+ }));
313
+
314
+ function _poll(_x3, _x4) {
315
+ return _poll2.apply(this, arguments);
316
+ }
317
+
318
+ return _poll;
319
+ }()
320
+ }, {
321
+ key: "send",
322
+ value: function () {
323
+ var _send = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(data) {
324
+ return regeneratorRuntime.wrap(function _callee4$(_context4) {
325
+ while (1) {
326
+ switch (_context4.prev = _context4.next) {
327
+ case 0:
328
+ if (this._running) {
329
+ _context4.next = 2;
330
+ break;
331
+ }
332
+
333
+ return _context4.abrupt("return", Promise.reject(new Error("Cannot send until the transport is connected")));
334
+
335
+ case 2:
336
+ return _context4.abrupt("return", Utils.sendMessage(this._logger, "LongPolling", this._httpClient, this._url, this._accessTokenFactory, data, this._options));
337
+
338
+ case 3:
339
+ case "end":
340
+ return _context4.stop();
341
+ }
342
+ }
343
+ }, _callee4, this);
344
+ }));
345
+
346
+ function send(_x5) {
347
+ return _send.apply(this, arguments);
348
+ }
349
+
350
+ return send;
351
+ }()
352
+ }, {
353
+ key: "stop",
354
+ value: function () {
355
+ var _stop = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {
356
+ var headers, _Utils$getUserAgentHe3, _Utils$getUserAgentHe4, name, value, deleteOptions, token;
357
+
358
+ return regeneratorRuntime.wrap(function _callee5$(_context5) {
359
+ while (1) {
360
+ switch (_context5.prev = _context5.next) {
361
+ case 0:
362
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) Stopping polling."); // Tell receiving loop to stop, abort any current request, and then wait for it to finish
363
+
364
+
365
+ this._running = false;
366
+
367
+ this._pollAbort.abort();
368
+
369
+ _context5.prev = 3;
370
+ _context5.next = 6;
371
+ return this._receiving;
372
+
373
+ case 6:
374
+ // Send DELETE to clean up long polling on the server
375
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) sending DELETE request to ".concat(this._url, "."));
376
+
377
+ headers = {};
378
+ _Utils$getUserAgentHe3 = Utils.getUserAgentHeader(), _Utils$getUserAgentHe4 = _slicedToArray(_Utils$getUserAgentHe3, 2), name = _Utils$getUserAgentHe4[0], value = _Utils$getUserAgentHe4[1];
379
+ headers[name] = value;
380
+ deleteOptions = {
381
+ headers: _objectSpread(_objectSpread({}, headers), this._options.headers),
382
+ timeout: this._options.timeout,
383
+ withCredentials: this._options.withCredentials
384
+ };
385
+ _context5.next = 13;
386
+ return this._getAccessToken();
387
+
388
+ case 13:
389
+ token = _context5.sent;
390
+
391
+ this._updateHeaderToken(deleteOptions, token);
392
+
393
+ _context5.next = 17;
394
+ return this._httpClient["delete"](this._url, deleteOptions);
395
+
396
+ case 17:
397
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) DELETE request sent.");
398
+
399
+ case 18:
400
+ _context5.prev = 18;
401
+
402
+ this._logger.log(ILogger.LogLevel.Trace, "(LongPolling transport) Stop finished."); // Raise close event here instead of in polling
403
+ // It needs to happen after the DELETE request is sent
404
+
405
+
406
+ this._raiseOnClose();
407
+
408
+ return _context5.finish(18);
409
+
410
+ case 22:
411
+ case "end":
412
+ return _context5.stop();
413
+ }
414
+ }
415
+ }, _callee5, this, [[3,, 18, 22]]);
416
+ }));
417
+
418
+ function stop() {
419
+ return _stop.apply(this, arguments);
420
+ }
421
+
422
+ return stop;
423
+ }()
424
+ }, {
425
+ key: "_raiseOnClose",
426
+ value: function _raiseOnClose() {
427
+ if (this.onclose) {
428
+ var logMessage = "(LongPolling transport) Firing onclose event.";
429
+
430
+ if (this._closeError) {
431
+ logMessage += " Error: " + this._closeError;
432
+ }
433
+
434
+ this._logger.log(ILogger.LogLevel.Trace, logMessage);
435
+
436
+ this.onclose(this._closeError);
437
+ }
438
+ }
439
+ }]);
440
+
441
+ return LongPollingTransport;
442
+ }();
443
+
444
+ exports.LongPollingTransport = LongPollingTransport;
@@ -0,0 +1,235 @@
1
+ 'use strict';
2
+
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+
7
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+
9
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
+
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
+
17
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
18
+
19
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
+
21
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
22
+
23
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
24
+
25
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
+
27
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
28
+
29
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
30
+
31
+ Object.defineProperty(exports, '__esModule', {
32
+ value: true
33
+ });
34
+
35
+ var ILogger = require('./ILogger.js');
36
+
37
+ var ITransport = require('./ITransport.js');
38
+
39
+ var Utils = require('./Utils.js'); // Licensed to the .NET Foundation under one or more agreements.
40
+
41
+ /** @private */
42
+
43
+
44
+ var ServerSentEventsTransport = /*#__PURE__*/function () {
45
+ function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, options) {
46
+ _classCallCheck(this, ServerSentEventsTransport);
47
+
48
+ this._httpClient = httpClient;
49
+ this._accessTokenFactory = accessTokenFactory;
50
+ this._logger = logger;
51
+ this._options = options;
52
+ this.onreceive = null;
53
+ this.onclose = null;
54
+ }
55
+
56
+ _createClass(ServerSentEventsTransport, [{
57
+ key: "connect",
58
+ value: function () {
59
+ var _connect = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url, transferFormat) {
60
+ var _this = this;
61
+
62
+ var token;
63
+ return regeneratorRuntime.wrap(function _callee$(_context) {
64
+ while (1) {
65
+ switch (_context.prev = _context.next) {
66
+ case 0:
67
+ Utils.Arg.isRequired(url, "url");
68
+ Utils.Arg.isRequired(transferFormat, "transferFormat");
69
+ Utils.Arg.isIn(transferFormat, ITransport.TransferFormat, "transferFormat");
70
+
71
+ this._logger.log(ILogger.LogLevel.Trace, "(SSE transport) Connecting."); // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send
72
+
73
+
74
+ this._url = url;
75
+
76
+ if (!this._accessTokenFactory) {
77
+ _context.next = 10;
78
+ break;
79
+ }
80
+
81
+ _context.next = 8;
82
+ return this._accessTokenFactory();
83
+
84
+ case 8:
85
+ token = _context.sent;
86
+
87
+ if (token) {
88
+ url += (url.indexOf("?") < 0 ? "?" : "&") + "access_token=".concat(encodeURIComponent(token));
89
+ }
90
+
91
+ case 10:
92
+ return _context.abrupt("return", new Promise(function (resolve, reject) {
93
+ var opened = false;
94
+
95
+ if (transferFormat !== ITransport.TransferFormat.Text) {
96
+ reject(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"));
97
+ return;
98
+ }
99
+
100
+ var eventSource;
101
+
102
+ if (Utils.Platform.isBrowser || Utils.Platform.isWebWorker) {
103
+ eventSource = new _this._options.EventSource(url, {
104
+ withCredentials: _this._options.withCredentials
105
+ });
106
+ } else {
107
+ // Non-browser passes cookies via the dictionary
108
+ var cookies = _this._httpClient.getCookieString(url);
109
+
110
+ var headers = {};
111
+ headers.Cookie = cookies;
112
+
113
+ var _Utils$getUserAgentHe = Utils.getUserAgentHeader(),
114
+ _Utils$getUserAgentHe2 = _slicedToArray(_Utils$getUserAgentHe, 2),
115
+ name = _Utils$getUserAgentHe2[0],
116
+ value = _Utils$getUserAgentHe2[1];
117
+
118
+ headers[name] = value;
119
+ eventSource = new _this._options.EventSource(url, {
120
+ withCredentials: _this._options.withCredentials,
121
+ headers: _objectSpread(_objectSpread({}, headers), _this._options.headers)
122
+ });
123
+ }
124
+
125
+ try {
126
+ eventSource.onmessage = function (e) {
127
+ if (_this.onreceive) {
128
+ try {
129
+ _this._logger.log(ILogger.LogLevel.Trace, "(SSE transport) data received. ".concat(Utils.getDataDetail(e.data, _this._options.logMessageContent), "."));
130
+
131
+ _this.onreceive(e.data);
132
+ } catch (error) {
133
+ _this._close(error);
134
+
135
+ return;
136
+ }
137
+ }
138
+ }; // @ts-ignore: not using event on purpose
139
+
140
+
141
+ // @ts-ignore: not using event on purpose
142
+ eventSource.onerror = function (e) {
143
+ // EventSource doesn't give any useful information about server side closes.
144
+ if (opened) {
145
+ _this._close();
146
+ } else {
147
+ reject(new Error("EventSource failed to connect. The connection could not be found on the server," + " either the connection ID is not present on the server, or a proxy is refusing/buffering the connection." + " If you have multiple servers check that sticky sessions are enabled."));
148
+ }
149
+ };
150
+
151
+ eventSource.onopen = function () {
152
+ _this._logger.log(ILogger.LogLevel.Information, "SSE connected to ".concat(_this._url));
153
+
154
+ _this._eventSource = eventSource;
155
+ opened = true;
156
+ resolve();
157
+ };
158
+ } catch (e) {
159
+ reject(e);
160
+ return;
161
+ }
162
+ }));
163
+
164
+ case 11:
165
+ case "end":
166
+ return _context.stop();
167
+ }
168
+ }
169
+ }, _callee, this);
170
+ }));
171
+
172
+ function connect(_x, _x2) {
173
+ return _connect.apply(this, arguments);
174
+ }
175
+
176
+ return connect;
177
+ }()
178
+ }, {
179
+ key: "send",
180
+ value: function () {
181
+ var _send = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(data) {
182
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
183
+ while (1) {
184
+ switch (_context2.prev = _context2.next) {
185
+ case 0:
186
+ if (this._eventSource) {
187
+ _context2.next = 2;
188
+ break;
189
+ }
190
+
191
+ return _context2.abrupt("return", Promise.reject(new Error("Cannot send until the transport is connected")));
192
+
193
+ case 2:
194
+ return _context2.abrupt("return", Utils.sendMessage(this._logger, "SSE", this._httpClient, this._url, this._accessTokenFactory, data, this._options));
195
+
196
+ case 3:
197
+ case "end":
198
+ return _context2.stop();
199
+ }
200
+ }
201
+ }, _callee2, this);
202
+ }));
203
+
204
+ function send(_x3) {
205
+ return _send.apply(this, arguments);
206
+ }
207
+
208
+ return send;
209
+ }()
210
+ }, {
211
+ key: "stop",
212
+ value: function stop() {
213
+ this._close();
214
+
215
+ return Promise.resolve();
216
+ }
217
+ }, {
218
+ key: "_close",
219
+ value: function _close(e) {
220
+ if (this._eventSource) {
221
+ this._eventSource.close();
222
+
223
+ this._eventSource = undefined;
224
+
225
+ if (this.onclose) {
226
+ this.onclose(e);
227
+ }
228
+ }
229
+ }
230
+ }]);
231
+
232
+ return ServerSentEventsTransport;
233
+ }();
234
+
235
+ exports.ServerSentEventsTransport = ServerSentEventsTransport;