qws-browser 1.1.1 → 2.0.0

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 (42) hide show
  1. package/README.md +2 -0
  2. package/dist/browser/messageencode.d.ts +2 -1
  3. package/dist/browser/messageencode.d.ts.map +1 -0
  4. package/dist/browser/messageencode.js +30 -25
  5. package/dist/browser/messageencode.js.map +1 -0
  6. package/dist/browser/wrappedws.d.ts +3 -2
  7. package/dist/browser/wrappedws.d.ts.map +1 -0
  8. package/dist/browser/wrappedws.js +14 -20
  9. package/dist/browser/wrappedws.js.map +1 -0
  10. package/dist/common/discriminator.d.ts +2 -1
  11. package/dist/common/discriminator.d.ts.map +1 -0
  12. package/dist/common/discriminator.js +2 -2
  13. package/dist/common/discriminator.js.map +1 -0
  14. package/dist/common/logger.d.ts +11 -10
  15. package/dist/common/logger.d.ts.map +1 -0
  16. package/dist/common/logger.js +8 -13
  17. package/dist/common/logger.js.map +1 -0
  18. package/dist/common/message.d.ts +18 -27
  19. package/dist/common/message.d.ts.map +1 -0
  20. package/dist/common/message.js +2 -2
  21. package/dist/common/message.js.map +1 -0
  22. package/dist/common/queryparser.d.ts +1 -4
  23. package/dist/common/queryparser.d.ts.map +1 -0
  24. package/dist/common/queryparser.js +6 -82
  25. package/dist/common/queryparser.js.map +1 -0
  26. package/dist/common/queue.d.ts +4 -3
  27. package/dist/common/queue.d.ts.map +1 -0
  28. package/dist/common/queue.js +10 -12
  29. package/dist/common/queue.js.map +1 -0
  30. package/dist/common/queuews.d.ts +12 -11
  31. package/dist/common/queuews.d.ts.map +1 -0
  32. package/dist/common/queuews.js +68 -81
  33. package/dist/common/queuews.js.map +1 -0
  34. package/dist/common/router.d.ts +9 -0
  35. package/dist/common/router.d.ts.map +1 -0
  36. package/dist/common/router.js +8 -0
  37. package/dist/common/router.js.map +1 -0
  38. package/dist/index.d.ts +6 -6
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +6 -25
  41. package/dist/index.js.map +1 -0
  42. package/package.json +29 -30
package/README.md CHANGED
@@ -10,6 +10,8 @@ Safe queueing with auto-reconnect for WebSockets
10
10
  - Configurable headers per message, even when body is binary
11
11
  - Simple message routing (via [route-recognizer](https://github.com/tildeio/route-recognizer))
12
12
 
13
+ Since version 2, `qws-browser` is an ES module only (no CommonJS build), meant to be consumed via a bundler such as Vite.
14
+
13
15
  # Examples
14
16
 
15
17
  TODO
@@ -1,4 +1,4 @@
1
- import { QwsMessage } from '../common/message';
1
+ import { QwsMessage } from '../common/message.js';
2
2
  /**
3
3
  * Convert binary data received through underlying WS into WSQ message
4
4
  * Changes type based on type header
@@ -8,3 +8,4 @@ export declare function deserializeMessage(blob: Blob): Promise<QwsMessage>;
8
8
  * Converts WSQ message into Blob to be sent through underlying WebSocket
9
9
  */
10
10
  export declare function serializeMessage(message: QwsMessage): Blob;
11
+ //# sourceMappingURL=messageencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageencode.d.ts","sourceRoot":"","sources":["../../src/browser/messageencode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAoC,MAAM,sBAAsB,CAAC;AAwBpF;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAiDxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAgC1D"}
@@ -1,17 +1,13 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.serializeMessage = exports.deserializeMessage = void 0;
7
- const logger_1 = __importDefault(require("../common/logger"));
1
+ import logger from '../common/logger.js';
8
2
  /**
9
3
  * Converts generic object into base64-encoded JSON.
10
4
  * Used in headers and optionally JSON-style body.
11
5
  */
12
6
  function objectToJsonBinary(object) {
13
7
  const objectJson = JSON.stringify(object);
14
- return btoa(unescape(encodeURIComponent(objectJson)));
8
+ // base64 of the UTF-8 bytes, same as Buffer.from(json).toString('base64') on Node.js
9
+ const bytes = new TextEncoder().encode(objectJson);
10
+ return btoa(Array.from(bytes, (byte) => String.fromCodePoint(byte)).join(''));
15
11
  }
16
12
  /**
17
13
  * Deserializes base64-json buffers
@@ -19,16 +15,17 @@ function objectToJsonBinary(object) {
19
15
  */
20
16
  async function jsonBinaryToObject(jsonBinary) {
21
17
  const jsonBinaryText = await jsonBinary.text();
22
- const objectJson = decodeURIComponent(escape(atob(jsonBinaryText)));
18
+ const bytes = Uint8Array.from(atob(jsonBinaryText), (char) => char.codePointAt(0));
19
+ const objectJson = new TextDecoder().decode(bytes);
23
20
  return JSON.parse(objectJson);
24
21
  }
25
22
  /**
26
23
  * Convert binary data received through underlying WS into WSQ message
27
24
  * Changes type based on type header
28
25
  */
29
- async function deserializeMessage(blob) {
26
+ export async function deserializeMessage(blob) {
30
27
  if (blob.size < 4) {
31
- logger_1.default.error('Invalid blob size');
28
+ logger.error('Invalid blob size');
32
29
  return {
33
30
  headers: { type: 'bin' },
34
31
  body: blob,
@@ -39,7 +36,7 @@ async function deserializeMessage(blob) {
39
36
  const headersSizeArray = new Uint32Array(headersSizeBlob);
40
37
  const headersSize = headersSizeArray[0];
41
38
  if (headersSize > blob.size - 4) {
42
- logger_1.default.error(`Invalid header size ${headersSize} > ${blob.size - 4}`);
39
+ logger.error(`Invalid header size ${headersSize} > ${blob.size - 4}`);
43
40
  return {
44
41
  headers: { type: 'bin' },
45
42
  body: blob,
@@ -53,47 +50,55 @@ async function deserializeMessage(blob) {
53
50
  // body is either JSON Blob, original binary data or nothing
54
51
  let body;
55
52
  switch (type) {
56
- case 'bin':
53
+ case 'bin': {
57
54
  body = bodyBlob;
58
55
  break;
59
- case 'json':
56
+ }
57
+ case 'json': {
60
58
  body = await jsonBinaryToObject(bodyBlob);
61
59
  break;
60
+ }
62
61
  default:
63
62
  }
64
63
  return { headers, body };
65
64
  }
66
- catch (ex) {
67
- logger_1.default.error('Could not decode message', ex);
65
+ catch (error) {
66
+ logger.error('Could not decode message', error);
68
67
  return {
69
68
  headers: { type: 'bin' },
70
69
  body: blob,
71
70
  };
72
71
  }
73
72
  }
74
- exports.deserializeMessage = deserializeMessage;
75
73
  /**
76
74
  * Converts WSQ message into Blob to be sent through underlying WebSocket
77
75
  */
78
- function serializeMessage(message) {
76
+ export function serializeMessage(message) {
79
77
  // headers encoded into base64(json)
80
78
  const headersEncoded = objectToJsonBinary(message.headers);
81
79
  const headersSize = Uint32Array.from([headersEncoded.length]);
82
80
  // body is either JSON Blob, original binary data or nothing
83
81
  let bodyEncoded;
84
82
  switch (message.headers.type) {
85
- case 'bin':
83
+ case 'bin': {
86
84
  bodyEncoded = message.body;
87
85
  break;
88
- case 'json':
86
+ }
87
+ case 'json': {
89
88
  bodyEncoded = objectToJsonBinary(message.body);
90
89
  break;
91
- default:
90
+ }
91
+ case 'ready':
92
+ case 'ack':
93
+ case 'err': {
94
+ // no body
95
+ break;
96
+ }
92
97
  }
93
98
  return new Blob([
94
- headersSize,
95
- headersEncoded,
96
- bodyEncoded, // binary, json or null body
99
+ headersSize, // first 4 bytes = uint32 how long is header section
100
+ headersEncoded, // headers in base64(json) format
101
+ ...(bodyEncoded === undefined ? [] : [bodyEncoded]), // binary, json or no body
97
102
  ], { type: 'application/octet-stream' });
98
103
  }
99
- exports.serializeMessage = serializeMessage;
104
+ //# sourceMappingURL=messageencode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageencode.js","sourceRoot":"","sources":["../../src/browser/messageencode.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAGzC;;;GAGG;AACH,SAAS,kBAAkB,CAAC,MAA+B;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,qFAAqF;IACrF,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,UAAgB;IAChD,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAA4B,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU;IACjD,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClC,OAAO;YACL,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7D,MAAM,gBAAgB,GAAG,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,uBAAuB,WAAW,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,OAAO;YACL,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;QAEnC,4DAA4D;QAC5D,IAAI,IAAgD,CAAC;QACrD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,IAAI,GAAG,QAAQ,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC1C,MAAM;YACR,CAAC;YACD,QAAQ;QACV,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAgB,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAmB;IAClD,oCAAoC;IACpC,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,4DAA4D;IAC5D,IAAI,WAAsC,CAAC;IAC3C,QAAQ,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,WAAW,GAAI,OAA4B,CAAC,IAAI,CAAC;YACjD,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,WAAW,GAAG,kBAAkB,CAAE,OAA0B,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,UAAU;YACV,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,IAAI,IAAI,CACb;QACE,WAAW,EAAE,oDAAoD;QACjE,cAAc,EAAE,iCAAiC;QACjD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,0BAA0B;KAChF,EACD,EAAE,IAAI,EAAE,0BAA0B,EAAE,CACrC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
- import { QwsMessage, AckQwsMessage, BinaryQwsMessage, ErrorQwsMessage, JsonQwsMessage, ReadyQwsMessage } from '../common/message';
2
- import { Binary } from '../common/discriminator';
1
+ import { QwsMessage, AckQwsMessage, BinaryQwsMessage, ErrorQwsMessage, JsonQwsMessage, ReadyQwsMessage } from '../common/message.js';
2
+ import { Binary } from '../common/discriminator.js';
3
3
  /**
4
4
  * Wrapper around WebSocket, built to serialize/deserialize
5
5
  * WSQ formatted messages.
@@ -40,3 +40,4 @@ export default class WrappedWebSocket {
40
40
  sendRaw(data: Binary): void;
41
41
  close(): void;
42
42
  }
43
+ //# sourceMappingURL=wrappedws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrappedws.d.ts","sourceRoot":"","sources":["../../src/browser/wrappedws.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,EAAE,EAAE,SAAS,CAAC;IAEd,SAAS,EAAE;QACT,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;QACzC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;QAC3C,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;QACvC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;KAC1C,CAAC;gBAEU,OAAO,EAAE,SAAS,GAAG,MAAM;IAmBvC;;OAEG;IAEH,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIpC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIrC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAIjD;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IAEH,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAI1D,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI;IAIzD,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAI3D,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAIvD,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAIzD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAM/B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,KAAK,IAAI,IAAI;CAGd"}
@@ -1,43 +1,37 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const auto_bind_1 = __importDefault(require("auto-bind"));
7
- const messageencode_1 = require("./messageencode");
1
+ import autoBind from 'auto-bind';
2
+ import { deserializeMessage, serializeMessage } from './messageencode.js';
8
3
  /**
9
4
  * Wrapper around WebSocket, built to serialize/deserialize
10
5
  * WSQ formatted messages.
11
6
  */
12
- class WrappedWebSocket {
7
+ export default class WrappedWebSocket {
13
8
  constructor(wsOrUrl) {
14
- var _a;
15
9
  this.callbacks = {};
16
- if (wsOrUrl instanceof WebSocket || ((_a = wsOrUrl === null || wsOrUrl === void 0 ? void 0 : wsOrUrl.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'WebSocket') {
10
+ if (wsOrUrl instanceof WebSocket || wsOrUrl?.constructor?.name === 'WebSocket') {
17
11
  this.ws = wsOrUrl;
18
12
  }
19
13
  else {
20
14
  this.ws = new WebSocket(wsOrUrl);
21
15
  }
22
- this.ws.onmessage = async (event) => {
23
- const message = await (0, messageencode_1.deserializeMessage)(event.data);
16
+ this.ws.addEventListener('message', async (event) => {
17
+ const message = await deserializeMessage(event.data);
24
18
  // logger.info('WRAPPER received', message);
25
19
  const callback = this.callbacks[message.headers.type];
26
- callback === null || callback === void 0 ? void 0 : callback(message);
27
- };
28
- (0, auto_bind_1.default)(this);
20
+ callback?.(message);
21
+ });
22
+ autoBind(this);
29
23
  }
30
24
  /**
31
25
  * Proxy callbacks
32
26
  */
33
27
  onWsOpen(callback) {
34
- this.ws.onopen = callback;
28
+ this.ws.addEventListener('open', callback);
35
29
  }
36
30
  onWsClose(callback) {
37
- this.ws.onclose = callback;
31
+ this.ws.addEventListener('close', callback);
38
32
  }
39
33
  onWsError(callback) {
40
- this.ws.onerror = callback;
34
+ this.ws.addEventListener('error', callback);
41
35
  }
42
36
  /**
43
37
  * Proxy others
@@ -71,7 +65,7 @@ class WrappedWebSocket {
71
65
  */
72
66
  send(message) {
73
67
  // logger.info('WRAPPER sending', message);
74
- const data = (0, messageencode_1.serializeMessage)(message);
68
+ const data = serializeMessage(message);
75
69
  this.ws.send(data);
76
70
  }
77
71
  sendRaw(data) {
@@ -82,4 +76,4 @@ class WrappedWebSocket {
82
76
  this.ws.close();
83
77
  }
84
78
  }
85
- exports.default = WrappedWebSocket;
79
+ //# sourceMappingURL=wrappedws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrappedws.js","sourceRoot":"","sources":["../../src/browser/wrappedws.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AASjC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG1E;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAWnC,YAAY,OAA2B;QACrC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,IAAI,OAAO,YAAY,SAAS,IAAI,OAAO,EAAE,WAAW,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/E,IAAI,CAAC,EAAE,GAAG,OAAoB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,KAA2B,EAAE,EAAE;YACxE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrD,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAA8B,CAAC;YACnF,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IAEH,QAAQ,CAAC,QAAoB;QAC3B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,SAAS,CAAC,QAAoB;QAC5B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,QAAgC;QACxC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;IAC5B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;IAChC,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,QAA6C;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,QAA2C;QAChD,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,QAA4C;QAClD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,QAA0C;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAA4C;QAChD,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAmB;QACtB,2CAA2C;QAC3C,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,oDAAoD;QACpD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
@@ -1 +1,2 @@
1
- export declare type Binary = Blob;
1
+ export type Binary = Blob;
2
+ //# sourceMappingURL=discriminator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discriminator.d.ts","sourceRoot":"","sources":["../../src/common/discriminator.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC"}
@@ -1,4 +1,4 @@
1
- "use strict";
2
1
  // node
3
2
  // export type Binary = Buffer;
4
- Object.defineProperty(exports, "__esModule", { value: true });
3
+ export {};
4
+ //# sourceMappingURL=discriminator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discriminator.js","sourceRoot":"","sources":["../../src/common/discriminator.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,+BAA+B"}
@@ -1,19 +1,19 @@
1
1
  /**
2
2
  * Pluggable logger interface
3
3
  */
4
- export interface QwsLogger {
5
- debug(...data: any[]): void;
6
- info(...data: any[]): void;
7
- warn(...data: any[]): void;
8
- error(...data: any[]): void;
9
- }
4
+ export type QwsLogger = {
5
+ debug(...data: unknown[]): void;
6
+ info(...data: unknown[]): void;
7
+ warn(...data: unknown[]): void;
8
+ error(...data: unknown[]): void;
9
+ };
10
10
  export declare class QwsLoggerWrapper implements QwsLogger {
11
11
  backend: QwsLogger;
12
12
  constructor(logger?: QwsLogger);
13
- debug(...data: any[]): void;
14
- info(...data: any[]): void;
15
- warn(...data: any[]): void;
16
- error(...data: any[]): void;
13
+ debug(...data: unknown[]): void;
14
+ info(...data: unknown[]): void;
15
+ warn(...data: unknown[]): void;
16
+ error(...data: unknown[]): void;
17
17
  /**
18
18
  * Overwrite default logger used by qws, which is the console.
19
19
  * Allows plugging of external tools, such as yall2
@@ -29,3 +29,4 @@ export default logger;
29
29
  * Export setBackend method for easy external setup
30
30
  */
31
31
  export declare const setQwsLoggingBackend: (newBackend: QwsLogger) => void;
32
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,qBAAa,gBAAiB,YAAW,SAAS;IAChD,OAAO,EAAE,SAAS,CAAC;gBAEP,MAAM,GAAE,SAAmB;IAKvC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/B;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,SAAS,GAAG,IAAI;CAGxC;AAED;;GAEG;AACH,QAAA,MAAM,MAAM,kBAAyB,CAAC;AACtC,eAAe,MAAM,CAAC;AAEtB;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,YAAY,SAAS,KAAG,IAE5D,CAAC"}
@@ -1,15 +1,8 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.setQwsLoggingBackend = exports.QwsLoggerWrapper = void 0;
7
- /* eslint-disable @typescript-eslint/no-explicit-any */
8
- const auto_bind_1 = __importDefault(require("auto-bind"));
9
- class QwsLoggerWrapper {
1
+ import autoBind from 'auto-bind';
2
+ export class QwsLoggerWrapper {
10
3
  constructor(logger = console) {
11
4
  this.backend = logger;
12
- (0, auto_bind_1.default)(this);
5
+ autoBind(this);
13
6
  }
14
7
  debug(...data) {
15
8
  this.backend.debug(...data);
@@ -31,13 +24,15 @@ class QwsLoggerWrapper {
31
24
  this.backend = newBackend;
32
25
  }
33
26
  }
34
- exports.QwsLoggerWrapper = QwsLoggerWrapper;
35
27
  /**
36
28
  * Export default instance
37
29
  */
38
30
  const logger = new QwsLoggerWrapper();
39
- exports.default = logger;
31
+ export default logger;
40
32
  /**
41
33
  * Export setBackend method for easy external setup
42
34
  */
43
- exports.setQwsLoggingBackend = logger.setBackend;
35
+ export const setQwsLoggingBackend = (newBackend) => {
36
+ logger.setBackend(newBackend);
37
+ };
38
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AAYjC,MAAM,OAAO,gBAAgB;IAG3B,YAAY,SAAoB,OAAO;QACrC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,UAAqB;QAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;AACtC,eAAe,MAAM,CAAC;AAEtB;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAqB,EAAQ,EAAE;IAClE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * - next n bytes: base64(json)-encoded headers
5
5
  * - remaining bytes: actual body - could be binary or base64(json), denoted in headers
6
6
  */
7
- import { Binary } from './discriminator';
7
+ import { Binary } from './discriminator.js';
8
8
  /**
9
9
  * Denotes message type, must be included in header.
10
10
  * 'bin' - payload message with binary body
@@ -13,25 +13,15 @@ import { Binary } from './discriminator';
13
13
  * 'ack' - acknowledgment message for a payload message received from other side
14
14
  * 'err' - error
15
15
  */
16
- export declare type QwsMessageType = 'bin' | 'json' | 'ready' | 'ack' | 'err';
16
+ export type QwsMessageType = 'bin' | 'json' | 'ready' | 'ack' | 'err';
17
17
  /**
18
18
  * Headers are sent in base64(json) format.
19
19
  */
20
- export declare type QwsMessageExtraHeaders = {
21
- /**
22
- * Other X-headers
23
- */
24
- [key: string]: unknown;
25
- };
20
+ export type QwsMessageExtraHeaders = Record<string, unknown>;
26
21
  /**
27
22
  * Path parameters decodable with route-recognizer when using routed messages.
28
23
  */
29
- export declare type QwsParams = {
30
- /**
31
- * Other X-headers
32
- */
33
- [key: string]: string;
34
- };
24
+ export type QwsParams = Record<string, string>;
35
25
  /**
36
26
  * Message types
37
27
  */
@@ -39,7 +29,7 @@ export declare type QwsParams = {
39
29
  * Binary payload messages
40
30
  * Contain binary body (like video data)
41
31
  */
42
- export declare type BinaryQwsMessageHeaders = QwsMessageExtraHeaders & {
32
+ export type BinaryQwsMessageHeaders = QwsMessageExtraHeaders & {
43
33
  type: 'bin';
44
34
  /**
45
35
  * Message index in order. Helps in acknowledgments
@@ -50,7 +40,7 @@ export declare type BinaryQwsMessageHeaders = QwsMessageExtraHeaders & {
50
40
  */
51
41
  route?: string;
52
42
  };
53
- export declare type BinaryQwsMessage = {
43
+ export type BinaryQwsMessage = {
54
44
  headers: BinaryQwsMessageHeaders;
55
45
  body: Binary;
56
46
  };
@@ -58,7 +48,7 @@ export declare type BinaryQwsMessage = {
58
48
  * JSON payload message
59
49
  * Contain base64-JSON encoded data
60
50
  */
61
- export declare type JsonQwsMessageHeaders = QwsMessageExtraHeaders & {
51
+ export type JsonQwsMessageHeaders = QwsMessageExtraHeaders & {
62
52
  type: 'json';
63
53
  /**
64
54
  * Message index in order. Helps in acknowledgments
@@ -69,7 +59,7 @@ export declare type JsonQwsMessageHeaders = QwsMessageExtraHeaders & {
69
59
  */
70
60
  route?: string;
71
61
  };
72
- export declare type JsonQwsMessage = {
62
+ export type JsonQwsMessage = {
73
63
  headers: JsonQwsMessageHeaders;
74
64
  body: Record<string, unknown>;
75
65
  };
@@ -78,47 +68,48 @@ export declare type JsonQwsMessage = {
78
68
  * Sent back after successful connect, signalling we are ready to receive events
79
69
  * Optionally contains a message index denoting how many messages we already have received previously
80
70
  */
81
- export declare type ReadyQwsMessageHeaders = QwsMessageExtraHeaders & {
71
+ export type ReadyQwsMessageHeaders = QwsMessageExtraHeaders & {
82
72
  type: 'ready';
83
73
  /**
84
74
  * Message index we have already received previously that may be omitted.
85
75
  */
86
76
  readyIdx: number;
87
77
  };
88
- export declare type ReadyQwsMessage = {
78
+ export type ReadyQwsMessage = {
89
79
  headers: ReadyQwsMessageHeaders;
90
80
  };
91
81
  /**
92
82
  * Acknowledgment message
93
83
  * Sent back for every payload message
94
84
  */
95
- export declare type AckQwsMessageHeaders = {
85
+ export type AckQwsMessageHeaders = {
96
86
  type: 'ack';
97
87
  /**
98
88
  * Message index from other side we are acknowledging
99
89
  */
100
90
  ackIdx: number;
101
91
  };
102
- export declare type AckQwsMessage = {
92
+ export type AckQwsMessage = {
103
93
  headers: AckQwsMessageHeaders;
104
94
  };
105
95
  /**
106
96
  * Error message
107
97
  * Sent back if processing a message is unsuccessful
108
98
  */
109
- export declare type ErrorQwsMessageHeaders = {
99
+ export type ErrorQwsMessageHeaders = {
110
100
  type: 'err';
111
101
  /**
112
102
  * Message of error
113
103
  */
114
104
  error: string;
115
105
  };
116
- export declare type ErrorQwsMessage = {
106
+ export type ErrorQwsMessage = {
117
107
  headers: ErrorQwsMessageHeaders;
118
108
  };
119
109
  /**
120
110
  * Common names for WSQ message
121
111
  */
122
- export declare type PayloadQwsMessage = BinaryQwsMessage | JsonQwsMessage;
123
- export declare type QwsMessage = BinaryQwsMessage | JsonQwsMessage | ReadyQwsMessage | AckQwsMessage | ErrorQwsMessage;
124
- export declare type QwsMessageHeader = BinaryQwsMessageHeaders | JsonQwsMessageHeaders | ReadyQwsMessageHeaders | AckQwsMessageHeaders | ErrorQwsMessageHeaders;
112
+ export type PayloadQwsMessage = BinaryQwsMessage | JsonQwsMessage;
113
+ export type QwsMessage = BinaryQwsMessage | JsonQwsMessage | ReadyQwsMessage | AckQwsMessage | ErrorQwsMessage;
114
+ export type QwsMessageHeader = BinaryQwsMessageHeaders | JsonQwsMessageHeaders | ReadyQwsMessageHeaders | AckQwsMessageHeaders | ErrorQwsMessageHeaders;
115
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/common/message.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;AAEtE;;GAEG;AAEH,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7D;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE/C;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG;IAC7D,IAAI,EAAE,KAAK,CAAC;IACZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,uBAAuB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;GAGG;AAEH,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AAEH,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG;IAC5D,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF;;;GAGG;AAEH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AAEH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,eAAe,CAAC;AAC/G,MAAM,MAAM,gBAAgB,GACxB,uBAAuB,GACvB,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,CAAC"}
@@ -1,8 +1,8 @@
1
- "use strict";
2
1
  /**
3
2
  * Custom message format for WSQ messages:
4
3
  * - first 4 bytes: uint32 saying how long the header information is
5
4
  * - next n bytes: base64(json)-encoded headers
6
5
  * - remaining bytes: actual body - could be binary or base64(json), denoted in headers
7
6
  */
8
- Object.defineProperty(exports, "__esModule", { value: true });
7
+ export {};
8
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/common/message.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,5 +1,2 @@
1
- export declare const parseUrl: (urlString: string) => Record<string, string>;
2
- export declare const parseQuery: (search: string) => Record<string, string>;
3
1
  export declare const addQueryParamsToUrl: (urlString: string, params: Record<string, unknown>) => string;
4
- export declare const addQueryParameters: (search: string, params?: {}, defaultParams?: {}) => string;
5
- export declare const toUrlParams: (query?: {}, defaultParams?: {}) => string;
2
+ //# sourceMappingURL=queryparser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryparser.d.ts","sourceRoot":"","sources":["../../src/common/queryparser.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAQxF,CAAC"}
@@ -1,85 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toUrlParams = exports.addQueryParameters = exports.addQueryParamsToUrl = exports.parseQuery = exports.parseUrl = void 0;
4
- // parse query parameters from URL
5
- const parseUrl = (urlString) => {
1
+ // add query parameters to URL
2
+ export const addQueryParamsToUrl = (urlString, params) => {
6
3
  const url = new URL(urlString);
7
- const query = {};
8
- url.searchParams.forEach((val, key) => {
9
- query[key] = val;
10
- });
11
- return query;
12
- };
13
- exports.parseUrl = parseUrl;
14
- // parse query parameters from location
15
- const parseQuery = (search) => {
16
- const params = new URLSearchParams(search);
17
- const query = {};
18
- params.forEach((val, key) => {
19
- query[key] = val;
20
- });
21
- return query;
22
- };
23
- exports.parseQuery = parseQuery;
24
- // parse query parameters from URL
25
- const addQueryParamsToUrl = (urlString, params) => {
26
- const url = new URL(urlString);
27
- Object.entries(params).forEach(([key, val]) => {
28
- url.searchParams.set(key, `${val}`);
29
- });
30
- return url.toString();
31
- };
32
- exports.addQueryParamsToUrl = addQueryParamsToUrl;
33
- // add extra query parameters to location
34
- const addQueryParameters = (search, params = {}, defaultParams = {}) => {
35
- const query = (0, exports.parseQuery)(search);
36
- let changed = false;
37
- Object.entries(params).forEach(([key, val]) => {
38
- if (key in defaultParams) {
39
- // has default
40
- if (val !== defaultParams[key]) {
41
- query[key] = `${val}`;
42
- changed = true;
43
- }
44
- else if (key in query) {
45
- delete query[key];
46
- changed = true;
47
- }
48
- }
49
- else {
50
- // no default
51
- // eslint-disable-next-line no-lonely-if
52
- if (val !== undefined && val !== null && val !== '') {
53
- query[key] = `${val}`;
54
- changed = true;
55
- }
56
- else if (key in query) {
57
- delete query[key];
58
- changed = true;
59
- }
60
- }
61
- });
62
- if (!changed) {
63
- return search;
4
+ for (const [key, val] of Object.entries(params)) {
5
+ url.searchParams.set(key, String(val));
64
6
  }
65
- return `?${new URLSearchParams(query).toString()}`;
66
- };
67
- exports.addQueryParameters = addQueryParameters;
68
- // parse into URLParams
69
- const toUrlParams = (query = {}, defaultParams = {}) => {
70
- const params = {};
71
- Object.entries(query).forEach(([key, val]) => {
72
- // omit default values
73
- if (key in defaultParams && defaultParams[key] === val) {
74
- return;
75
- }
76
- if (Array.isArray(val)) {
77
- params[key] = val.join(',');
78
- }
79
- else if (val !== undefined && val !== null && val !== '' && !Number.isNaN(val)) {
80
- params[key] = `${val}`;
81
- }
82
- });
83
- return new URLSearchParams(params).toString();
7
+ return url.href;
84
8
  };
85
- exports.toUrlParams = toUrlParams;
9
+ //# sourceMappingURL=queryparser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryparser.js","sourceRoot":"","sources":["../../src/common/queryparser.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,MAA+B,EAAU,EAAE;IAChG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,CAAC;AAClB,CAAC,CAAC"}
@@ -1,12 +1,12 @@
1
- import { PayloadQwsMessage } from './message';
2
- import { Binary } from './discriminator';
1
+ import { PayloadQwsMessage } from './message.js';
2
+ import { Binary } from './discriminator.js';
3
3
  /**
4
4
  * FIFO data structure implementation for outgoing qws messages
5
5
  * Implements acknowledgment system, so no messages are deleted until acknowledged,
6
6
  * but new messages may be added while waiting for ack.
7
7
  */
8
8
  export default class QwsMessageQueue {
9
- messages: Record<number, Binary>;
9
+ messages: Map<number, Binary>;
10
10
  readIdx: number;
11
11
  ackIdx: number;
12
12
  writeIdx: number;
@@ -33,3 +33,4 @@ export default class QwsMessageQueue {
33
33
  */
34
34
  revert(idx: number): void;
35
35
  }
36
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/common/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IAEjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;;IActB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM;IAe3C;;;OAGG;IACH,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAU3B;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAS9B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAO1B"}