@granular-software/sdk 0.4.42 → 0.4.43

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.
@@ -188,9 +188,9 @@ var require_node_gyp_build = __commonJS({
188
188
  }
189
189
  function parseTags(file) {
190
190
  var arr = file.split(".");
191
- var extension = arr.pop();
191
+ var extension2 = arr.pop();
192
192
  var tags = { file, specificity: 0 };
193
- if (extension !== "node") return;
193
+ if (extension2 !== "node") return;
194
194
  for (var i = 0; i < arr.length; i++) {
195
195
  var tag = arr[i];
196
196
  if (tag === "node" || tag === "electron" || tag === "node-webkit") {
@@ -438,7 +438,7 @@ var require_permessage_deflate = __commonJS({
438
438
  var kBuffers = Symbol("buffers");
439
439
  var kError = Symbol("error");
440
440
  var zlibLimiter;
441
- var PerMessageDeflate = class {
441
+ var PerMessageDeflate2 = class {
442
442
  /**
443
443
  * Creates a PerMessageDeflate instance.
444
444
  *
@@ -449,6 +449,9 @@ var require_permessage_deflate = __commonJS({
449
449
  * acknowledge disabling of client context takeover
450
450
  * @param {Number} [options.concurrencyLimit=10] The number of concurrent
451
451
  * calls to zlib
452
+ * @param {Boolean} [options.isServer=false] Create the instance in either
453
+ * server or client mode
454
+ * @param {Number} [options.maxPayload=0] The maximum allowed message length
452
455
  * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the
453
456
  * use of a custom server window size
454
457
  * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept
@@ -459,15 +462,12 @@ var require_permessage_deflate = __commonJS({
459
462
  * deflate
460
463
  * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on
461
464
  * inflate
462
- * @param {Boolean} [isServer=false] Create the instance in either server or
463
- * client mode
464
- * @param {Number} [maxPayload=0] The maximum allowed message length
465
465
  */
466
- constructor(options, isServer, maxPayload) {
467
- this._maxPayload = maxPayload | 0;
466
+ constructor(options) {
468
467
  this._options = options || {};
469
468
  this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024;
470
- this._isServer = !!isServer;
469
+ this._maxPayload = this._options.maxPayload | 0;
470
+ this._isServer = !!this._options.isServer;
471
471
  this._deflate = null;
472
472
  this._inflate = null;
473
473
  this.params = null;
@@ -776,7 +776,7 @@ var require_permessage_deflate = __commonJS({
776
776
  });
777
777
  }
778
778
  };
779
- module.exports = PerMessageDeflate;
779
+ module.exports = PerMessageDeflate2;
780
780
  function deflateOnData(chunk) {
781
781
  this[kBuffers].push(chunk);
782
782
  this[kTotalLength] += chunk.length;
@@ -1056,7 +1056,7 @@ var require_validation = __commonJS({
1056
1056
  var require_receiver = __commonJS({
1057
1057
  "../../node_modules/ws/lib/receiver.js"(exports, module) {
1058
1058
  var { Writable } = __require("stream");
1059
- var PerMessageDeflate = require_permessage_deflate();
1059
+ var PerMessageDeflate2 = require_permessage_deflate();
1060
1060
  var {
1061
1061
  BINARY_TYPES,
1062
1062
  EMPTY_BUFFER,
@@ -1086,6 +1086,10 @@ var require_receiver = __commonJS({
1086
1086
  * extensions
1087
1087
  * @param {Boolean} [options.isServer=false] Specifies whether to operate in
1088
1088
  * client or server mode
1089
+ * @param {Number} [options.maxBufferedChunks=0] The maximum number of
1090
+ * buffered data chunks
1091
+ * @param {Number} [options.maxFragments=0] The maximum number of message
1092
+ * fragments
1089
1093
  * @param {Number} [options.maxPayload=0] The maximum allowed message length
1090
1094
  * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
1091
1095
  * not to skip UTF-8 validation for text and close messages
@@ -1096,6 +1100,8 @@ var require_receiver = __commonJS({
1096
1100
  this._binaryType = options.binaryType || BINARY_TYPES[0];
1097
1101
  this._extensions = options.extensions || {};
1098
1102
  this._isServer = !!options.isServer;
1103
+ this._maxBufferedChunks = options.maxBufferedChunks | 0;
1104
+ this._maxFragments = options.maxFragments | 0;
1099
1105
  this._maxPayload = options.maxPayload | 0;
1100
1106
  this._skipUTF8Validation = !!options.skipUTF8Validation;
1101
1107
  this[kWebSocket] = void 0;
@@ -1125,6 +1131,18 @@ var require_receiver = __commonJS({
1125
1131
  */
1126
1132
  _write(chunk, encoding, cb) {
1127
1133
  if (this._opcode === 8 && this._state == GET_INFO) return cb();
1134
+ if (this._maxBufferedChunks > 0 && this._buffers.length >= this._maxBufferedChunks) {
1135
+ cb(
1136
+ this.createError(
1137
+ RangeError,
1138
+ "Too many buffered chunks",
1139
+ false,
1140
+ 1008,
1141
+ "WS_ERR_TOO_MANY_BUFFERED_PARTS"
1142
+ )
1143
+ );
1144
+ return;
1145
+ }
1128
1146
  this._bufferedBytes += chunk.length;
1129
1147
  this._buffers.push(chunk);
1130
1148
  this.startLoop(cb);
@@ -1223,7 +1241,7 @@ var require_receiver = __commonJS({
1223
1241
  return;
1224
1242
  }
1225
1243
  const compressed = (buf[0] & 64) === 64;
1226
- if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {
1244
+ if (compressed && !this._extensions[PerMessageDeflate2.extensionName]) {
1227
1245
  const error = this.createError(
1228
1246
  RangeError,
1229
1247
  "RSV1 must be clear",
@@ -1454,6 +1472,17 @@ var require_receiver = __commonJS({
1454
1472
  return;
1455
1473
  }
1456
1474
  if (data.length) {
1475
+ if (this._maxFragments > 0 && this._fragments.length >= this._maxFragments) {
1476
+ const error = this.createError(
1477
+ RangeError,
1478
+ "Too many message fragments",
1479
+ false,
1480
+ 1008,
1481
+ "WS_ERR_TOO_MANY_BUFFERED_PARTS"
1482
+ );
1483
+ cb(error);
1484
+ return;
1485
+ }
1457
1486
  this._messageLength = this._totalPayloadLength;
1458
1487
  this._fragments.push(data);
1459
1488
  }
@@ -1467,7 +1496,7 @@ var require_receiver = __commonJS({
1467
1496
  * @private
1468
1497
  */
1469
1498
  decompress(data, cb) {
1470
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
1499
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
1471
1500
  perMessageDeflate.decompress(data, this._fin, (err, buf) => {
1472
1501
  if (err) return cb(err);
1473
1502
  if (buf.length) {
@@ -1483,6 +1512,17 @@ var require_receiver = __commonJS({
1483
1512
  cb(error);
1484
1513
  return;
1485
1514
  }
1515
+ if (this._maxFragments > 0 && this._fragments.length >= this._maxFragments) {
1516
+ const error = this.createError(
1517
+ RangeError,
1518
+ "Too many message fragments",
1519
+ false,
1520
+ 1008,
1521
+ "WS_ERR_TOO_MANY_BUFFERED_PARTS"
1522
+ );
1523
+ cb(error);
1524
+ return;
1525
+ }
1486
1526
  this._fragments.push(buf);
1487
1527
  }
1488
1528
  this.dataMessage(cb);
@@ -1648,7 +1688,10 @@ var require_sender = __commonJS({
1648
1688
  "../../node_modules/ws/lib/sender.js"(exports, module) {
1649
1689
  var { Duplex } = __require("stream");
1650
1690
  var { randomFillSync } = __require("crypto");
1651
- var PerMessageDeflate = require_permessage_deflate();
1691
+ var {
1692
+ types: { isUint8Array }
1693
+ } = __require("util");
1694
+ var PerMessageDeflate2 = require_permessage_deflate();
1652
1695
  var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants();
1653
1696
  var { isBlob, isValidStatusCode } = require_validation();
1654
1697
  var { mask: applyMask, toBuffer } = require_buffer_util();
@@ -1801,8 +1844,10 @@ var require_sender = __commonJS({
1801
1844
  buf.writeUInt16BE(code, 0);
1802
1845
  if (typeof data === "string") {
1803
1846
  buf.write(data, 2);
1804
- } else {
1847
+ } else if (isUint8Array(data)) {
1805
1848
  buf.set(data, 2);
1849
+ } else {
1850
+ throw new TypeError("Second argument must be a string or a Uint8Array");
1806
1851
  }
1807
1852
  }
1808
1853
  const options = {
@@ -1932,7 +1977,7 @@ var require_sender = __commonJS({
1932
1977
  * @public
1933
1978
  */
1934
1979
  send(data, options, cb) {
1935
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
1980
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
1936
1981
  let opcode = options.binary ? 2 : 1;
1937
1982
  let rsv1 = options.compress;
1938
1983
  let byteLength;
@@ -2056,7 +2101,7 @@ var require_sender = __commonJS({
2056
2101
  this.sendFrame(_Sender.frame(data, options), cb);
2057
2102
  return;
2058
2103
  }
2059
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
2104
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
2060
2105
  this._bufferedBytes += options[kByteLength];
2061
2106
  this._state = DEFLATING;
2062
2107
  perMessageDeflate.compress(data, options.fin, (_, buf) => {
@@ -2492,11 +2537,11 @@ var require_extension = __commonJS({
2492
2537
  return offers;
2493
2538
  }
2494
2539
  function format(extensions) {
2495
- return Object.keys(extensions).map((extension) => {
2496
- let configurations = extensions[extension];
2540
+ return Object.keys(extensions).map((extension2) => {
2541
+ let configurations = extensions[extension2];
2497
2542
  if (!Array.isArray(configurations)) configurations = [configurations];
2498
2543
  return configurations.map((params) => {
2499
- return [extension].concat(
2544
+ return [extension2].concat(
2500
2545
  Object.keys(params).map((k) => {
2501
2546
  let values = params[k];
2502
2547
  if (!Array.isArray(values)) values = [values];
@@ -2521,7 +2566,7 @@ var require_websocket = __commonJS({
2521
2566
  var { randomBytes, createHash } = __require("crypto");
2522
2567
  var { Duplex, Readable } = __require("stream");
2523
2568
  var { URL: URL2 } = __require("url");
2524
- var PerMessageDeflate = require_permessage_deflate();
2569
+ var PerMessageDeflate2 = require_permessage_deflate();
2525
2570
  var Receiver2 = require_receiver();
2526
2571
  var Sender2 = require_sender();
2527
2572
  var { isBlob } = require_validation();
@@ -2680,6 +2725,10 @@ var require_websocket = __commonJS({
2680
2725
  * multiple times in the same tick
2681
2726
  * @param {Function} [options.generateMask] The function used to generate the
2682
2727
  * masking key
2728
+ * @param {Number} [options.maxBufferedChunks=0] The maximum number of
2729
+ * buffered data chunks
2730
+ * @param {Number} [options.maxFragments=0] The maximum number of message
2731
+ * fragments
2683
2732
  * @param {Number} [options.maxPayload=0] The maximum allowed message size
2684
2733
  * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
2685
2734
  * not to skip UTF-8 validation for text and close messages
@@ -2691,6 +2740,8 @@ var require_websocket = __commonJS({
2691
2740
  binaryType: this.binaryType,
2692
2741
  extensions: this._extensions,
2693
2742
  isServer: this._isServer,
2743
+ maxBufferedChunks: options.maxBufferedChunks,
2744
+ maxFragments: options.maxFragments,
2694
2745
  maxPayload: options.maxPayload,
2695
2746
  skipUTF8Validation: options.skipUTF8Validation
2696
2747
  });
@@ -2729,8 +2780,8 @@ var require_websocket = __commonJS({
2729
2780
  this.emit("close", this._closeCode, this._closeMessage);
2730
2781
  return;
2731
2782
  }
2732
- if (this._extensions[PerMessageDeflate.extensionName]) {
2733
- this._extensions[PerMessageDeflate.extensionName].cleanup();
2783
+ if (this._extensions[PerMessageDeflate2.extensionName]) {
2784
+ this._extensions[PerMessageDeflate2.extensionName].cleanup();
2734
2785
  }
2735
2786
  this._receiver.removeAllListeners();
2736
2787
  this._readyState = _WebSocket.CLOSED;
@@ -2892,7 +2943,7 @@ var require_websocket = __commonJS({
2892
2943
  fin: true,
2893
2944
  ...options
2894
2945
  };
2895
- if (!this._extensions[PerMessageDeflate.extensionName]) {
2946
+ if (!this._extensions[PerMessageDeflate2.extensionName]) {
2896
2947
  opts.compress = false;
2897
2948
  }
2898
2949
  this._sender.send(data || EMPTY_BUFFER, opts, cb);
@@ -2990,6 +3041,8 @@ var require_websocket = __commonJS({
2990
3041
  autoPong: true,
2991
3042
  closeTimeout: CLOSE_TIMEOUT,
2992
3043
  protocolVersion: protocolVersions[1],
3044
+ maxBufferedChunks: 1024 * 1024,
3045
+ maxFragments: 128 * 1024,
2993
3046
  maxPayload: 100 * 1024 * 1024,
2994
3047
  skipUTF8Validation: false,
2995
3048
  perMessageDeflate: true,
@@ -3018,7 +3071,7 @@ var require_websocket = __commonJS({
3018
3071
  } else {
3019
3072
  try {
3020
3073
  parsedUrl = new URL2(address);
3021
- } catch (e) {
3074
+ } catch {
3022
3075
  throw new SyntaxError(`Invalid URL: ${address}`);
3023
3076
  }
3024
3077
  }
@@ -3066,13 +3119,13 @@ var require_websocket = __commonJS({
3066
3119
  opts.path = parsedUrl.pathname + parsedUrl.search;
3067
3120
  opts.timeout = opts.handshakeTimeout;
3068
3121
  if (opts.perMessageDeflate) {
3069
- perMessageDeflate = new PerMessageDeflate(
3070
- opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},
3071
- false,
3072
- opts.maxPayload
3073
- );
3122
+ perMessageDeflate = new PerMessageDeflate2({
3123
+ ...opts.perMessageDeflate,
3124
+ isServer: false,
3125
+ maxPayload: opts.maxPayload
3126
+ });
3074
3127
  opts.headers["Sec-WebSocket-Extensions"] = format({
3075
- [PerMessageDeflate.extensionName]: perMessageDeflate.offer()
3128
+ [PerMessageDeflate2.extensionName]: perMessageDeflate.offer()
3076
3129
  });
3077
3130
  }
3078
3131
  if (protocols.length) {
@@ -3215,23 +3268,25 @@ var require_websocket = __commonJS({
3215
3268
  return;
3216
3269
  }
3217
3270
  const extensionNames = Object.keys(extensions);
3218
- if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) {
3271
+ if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate2.extensionName) {
3219
3272
  const message = "Server indicated an extension that was not requested";
3220
3273
  abortHandshake(websocket, socket, message);
3221
3274
  return;
3222
3275
  }
3223
3276
  try {
3224
- perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);
3277
+ perMessageDeflate.accept(extensions[PerMessageDeflate2.extensionName]);
3225
3278
  } catch (err) {
3226
3279
  const message = "Invalid Sec-WebSocket-Extensions header";
3227
3280
  abortHandshake(websocket, socket, message);
3228
3281
  return;
3229
3282
  }
3230
- websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
3283
+ websocket._extensions[PerMessageDeflate2.extensionName] = perMessageDeflate;
3231
3284
  }
3232
3285
  websocket.setSocket(socket, head, {
3233
3286
  allowSynchronousEvents: opts.allowSynchronousEvents,
3234
3287
  generateMask: opts.generateMask,
3288
+ maxBufferedChunks: opts.maxBufferedChunks,
3289
+ maxFragments: opts.maxFragments,
3235
3290
  maxPayload: opts.maxPayload,
3236
3291
  skipUTF8Validation: opts.skipUTF8Validation
3237
3292
  });
@@ -3543,9 +3598,9 @@ var require_websocket_server = __commonJS({
3543
3598
  var http = __require("http");
3544
3599
  var { Duplex } = __require("stream");
3545
3600
  var { createHash } = __require("crypto");
3546
- var extension = require_extension();
3547
- var PerMessageDeflate = require_permessage_deflate();
3548
- var subprotocol = require_subprotocol();
3601
+ var extension2 = require_extension();
3602
+ var PerMessageDeflate2 = require_permessage_deflate();
3603
+ var subprotocol2 = require_subprotocol();
3549
3604
  var WebSocket2 = require_websocket();
3550
3605
  var { CLOSE_TIMEOUT, GUID, kWebSocket } = require_constants();
3551
3606
  var keyRegex = /^[+/0-9A-Za-z]{22}==$/;
@@ -3571,6 +3626,10 @@ var require_websocket_server = __commonJS({
3571
3626
  * called
3572
3627
  * @param {Function} [options.handleProtocols] A hook to handle protocols
3573
3628
  * @param {String} [options.host] The hostname where to bind the server
3629
+ * @param {Number} [options.maxBufferedChunks=1048576] The maximum number of
3630
+ * buffered data chunks
3631
+ * @param {Number} [options.maxFragments=131072] The maximum number of message
3632
+ * fragments
3574
3633
  * @param {Number} [options.maxPayload=104857600] The maximum allowed message
3575
3634
  * size
3576
3635
  * @param {Boolean} [options.noServer=false] Enable no server mode
@@ -3592,6 +3651,8 @@ var require_websocket_server = __commonJS({
3592
3651
  options = {
3593
3652
  allowSynchronousEvents: true,
3594
3653
  autoPong: true,
3654
+ maxBufferedChunks: 1024 * 1024,
3655
+ maxFragments: 128 * 1024,
3595
3656
  maxPayload: 100 * 1024 * 1024,
3596
3657
  skipUTF8Validation: false,
3597
3658
  perMessageDeflate: false,
@@ -3768,7 +3829,7 @@ var require_websocket_server = __commonJS({
3768
3829
  let protocols = /* @__PURE__ */ new Set();
3769
3830
  if (secWebSocketProtocol !== void 0) {
3770
3831
  try {
3771
- protocols = subprotocol.parse(secWebSocketProtocol);
3832
+ protocols = subprotocol2.parse(secWebSocketProtocol);
3772
3833
  } catch (err) {
3773
3834
  const message = "Invalid Sec-WebSocket-Protocol header";
3774
3835
  abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
@@ -3778,16 +3839,16 @@ var require_websocket_server = __commonJS({
3778
3839
  const secWebSocketExtensions = req.headers["sec-websocket-extensions"];
3779
3840
  const extensions = {};
3780
3841
  if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) {
3781
- const perMessageDeflate = new PerMessageDeflate(
3782
- this.options.perMessageDeflate,
3783
- true,
3784
- this.options.maxPayload
3785
- );
3842
+ const perMessageDeflate = new PerMessageDeflate2({
3843
+ ...this.options.perMessageDeflate,
3844
+ isServer: true,
3845
+ maxPayload: this.options.maxPayload
3846
+ });
3786
3847
  try {
3787
- const offers = extension.parse(secWebSocketExtensions);
3788
- if (offers[PerMessageDeflate.extensionName]) {
3789
- perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);
3790
- extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
3848
+ const offers = extension2.parse(secWebSocketExtensions);
3849
+ if (offers[PerMessageDeflate2.extensionName]) {
3850
+ perMessageDeflate.accept(offers[PerMessageDeflate2.extensionName]);
3851
+ extensions[PerMessageDeflate2.extensionName] = perMessageDeflate;
3791
3852
  }
3792
3853
  } catch (err) {
3793
3854
  const message = "Invalid or unacceptable Sec-WebSocket-Extensions header";
@@ -3858,10 +3919,10 @@ var require_websocket_server = __commonJS({
3858
3919
  ws._protocol = protocol;
3859
3920
  }
3860
3921
  }
3861
- if (extensions[PerMessageDeflate.extensionName]) {
3862
- const params = extensions[PerMessageDeflate.extensionName].params;
3863
- const value = extension.format({
3864
- [PerMessageDeflate.extensionName]: [params]
3922
+ if (extensions[PerMessageDeflate2.extensionName]) {
3923
+ const params = extensions[PerMessageDeflate2.extensionName].params;
3924
+ const value = extension2.format({
3925
+ [PerMessageDeflate2.extensionName]: [params]
3865
3926
  });
3866
3927
  headers.push(`Sec-WebSocket-Extensions: ${value}`);
3867
3928
  ws._extensions = extensions;
@@ -3871,6 +3932,8 @@ var require_websocket_server = __commonJS({
3871
3932
  socket.removeListener("error", socketOnError);
3872
3933
  ws.setSocket(socket, head, {
3873
3934
  allowSynchronousEvents: this.options.allowSynchronousEvents,
3935
+ maxBufferedChunks: this.options.maxBufferedChunks,
3936
+ maxFragments: this.options.maxFragments,
3874
3937
  maxPayload: this.options.maxPayload,
3875
3938
  skipUTF8Validation: this.options.skipUTF8Validation
3876
3939
  });
@@ -3931,19 +3994,25 @@ var require_websocket_server = __commonJS({
3931
3994
  // ../../node_modules/ws/wrapper.mjs
3932
3995
  var wrapper_exports = {};
3933
3996
  __export(wrapper_exports, {
3997
+ PerMessageDeflate: () => import_permessage_deflate.default,
3934
3998
  Receiver: () => import_receiver.default,
3935
3999
  Sender: () => import_sender.default,
3936
4000
  WebSocket: () => import_websocket.default,
3937
4001
  WebSocketServer: () => import_websocket_server.default,
3938
4002
  createWebSocketStream: () => import_stream.default,
3939
- default: () => wrapper_default
4003
+ default: () => wrapper_default,
4004
+ extension: () => import_extension.default,
4005
+ subprotocol: () => import_subprotocol.default
3940
4006
  });
3941
- var import_stream, import_receiver, import_sender, import_websocket, import_websocket_server, wrapper_default;
4007
+ var import_stream, import_extension, import_permessage_deflate, import_receiver, import_sender, import_subprotocol, import_websocket, import_websocket_server, wrapper_default;
3942
4008
  var init_wrapper = __esm({
3943
4009
  "../../node_modules/ws/wrapper.mjs"() {
3944
4010
  import_stream = __toESM(require_stream());
4011
+ import_extension = __toESM(require_extension());
4012
+ import_permessage_deflate = __toESM(require_permessage_deflate());
3945
4013
  import_receiver = __toESM(require_receiver());
3946
4014
  import_sender = __toESM(require_sender());
4015
+ import_subprotocol = __toESM(require_subprotocol());
3947
4016
  import_websocket = __toESM(require_websocket());
3948
4017
  import_websocket_server = __toESM(require_websocket_server());
3949
4018
  wrapper_default = import_websocket.default;