Skip to content

Commit 0e8d891

Browse files
committed
Merge branch 'main' into transport-headers
2 parents d694d9e + 11da80e commit 0e8d891

File tree

14 files changed

+8100
-13726
lines changed

14 files changed

+8100
-13726
lines changed

.github/workflows/stale.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ jobs:
1717
days-before-close: 5
1818
stale-issue-message: 'This issue has been inactive for 30 days. It will be in closed in 5 days without any new activity.'
1919
stale-issue-label: 'no-issue-activity'
20-
exempt-issue-labels: 'discussion,work-in-progress'
20+
any-of-labels: 'inactive'

Changelog.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
1.6.2
2+
==
3+
* Added ECMAScript build with TypeScript types.
4+
15
1.6.1
26
==
37
Fixes

dist/sockjs-esm.js

+3,618
Large diffs are not rendered by default.

dist/sockjs.d.ts

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// index.d.ts
2+
declare module "sockjs-client" {
3+
const SockJS: {
4+
new(url: string, _reserved?: any, options?: SockJS.Options): WebSocket;
5+
(url: string, _reserved?: any, options?: SockJS.Options): WebSocket;
6+
prototype: WebSocket;
7+
CONNECTING: SockJS.CONNECTING;
8+
OPEN: SockJS.OPEN;
9+
CLOSING: SockJS.CLOSING;
10+
CLOSED: SockJS.CLOSED;
11+
};
12+
13+
namespace SockJS {
14+
type CONNECTING = 0;
15+
type OPEN = 1;
16+
type CLOSING = 2;
17+
type CLOSED = 3;
18+
19+
type State = CONNECTING | OPEN | CLOSING | CLOSED;
20+
21+
interface BaseEvent extends Event {
22+
type: string;
23+
}
24+
25+
type OpenEvent = BaseEvent;
26+
27+
interface CloseEvent extends BaseEvent {
28+
code: number;
29+
reason: string;
30+
wasClean: boolean;
31+
}
32+
33+
interface MessageEvent extends BaseEvent {
34+
data: string;
35+
}
36+
37+
type SessionGenerator = () => string;
38+
39+
interface Options {
40+
server?: string | undefined;
41+
sessionId?: number | SessionGenerator | undefined;
42+
transports?: string | string[] | undefined;
43+
timeout?: number | undefined;
44+
}
45+
}
46+
47+
export = SockJS;
48+
}

lib/info-ajax.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function InfoAjax(url, AjaxObject, opts) {
3333
info = {};
3434
}
3535
}
36-
self.emit('finish', info, rtt, headers);
36+
self.emit('finish', info, rtt, status, headers);
3737
self.removeAllListeners();
3838
});
3939
}

lib/info-receiver.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ InfoReceiver.prototype.doXhr = function(baseUrl, urlInfo, transportOptions) {
6161
self.emit('finish');
6262
}, InfoReceiver.timeout);
6363

64-
this.xo.once('finish', function(info, rtt, headers) {
65-
debug('finish', info, rtt, headers);
64+
this.xo.once('finish', function(info, rtt, status, headers) {
65+
debug('finish', info, rtt, status, headers);
6666
self._cleanup(true);
67-
self.emit('finish', info, rtt, headers || {});
67+
self.emit('finish', info, rtt, status, headers || {});
6868
});
6969
};
7070

lib/main.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -174,12 +174,12 @@ SockJS.OPEN = 1;
174174
SockJS.CLOSING = 2;
175175
SockJS.CLOSED = 3;
176176

177-
SockJS.prototype._receiveInfo = function(info, rtt, headers) {
177+
SockJS.prototype._receiveInfo = function(info, rtt, status, headers) {
178178
debug('_receiveInfo', rtt);
179179
this.dispatchEvent(new InfoEvent(info, rtt, headers));
180180
this._ir = null;
181181
if (!info) {
182-
this._close(1002, 'Cannot connect to server');
182+
this._close(status || 1002, 'Cannot connect to server');
183183
return;
184184
}
185185

@@ -299,9 +299,11 @@ SockJS.prototype._transportMessage = function(msg) {
299299
SockJS.prototype._transportClose = function(code, reason) {
300300
debug('_transportClose', this.transport, code, reason);
301301
if (this._transport) {
302+
clearTimeout(this._transportTimeoutId);
302303
this._transport.removeAllListeners();
303304
this._transport = null;
304305
this.transport = null;
306+
this._transportTimeoutId = null;
305307
}
306308

307309
if (!userSetCode(code) && code !== 2000 && this.readyState === SockJS.CONNECTING) {

lib/transport/receiver/eventsource.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ if (process.env.NODE_ENV !== 'production') {
1010
debug = require('debug')('sockjs-client:receiver:eventsource');
1111
}
1212

13+
function decodeURISafe(s) {
14+
return decodeURI(s.replace(/%(?![0-9][0-9a-fA-F]+)/g, '%25'));
15+
}
16+
1317
function EventSourceReceiver(url) {
1418
debug(url);
1519
EventEmitter.call(this);
@@ -18,7 +22,7 @@ function EventSourceReceiver(url) {
1822
var es = this.es = new EventSourceDriver(url);
1923
es.onmessage = function(e) {
2024
debug('message', e.data);
21-
self.emit('message', decodeURI(e.data));
25+
self.emit('message', decodeURISafe(e.data));
2226
};
2327
es.onerror = function(e) {
2428
debug('error', es.readyState, e);

lib/version.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
module.exports = '1.6.1';
1+
module.exports = '1.6.2';

0 commit comments

Comments
 (0)