Skip to content

Commit 6c5ee86

Browse files
committed
Rework types
1 parent 5a5ad5f commit 6c5ee86

File tree

3 files changed

+216
-226
lines changed

3 files changed

+216
-226
lines changed

lib/sse.js

+138-123
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,124 @@
1818
* limitations under the License.
1919
*/
2020

21+
/**
22+
* @typedef { {[key: string]: string} } SSEHeaders
23+
*/
24+
25+
/**
26+
* @typedef {Object} SSEOptions
27+
* @property {SSEHeaders} [headers] - headers
28+
* @property {string} [payload] - payload as a string
29+
* @property {string} [method] - HTTP Method
30+
* @property {boolean} [withCredentials] - flag, if credentials needed
31+
* @property {boolean} [start] - flag, if streaming should start automatically
32+
* @property {boolean} [debug] - debugging flag
33+
*/
34+
35+
/**
36+
* @typedef {Object} _SSEvent
37+
* @property {string} id
38+
* @property {string} data
39+
*/
40+
41+
/**
42+
* @typedef {Object} _ReadyStateEvent
43+
* @property {number} readyState
44+
*/
45+
46+
/**
47+
* @typedef {Object} _ErrorEVent
48+
* @property {number} responseCode
49+
* @property {string} data
50+
*/
51+
52+
/**
53+
* @typedef {Event & _SSEvent} SSEvent
54+
*/
55+
56+
/**
57+
* @typedef {SSEvent & _ReadyStateEvent} ReadyStateEvent
58+
*/
59+
60+
/**
61+
* @typedef {SSEvent & _ErrorEVent} ErrorEvent
62+
*/
63+
64+
/**
65+
* @callback Stream
66+
* @returns {void}
67+
*/
68+
69+
/**
70+
* @callback Close
71+
* @returns {void}
72+
*/
73+
74+
/**
75+
* @callback OnMessage
76+
* @param {SSEvent} event
77+
* @returns {void}
78+
*/
79+
80+
/**
81+
* @callback OnOpen
82+
* @param {SSEvent} event
83+
* @returns {void}
84+
*/
85+
86+
/**
87+
* @callback OnLoad
88+
* @param {SSEvent} event
89+
* @returns {void}
90+
*/
91+
92+
/**
93+
* @callback OnReadyStateChange
94+
* @param {ReadyStateEvent} event
95+
* @returns {void}
96+
*/
97+
98+
/**
99+
* @callback OnError
100+
* @param {ErrorEvent} event
101+
* @returns {void}
102+
*/
103+
104+
/**
105+
* @callback OnAbort
106+
* @param {SSEvent} event
107+
* @returns {void}
108+
*/
109+
110+
/**
111+
* @typedef {Object} SSE
112+
* @property {SSEHeaders} headers - headers
113+
* @property {string} payload - Payload to send in the XHR request
114+
* @property {string} method - HTTP Method
115+
* @property {boolean} withCredentials - flag, if credentials needed
116+
* @property {boolean} debug - debugging flag
117+
* @property {string} FIELD_SEPARATOR
118+
* @property {Record<string, Function[]>} listeners
119+
* @property {XMLHttpRequest | null} xhr
120+
* @property {number} readyState
121+
* @property {number} progress
122+
* @property {string} chunk
123+
* @property {-1} INITIALIZING
124+
* @property {0} CONNECTING
125+
* @property {1} OPEN
126+
* @property {2} CLOSED
127+
* @property {AddEventListener} addEventListener
128+
* @property {RemoveEventListener} removeEventListener
129+
* @property {DispatchEvent} dispatchEvent
130+
* @property {Stream} stream
131+
* @property {Close} close
132+
* @property {OnMessage} onmessage
133+
* @property {OnOpen} onopen
134+
* @property {OnLoad} onload
135+
* @property {OnReadyStateChange} onreadystatechange
136+
* @property {OnError} onerror
137+
* @property {OnAbort} onabort
138+
*/
21139

22140
/**
23141
* @type SSE
@@ -58,7 +176,9 @@ var SSE = function (url, options) {
58176
this.lastEventId = '';
59177

60178
/**
61-
* @type AddEventListener
179+
* @param {string} type
180+
* @param {EventListener} listener
181+
* @returns {void}
62182
*/
63183
this.addEventListener = function(type, listener) {
64184
if (this.listeners[type] === undefined) {
@@ -71,7 +191,9 @@ var SSE = function (url, options) {
71191
};
72192

73193
/**
74-
* @type RemoveEventListener
194+
* @param {string} type
195+
* @param {EventListener} listener
196+
* @returns {void}
75197
*/
76198
this.removeEventListener = function(type, listener) {
77199
if (this.listeners[type] === undefined) {
@@ -92,7 +214,8 @@ var SSE = function (url, options) {
92214
};
93215

94216
/**
95-
* @type DispatchEvent
217+
* @param {Event} e
218+
* @returns {boolean}
96219
*/
97220
this.dispatchEvent = function(e) {
98221
if (!e) {
@@ -137,6 +260,7 @@ var SSE = function (url, options) {
137260
this.dispatchEvent(event);
138261
};
139262

263+
/** @private */
140264
this._onStreamFailure = function(e) {
141265
const event = new CustomEvent('error');
142266
event.responseCode = e.currentTarget.status;
@@ -145,6 +269,7 @@ var SSE = function (url, options) {
145269
this._markClosed();
146270
}
147271

272+
/** @private */
148273
this._onStreamAbort = function() {
149274
this.dispatchEvent(new CustomEvent('abort'));
150275
this._markClosed();
@@ -191,6 +316,8 @@ var SSE = function (url, options) {
191316
};
192317

193318
/**
319+
* @private
320+
*
194321
* Parse a received SSE event chunk into a constructed event object.
195322
*
196323
* Reference: https://html.spec.whatwg.org/multipage/server-sent-events.html#dispatchMessage
@@ -245,6 +372,7 @@ var SSE = function (url, options) {
245372
return event;
246373
};
247374

375+
/** @private */
248376
this._onReadyStateChange = function() {
249377
if (!this.xhr) {
250378
return;
@@ -270,9 +398,9 @@ var SSE = function (url, options) {
270398
};
271399

272400
/**
273-
* starts the streaming
274-
* @type Stream
275-
* @return {void}
401+
* Starts the streaming; only needed if the start option was set to false.
402+
*
403+
* @type {Stream}
276404
*/
277405
this.stream = function() {
278406
if (this.xhr) {
@@ -300,9 +428,9 @@ var SSE = function (url, options) {
300428
};
301429

302430
/**
303-
* closes the stream
304-
* @type Close
305-
* @return {void}
431+
* Closes the stream
432+
*
433+
* @type {Close}
306434
*/
307435
this.close = function() {
308436
if (this.readyState === SSE.CLOSED) {
@@ -333,117 +461,4 @@ if (typeof exports !== 'undefined') {
333461
}
334462

335463
// Export as an ECMAScript module
336-
export { SSE };
337-
338-
/**
339-
* @typedef { {[key: string]: string} } SSEHeaders
340-
*/
341-
/**
342-
* @typedef {Object} SSEOptions
343-
* @property {SSEHeaders} [headers] - headers
344-
* @property {string} [payload] - payload as a string
345-
* @property {string} [method] - HTTP Method
346-
* @property {boolean} [withCredentials] - flag, if credentials needed
347-
* @property {boolean} [start] - flag, if streaming should start automatically
348-
* @property {boolean} [debug] - debugging flag
349-
*/
350-
/**
351-
* @typedef {Object} _SSEvent
352-
* @property {string} id
353-
* @property {string} data
354-
*/
355-
/**
356-
* @typedef {Object} _ReadyStateEvent
357-
* @property {number} readyState
358-
*/
359-
/**
360-
* @typedef {Event & _SSEvent} SSEvent
361-
*/
362-
/**
363-
* @typedef {SSEvent & _ReadyStateEvent} ReadyStateEvent
364-
*/
365-
/**
366-
* @callback AddEventListener
367-
* @param {string} type
368-
* @param {function} listener
369-
* @returns {void}
370-
*/
371-
/**
372-
* @callback RemoveEventListener
373-
* @param {string} type
374-
* @param {function} listener
375-
* @returns {void}
376-
*/
377-
/**
378-
* @callback DispatchEvent
379-
* @param {string} type
380-
* @param {function} listener
381-
* @returns {boolean}
382-
*/
383-
/**
384-
* @callback Stream
385-
* @returns {void}
386-
*/
387-
/**
388-
* @callback Close
389-
* @returns {void}
390-
*/
391-
/**
392-
* @callback OnMessage
393-
* @param {SSEvent} event
394-
* @returns {void}
395-
*/
396-
/**
397-
* @callback OnOpen
398-
* @param {SSEvent} event
399-
* @returns {void}
400-
*/
401-
/**
402-
* @callback OnLoad
403-
* @param {SSEvent} event
404-
* @returns {void}
405-
*/
406-
/**
407-
* @callback OnReadystatechange
408-
* @param {ReadyStateEvent} event
409-
* @returns {void}
410-
*/
411-
/**
412-
* @callback OnError
413-
* @param {SSEvent} event
414-
* @returns {void}
415-
*/
416-
/**
417-
* @callback OnAbort
418-
* @param {SSEvent} event
419-
* @returns {void}
420-
*/
421-
/**
422-
* @typedef {Object} SSE
423-
* @property {SSEHeaders} headers - headers
424-
* @property {string} payload - payload as a string
425-
* @property {string} method - HTTP Method
426-
* @property {boolean} withCredentials - flag, if credentials needed
427-
* @property {boolean} debug - debugging flag
428-
* @property {string} FIELD_SEPARATOR
429-
* @property {Record<string, Function[]>} listeners
430-
* @property {XMLHttpRequest | null} xhr
431-
* @property {number} readyState
432-
* @property {number} progress
433-
* @property {string} chunk
434-
* @property {-1} INITIALIZING
435-
* @property {0} CONNECTING
436-
* @property {1} OPEN
437-
* @property {2} CLOSED
438-
* @property {AddEventListener} addEventListener
439-
* @property {RemoveEventListener} removeEventListener
440-
* @property {DispatchEvent} dispatchEvent
441-
* @property {Stream} stream
442-
* @property {Close} close
443-
* @property {OnMessage} onmessage
444-
* @property {OnOpen} onopen
445-
* @property {OnLoad} onload
446-
* @property {OnReadystatechange} onreadystatechange
447-
* @property {OnError} onerror
448-
* @property {OnAbort} onabort
449-
*/
464+
export { SSE };

0 commit comments

Comments
 (0)