zmdms-utils 0.0.80 → 0.0.81

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 (165) hide show
  1. package/declarations.d.ts +6 -0
  2. package/dist/es/_virtual/FastBufferList.js +7 -0
  3. package/dist/es/_virtual/_commonjs-dynamic-modules.js +5 -0
  4. package/dist/es/_virtual/browser.js +7 -0
  5. package/dist/es/_virtual/browser2.js +7 -0
  6. package/dist/es/_virtual/debug.js +7 -0
  7. package/dist/es/_virtual/event.js +7 -0
  8. package/dist/es/_virtual/http-parser.js +3 -0
  9. package/dist/es/_virtual/iframe.js +7 -0
  10. package/dist/es/_virtual/index.js +7 -0
  11. package/dist/es/_virtual/index2.js +7 -0
  12. package/dist/es/_virtual/index3.js +7 -0
  13. package/dist/es/_virtual/index4.js +7 -0
  14. package/dist/es/_virtual/index5.js +7 -0
  15. package/dist/es/_virtual/index6.js +7 -0
  16. package/dist/es/_virtual/index7.js +3 -0
  17. package/dist/es/_virtual/index8.js +7 -0
  18. package/dist/es/_virtual/index9.js +7 -0
  19. package/dist/es/_virtual/inherits.js +7 -0
  20. package/dist/es/_virtual/inherits_browser.js +7 -0
  21. package/dist/es/_virtual/json3.js +7 -0
  22. package/dist/es/_virtual/node.js +7 -0
  23. package/dist/es/_virtual/node2.js +7 -0
  24. package/dist/es/_virtual/stomp-node.js +3 -0
  25. package/dist/es/_virtual/stomp.js +3 -0
  26. package/dist/es/_virtual/streams.js +3 -0
  27. package/dist/es/_virtual/utils.js +3 -0
  28. package/dist/es/constants.d.ts +5 -1
  29. package/dist/es/constants.js +5 -1
  30. package/dist/es/node_modules/bufferutil/fallback.js +43 -0
  31. package/dist/es/node_modules/bufferutil/index.js +21 -0
  32. package/dist/es/node_modules/debug/src/browser.js +192 -0
  33. package/dist/es/node_modules/debug/src/common.js +259 -0
  34. package/dist/es/node_modules/debug/src/index.js +25 -0
  35. package/dist/es/node_modules/debug/src/node.js +192 -0
  36. package/dist/es/node_modules/eventsource/lib/eventsource.js +493 -0
  37. package/dist/es/node_modules/faye-websocket/lib/faye/eventsource.js +150 -0
  38. package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api/event.js +31 -0
  39. package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api/event_target.js +41 -0
  40. package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api.js +205 -0
  41. package/dist/es/node_modules/faye-websocket/lib/faye/websocket/client.js +107 -0
  42. package/dist/es/node_modules/faye-websocket/lib/faye/websocket.js +47 -0
  43. package/dist/es/node_modules/has-flag/index.js +17 -0
  44. package/dist/es/node_modules/http-parser-js/http-parser.js +471 -0
  45. package/dist/es/node_modules/inherits/inherits.js +14 -0
  46. package/dist/es/node_modules/inherits/inherits_browser.js +38 -0
  47. package/dist/es/node_modules/is-typedarray/index.js +51 -0
  48. package/dist/es/node_modules/json3/lib/json3.js +937 -0
  49. package/dist/es/node_modules/ms/index.js +172 -0
  50. package/dist/es/node_modules/node-gyp-build/index.js +21 -0
  51. package/dist/es/node_modules/node-gyp-build/node-gyp-build.js +222 -0
  52. package/dist/es/node_modules/querystringify/index.js +120 -0
  53. package/dist/es/node_modules/requires-port/index.js +38 -0
  54. package/dist/es/node_modules/safe-buffer/index.js +71 -0
  55. package/dist/es/node_modules/supports-color/index.js +143 -0
  56. package/dist/es/node_modules/typedarray-to-buffer/index.js +37 -0
  57. package/dist/es/node_modules/url-parse/index.js +594 -0
  58. package/dist/es/node_modules/utf-8-validate/fallback.js +71 -0
  59. package/dist/es/node_modules/utf-8-validate/index.js +21 -0
  60. package/dist/es/node_modules/websocket/index.js +15 -0
  61. package/dist/es/node_modules/websocket/lib/Deprecation.js +42 -0
  62. package/dist/es/node_modules/websocket/lib/W3CWebSocket.js +268 -0
  63. package/dist/es/node_modules/websocket/lib/WebSocketClient.js +380 -0
  64. package/dist/es/node_modules/websocket/lib/WebSocketConnection.js +914 -0
  65. package/dist/es/node_modules/websocket/lib/WebSocketFrame.js +293 -0
  66. package/dist/es/node_modules/websocket/lib/WebSocketRequest.js +543 -0
  67. package/dist/es/node_modules/websocket/lib/WebSocketRouter.js +172 -0
  68. package/dist/es/node_modules/websocket/lib/WebSocketRouterRequest.js +67 -0
  69. package/dist/es/node_modules/websocket/lib/WebSocketServer.js +272 -0
  70. package/dist/es/node_modules/websocket/lib/utils.js +80 -0
  71. package/dist/es/node_modules/websocket/lib/version.js +13 -0
  72. package/dist/es/node_modules/websocket/lib/websocket.js +31 -0
  73. package/dist/es/node_modules/websocket/node_modules/debug/src/browser.js +199 -0
  74. package/dist/es/node_modules/websocket/node_modules/debug/src/debug.js +215 -0
  75. package/dist/es/node_modules/websocket/node_modules/debug/src/index.js +25 -0
  76. package/dist/es/node_modules/websocket/node_modules/debug/src/node.js +266 -0
  77. package/dist/es/node_modules/websocket/node_modules/ms/index.js +162 -0
  78. package/dist/es/node_modules/websocket/package.json.js +77 -0
  79. package/dist/es/node_modules/websocket/vendor/FastBufferList.js +205 -0
  80. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/base.js +202 -0
  81. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/client.js +152 -0
  82. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/draft75.js +128 -0
  83. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/draft76.js +124 -0
  84. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/headers.js +44 -0
  85. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi/frame.js +21 -0
  86. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi/message.js +37 -0
  87. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi.js +492 -0
  88. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/proxy.js +108 -0
  89. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/server.js +119 -0
  90. package/dist/es/node_modules/websocket-driver/lib/websocket/driver/stream_reader.js +72 -0
  91. package/dist/es/node_modules/websocket-driver/lib/websocket/driver.js +47 -0
  92. package/dist/es/node_modules/websocket-driver/lib/websocket/http_parser.js +140 -0
  93. package/dist/es/node_modules/websocket-driver/lib/websocket/streams.js +150 -0
  94. package/dist/es/node_modules/websocket-extensions/lib/parser.js +103 -0
  95. package/dist/es/node_modules/websocket-extensions/lib/pipeline/cell.js +56 -0
  96. package/dist/es/node_modules/websocket-extensions/lib/pipeline/functor.js +74 -0
  97. package/dist/es/node_modules/websocket-extensions/lib/pipeline/index.js +50 -0
  98. package/dist/es/node_modules/websocket-extensions/lib/pipeline/pledge.js +39 -0
  99. package/dist/es/node_modules/websocket-extensions/lib/pipeline/ring_buffer.js +66 -0
  100. package/dist/es/node_modules/websocket-extensions/lib/websocket_extensions.js +165 -0
  101. package/dist/es/node_modules/yaeti/index.js +17 -0
  102. package/dist/es/node_modules/yaeti/lib/Event.js +24 -0
  103. package/dist/es/node_modules/yaeti/lib/EventTarget.js +130 -0
  104. package/dist/es/node_modules/zt-sockjs-client/lib/entry.js +14 -0
  105. package/dist/es/node_modules/zt-sockjs-client/lib/event/close.js +21 -0
  106. package/dist/es/node_modules/zt-sockjs-client/lib/event/event.js +22 -0
  107. package/dist/es/node_modules/zt-sockjs-client/lib/event/eventtarget.js +62 -0
  108. package/dist/es/node_modules/zt-sockjs-client/lib/event/trans-message.js +19 -0
  109. package/dist/es/node_modules/zt-sockjs-client/lib/facade.js +40 -0
  110. package/dist/es/node_modules/zt-sockjs-client/lib/iframe-bootstrap.js +122 -0
  111. package/dist/es/node_modules/zt-sockjs-client/lib/info-ajax.js +57 -0
  112. package/dist/es/node_modules/zt-sockjs-client/lib/info-iframe-receiver.js +50 -0
  113. package/dist/es/node_modules/zt-sockjs-client/lib/info-iframe.js +81 -0
  114. package/dist/es/node_modules/zt-sockjs-client/lib/info-receiver.js +101 -0
  115. package/dist/es/node_modules/zt-sockjs-client/lib/location.js +12 -0
  116. package/dist/es/node_modules/zt-sockjs-client/lib/main.js +413 -0
  117. package/dist/es/node_modules/zt-sockjs-client/lib/shims.js +449 -0
  118. package/dist/es/node_modules/zt-sockjs-client/lib/transport/driver/websocket.js +5 -0
  119. package/dist/es/node_modules/zt-sockjs-client/lib/transport/driver/xhr.js +80 -0
  120. package/dist/es/node_modules/zt-sockjs-client/lib/transport/eventsource.js +34 -0
  121. package/dist/es/node_modules/zt-sockjs-client/lib/transport/htmlfile.js +31 -0
  122. package/dist/es/node_modules/zt-sockjs-client/lib/transport/iframe.js +154 -0
  123. package/dist/es/node_modules/zt-sockjs-client/lib/transport/jsonp-polling.js +41 -0
  124. package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/ajax-based.js +55 -0
  125. package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/buffered-sender.js +92 -0
  126. package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/iframe-wrap.js +39 -0
  127. package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/polling.js +65 -0
  128. package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/sender-receiver.js +52 -0
  129. package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/eventsource.js +69 -0
  130. package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/htmlfile.js +96 -0
  131. package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/jsonp.js +193 -0
  132. package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/xhr.js +75 -0
  133. package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/jsonp.js +104 -0
  134. package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xdr.js +113 -0
  135. package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-cors.js +19 -0
  136. package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-fake.js +28 -0
  137. package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-local.js +21 -0
  138. package/dist/es/node_modules/zt-sockjs-client/lib/transport/websocket.js +108 -0
  139. package/dist/es/node_modules/zt-sockjs-client/lib/transport/xdr-polling.js +30 -0
  140. package/dist/es/node_modules/zt-sockjs-client/lib/transport/xdr-streaming.js +38 -0
  141. package/dist/es/node_modules/zt-sockjs-client/lib/transport/xhr-polling.js +40 -0
  142. package/dist/es/node_modules/zt-sockjs-client/lib/transport/xhr-streaming.js +50 -0
  143. package/dist/es/node_modules/zt-sockjs-client/lib/transport-list.js +28 -0
  144. package/dist/es/node_modules/zt-sockjs-client/lib/utils/browser.js +29 -0
  145. package/dist/es/node_modules/zt-sockjs-client/lib/utils/escape.js +53 -0
  146. package/dist/es/node_modules/zt-sockjs-client/lib/utils/event.js +78 -0
  147. package/dist/es/node_modules/zt-sockjs-client/lib/utils/iframe.js +205 -0
  148. package/dist/es/node_modules/zt-sockjs-client/lib/utils/log.js +20 -0
  149. package/dist/es/node_modules/zt-sockjs-client/lib/utils/object.js +24 -0
  150. package/dist/es/node_modules/zt-sockjs-client/lib/utils/random.js +30 -0
  151. package/dist/es/node_modules/zt-sockjs-client/lib/utils/transport.js +52 -0
  152. package/dist/es/node_modules/zt-sockjs-client/lib/utils/url.js +54 -0
  153. package/dist/es/node_modules/zt-sockjs-client/lib/version.js +11 -0
  154. package/dist/es/node_modules/zt-stompjs/index.js +23 -0
  155. package/dist/es/node_modules/zt-stompjs/lib/stomp-node.js +117 -0
  156. package/dist/es/node_modules/zt-stompjs/lib/stomp.js +536 -0
  157. package/dist/es/stompClient.d.ts +55 -0
  158. package/dist/es/stompClient.js +379 -0
  159. package/dist/index.d.ts +2 -1
  160. package/dist/index.js +2 -1
  161. package/package.json +6 -2
  162. package/src/constants.ts +5 -0
  163. package/src/index.ts +4 -0
  164. package/src/stompClient.ts +449 -0
  165. package/tsconfig.json +1 -1
@@ -0,0 +1,493 @@
1
+ import require$$2 from 'url';
2
+ import require$$1 from 'events';
3
+ import require$$4 from 'https';
4
+ import require$$3 from 'http';
5
+ import require$$1$1 from 'util';
6
+
7
+ var parse = require$$2.parse;
8
+ var events = require$$1;
9
+ var https = require$$4;
10
+ var http = require$$3;
11
+ var util = require$$1$1;
12
+
13
+ var httpsOptions = [
14
+ 'pfx', 'key', 'passphrase', 'cert', 'ca', 'ciphers',
15
+ 'rejectUnauthorized', 'secureProtocol', 'servername', 'checkServerIdentity'
16
+ ];
17
+
18
+ var bom = [239, 187, 191];
19
+ var colon = 58;
20
+ var space = 32;
21
+ var lineFeed = 10;
22
+ var carriageReturn = 13;
23
+
24
+ function hasBom (buf) {
25
+ return bom.every(function (charCode, index) {
26
+ return buf[index] === charCode
27
+ })
28
+ }
29
+
30
+ /**
31
+ * Creates a new EventSource object
32
+ *
33
+ * @param {String} url the URL to which to connect
34
+ * @param {Object} [eventSourceInitDict] extra init params. See README for details.
35
+ * @api public
36
+ **/
37
+ function EventSource (url, eventSourceInitDict) {
38
+ var readyState = EventSource.CONNECTING;
39
+ var headers = eventSourceInitDict && eventSourceInitDict.headers;
40
+ var hasNewOrigin = false;
41
+ Object.defineProperty(this, 'readyState', {
42
+ get: function () {
43
+ return readyState
44
+ }
45
+ });
46
+
47
+ Object.defineProperty(this, 'url', {
48
+ get: function () {
49
+ return url
50
+ }
51
+ });
52
+
53
+ var self = this;
54
+ self.reconnectInterval = 1000;
55
+ self.connectionInProgress = false;
56
+
57
+ function onConnectionClosed (message) {
58
+ if (readyState === EventSource.CLOSED) return
59
+ readyState = EventSource.CONNECTING;
60
+ _emit('error', new Event('error', {message: message}));
61
+
62
+ // The url may have been changed by a temporary redirect. If that's the case,
63
+ // revert it now, and flag that we are no longer pointing to a new origin
64
+ if (reconnectUrl) {
65
+ url = reconnectUrl;
66
+ reconnectUrl = null;
67
+ hasNewOrigin = false;
68
+ }
69
+ setTimeout(function () {
70
+ if (readyState !== EventSource.CONNECTING || self.connectionInProgress) {
71
+ return
72
+ }
73
+ self.connectionInProgress = true;
74
+ connect();
75
+ }, self.reconnectInterval);
76
+ }
77
+
78
+ var req;
79
+ var lastEventId = '';
80
+ if (headers && headers['Last-Event-ID']) {
81
+ lastEventId = headers['Last-Event-ID'];
82
+ delete headers['Last-Event-ID'];
83
+ }
84
+
85
+ var discardTrailingNewline = false;
86
+ var data = '';
87
+ var eventName = '';
88
+
89
+ var reconnectUrl = null;
90
+
91
+ function connect () {
92
+ var options = parse(url);
93
+ var isSecure = options.protocol === 'https:';
94
+ options.headers = { 'Cache-Control': 'no-cache', 'Accept': 'text/event-stream' };
95
+ if (lastEventId) options.headers['Last-Event-ID'] = lastEventId;
96
+ if (headers) {
97
+ var reqHeaders = hasNewOrigin ? removeUnsafeHeaders(headers) : headers;
98
+ for (var i in reqHeaders) {
99
+ var header = reqHeaders[i];
100
+ if (header) {
101
+ options.headers[i] = header;
102
+ }
103
+ }
104
+ }
105
+
106
+ // Legacy: this should be specified as `eventSourceInitDict.https.rejectUnauthorized`,
107
+ // but for now exists as a backwards-compatibility layer
108
+ options.rejectUnauthorized = !(eventSourceInitDict && !eventSourceInitDict.rejectUnauthorized);
109
+
110
+ if (eventSourceInitDict && eventSourceInitDict.createConnection !== undefined) {
111
+ options.createConnection = eventSourceInitDict.createConnection;
112
+ }
113
+
114
+ // If specify http proxy, make the request to sent to the proxy server,
115
+ // and include the original url in path and Host headers
116
+ var useProxy = eventSourceInitDict && eventSourceInitDict.proxy;
117
+ if (useProxy) {
118
+ var proxy = parse(eventSourceInitDict.proxy);
119
+ isSecure = proxy.protocol === 'https:';
120
+
121
+ options.protocol = isSecure ? 'https:' : 'http:';
122
+ options.path = url;
123
+ options.headers.Host = options.host;
124
+ options.hostname = proxy.hostname;
125
+ options.host = proxy.host;
126
+ options.port = proxy.port;
127
+ }
128
+
129
+ // If https options are specified, merge them into the request options
130
+ if (eventSourceInitDict && eventSourceInitDict.https) {
131
+ for (var optName in eventSourceInitDict.https) {
132
+ if (httpsOptions.indexOf(optName) === -1) {
133
+ continue
134
+ }
135
+
136
+ var option = eventSourceInitDict.https[optName];
137
+ if (option !== undefined) {
138
+ options[optName] = option;
139
+ }
140
+ }
141
+ }
142
+
143
+ // Pass this on to the XHR
144
+ if (eventSourceInitDict && eventSourceInitDict.withCredentials !== undefined) {
145
+ options.withCredentials = eventSourceInitDict.withCredentials;
146
+ }
147
+
148
+ req = (isSecure ? https : http).request(options, function (res) {
149
+ self.connectionInProgress = false;
150
+ // Handle HTTP errors
151
+ if (res.statusCode === 500 || res.statusCode === 502 || res.statusCode === 503 || res.statusCode === 504) {
152
+ _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}));
153
+ onConnectionClosed();
154
+ return
155
+ }
156
+
157
+ // Handle HTTP redirects
158
+ if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307) {
159
+ var location = res.headers.location;
160
+ if (!location) {
161
+ // Server sent redirect response without Location header.
162
+ _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}));
163
+ return
164
+ }
165
+ var prevOrigin = getOrigin(url);
166
+ var nextOrigin = getOrigin(location);
167
+ hasNewOrigin = prevOrigin !== nextOrigin;
168
+ if (res.statusCode === 307) reconnectUrl = url;
169
+ url = location;
170
+ process.nextTick(connect);
171
+ return
172
+ }
173
+
174
+ if (res.statusCode !== 200) {
175
+ _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}));
176
+ return self.close()
177
+ }
178
+
179
+ readyState = EventSource.OPEN;
180
+ res.on('close', function () {
181
+ res.removeAllListeners('close');
182
+ res.removeAllListeners('end');
183
+ onConnectionClosed();
184
+ });
185
+
186
+ res.on('end', function () {
187
+ res.removeAllListeners('close');
188
+ res.removeAllListeners('end');
189
+ onConnectionClosed();
190
+ });
191
+ _emit('open', new Event('open'));
192
+
193
+ // text/event-stream parser adapted from webkit's
194
+ // Source/WebCore/page/EventSource.cpp
195
+ var isFirst = true;
196
+ var buf;
197
+ var startingPos = 0;
198
+ var startingFieldLength = -1;
199
+ res.on('data', function (chunk) {
200
+ buf = buf ? Buffer.concat([buf, chunk]) : chunk;
201
+ if (isFirst && hasBom(buf)) {
202
+ buf = buf.slice(bom.length);
203
+ }
204
+
205
+ isFirst = false;
206
+ var pos = 0;
207
+ var length = buf.length;
208
+
209
+ while (pos < length) {
210
+ if (discardTrailingNewline) {
211
+ if (buf[pos] === lineFeed) {
212
+ ++pos;
213
+ }
214
+ discardTrailingNewline = false;
215
+ }
216
+
217
+ var lineLength = -1;
218
+ var fieldLength = startingFieldLength;
219
+ var c;
220
+
221
+ for (var i = startingPos; lineLength < 0 && i < length; ++i) {
222
+ c = buf[i];
223
+ if (c === colon) {
224
+ if (fieldLength < 0) {
225
+ fieldLength = i - pos;
226
+ }
227
+ } else if (c === carriageReturn) {
228
+ discardTrailingNewline = true;
229
+ lineLength = i - pos;
230
+ } else if (c === lineFeed) {
231
+ lineLength = i - pos;
232
+ }
233
+ }
234
+
235
+ if (lineLength < 0) {
236
+ startingPos = length - pos;
237
+ startingFieldLength = fieldLength;
238
+ break
239
+ } else {
240
+ startingPos = 0;
241
+ startingFieldLength = -1;
242
+ }
243
+
244
+ parseEventStreamLine(buf, pos, fieldLength, lineLength);
245
+
246
+ pos += lineLength + 1;
247
+ }
248
+
249
+ if (pos === length) {
250
+ buf = void 0;
251
+ } else if (pos > 0) {
252
+ buf = buf.slice(pos);
253
+ }
254
+ });
255
+ });
256
+
257
+ req.on('error', function (err) {
258
+ self.connectionInProgress = false;
259
+ onConnectionClosed(err.message);
260
+ });
261
+
262
+ if (req.setNoDelay) req.setNoDelay(true);
263
+ req.end();
264
+ }
265
+
266
+ connect();
267
+
268
+ function _emit () {
269
+ if (self.listeners(arguments[0]).length > 0) {
270
+ self.emit.apply(self, arguments);
271
+ }
272
+ }
273
+
274
+ this._close = function () {
275
+ if (readyState === EventSource.CLOSED) return
276
+ readyState = EventSource.CLOSED;
277
+ if (req.abort) req.abort();
278
+ if (req.xhr && req.xhr.abort) req.xhr.abort();
279
+ };
280
+
281
+ function parseEventStreamLine (buf, pos, fieldLength, lineLength) {
282
+ if (lineLength === 0) {
283
+ if (data.length > 0) {
284
+ var type = eventName || 'message';
285
+ _emit(type, new MessageEvent(type, {
286
+ data: data.slice(0, -1), // remove trailing newline
287
+ lastEventId: lastEventId,
288
+ origin: getOrigin(url)
289
+ }));
290
+ data = '';
291
+ }
292
+ eventName = void 0;
293
+ } else if (fieldLength > 0) {
294
+ var noValue = fieldLength < 0;
295
+ var step = 0;
296
+ var field = buf.slice(pos, pos + (noValue ? lineLength : fieldLength)).toString();
297
+
298
+ if (noValue) {
299
+ step = lineLength;
300
+ } else if (buf[pos + fieldLength + 1] !== space) {
301
+ step = fieldLength + 1;
302
+ } else {
303
+ step = fieldLength + 2;
304
+ }
305
+ pos += step;
306
+
307
+ var valueLength = lineLength - step;
308
+ var value = buf.slice(pos, pos + valueLength).toString();
309
+
310
+ if (field === 'data') {
311
+ data += value + '\n';
312
+ } else if (field === 'event') {
313
+ eventName = value;
314
+ } else if (field === 'id') {
315
+ lastEventId = value;
316
+ } else if (field === 'retry') {
317
+ var retry = parseInt(value, 10);
318
+ if (!Number.isNaN(retry)) {
319
+ self.reconnectInterval = retry;
320
+ }
321
+ }
322
+ }
323
+ }
324
+ }
325
+
326
+ var eventsource = EventSource;
327
+
328
+ util.inherits(EventSource, events.EventEmitter);
329
+ EventSource.prototype.constructor = EventSource; // make stacktraces readable
330
+
331
+ ['open', 'error', 'message'].forEach(function (method) {
332
+ Object.defineProperty(EventSource.prototype, 'on' + method, {
333
+ /**
334
+ * Returns the current listener
335
+ *
336
+ * @return {Mixed} the set function or undefined
337
+ * @api private
338
+ */
339
+ get: function get () {
340
+ var listener = this.listeners(method)[0];
341
+ return listener ? (listener._listener ? listener._listener : listener) : undefined
342
+ },
343
+
344
+ /**
345
+ * Start listening for events
346
+ *
347
+ * @param {Function} listener the listener
348
+ * @return {Mixed} the set function or undefined
349
+ * @api private
350
+ */
351
+ set: function set (listener) {
352
+ this.removeAllListeners(method);
353
+ this.addEventListener(method, listener);
354
+ }
355
+ });
356
+ });
357
+
358
+ /**
359
+ * Ready states
360
+ */
361
+ Object.defineProperty(EventSource, 'CONNECTING', {enumerable: true, value: 0});
362
+ Object.defineProperty(EventSource, 'OPEN', {enumerable: true, value: 1});
363
+ Object.defineProperty(EventSource, 'CLOSED', {enumerable: true, value: 2});
364
+
365
+ EventSource.prototype.CONNECTING = 0;
366
+ EventSource.prototype.OPEN = 1;
367
+ EventSource.prototype.CLOSED = 2;
368
+
369
+ /**
370
+ * Closes the connection, if one is made, and sets the readyState attribute to 2 (closed)
371
+ *
372
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/EventSource/close
373
+ * @api public
374
+ */
375
+ EventSource.prototype.close = function () {
376
+ this._close();
377
+ };
378
+
379
+ /**
380
+ * Emulates the W3C Browser based WebSocket interface using addEventListener.
381
+ *
382
+ * @param {String} type A string representing the event type to listen out for
383
+ * @param {Function} listener callback
384
+ * @see https://developer.mozilla.org/en/DOM/element.addEventListener
385
+ * @see http://dev.w3.org/html5/websockets/#the-websocket-interface
386
+ * @api public
387
+ */
388
+ EventSource.prototype.addEventListener = function addEventListener (type, listener) {
389
+ if (typeof listener === 'function') {
390
+ // store a reference so we can return the original function again
391
+ listener._listener = listener;
392
+ this.on(type, listener);
393
+ }
394
+ };
395
+
396
+ /**
397
+ * Emulates the W3C Browser based WebSocket interface using dispatchEvent.
398
+ *
399
+ * @param {Event} event An event to be dispatched
400
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent
401
+ * @api public
402
+ */
403
+ EventSource.prototype.dispatchEvent = function dispatchEvent (event) {
404
+ if (!event.type) {
405
+ throw new Error('UNSPECIFIED_EVENT_TYPE_ERR')
406
+ }
407
+ // if event is instance of an CustomEvent (or has 'details' property),
408
+ // send the detail object as the payload for the event
409
+ this.emit(event.type, event.detail);
410
+ };
411
+
412
+ /**
413
+ * Emulates the W3C Browser based WebSocket interface using removeEventListener.
414
+ *
415
+ * @param {String} type A string representing the event type to remove
416
+ * @param {Function} listener callback
417
+ * @see https://developer.mozilla.org/en/DOM/element.removeEventListener
418
+ * @see http://dev.w3.org/html5/websockets/#the-websocket-interface
419
+ * @api public
420
+ */
421
+ EventSource.prototype.removeEventListener = function removeEventListener (type, listener) {
422
+ if (typeof listener === 'function') {
423
+ listener._listener = undefined;
424
+ this.removeListener(type, listener);
425
+ }
426
+ };
427
+
428
+ /**
429
+ * W3C Event
430
+ *
431
+ * @see http://www.w3.org/TR/DOM-Level-3-Events/#interface-Event
432
+ * @api private
433
+ */
434
+ function Event (type, optionalProperties) {
435
+ Object.defineProperty(this, 'type', { writable: false, value: type, enumerable: true });
436
+ if (optionalProperties) {
437
+ for (var f in optionalProperties) {
438
+ if (optionalProperties.hasOwnProperty(f)) {
439
+ Object.defineProperty(this, f, { writable: false, value: optionalProperties[f], enumerable: true });
440
+ }
441
+ }
442
+ }
443
+ }
444
+
445
+ /**
446
+ * W3C MessageEvent
447
+ *
448
+ * @see http://www.w3.org/TR/webmessaging/#event-definitions
449
+ * @api private
450
+ */
451
+ function MessageEvent (type, eventInitDict) {
452
+ Object.defineProperty(this, 'type', { writable: false, value: type, enumerable: true });
453
+ for (var f in eventInitDict) {
454
+ if (eventInitDict.hasOwnProperty(f)) {
455
+ Object.defineProperty(this, f, { writable: false, value: eventInitDict[f], enumerable: true });
456
+ }
457
+ }
458
+ }
459
+
460
+ /**
461
+ * Returns a new object of headers that does not include any authorization and cookie headers
462
+ *
463
+ * @param {Object} headers An object of headers ({[headerName]: headerValue})
464
+ * @return {Object} a new object of headers
465
+ * @api private
466
+ */
467
+ function removeUnsafeHeaders (headers) {
468
+ var safe = {};
469
+ for (var key in headers) {
470
+ if (/^(cookie|authorization)$/i.test(key)) {
471
+ continue
472
+ }
473
+
474
+ safe[key] = headers[key];
475
+ }
476
+
477
+ return safe
478
+ }
479
+
480
+ /**
481
+ * Transform an URL to a valid origin value.
482
+ *
483
+ * @param {String|Object} url URL to transform to it's origin.
484
+ * @returns {String} The origin.
485
+ * @api private
486
+ */
487
+ function getOrigin (url) {
488
+ if (typeof url === 'string') url = parse(url);
489
+ if (!url.protocol || !url.hostname) return 'null'
490
+ return (url.protocol + '//' + url.host).toLowerCase()
491
+ }
492
+
493
+ export { eventsource as default };
@@ -0,0 +1,150 @@
1
+ import require$$0 from 'stream';
2
+ import require$$1 from 'util';
3
+ import driver from '../../../websocket-driver/lib/websocket/driver.js';
4
+ import { __require as requireHeaders } from '../../../websocket-driver/lib/websocket/driver/headers.js';
5
+ import api from './websocket/api.js';
6
+ import { __require as requireEvent_target } from './websocket/api/event_target.js';
7
+ import { __require as requireEvent } from './websocket/api/event.js';
8
+
9
+ var eventsource;
10
+ var hasRequiredEventsource;
11
+
12
+ function requireEventsource () {
13
+ if (hasRequiredEventsource) return eventsource;
14
+ hasRequiredEventsource = 1;
15
+
16
+ var Stream = require$$0.Stream,
17
+ util = require$$1,
18
+ driver$1 = driver,
19
+ Headers = requireHeaders(),
20
+ API = api,
21
+ EventTarget = requireEvent_target(),
22
+ Event = requireEvent();
23
+
24
+ var EventSource = function(request, response, options) {
25
+ this.writable = true;
26
+ options = options || {};
27
+
28
+ this._stream = response.socket;
29
+ this._ping = options.ping || this.DEFAULT_PING;
30
+ this._retry = options.retry || this.DEFAULT_RETRY;
31
+
32
+ var scheme = driver$1.isSecureRequest(request) ? 'https:' : 'http:';
33
+ this.url = scheme + '//' + request.headers.host + request.url;
34
+ this.lastEventId = request.headers['last-event-id'] || '';
35
+ this.readyState = API.CONNECTING;
36
+
37
+ var headers = new Headers(),
38
+ self = this;
39
+
40
+ if (options.headers) {
41
+ for (var key in options.headers) headers.set(key, options.headers[key]);
42
+ }
43
+
44
+ if (!this._stream || !this._stream.writable) return;
45
+ process.nextTick(function() { self._open(); });
46
+
47
+ this._stream.setTimeout(0);
48
+ this._stream.setNoDelay(true);
49
+
50
+ var handshake = 'HTTP/1.1 200 OK\r\n' +
51
+ 'Content-Type: text/event-stream\r\n' +
52
+ 'Cache-Control: no-cache, no-store\r\n' +
53
+ 'Connection: close\r\n' +
54
+ headers.toString() +
55
+ '\r\n' +
56
+ 'retry: ' + Math.floor(this._retry * 1000) + '\r\n\r\n';
57
+
58
+ this._write(handshake);
59
+
60
+ this._stream.on('drain', function() { self.emit('drain'); });
61
+
62
+ if (this._ping)
63
+ this._pingTimer = setInterval(function() { self.ping(); }, this._ping * 1000);
64
+
65
+ ['error', 'end'].forEach(function(event) {
66
+ self._stream.on(event, function() { self.close(); });
67
+ });
68
+ };
69
+ util.inherits(EventSource, Stream);
70
+
71
+ EventSource.isEventSource = function(request) {
72
+ if (request.method !== 'GET') return false;
73
+ var accept = (request.headers.accept || '').split(/\s*,\s*/);
74
+ return accept.indexOf('text/event-stream') >= 0;
75
+ };
76
+
77
+ var instance = {
78
+ DEFAULT_PING: 10,
79
+ DEFAULT_RETRY: 5,
80
+
81
+ _write: function(chunk) {
82
+ if (!this.writable) return false;
83
+ try {
84
+ return this._stream.write(chunk, 'utf8');
85
+ } catch (e) {
86
+ return false;
87
+ }
88
+ },
89
+
90
+ _open: function() {
91
+ if (this.readyState !== API.CONNECTING) return;
92
+
93
+ this.readyState = API.OPEN;
94
+
95
+ var event = new Event('open');
96
+ event.initEvent('open', false, false);
97
+ this.dispatchEvent(event);
98
+ },
99
+
100
+ write: function(message) {
101
+ return this.send(message);
102
+ },
103
+
104
+ end: function(message) {
105
+ if (message !== undefined) this.write(message);
106
+ this.close();
107
+ },
108
+
109
+ send: function(message, options) {
110
+ if (this.readyState > API.OPEN) return false;
111
+
112
+ message = String(message).replace(/(\r\n|\r|\n)/g, '$1data: ');
113
+ options = options || {};
114
+
115
+ var frame = '';
116
+ if (options.event) frame += 'event: ' + options.event + '\r\n';
117
+ if (options.id) frame += 'id: ' + options.id + '\r\n';
118
+ frame += 'data: ' + message + '\r\n\r\n';
119
+
120
+ return this._write(frame);
121
+ },
122
+
123
+ ping: function() {
124
+ return this._write(':\r\n\r\n');
125
+ },
126
+
127
+ close: function() {
128
+ if (this.readyState > API.OPEN) return false;
129
+
130
+ this.readyState = API.CLOSED;
131
+ this.writable = false;
132
+ if (this._pingTimer) clearInterval(this._pingTimer);
133
+ if (this._stream) this._stream.end();
134
+
135
+ var event = new Event('close');
136
+ event.initEvent('close', false, false);
137
+ this.dispatchEvent(event);
138
+
139
+ return true;
140
+ }
141
+ };
142
+
143
+ for (var method in instance) EventSource.prototype[method] = instance[method];
144
+ for (var key in EventTarget) EventSource.prototype[key] = EventTarget[key];
145
+
146
+ eventsource = EventSource;
147
+ return eventsource;
148
+ }
149
+
150
+ export { requireEventsource as __require };
@@ -0,0 +1,31 @@
1
+ var event;
2
+ var hasRequiredEvent;
3
+
4
+ function requireEvent () {
5
+ if (hasRequiredEvent) return event;
6
+ hasRequiredEvent = 1;
7
+
8
+ var Event = function(eventType, options) {
9
+ this.type = eventType;
10
+ for (var key in options)
11
+ this[key] = options[key];
12
+ };
13
+
14
+ Event.prototype.initEvent = function(eventType, canBubble, cancelable) {
15
+ this.type = eventType;
16
+ this.bubbles = canBubble;
17
+ this.cancelable = cancelable;
18
+ };
19
+
20
+ Event.prototype.stopPropagation = function() {};
21
+ Event.prototype.preventDefault = function() {};
22
+
23
+ Event.CAPTURING_PHASE = 1;
24
+ Event.AT_TARGET = 2;
25
+ Event.BUBBLING_PHASE = 3;
26
+
27
+ event = Event;
28
+ return event;
29
+ }
30
+
31
+ export { requireEvent as __require };
@@ -0,0 +1,41 @@
1
+ import { __require as requireEvent } from './event.js';
2
+
3
+ var event_target;
4
+ var hasRequiredEvent_target;
5
+
6
+ function requireEvent_target () {
7
+ if (hasRequiredEvent_target) return event_target;
8
+ hasRequiredEvent_target = 1;
9
+
10
+ var Event = requireEvent();
11
+
12
+ var EventTarget = {
13
+ onopen: null,
14
+ onmessage: null,
15
+ onerror: null,
16
+ onclose: null,
17
+
18
+ addEventListener: function(eventType, listener, useCapture) {
19
+ this.on(eventType, listener);
20
+ },
21
+
22
+ removeEventListener: function(eventType, listener, useCapture) {
23
+ this.removeListener(eventType, listener);
24
+ },
25
+
26
+ dispatchEvent: function(event) {
27
+ event.target = event.currentTarget = this;
28
+ event.eventPhase = Event.AT_TARGET;
29
+
30
+ if (this['on' + event.type])
31
+ this['on' + event.type](event);
32
+
33
+ this.emit(event.type, event);
34
+ }
35
+ };
36
+
37
+ event_target = EventTarget;
38
+ return event_target;
39
+ }
40
+
41
+ export { requireEvent_target as __require };