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.
- package/declarations.d.ts +6 -0
- package/dist/es/_virtual/FastBufferList.js +7 -0
- package/dist/es/_virtual/_commonjs-dynamic-modules.js +5 -0
- package/dist/es/_virtual/browser.js +7 -0
- package/dist/es/_virtual/browser2.js +7 -0
- package/dist/es/_virtual/debug.js +7 -0
- package/dist/es/_virtual/event.js +7 -0
- package/dist/es/_virtual/http-parser.js +3 -0
- package/dist/es/_virtual/iframe.js +7 -0
- package/dist/es/_virtual/index.js +7 -0
- package/dist/es/_virtual/index2.js +7 -0
- package/dist/es/_virtual/index3.js +7 -0
- package/dist/es/_virtual/index4.js +7 -0
- package/dist/es/_virtual/index5.js +7 -0
- package/dist/es/_virtual/index6.js +7 -0
- package/dist/es/_virtual/index7.js +3 -0
- package/dist/es/_virtual/index8.js +7 -0
- package/dist/es/_virtual/index9.js +7 -0
- package/dist/es/_virtual/inherits.js +7 -0
- package/dist/es/_virtual/inherits_browser.js +7 -0
- package/dist/es/_virtual/json3.js +7 -0
- package/dist/es/_virtual/node.js +7 -0
- package/dist/es/_virtual/node2.js +7 -0
- package/dist/es/_virtual/stomp-node.js +3 -0
- package/dist/es/_virtual/stomp.js +3 -0
- package/dist/es/_virtual/streams.js +3 -0
- package/dist/es/_virtual/utils.js +3 -0
- package/dist/es/constants.d.ts +5 -1
- package/dist/es/constants.js +5 -1
- package/dist/es/node_modules/bufferutil/fallback.js +43 -0
- package/dist/es/node_modules/bufferutil/index.js +21 -0
- package/dist/es/node_modules/debug/src/browser.js +192 -0
- package/dist/es/node_modules/debug/src/common.js +259 -0
- package/dist/es/node_modules/debug/src/index.js +25 -0
- package/dist/es/node_modules/debug/src/node.js +192 -0
- package/dist/es/node_modules/eventsource/lib/eventsource.js +493 -0
- package/dist/es/node_modules/faye-websocket/lib/faye/eventsource.js +150 -0
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api/event.js +31 -0
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api/event_target.js +41 -0
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api.js +205 -0
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket/client.js +107 -0
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket.js +47 -0
- package/dist/es/node_modules/has-flag/index.js +17 -0
- package/dist/es/node_modules/http-parser-js/http-parser.js +471 -0
- package/dist/es/node_modules/inherits/inherits.js +14 -0
- package/dist/es/node_modules/inherits/inherits_browser.js +38 -0
- package/dist/es/node_modules/is-typedarray/index.js +51 -0
- package/dist/es/node_modules/json3/lib/json3.js +937 -0
- package/dist/es/node_modules/ms/index.js +172 -0
- package/dist/es/node_modules/node-gyp-build/index.js +21 -0
- package/dist/es/node_modules/node-gyp-build/node-gyp-build.js +222 -0
- package/dist/es/node_modules/querystringify/index.js +120 -0
- package/dist/es/node_modules/requires-port/index.js +38 -0
- package/dist/es/node_modules/safe-buffer/index.js +71 -0
- package/dist/es/node_modules/supports-color/index.js +143 -0
- package/dist/es/node_modules/typedarray-to-buffer/index.js +37 -0
- package/dist/es/node_modules/url-parse/index.js +594 -0
- package/dist/es/node_modules/utf-8-validate/fallback.js +71 -0
- package/dist/es/node_modules/utf-8-validate/index.js +21 -0
- package/dist/es/node_modules/websocket/index.js +15 -0
- package/dist/es/node_modules/websocket/lib/Deprecation.js +42 -0
- package/dist/es/node_modules/websocket/lib/W3CWebSocket.js +268 -0
- package/dist/es/node_modules/websocket/lib/WebSocketClient.js +380 -0
- package/dist/es/node_modules/websocket/lib/WebSocketConnection.js +914 -0
- package/dist/es/node_modules/websocket/lib/WebSocketFrame.js +293 -0
- package/dist/es/node_modules/websocket/lib/WebSocketRequest.js +543 -0
- package/dist/es/node_modules/websocket/lib/WebSocketRouter.js +172 -0
- package/dist/es/node_modules/websocket/lib/WebSocketRouterRequest.js +67 -0
- package/dist/es/node_modules/websocket/lib/WebSocketServer.js +272 -0
- package/dist/es/node_modules/websocket/lib/utils.js +80 -0
- package/dist/es/node_modules/websocket/lib/version.js +13 -0
- package/dist/es/node_modules/websocket/lib/websocket.js +31 -0
- package/dist/es/node_modules/websocket/node_modules/debug/src/browser.js +199 -0
- package/dist/es/node_modules/websocket/node_modules/debug/src/debug.js +215 -0
- package/dist/es/node_modules/websocket/node_modules/debug/src/index.js +25 -0
- package/dist/es/node_modules/websocket/node_modules/debug/src/node.js +266 -0
- package/dist/es/node_modules/websocket/node_modules/ms/index.js +162 -0
- package/dist/es/node_modules/websocket/package.json.js +77 -0
- package/dist/es/node_modules/websocket/vendor/FastBufferList.js +205 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/base.js +202 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/client.js +152 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/draft75.js +128 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/draft76.js +124 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/headers.js +44 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi/frame.js +21 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi/message.js +37 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi.js +492 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/proxy.js +108 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/server.js +119 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/stream_reader.js +72 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver.js +47 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/http_parser.js +140 -0
- package/dist/es/node_modules/websocket-driver/lib/websocket/streams.js +150 -0
- package/dist/es/node_modules/websocket-extensions/lib/parser.js +103 -0
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/cell.js +56 -0
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/functor.js +74 -0
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/index.js +50 -0
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/pledge.js +39 -0
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/ring_buffer.js +66 -0
- package/dist/es/node_modules/websocket-extensions/lib/websocket_extensions.js +165 -0
- package/dist/es/node_modules/yaeti/index.js +17 -0
- package/dist/es/node_modules/yaeti/lib/Event.js +24 -0
- package/dist/es/node_modules/yaeti/lib/EventTarget.js +130 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/entry.js +14 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/event/close.js +21 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/event/event.js +22 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/event/eventtarget.js +62 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/event/trans-message.js +19 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/facade.js +40 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/iframe-bootstrap.js +122 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/info-ajax.js +57 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/info-iframe-receiver.js +50 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/info-iframe.js +81 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/info-receiver.js +101 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/location.js +12 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/main.js +413 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/shims.js +449 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/driver/websocket.js +5 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/driver/xhr.js +80 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/eventsource.js +34 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/htmlfile.js +31 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/iframe.js +154 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/jsonp-polling.js +41 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/ajax-based.js +55 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/buffered-sender.js +92 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/iframe-wrap.js +39 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/polling.js +65 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/sender-receiver.js +52 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/eventsource.js +69 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/htmlfile.js +96 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/jsonp.js +193 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/xhr.js +75 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/jsonp.js +104 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xdr.js +113 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-cors.js +19 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-fake.js +28 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-local.js +21 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/websocket.js +108 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/xdr-polling.js +30 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/xdr-streaming.js +38 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/xhr-polling.js +40 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/xhr-streaming.js +50 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/transport-list.js +28 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/browser.js +29 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/escape.js +53 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/event.js +78 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/iframe.js +205 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/log.js +20 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/object.js +24 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/random.js +30 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/transport.js +52 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/url.js +54 -0
- package/dist/es/node_modules/zt-sockjs-client/lib/version.js +11 -0
- package/dist/es/node_modules/zt-stompjs/index.js +23 -0
- package/dist/es/node_modules/zt-stompjs/lib/stomp-node.js +117 -0
- package/dist/es/node_modules/zt-stompjs/lib/stomp.js +536 -0
- package/dist/es/stompClient.d.ts +55 -0
- package/dist/es/stompClient.js +379 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/package.json +6 -2
- package/src/constants.ts +5 -0
- package/src/index.ts +4 -0
- package/src/stompClient.ts +449 -0
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import '../../../../safe-buffer/index.js';
|
|
2
|
+
import require$$0 from 'crypto';
|
|
3
|
+
import require$$2 from 'url';
|
|
4
|
+
import require$$1 from 'util';
|
|
5
|
+
import http_parser from '../http_parser.js';
|
|
6
|
+
import base from './base.js';
|
|
7
|
+
import hybi from './hybi.js';
|
|
8
|
+
import proxy from './proxy.js';
|
|
9
|
+
import { exports as safeBufferExports } from '../../../../../_virtual/index9.js';
|
|
10
|
+
|
|
11
|
+
var Buffer = safeBufferExports.Buffer,
|
|
12
|
+
crypto = require$$0,
|
|
13
|
+
url = require$$2,
|
|
14
|
+
util = require$$1,
|
|
15
|
+
HttpParser = http_parser,
|
|
16
|
+
Base = base,
|
|
17
|
+
Hybi = hybi,
|
|
18
|
+
Proxy = proxy;
|
|
19
|
+
|
|
20
|
+
var Client = function(_url, options) {
|
|
21
|
+
this.version = 'hybi-' + Hybi.VERSION;
|
|
22
|
+
Hybi.call(this, null, _url, options);
|
|
23
|
+
|
|
24
|
+
this.readyState = -1;
|
|
25
|
+
this._key = Client.generateKey();
|
|
26
|
+
this._accept = Hybi.generateAccept(this._key);
|
|
27
|
+
this._http = new HttpParser('response');
|
|
28
|
+
|
|
29
|
+
var uri = url.parse(this.url),
|
|
30
|
+
auth = uri.auth && Buffer.from(uri.auth, 'utf8').toString('base64');
|
|
31
|
+
|
|
32
|
+
if (this.VALID_PROTOCOLS.indexOf(uri.protocol) < 0)
|
|
33
|
+
throw new Error(this.url + ' is not a valid WebSocket URL');
|
|
34
|
+
|
|
35
|
+
this._pathname = (uri.pathname || '/') + (uri.search || '');
|
|
36
|
+
|
|
37
|
+
this._headers.set('Host', uri.host);
|
|
38
|
+
this._headers.set('Upgrade', 'websocket');
|
|
39
|
+
this._headers.set('Connection', 'Upgrade');
|
|
40
|
+
this._headers.set('Sec-WebSocket-Key', this._key);
|
|
41
|
+
this._headers.set('Sec-WebSocket-Version', Hybi.VERSION);
|
|
42
|
+
|
|
43
|
+
if (this._protocols.length > 0)
|
|
44
|
+
this._headers.set('Sec-WebSocket-Protocol', this._protocols.join(', '));
|
|
45
|
+
|
|
46
|
+
if (auth)
|
|
47
|
+
this._headers.set('Authorization', 'Basic ' + auth);
|
|
48
|
+
};
|
|
49
|
+
util.inherits(Client, Hybi);
|
|
50
|
+
|
|
51
|
+
Client.generateKey = function() {
|
|
52
|
+
return crypto.randomBytes(16).toString('base64');
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
var instance = {
|
|
56
|
+
VALID_PROTOCOLS: ['ws:', 'wss:'],
|
|
57
|
+
|
|
58
|
+
proxy: function(origin, options) {
|
|
59
|
+
return new Proxy(this, origin, options);
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
start: function() {
|
|
63
|
+
if (this.readyState !== -1) return false;
|
|
64
|
+
this._write(this._handshakeRequest());
|
|
65
|
+
this.readyState = 0;
|
|
66
|
+
return true;
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
parse: function(chunk) {
|
|
70
|
+
if (this.readyState === 3) return;
|
|
71
|
+
if (this.readyState > 0) return Hybi.prototype.parse.call(this, chunk);
|
|
72
|
+
|
|
73
|
+
this._http.parse(chunk);
|
|
74
|
+
if (!this._http.isComplete()) return;
|
|
75
|
+
|
|
76
|
+
this._validateHandshake();
|
|
77
|
+
if (this.readyState === 3) return;
|
|
78
|
+
|
|
79
|
+
this._open();
|
|
80
|
+
this.parse(this._http.body);
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
_handshakeRequest: function() {
|
|
84
|
+
var extensions = this._extensions.generateOffer();
|
|
85
|
+
if (extensions)
|
|
86
|
+
this._headers.set('Sec-WebSocket-Extensions', extensions);
|
|
87
|
+
|
|
88
|
+
var start = 'GET ' + this._pathname + ' HTTP/1.1',
|
|
89
|
+
headers = [start, this._headers.toString(), ''];
|
|
90
|
+
|
|
91
|
+
return Buffer.from(headers.join('\r\n'), 'utf8');
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
_failHandshake: function(message) {
|
|
95
|
+
message = 'Error during WebSocket handshake: ' + message;
|
|
96
|
+
this.readyState = 3;
|
|
97
|
+
this.emit('error', new Error(message));
|
|
98
|
+
this.emit('close', new Base.CloseEvent(this.ERRORS.protocol_error, message));
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
_validateHandshake: function() {
|
|
102
|
+
this.statusCode = this._http.statusCode;
|
|
103
|
+
this.headers = this._http.headers;
|
|
104
|
+
|
|
105
|
+
if (this._http.error)
|
|
106
|
+
return this._failHandshake(this._http.error.message);
|
|
107
|
+
|
|
108
|
+
if (this._http.statusCode !== 101)
|
|
109
|
+
return this._failHandshake('Unexpected response code: ' + this._http.statusCode);
|
|
110
|
+
|
|
111
|
+
var headers = this._http.headers,
|
|
112
|
+
upgrade = headers['upgrade'] || '',
|
|
113
|
+
connection = headers['connection'] || '',
|
|
114
|
+
accept = headers['sec-websocket-accept'] || '',
|
|
115
|
+
protocol = headers['sec-websocket-protocol'] || '';
|
|
116
|
+
|
|
117
|
+
if (upgrade === '')
|
|
118
|
+
return this._failHandshake("'Upgrade' header is missing");
|
|
119
|
+
if (upgrade.toLowerCase() !== 'websocket')
|
|
120
|
+
return this._failHandshake("'Upgrade' header value is not 'WebSocket'");
|
|
121
|
+
|
|
122
|
+
if (connection === '')
|
|
123
|
+
return this._failHandshake("'Connection' header is missing");
|
|
124
|
+
if (connection.toLowerCase() !== 'upgrade')
|
|
125
|
+
return this._failHandshake("'Connection' header value is not 'Upgrade'");
|
|
126
|
+
|
|
127
|
+
if (accept !== this._accept)
|
|
128
|
+
return this._failHandshake('Sec-WebSocket-Accept mismatch');
|
|
129
|
+
|
|
130
|
+
this.protocol = null;
|
|
131
|
+
|
|
132
|
+
if (protocol !== '') {
|
|
133
|
+
if (this._protocols.indexOf(protocol) < 0)
|
|
134
|
+
return this._failHandshake('Sec-WebSocket-Protocol mismatch');
|
|
135
|
+
else
|
|
136
|
+
this.protocol = protocol;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
try {
|
|
140
|
+
this._extensions.activate(this.headers['sec-websocket-extensions']);
|
|
141
|
+
} catch (e) {
|
|
142
|
+
return this._failHandshake(e.message);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
for (var key in instance)
|
|
148
|
+
Client.prototype[key] = instance[key];
|
|
149
|
+
|
|
150
|
+
var client = Client;
|
|
151
|
+
|
|
152
|
+
export { client as default };
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import '../../../../safe-buffer/index.js';
|
|
2
|
+
import base from './base.js';
|
|
3
|
+
import require$$1 from 'util';
|
|
4
|
+
import { exports as safeBufferExports } from '../../../../../_virtual/index9.js';
|
|
5
|
+
|
|
6
|
+
var Buffer = safeBufferExports.Buffer,
|
|
7
|
+
Base = base,
|
|
8
|
+
util = require$$1;
|
|
9
|
+
|
|
10
|
+
var Draft75 = function(request, url, options) {
|
|
11
|
+
Base.apply(this, arguments);
|
|
12
|
+
this._stage = 0;
|
|
13
|
+
this.version = 'hixie-75';
|
|
14
|
+
|
|
15
|
+
this._headers.set('Upgrade', 'WebSocket');
|
|
16
|
+
this._headers.set('Connection', 'Upgrade');
|
|
17
|
+
this._headers.set('WebSocket-Origin', this._request.headers.origin);
|
|
18
|
+
this._headers.set('WebSocket-Location', this.url);
|
|
19
|
+
};
|
|
20
|
+
util.inherits(Draft75, Base);
|
|
21
|
+
|
|
22
|
+
var instance = {
|
|
23
|
+
close: function() {
|
|
24
|
+
if (this.readyState === 3) return false;
|
|
25
|
+
this.readyState = 3;
|
|
26
|
+
this.emit('close', new Base.CloseEvent(null, null));
|
|
27
|
+
return true;
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
parse: function(chunk) {
|
|
31
|
+
if (this.readyState > 1) return;
|
|
32
|
+
|
|
33
|
+
this._reader.put(chunk);
|
|
34
|
+
|
|
35
|
+
this._reader.eachByte(function(octet) {
|
|
36
|
+
var message;
|
|
37
|
+
|
|
38
|
+
switch (this._stage) {
|
|
39
|
+
case -1:
|
|
40
|
+
this._body.push(octet);
|
|
41
|
+
this._sendHandshakeBody();
|
|
42
|
+
break;
|
|
43
|
+
|
|
44
|
+
case 0:
|
|
45
|
+
this._parseLeadingByte(octet);
|
|
46
|
+
break;
|
|
47
|
+
|
|
48
|
+
case 1:
|
|
49
|
+
this._length = (octet & 0x7F) + 128 * this._length;
|
|
50
|
+
|
|
51
|
+
if (this._closing && this._length === 0) {
|
|
52
|
+
return this.close();
|
|
53
|
+
}
|
|
54
|
+
else if ((octet & 0x80) !== 0x80) {
|
|
55
|
+
if (this._length === 0) {
|
|
56
|
+
this._stage = 0;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this._skipped = 0;
|
|
60
|
+
this._stage = 2;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
|
|
65
|
+
case 2:
|
|
66
|
+
if (octet === 0xFF) {
|
|
67
|
+
this._stage = 0;
|
|
68
|
+
message = Buffer.from(this._buffer).toString('utf8', 0, this._buffer.length);
|
|
69
|
+
this.emit('message', new Base.MessageEvent(message));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (this._length) {
|
|
73
|
+
this._skipped += 1;
|
|
74
|
+
if (this._skipped === this._length)
|
|
75
|
+
this._stage = 0;
|
|
76
|
+
} else {
|
|
77
|
+
this._buffer.push(octet);
|
|
78
|
+
if (this._buffer.length > this._maxLength) return this.close();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}, this);
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
frame: function(buffer) {
|
|
87
|
+
if (this.readyState === 0) return this._queue([buffer]);
|
|
88
|
+
if (this.readyState > 1) return false;
|
|
89
|
+
|
|
90
|
+
if (typeof buffer !== 'string') buffer = buffer.toString();
|
|
91
|
+
|
|
92
|
+
var length = Buffer.byteLength(buffer),
|
|
93
|
+
frame = Buffer.allocUnsafe(length + 2);
|
|
94
|
+
|
|
95
|
+
frame[0] = 0x00;
|
|
96
|
+
frame.write(buffer, 1);
|
|
97
|
+
frame[frame.length - 1] = 0xFF;
|
|
98
|
+
|
|
99
|
+
this._write(frame);
|
|
100
|
+
return true;
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
_handshakeResponse: function() {
|
|
104
|
+
var start = 'HTTP/1.1 101 Web Socket Protocol Handshake',
|
|
105
|
+
headers = [start, this._headers.toString(), ''];
|
|
106
|
+
|
|
107
|
+
return Buffer.from(headers.join('\r\n'), 'utf8');
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
_parseLeadingByte: function(octet) {
|
|
111
|
+
if ((octet & 0x80) === 0x80) {
|
|
112
|
+
this._length = 0;
|
|
113
|
+
this._stage = 1;
|
|
114
|
+
} else {
|
|
115
|
+
delete this._length;
|
|
116
|
+
delete this._skipped;
|
|
117
|
+
this._buffer = [];
|
|
118
|
+
this._stage = 2;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
for (var key in instance)
|
|
124
|
+
Draft75.prototype[key] = instance[key];
|
|
125
|
+
|
|
126
|
+
var draft75 = Draft75;
|
|
127
|
+
|
|
128
|
+
export { draft75 as default };
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import '../../../../safe-buffer/index.js';
|
|
2
|
+
import base from './base.js';
|
|
3
|
+
import draft75 from './draft75.js';
|
|
4
|
+
import require$$0 from 'crypto';
|
|
5
|
+
import require$$1 from 'util';
|
|
6
|
+
import { exports as safeBufferExports } from '../../../../../_virtual/index9.js';
|
|
7
|
+
|
|
8
|
+
var Buffer = safeBufferExports.Buffer,
|
|
9
|
+
Base = base,
|
|
10
|
+
Draft75 = draft75,
|
|
11
|
+
crypto = require$$0,
|
|
12
|
+
util = require$$1;
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var numberFromKey = function(key) {
|
|
16
|
+
return parseInt((key.match(/[0-9]/g) || []).join(''), 10);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
var spacesInKey = function(key) {
|
|
20
|
+
return (key.match(/ /g) || []).length;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var Draft76 = function(request, url, options) {
|
|
25
|
+
Draft75.apply(this, arguments);
|
|
26
|
+
this._stage = -1;
|
|
27
|
+
this._body = [];
|
|
28
|
+
this.version = 'hixie-76';
|
|
29
|
+
|
|
30
|
+
this._headers.clear();
|
|
31
|
+
|
|
32
|
+
this._headers.set('Upgrade', 'WebSocket');
|
|
33
|
+
this._headers.set('Connection', 'Upgrade');
|
|
34
|
+
this._headers.set('Sec-WebSocket-Origin', this._request.headers.origin);
|
|
35
|
+
this._headers.set('Sec-WebSocket-Location', this.url);
|
|
36
|
+
};
|
|
37
|
+
util.inherits(Draft76, Draft75);
|
|
38
|
+
|
|
39
|
+
var instance = {
|
|
40
|
+
BODY_SIZE: 8,
|
|
41
|
+
|
|
42
|
+
start: function() {
|
|
43
|
+
if (!Draft75.prototype.start.call(this)) return false;
|
|
44
|
+
this._started = true;
|
|
45
|
+
this._sendHandshakeBody();
|
|
46
|
+
return true;
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
close: function() {
|
|
50
|
+
if (this.readyState === 3) return false;
|
|
51
|
+
if (this.readyState === 1) this._write(Buffer.from([0xFF, 0x00]));
|
|
52
|
+
this.readyState = 3;
|
|
53
|
+
this.emit('close', new Base.CloseEvent(null, null));
|
|
54
|
+
return true;
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
_handshakeResponse: function() {
|
|
58
|
+
var headers = this._request.headers,
|
|
59
|
+
key1 = headers['sec-websocket-key1'],
|
|
60
|
+
key2 = headers['sec-websocket-key2'];
|
|
61
|
+
|
|
62
|
+
if (!key1) throw new Error('Missing required header: Sec-WebSocket-Key1');
|
|
63
|
+
if (!key2) throw new Error('Missing required header: Sec-WebSocket-Key2');
|
|
64
|
+
|
|
65
|
+
var number1 = numberFromKey(key1),
|
|
66
|
+
spaces1 = spacesInKey(key1),
|
|
67
|
+
|
|
68
|
+
number2 = numberFromKey(key2),
|
|
69
|
+
spaces2 = spacesInKey(key2);
|
|
70
|
+
|
|
71
|
+
if (number1 % spaces1 !== 0 || number2 % spaces2 !== 0)
|
|
72
|
+
throw new Error('Client sent invalid Sec-WebSocket-Key headers');
|
|
73
|
+
|
|
74
|
+
this._keyValues = [number1 / spaces1, number2 / spaces2];
|
|
75
|
+
|
|
76
|
+
var start = 'HTTP/1.1 101 WebSocket Protocol Handshake',
|
|
77
|
+
headers = [start, this._headers.toString(), ''];
|
|
78
|
+
|
|
79
|
+
return Buffer.from(headers.join('\r\n'), 'binary');
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
_handshakeSignature: function() {
|
|
83
|
+
if (this._body.length < this.BODY_SIZE) return null;
|
|
84
|
+
|
|
85
|
+
var md5 = crypto.createHash('md5'),
|
|
86
|
+
buffer = Buffer.allocUnsafe(8 + this.BODY_SIZE);
|
|
87
|
+
|
|
88
|
+
buffer.writeUInt32BE(this._keyValues[0], 0);
|
|
89
|
+
buffer.writeUInt32BE(this._keyValues[1], 4);
|
|
90
|
+
Buffer.from(this._body).copy(buffer, 8, 0, this.BODY_SIZE);
|
|
91
|
+
|
|
92
|
+
md5.update(buffer);
|
|
93
|
+
return Buffer.from(md5.digest('binary'), 'binary');
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
_sendHandshakeBody: function() {
|
|
97
|
+
if (!this._started) return;
|
|
98
|
+
var signature = this._handshakeSignature();
|
|
99
|
+
if (!signature) return;
|
|
100
|
+
|
|
101
|
+
this._write(signature);
|
|
102
|
+
this._stage = 0;
|
|
103
|
+
this._open();
|
|
104
|
+
|
|
105
|
+
if (this._body.length > this.BODY_SIZE)
|
|
106
|
+
this.parse(this._body.slice(this.BODY_SIZE));
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
_parseLeadingByte: function(octet) {
|
|
110
|
+
if (octet !== 0xFF)
|
|
111
|
+
return Draft75.prototype._parseLeadingByte.call(this, octet);
|
|
112
|
+
|
|
113
|
+
this._closing = true;
|
|
114
|
+
this._length = 0;
|
|
115
|
+
this._stage = 1;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
for (var key in instance)
|
|
120
|
+
Draft76.prototype[key] = instance[key];
|
|
121
|
+
|
|
122
|
+
var draft76 = Draft76;
|
|
123
|
+
|
|
124
|
+
export { draft76 as default };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var headers;
|
|
2
|
+
var hasRequiredHeaders;
|
|
3
|
+
|
|
4
|
+
function requireHeaders () {
|
|
5
|
+
if (hasRequiredHeaders) return headers;
|
|
6
|
+
hasRequiredHeaders = 1;
|
|
7
|
+
|
|
8
|
+
var Headers = function() {
|
|
9
|
+
this.clear();
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
Headers.prototype.ALLOWED_DUPLICATES = ['set-cookie', 'set-cookie2', 'warning', 'www-authenticate'];
|
|
13
|
+
|
|
14
|
+
Headers.prototype.clear = function() {
|
|
15
|
+
this._sent = {};
|
|
16
|
+
this._lines = [];
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
Headers.prototype.set = function(name, value) {
|
|
20
|
+
if (value === undefined) return;
|
|
21
|
+
|
|
22
|
+
name = this._strip(name);
|
|
23
|
+
value = this._strip(value);
|
|
24
|
+
|
|
25
|
+
var key = name.toLowerCase();
|
|
26
|
+
if (!this._sent.hasOwnProperty(key) || this.ALLOWED_DUPLICATES.indexOf(key) >= 0) {
|
|
27
|
+
this._sent[key] = true;
|
|
28
|
+
this._lines.push(name + ': ' + value + '\r\n');
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
Headers.prototype.toString = function() {
|
|
33
|
+
return this._lines.join('');
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
Headers.prototype._strip = function(string) {
|
|
37
|
+
return string.toString().replace(/^ */, '').replace(/ *$/, '');
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
headers = Headers;
|
|
41
|
+
return headers;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { requireHeaders as __require };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var Frame = function() {};
|
|
2
|
+
|
|
3
|
+
var instance = {
|
|
4
|
+
final: false,
|
|
5
|
+
rsv1: false,
|
|
6
|
+
rsv2: false,
|
|
7
|
+
rsv3: false,
|
|
8
|
+
opcode: null,
|
|
9
|
+
masked: false,
|
|
10
|
+
maskingKey: null,
|
|
11
|
+
lengthBytes: 1,
|
|
12
|
+
length: 0,
|
|
13
|
+
payload: null
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
for (var key in instance)
|
|
17
|
+
Frame.prototype[key] = instance[key];
|
|
18
|
+
|
|
19
|
+
var frame = Frame;
|
|
20
|
+
|
|
21
|
+
export { frame as default };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import '../../../../../safe-buffer/index.js';
|
|
2
|
+
import { exports as safeBufferExports } from '../../../../../../_virtual/index9.js';
|
|
3
|
+
|
|
4
|
+
var Buffer = safeBufferExports.Buffer;
|
|
5
|
+
|
|
6
|
+
var Message = function() {
|
|
7
|
+
this.rsv1 = false;
|
|
8
|
+
this.rsv2 = false;
|
|
9
|
+
this.rsv3 = false;
|
|
10
|
+
this.opcode = null;
|
|
11
|
+
this.length = 0;
|
|
12
|
+
this._chunks = [];
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
var instance = {
|
|
16
|
+
read: function() {
|
|
17
|
+
return this.data = this.data || Buffer.concat(this._chunks, this.length);
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
pushFrame: function(frame) {
|
|
21
|
+
this.rsv1 = this.rsv1 || frame.rsv1;
|
|
22
|
+
this.rsv2 = this.rsv2 || frame.rsv2;
|
|
23
|
+
this.rsv3 = this.rsv3 || frame.rsv3;
|
|
24
|
+
|
|
25
|
+
if (this.opcode === null) this.opcode = frame.opcode;
|
|
26
|
+
|
|
27
|
+
this._chunks.push(frame.payload);
|
|
28
|
+
this.length += frame.length;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
for (var key in instance)
|
|
33
|
+
Message.prototype[key] = instance[key];
|
|
34
|
+
|
|
35
|
+
var message = Message;
|
|
36
|
+
|
|
37
|
+
export { message as default };
|