zmdms-utils 0.0.81 → 0.0.83
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/dist/es/validate.js +168 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/package.json +2 -6
- package/src/index.ts +0 -3
- package/src/validate.ts +198 -0
- package/dist/es/_virtual/FastBufferList.js +0 -7
- package/dist/es/_virtual/_commonjs-dynamic-modules.js +0 -5
- package/dist/es/_virtual/browser.js +0 -7
- package/dist/es/_virtual/browser2.js +0 -7
- package/dist/es/_virtual/debug.js +0 -7
- package/dist/es/_virtual/event.js +0 -7
- package/dist/es/_virtual/http-parser.js +0 -3
- package/dist/es/_virtual/iframe.js +0 -7
- package/dist/es/_virtual/index.js +0 -7
- package/dist/es/_virtual/index2.js +0 -7
- package/dist/es/_virtual/index3.js +0 -7
- package/dist/es/_virtual/index4.js +0 -7
- package/dist/es/_virtual/index5.js +0 -7
- package/dist/es/_virtual/index6.js +0 -7
- package/dist/es/_virtual/index7.js +0 -3
- package/dist/es/_virtual/index8.js +0 -7
- package/dist/es/_virtual/index9.js +0 -7
- package/dist/es/_virtual/inherits.js +0 -7
- package/dist/es/_virtual/inherits_browser.js +0 -7
- package/dist/es/_virtual/json3.js +0 -7
- package/dist/es/_virtual/node.js +0 -7
- package/dist/es/_virtual/node2.js +0 -7
- package/dist/es/_virtual/stomp-node.js +0 -3
- package/dist/es/_virtual/stomp.js +0 -3
- package/dist/es/_virtual/streams.js +0 -3
- package/dist/es/_virtual/utils.js +0 -3
- package/dist/es/node_modules/bufferutil/fallback.js +0 -43
- package/dist/es/node_modules/bufferutil/index.js +0 -21
- package/dist/es/node_modules/debug/src/browser.js +0 -192
- package/dist/es/node_modules/debug/src/common.js +0 -259
- package/dist/es/node_modules/debug/src/index.js +0 -25
- package/dist/es/node_modules/debug/src/node.js +0 -192
- package/dist/es/node_modules/eventsource/lib/eventsource.js +0 -493
- package/dist/es/node_modules/faye-websocket/lib/faye/eventsource.js +0 -150
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api/event.js +0 -31
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api/event_target.js +0 -41
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket/api.js +0 -205
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket/client.js +0 -107
- package/dist/es/node_modules/faye-websocket/lib/faye/websocket.js +0 -47
- package/dist/es/node_modules/has-flag/index.js +0 -17
- package/dist/es/node_modules/http-parser-js/http-parser.js +0 -471
- package/dist/es/node_modules/inherits/inherits.js +0 -14
- package/dist/es/node_modules/inherits/inherits_browser.js +0 -38
- package/dist/es/node_modules/is-typedarray/index.js +0 -51
- package/dist/es/node_modules/json3/lib/json3.js +0 -937
- package/dist/es/node_modules/ms/index.js +0 -172
- package/dist/es/node_modules/node-gyp-build/index.js +0 -21
- package/dist/es/node_modules/node-gyp-build/node-gyp-build.js +0 -222
- package/dist/es/node_modules/querystringify/index.js +0 -120
- package/dist/es/node_modules/requires-port/index.js +0 -38
- package/dist/es/node_modules/safe-buffer/index.js +0 -71
- package/dist/es/node_modules/supports-color/index.js +0 -143
- package/dist/es/node_modules/typedarray-to-buffer/index.js +0 -37
- package/dist/es/node_modules/url-parse/index.js +0 -594
- package/dist/es/node_modules/utf-8-validate/fallback.js +0 -71
- package/dist/es/node_modules/utf-8-validate/index.js +0 -21
- package/dist/es/node_modules/websocket/index.js +0 -15
- package/dist/es/node_modules/websocket/lib/Deprecation.js +0 -42
- package/dist/es/node_modules/websocket/lib/W3CWebSocket.js +0 -268
- package/dist/es/node_modules/websocket/lib/WebSocketClient.js +0 -380
- package/dist/es/node_modules/websocket/lib/WebSocketConnection.js +0 -914
- package/dist/es/node_modules/websocket/lib/WebSocketFrame.js +0 -293
- package/dist/es/node_modules/websocket/lib/WebSocketRequest.js +0 -543
- package/dist/es/node_modules/websocket/lib/WebSocketRouter.js +0 -172
- package/dist/es/node_modules/websocket/lib/WebSocketRouterRequest.js +0 -67
- package/dist/es/node_modules/websocket/lib/WebSocketServer.js +0 -272
- package/dist/es/node_modules/websocket/lib/utils.js +0 -80
- package/dist/es/node_modules/websocket/lib/version.js +0 -13
- package/dist/es/node_modules/websocket/lib/websocket.js +0 -31
- package/dist/es/node_modules/websocket/node_modules/debug/src/browser.js +0 -199
- package/dist/es/node_modules/websocket/node_modules/debug/src/debug.js +0 -215
- package/dist/es/node_modules/websocket/node_modules/debug/src/index.js +0 -25
- package/dist/es/node_modules/websocket/node_modules/debug/src/node.js +0 -266
- package/dist/es/node_modules/websocket/node_modules/ms/index.js +0 -162
- package/dist/es/node_modules/websocket/package.json.js +0 -77
- package/dist/es/node_modules/websocket/vendor/FastBufferList.js +0 -205
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/base.js +0 -202
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/client.js +0 -152
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/draft75.js +0 -128
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/draft76.js +0 -124
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/headers.js +0 -44
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi/frame.js +0 -21
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi/message.js +0 -37
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/hybi.js +0 -492
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/proxy.js +0 -108
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/server.js +0 -119
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver/stream_reader.js +0 -72
- package/dist/es/node_modules/websocket-driver/lib/websocket/driver.js +0 -47
- package/dist/es/node_modules/websocket-driver/lib/websocket/http_parser.js +0 -140
- package/dist/es/node_modules/websocket-driver/lib/websocket/streams.js +0 -150
- package/dist/es/node_modules/websocket-extensions/lib/parser.js +0 -103
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/cell.js +0 -56
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/functor.js +0 -74
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/index.js +0 -50
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/pledge.js +0 -39
- package/dist/es/node_modules/websocket-extensions/lib/pipeline/ring_buffer.js +0 -66
- package/dist/es/node_modules/websocket-extensions/lib/websocket_extensions.js +0 -165
- package/dist/es/node_modules/yaeti/index.js +0 -17
- package/dist/es/node_modules/yaeti/lib/Event.js +0 -24
- package/dist/es/node_modules/yaeti/lib/EventTarget.js +0 -130
- package/dist/es/node_modules/zt-sockjs-client/lib/entry.js +0 -14
- package/dist/es/node_modules/zt-sockjs-client/lib/event/close.js +0 -21
- package/dist/es/node_modules/zt-sockjs-client/lib/event/event.js +0 -22
- package/dist/es/node_modules/zt-sockjs-client/lib/event/eventtarget.js +0 -62
- package/dist/es/node_modules/zt-sockjs-client/lib/event/trans-message.js +0 -19
- package/dist/es/node_modules/zt-sockjs-client/lib/facade.js +0 -40
- package/dist/es/node_modules/zt-sockjs-client/lib/iframe-bootstrap.js +0 -122
- package/dist/es/node_modules/zt-sockjs-client/lib/info-ajax.js +0 -57
- package/dist/es/node_modules/zt-sockjs-client/lib/info-iframe-receiver.js +0 -50
- package/dist/es/node_modules/zt-sockjs-client/lib/info-iframe.js +0 -81
- package/dist/es/node_modules/zt-sockjs-client/lib/info-receiver.js +0 -101
- package/dist/es/node_modules/zt-sockjs-client/lib/location.js +0 -12
- package/dist/es/node_modules/zt-sockjs-client/lib/main.js +0 -413
- package/dist/es/node_modules/zt-sockjs-client/lib/shims.js +0 -449
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/driver/websocket.js +0 -5
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/driver/xhr.js +0 -80
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/eventsource.js +0 -34
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/htmlfile.js +0 -31
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/iframe.js +0 -154
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/jsonp-polling.js +0 -41
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/ajax-based.js +0 -55
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/buffered-sender.js +0 -92
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/iframe-wrap.js +0 -39
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/polling.js +0 -65
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/lib/sender-receiver.js +0 -52
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/eventsource.js +0 -69
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/htmlfile.js +0 -96
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/jsonp.js +0 -193
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/receiver/xhr.js +0 -75
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/jsonp.js +0 -104
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xdr.js +0 -113
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-cors.js +0 -19
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-fake.js +0 -28
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/sender/xhr-local.js +0 -21
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/websocket.js +0 -108
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/xdr-polling.js +0 -30
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/xdr-streaming.js +0 -38
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/xhr-polling.js +0 -40
- package/dist/es/node_modules/zt-sockjs-client/lib/transport/xhr-streaming.js +0 -50
- package/dist/es/node_modules/zt-sockjs-client/lib/transport-list.js +0 -28
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/browser.js +0 -29
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/escape.js +0 -53
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/event.js +0 -78
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/iframe.js +0 -205
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/log.js +0 -20
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/object.js +0 -24
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/random.js +0 -30
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/transport.js +0 -52
- package/dist/es/node_modules/zt-sockjs-client/lib/utils/url.js +0 -54
- package/dist/es/node_modules/zt-sockjs-client/lib/version.js +0 -11
- package/dist/es/node_modules/zt-stompjs/index.js +0 -23
- package/dist/es/node_modules/zt-stompjs/lib/stomp-node.js +0 -117
- package/dist/es/node_modules/zt-stompjs/lib/stomp.js +0 -536
- package/dist/es/stompClient.d.ts +0 -55
- package/dist/es/stompClient.js +0 -379
- package/src/stompClient.ts +0 -449
|
@@ -1,492 +0,0 @@
|
|
|
1
|
-
import '../../../../safe-buffer/index.js';
|
|
2
|
-
import require$$0 from 'crypto';
|
|
3
|
-
import require$$1 from 'util';
|
|
4
|
-
import websocket_extensions from '../../../../websocket-extensions/lib/websocket_extensions.js';
|
|
5
|
-
import base from './base.js';
|
|
6
|
-
import frame from './hybi/frame.js';
|
|
7
|
-
import message from './hybi/message.js';
|
|
8
|
-
import { exports as safeBufferExports } from '../../../../../_virtual/index9.js';
|
|
9
|
-
|
|
10
|
-
var Buffer = safeBufferExports.Buffer,
|
|
11
|
-
crypto = require$$0,
|
|
12
|
-
util = require$$1,
|
|
13
|
-
Extensions = websocket_extensions,
|
|
14
|
-
Base = base,
|
|
15
|
-
Frame = frame,
|
|
16
|
-
Message = message;
|
|
17
|
-
|
|
18
|
-
var Hybi = function(request, url, options) {
|
|
19
|
-
Base.apply(this, arguments);
|
|
20
|
-
|
|
21
|
-
this._extensions = new Extensions();
|
|
22
|
-
this._stage = 0;
|
|
23
|
-
this._masking = this._options.masking;
|
|
24
|
-
this._protocols = this._options.protocols || [];
|
|
25
|
-
this._requireMasking = this._options.requireMasking;
|
|
26
|
-
this._pingCallbacks = {};
|
|
27
|
-
|
|
28
|
-
if (typeof this._protocols === 'string')
|
|
29
|
-
this._protocols = this._protocols.split(/ *, */);
|
|
30
|
-
|
|
31
|
-
if (!this._request) return;
|
|
32
|
-
|
|
33
|
-
var protos = this._request.headers['sec-websocket-protocol'],
|
|
34
|
-
supported = this._protocols;
|
|
35
|
-
|
|
36
|
-
if (protos !== undefined) {
|
|
37
|
-
if (typeof protos === 'string') protos = protos.split(/ *, */);
|
|
38
|
-
this.protocol = protos.filter(function(p) { return supported.indexOf(p) >= 0 })[0];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
this.version = 'hybi-' + Hybi.VERSION;
|
|
42
|
-
};
|
|
43
|
-
util.inherits(Hybi, Base);
|
|
44
|
-
|
|
45
|
-
Hybi.VERSION = '13';
|
|
46
|
-
|
|
47
|
-
Hybi.mask = function(payload, mask, offset) {
|
|
48
|
-
if (!mask || mask.length === 0) return payload;
|
|
49
|
-
offset = offset || 0;
|
|
50
|
-
|
|
51
|
-
for (var i = 0, n = payload.length - offset; i < n; i++) {
|
|
52
|
-
payload[offset + i] = payload[offset + i] ^ mask[i % 4];
|
|
53
|
-
}
|
|
54
|
-
return payload;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
Hybi.generateAccept = function(key) {
|
|
58
|
-
var sha1 = crypto.createHash('sha1');
|
|
59
|
-
sha1.update(key + Hybi.GUID);
|
|
60
|
-
return sha1.digest('base64');
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
Hybi.GUID = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
|
|
64
|
-
|
|
65
|
-
var instance = {
|
|
66
|
-
FIN: 0x80,
|
|
67
|
-
MASK: 0x80,
|
|
68
|
-
RSV1: 0x40,
|
|
69
|
-
RSV2: 0x20,
|
|
70
|
-
RSV3: 0x10,
|
|
71
|
-
OPCODE: 0x0F,
|
|
72
|
-
LENGTH: 0x7F,
|
|
73
|
-
|
|
74
|
-
OPCODES: {
|
|
75
|
-
continuation: 0,
|
|
76
|
-
text: 1,
|
|
77
|
-
binary: 2,
|
|
78
|
-
close: 8,
|
|
79
|
-
ping: 9,
|
|
80
|
-
pong: 10
|
|
81
|
-
},
|
|
82
|
-
|
|
83
|
-
OPCODE_CODES: [0, 1, 2, 8, 9, 10],
|
|
84
|
-
MESSAGE_OPCODES: [0, 1, 2],
|
|
85
|
-
OPENING_OPCODES: [1, 2],
|
|
86
|
-
|
|
87
|
-
ERRORS: {
|
|
88
|
-
normal_closure: 1000,
|
|
89
|
-
going_away: 1001,
|
|
90
|
-
protocol_error: 1002,
|
|
91
|
-
unacceptable: 1003,
|
|
92
|
-
encoding_error: 1007,
|
|
93
|
-
policy_violation: 1008,
|
|
94
|
-
too_large: 1009,
|
|
95
|
-
extension_error: 1010,
|
|
96
|
-
unexpected_condition: 1011
|
|
97
|
-
},
|
|
98
|
-
|
|
99
|
-
ERROR_CODES: [1000, 1001, 1002, 1003, 1007, 1008, 1009, 1010, 1011],
|
|
100
|
-
DEFAULT_ERROR_CODE: 1000,
|
|
101
|
-
MIN_RESERVED_ERROR: 3000,
|
|
102
|
-
MAX_RESERVED_ERROR: 4999,
|
|
103
|
-
|
|
104
|
-
// http://www.w3.org/International/questions/qa-forms-utf-8.en.php
|
|
105
|
-
UTF8_MATCH: /^([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$/,
|
|
106
|
-
|
|
107
|
-
addExtension: function(extension) {
|
|
108
|
-
this._extensions.add(extension);
|
|
109
|
-
return true;
|
|
110
|
-
},
|
|
111
|
-
|
|
112
|
-
parse: function(chunk) {
|
|
113
|
-
this._reader.put(chunk);
|
|
114
|
-
var buffer = true;
|
|
115
|
-
while (buffer) {
|
|
116
|
-
switch (this._stage) {
|
|
117
|
-
case 0:
|
|
118
|
-
buffer = this._reader.read(1);
|
|
119
|
-
if (buffer) this._parseOpcode(buffer[0]);
|
|
120
|
-
break;
|
|
121
|
-
|
|
122
|
-
case 1:
|
|
123
|
-
buffer = this._reader.read(1);
|
|
124
|
-
if (buffer) this._parseLength(buffer[0]);
|
|
125
|
-
break;
|
|
126
|
-
|
|
127
|
-
case 2:
|
|
128
|
-
buffer = this._reader.read(this._frame.lengthBytes);
|
|
129
|
-
if (buffer) this._parseExtendedLength(buffer);
|
|
130
|
-
break;
|
|
131
|
-
|
|
132
|
-
case 3:
|
|
133
|
-
buffer = this._reader.read(4);
|
|
134
|
-
if (buffer) {
|
|
135
|
-
this._stage = 4;
|
|
136
|
-
this._frame.maskingKey = buffer;
|
|
137
|
-
}
|
|
138
|
-
break;
|
|
139
|
-
|
|
140
|
-
case 4:
|
|
141
|
-
buffer = this._reader.read(this._frame.length);
|
|
142
|
-
if (buffer) {
|
|
143
|
-
this._stage = 0;
|
|
144
|
-
this._emitFrame(buffer);
|
|
145
|
-
}
|
|
146
|
-
break;
|
|
147
|
-
|
|
148
|
-
default:
|
|
149
|
-
buffer = null;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
|
|
154
|
-
text: function(message) {
|
|
155
|
-
if (this.readyState > 1) return false;
|
|
156
|
-
return this.frame(message, 'text');
|
|
157
|
-
},
|
|
158
|
-
|
|
159
|
-
binary: function(message) {
|
|
160
|
-
if (this.readyState > 1) return false;
|
|
161
|
-
return this.frame(message, 'binary');
|
|
162
|
-
},
|
|
163
|
-
|
|
164
|
-
ping: function(message, callback) {
|
|
165
|
-
if (this.readyState > 1) return false;
|
|
166
|
-
message = message || '';
|
|
167
|
-
if (callback) this._pingCallbacks[message] = callback;
|
|
168
|
-
return this.frame(message, 'ping');
|
|
169
|
-
},
|
|
170
|
-
|
|
171
|
-
pong: function(message) {
|
|
172
|
-
if (this.readyState > 1) return false;
|
|
173
|
-
message = message ||'';
|
|
174
|
-
return this.frame(message, 'pong');
|
|
175
|
-
},
|
|
176
|
-
|
|
177
|
-
close: function(reason, code) {
|
|
178
|
-
reason = reason || '';
|
|
179
|
-
code = code || this.ERRORS.normal_closure;
|
|
180
|
-
|
|
181
|
-
if (this.readyState <= 0) {
|
|
182
|
-
this.readyState = 3;
|
|
183
|
-
this.emit('close', new Base.CloseEvent(code, reason));
|
|
184
|
-
return true;
|
|
185
|
-
} else if (this.readyState === 1) {
|
|
186
|
-
this.readyState = 2;
|
|
187
|
-
this._extensions.close(function() { this.frame(reason, 'close', code); }, this);
|
|
188
|
-
return true;
|
|
189
|
-
} else {
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
},
|
|
193
|
-
|
|
194
|
-
frame: function(buffer, type, code) {
|
|
195
|
-
if (this.readyState <= 0) return this._queue([buffer, type, code]);
|
|
196
|
-
if (this.readyState > 2) return false;
|
|
197
|
-
|
|
198
|
-
if (buffer instanceof Array) buffer = Buffer.from(buffer);
|
|
199
|
-
if (typeof buffer === 'number') buffer = buffer.toString();
|
|
200
|
-
|
|
201
|
-
var message = new Message(),
|
|
202
|
-
isText = (typeof buffer === 'string'),
|
|
203
|
-
payload, copy;
|
|
204
|
-
|
|
205
|
-
message.rsv1 = message.rsv2 = message.rsv3 = false;
|
|
206
|
-
message.opcode = this.OPCODES[type || (isText ? 'text' : 'binary')];
|
|
207
|
-
|
|
208
|
-
payload = isText ? Buffer.from(buffer, 'utf8') : buffer;
|
|
209
|
-
|
|
210
|
-
if (code) {
|
|
211
|
-
copy = payload;
|
|
212
|
-
payload = Buffer.allocUnsafe(2 + copy.length);
|
|
213
|
-
payload.writeUInt16BE(code, 0);
|
|
214
|
-
copy.copy(payload, 2);
|
|
215
|
-
}
|
|
216
|
-
message.data = payload;
|
|
217
|
-
|
|
218
|
-
var onMessageReady = function(message) {
|
|
219
|
-
var frame = new Frame();
|
|
220
|
-
|
|
221
|
-
frame.final = true;
|
|
222
|
-
frame.rsv1 = message.rsv1;
|
|
223
|
-
frame.rsv2 = message.rsv2;
|
|
224
|
-
frame.rsv3 = message.rsv3;
|
|
225
|
-
frame.opcode = message.opcode;
|
|
226
|
-
frame.masked = !!this._masking;
|
|
227
|
-
frame.length = message.data.length;
|
|
228
|
-
frame.payload = message.data;
|
|
229
|
-
|
|
230
|
-
if (frame.masked) frame.maskingKey = crypto.randomBytes(4);
|
|
231
|
-
|
|
232
|
-
this._sendFrame(frame);
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
if (this.MESSAGE_OPCODES.indexOf(message.opcode) >= 0)
|
|
236
|
-
this._extensions.processOutgoingMessage(message, function(error, message) {
|
|
237
|
-
if (error) return this._fail('extension_error', error.message);
|
|
238
|
-
onMessageReady.call(this, message);
|
|
239
|
-
}, this);
|
|
240
|
-
else
|
|
241
|
-
onMessageReady.call(this, message);
|
|
242
|
-
|
|
243
|
-
return true;
|
|
244
|
-
},
|
|
245
|
-
|
|
246
|
-
_sendFrame: function(frame) {
|
|
247
|
-
var length = frame.length,
|
|
248
|
-
header = (length <= 125) ? 2 : (length <= 65535 ? 4 : 10),
|
|
249
|
-
offset = header + (frame.masked ? 4 : 0),
|
|
250
|
-
buffer = Buffer.allocUnsafe(offset + length),
|
|
251
|
-
masked = frame.masked ? this.MASK : 0;
|
|
252
|
-
|
|
253
|
-
buffer[0] = (frame.final ? this.FIN : 0) |
|
|
254
|
-
(frame.rsv1 ? this.RSV1 : 0) |
|
|
255
|
-
(frame.rsv2 ? this.RSV2 : 0) |
|
|
256
|
-
(frame.rsv3 ? this.RSV3 : 0) |
|
|
257
|
-
frame.opcode;
|
|
258
|
-
|
|
259
|
-
if (length <= 125) {
|
|
260
|
-
buffer[1] = masked | length;
|
|
261
|
-
} else if (length <= 65535) {
|
|
262
|
-
buffer[1] = masked | 126;
|
|
263
|
-
buffer.writeUInt16BE(length, 2);
|
|
264
|
-
} else {
|
|
265
|
-
buffer[1] = masked | 127;
|
|
266
|
-
buffer.writeUInt32BE(Math.floor(length / 0x100000000), 2);
|
|
267
|
-
buffer.writeUInt32BE(length % 0x100000000, 6);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
frame.payload.copy(buffer, offset);
|
|
271
|
-
|
|
272
|
-
if (frame.masked) {
|
|
273
|
-
frame.maskingKey.copy(buffer, header);
|
|
274
|
-
Hybi.mask(buffer, frame.maskingKey, offset);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
this._write(buffer);
|
|
278
|
-
},
|
|
279
|
-
|
|
280
|
-
_handshakeResponse: function() {
|
|
281
|
-
var secKey = this._request.headers['sec-websocket-key'],
|
|
282
|
-
version = this._request.headers['sec-websocket-version'];
|
|
283
|
-
|
|
284
|
-
if (version !== Hybi.VERSION)
|
|
285
|
-
throw new Error('Unsupported WebSocket version: ' + version);
|
|
286
|
-
|
|
287
|
-
if (typeof secKey !== 'string')
|
|
288
|
-
throw new Error('Missing handshake request header: Sec-WebSocket-Key');
|
|
289
|
-
|
|
290
|
-
this._headers.set('Upgrade', 'websocket');
|
|
291
|
-
this._headers.set('Connection', 'Upgrade');
|
|
292
|
-
this._headers.set('Sec-WebSocket-Accept', Hybi.generateAccept(secKey));
|
|
293
|
-
|
|
294
|
-
if (this.protocol) this._headers.set('Sec-WebSocket-Protocol', this.protocol);
|
|
295
|
-
|
|
296
|
-
var extensions = this._extensions.generateResponse(this._request.headers['sec-websocket-extensions']);
|
|
297
|
-
if (extensions) this._headers.set('Sec-WebSocket-Extensions', extensions);
|
|
298
|
-
|
|
299
|
-
var start = 'HTTP/1.1 101 Switching Protocols',
|
|
300
|
-
headers = [start, this._headers.toString(), ''];
|
|
301
|
-
|
|
302
|
-
return Buffer.from(headers.join('\r\n'), 'utf8');
|
|
303
|
-
},
|
|
304
|
-
|
|
305
|
-
_shutdown: function(code, reason, error) {
|
|
306
|
-
delete this._frame;
|
|
307
|
-
delete this._message;
|
|
308
|
-
this._stage = 5;
|
|
309
|
-
|
|
310
|
-
var sendCloseFrame = (this.readyState === 1);
|
|
311
|
-
this.readyState = 2;
|
|
312
|
-
|
|
313
|
-
this._extensions.close(function() {
|
|
314
|
-
if (sendCloseFrame) this.frame(reason, 'close', code);
|
|
315
|
-
this.readyState = 3;
|
|
316
|
-
if (error) this.emit('error', new Error(reason));
|
|
317
|
-
this.emit('close', new Base.CloseEvent(code, reason));
|
|
318
|
-
}, this);
|
|
319
|
-
},
|
|
320
|
-
|
|
321
|
-
_fail: function(type, message) {
|
|
322
|
-
if (this.readyState > 1) return;
|
|
323
|
-
this._shutdown(this.ERRORS[type], message, true);
|
|
324
|
-
},
|
|
325
|
-
|
|
326
|
-
_parseOpcode: function(octet) {
|
|
327
|
-
var rsvs = [this.RSV1, this.RSV2, this.RSV3].map(function(rsv) {
|
|
328
|
-
return (octet & rsv) === rsv;
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
var frame = this._frame = new Frame();
|
|
332
|
-
|
|
333
|
-
frame.final = (octet & this.FIN) === this.FIN;
|
|
334
|
-
frame.rsv1 = rsvs[0];
|
|
335
|
-
frame.rsv2 = rsvs[1];
|
|
336
|
-
frame.rsv3 = rsvs[2];
|
|
337
|
-
frame.opcode = (octet & this.OPCODE);
|
|
338
|
-
|
|
339
|
-
this._stage = 1;
|
|
340
|
-
|
|
341
|
-
if (!this._extensions.validFrameRsv(frame))
|
|
342
|
-
return this._fail('protocol_error',
|
|
343
|
-
'One or more reserved bits are on: reserved1 = ' + (frame.rsv1 ? 1 : 0) +
|
|
344
|
-
', reserved2 = ' + (frame.rsv2 ? 1 : 0) +
|
|
345
|
-
', reserved3 = ' + (frame.rsv3 ? 1 : 0));
|
|
346
|
-
|
|
347
|
-
if (this.OPCODE_CODES.indexOf(frame.opcode) < 0)
|
|
348
|
-
return this._fail('protocol_error', 'Unrecognized frame opcode: ' + frame.opcode);
|
|
349
|
-
|
|
350
|
-
if (this.MESSAGE_OPCODES.indexOf(frame.opcode) < 0 && !frame.final)
|
|
351
|
-
return this._fail('protocol_error', 'Received fragmented control frame: opcode = ' + frame.opcode);
|
|
352
|
-
|
|
353
|
-
if (this._message && this.OPENING_OPCODES.indexOf(frame.opcode) >= 0)
|
|
354
|
-
return this._fail('protocol_error', 'Received new data frame but previous continuous frame is unfinished');
|
|
355
|
-
},
|
|
356
|
-
|
|
357
|
-
_parseLength: function(octet) {
|
|
358
|
-
var frame = this._frame;
|
|
359
|
-
frame.masked = (octet & this.MASK) === this.MASK;
|
|
360
|
-
frame.length = (octet & this.LENGTH);
|
|
361
|
-
|
|
362
|
-
if (frame.length >= 0 && frame.length <= 125) {
|
|
363
|
-
this._stage = frame.masked ? 3 : 4;
|
|
364
|
-
if (!this._checkFrameLength()) return;
|
|
365
|
-
} else {
|
|
366
|
-
this._stage = 2;
|
|
367
|
-
frame.lengthBytes = (frame.length === 126 ? 2 : 8);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
if (this._requireMasking && !frame.masked)
|
|
371
|
-
return this._fail('unacceptable', 'Received unmasked frame but masking is required');
|
|
372
|
-
},
|
|
373
|
-
|
|
374
|
-
_parseExtendedLength: function(buffer) {
|
|
375
|
-
var frame = this._frame;
|
|
376
|
-
frame.length = this._readUInt(buffer);
|
|
377
|
-
|
|
378
|
-
this._stage = frame.masked ? 3 : 4;
|
|
379
|
-
|
|
380
|
-
if (this.MESSAGE_OPCODES.indexOf(frame.opcode) < 0 && frame.length > 125)
|
|
381
|
-
return this._fail('protocol_error', 'Received control frame having too long payload: ' + frame.length);
|
|
382
|
-
|
|
383
|
-
if (!this._checkFrameLength()) return;
|
|
384
|
-
},
|
|
385
|
-
|
|
386
|
-
_checkFrameLength: function() {
|
|
387
|
-
var length = this._message ? this._message.length : 0;
|
|
388
|
-
|
|
389
|
-
if (length + this._frame.length > this._maxLength) {
|
|
390
|
-
this._fail('too_large', 'WebSocket frame length too large');
|
|
391
|
-
return false;
|
|
392
|
-
} else {
|
|
393
|
-
return true;
|
|
394
|
-
}
|
|
395
|
-
},
|
|
396
|
-
|
|
397
|
-
_emitFrame: function(buffer) {
|
|
398
|
-
var frame = this._frame,
|
|
399
|
-
payload = frame.payload = Hybi.mask(buffer, frame.maskingKey),
|
|
400
|
-
opcode = frame.opcode,
|
|
401
|
-
message,
|
|
402
|
-
code, reason,
|
|
403
|
-
callbacks, callback;
|
|
404
|
-
|
|
405
|
-
delete this._frame;
|
|
406
|
-
|
|
407
|
-
if (opcode === this.OPCODES.continuation) {
|
|
408
|
-
if (!this._message) return this._fail('protocol_error', 'Received unexpected continuation frame');
|
|
409
|
-
this._message.pushFrame(frame);
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
if (opcode === this.OPCODES.text || opcode === this.OPCODES.binary) {
|
|
413
|
-
this._message = new Message();
|
|
414
|
-
this._message.pushFrame(frame);
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
if (frame.final && this.MESSAGE_OPCODES.indexOf(opcode) >= 0)
|
|
418
|
-
return this._emitMessage(this._message);
|
|
419
|
-
|
|
420
|
-
if (opcode === this.OPCODES.close) {
|
|
421
|
-
code = (payload.length >= 2) ? payload.readUInt16BE(0) : null;
|
|
422
|
-
reason = (payload.length > 2) ? this._encode(payload.slice(2)) : null;
|
|
423
|
-
|
|
424
|
-
if (!(payload.length === 0) &&
|
|
425
|
-
!(code !== null && code >= this.MIN_RESERVED_ERROR && code <= this.MAX_RESERVED_ERROR) &&
|
|
426
|
-
this.ERROR_CODES.indexOf(code) < 0)
|
|
427
|
-
code = this.ERRORS.protocol_error;
|
|
428
|
-
|
|
429
|
-
if (payload.length > 125 || (payload.length > 2 && !reason))
|
|
430
|
-
code = this.ERRORS.protocol_error;
|
|
431
|
-
|
|
432
|
-
this._shutdown(code || this.DEFAULT_ERROR_CODE, reason || '');
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
if (opcode === this.OPCODES.ping) {
|
|
436
|
-
this.frame(payload, 'pong');
|
|
437
|
-
this.emit('ping', new Base.PingEvent(payload.toString()));
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
if (opcode === this.OPCODES.pong) {
|
|
441
|
-
callbacks = this._pingCallbacks;
|
|
442
|
-
message = this._encode(payload);
|
|
443
|
-
callback = callbacks[message];
|
|
444
|
-
|
|
445
|
-
delete callbacks[message];
|
|
446
|
-
if (callback) callback();
|
|
447
|
-
|
|
448
|
-
this.emit('pong', new Base.PongEvent(payload.toString()));
|
|
449
|
-
}
|
|
450
|
-
},
|
|
451
|
-
|
|
452
|
-
_emitMessage: function(message) {
|
|
453
|
-
var message = this._message;
|
|
454
|
-
message.read();
|
|
455
|
-
|
|
456
|
-
delete this._message;
|
|
457
|
-
|
|
458
|
-
this._extensions.processIncomingMessage(message, function(error, message) {
|
|
459
|
-
if (error) return this._fail('extension_error', error.message);
|
|
460
|
-
|
|
461
|
-
var payload = message.data;
|
|
462
|
-
if (message.opcode === this.OPCODES.text) payload = this._encode(payload);
|
|
463
|
-
|
|
464
|
-
if (payload === null)
|
|
465
|
-
return this._fail('encoding_error', 'Could not decode a text frame as UTF-8');
|
|
466
|
-
else
|
|
467
|
-
this.emit('message', new Base.MessageEvent(payload));
|
|
468
|
-
}, this);
|
|
469
|
-
},
|
|
470
|
-
|
|
471
|
-
_encode: function(buffer) {
|
|
472
|
-
try {
|
|
473
|
-
var string = buffer.toString('binary', 0, buffer.length);
|
|
474
|
-
if (!this.UTF8_MATCH.test(string)) return null;
|
|
475
|
-
} catch (e) {}
|
|
476
|
-
return buffer.toString('utf8', 0, buffer.length);
|
|
477
|
-
},
|
|
478
|
-
|
|
479
|
-
_readUInt: function(buffer) {
|
|
480
|
-
if (buffer.length === 2) return buffer.readUInt16BE(0);
|
|
481
|
-
|
|
482
|
-
return buffer.readUInt32BE(0) * 0x100000000 +
|
|
483
|
-
buffer.readUInt32BE(4);
|
|
484
|
-
}
|
|
485
|
-
};
|
|
486
|
-
|
|
487
|
-
for (var key in instance)
|
|
488
|
-
Hybi.prototype[key] = instance[key];
|
|
489
|
-
|
|
490
|
-
var hybi = Hybi;
|
|
491
|
-
|
|
492
|
-
export { hybi as default };
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import '../../../../safe-buffer/index.js';
|
|
2
|
-
import require$$0 from 'stream';
|
|
3
|
-
import require$$2 from 'url';
|
|
4
|
-
import require$$1 from 'util';
|
|
5
|
-
import base from './base.js';
|
|
6
|
-
import { __require as requireHeaders } from './headers.js';
|
|
7
|
-
import http_parser from '../http_parser.js';
|
|
8
|
-
import { exports as safeBufferExports } from '../../../../../_virtual/index9.js';
|
|
9
|
-
|
|
10
|
-
var Buffer = safeBufferExports.Buffer,
|
|
11
|
-
Stream = require$$0.Stream,
|
|
12
|
-
url = require$$2,
|
|
13
|
-
util = require$$1,
|
|
14
|
-
Base = base,
|
|
15
|
-
Headers = requireHeaders(),
|
|
16
|
-
HttpParser = http_parser;
|
|
17
|
-
|
|
18
|
-
var PORTS = { 'ws:': 80, 'wss:': 443 };
|
|
19
|
-
|
|
20
|
-
var Proxy = function(client, origin, options) {
|
|
21
|
-
this._client = client;
|
|
22
|
-
this._http = new HttpParser('response');
|
|
23
|
-
this._origin = (typeof client.url === 'object') ? client.url : url.parse(client.url);
|
|
24
|
-
this._url = (typeof origin === 'object') ? origin : url.parse(origin);
|
|
25
|
-
this._options = options || {};
|
|
26
|
-
this._state = 0;
|
|
27
|
-
|
|
28
|
-
this.readable = this.writable = true;
|
|
29
|
-
this._paused = false;
|
|
30
|
-
|
|
31
|
-
this._headers = new Headers();
|
|
32
|
-
this._headers.set('Host', this._origin.host);
|
|
33
|
-
this._headers.set('Connection', 'keep-alive');
|
|
34
|
-
this._headers.set('Proxy-Connection', 'keep-alive');
|
|
35
|
-
|
|
36
|
-
var auth = this._url.auth && Buffer.from(this._url.auth, 'utf8').toString('base64');
|
|
37
|
-
if (auth) this._headers.set('Proxy-Authorization', 'Basic ' + auth);
|
|
38
|
-
};
|
|
39
|
-
util.inherits(Proxy, Stream);
|
|
40
|
-
|
|
41
|
-
var instance = {
|
|
42
|
-
setHeader: function(name, value) {
|
|
43
|
-
if (this._state !== 0) return false;
|
|
44
|
-
this._headers.set(name, value);
|
|
45
|
-
return true;
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
start: function() {
|
|
49
|
-
if (this._state !== 0) return false;
|
|
50
|
-
this._state = 1;
|
|
51
|
-
|
|
52
|
-
var origin = this._origin,
|
|
53
|
-
port = origin.port || PORTS[origin.protocol],
|
|
54
|
-
start = 'CONNECT ' + origin.hostname + ':' + port + ' HTTP/1.1';
|
|
55
|
-
|
|
56
|
-
var headers = [start, this._headers.toString(), ''];
|
|
57
|
-
|
|
58
|
-
this.emit('data', Buffer.from(headers.join('\r\n'), 'utf8'));
|
|
59
|
-
return true;
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
pause: function() {
|
|
63
|
-
this._paused = true;
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
resume: function() {
|
|
67
|
-
this._paused = false;
|
|
68
|
-
this.emit('drain');
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
write: function(chunk) {
|
|
72
|
-
if (!this.writable) return false;
|
|
73
|
-
|
|
74
|
-
this._http.parse(chunk);
|
|
75
|
-
if (!this._http.isComplete()) return !this._paused;
|
|
76
|
-
|
|
77
|
-
this.statusCode = this._http.statusCode;
|
|
78
|
-
this.headers = this._http.headers;
|
|
79
|
-
|
|
80
|
-
if (this.statusCode === 200) {
|
|
81
|
-
this.emit('connect', new Base.ConnectEvent());
|
|
82
|
-
} else {
|
|
83
|
-
var message = "Can't establish a connection to the server at " + this._origin.href;
|
|
84
|
-
this.emit('error', new Error(message));
|
|
85
|
-
}
|
|
86
|
-
this.end();
|
|
87
|
-
return !this._paused;
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
end: function(chunk) {
|
|
91
|
-
if (!this.writable) return;
|
|
92
|
-
if (chunk !== undefined) this.write(chunk);
|
|
93
|
-
this.readable = this.writable = false;
|
|
94
|
-
this.emit('close');
|
|
95
|
-
this.emit('end');
|
|
96
|
-
},
|
|
97
|
-
|
|
98
|
-
destroy: function() {
|
|
99
|
-
this.end();
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
for (var key in instance)
|
|
104
|
-
Proxy.prototype[key] = instance[key];
|
|
105
|
-
|
|
106
|
-
var proxy = Proxy;
|
|
107
|
-
|
|
108
|
-
export { proxy as default };
|