sql-preview 0.6.1 → 0.6.2

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.
@@ -19037,7 +19037,7 @@ var require_mime_types = __commonJS({
19037
19037
  exports.charset = charset;
19038
19038
  exports.charsets = { lookup: charset };
19039
19039
  exports.contentType = contentType;
19040
- exports.extension = extension;
19040
+ exports.extension = extension2;
19041
19041
  exports.extensions = /* @__PURE__ */ Object.create(null);
19042
19042
  exports.lookup = lookup;
19043
19043
  exports.types = /* @__PURE__ */ Object.create(null);
@@ -19072,7 +19072,7 @@ var require_mime_types = __commonJS({
19072
19072
  }
19073
19073
  return mime;
19074
19074
  }
19075
- function extension(type) {
19075
+ function extension2(type) {
19076
19076
  if (!type || typeof type !== "string") {
19077
19077
  return false;
19078
19078
  }
@@ -19087,11 +19087,11 @@ var require_mime_types = __commonJS({
19087
19087
  if (!path8 || typeof path8 !== "string") {
19088
19088
  return false;
19089
19089
  }
19090
- var extension2 = extname("x." + path8).toLowerCase().slice(1);
19091
- if (!extension2) {
19090
+ var extension3 = extname("x." + path8).toLowerCase().slice(1);
19091
+ if (!extension3) {
19092
19092
  return false;
19093
19093
  }
19094
- return exports.types[extension2] || false;
19094
+ return exports.types[extension3] || false;
19095
19095
  }
19096
19096
  function populateMaps(extensions, types) {
19097
19097
  Object.keys(db).forEach(function forEachMimeType(type) {
@@ -19102,15 +19102,15 @@ var require_mime_types = __commonJS({
19102
19102
  }
19103
19103
  extensions[type] = exts;
19104
19104
  for (var i = 0; i < exts.length; i++) {
19105
- var extension2 = exts[i];
19106
- types[extension2] = _preferredType(extension2, types[extension2], type);
19105
+ var extension3 = exts[i];
19106
+ types[extension3] = _preferredType(extension3, types[extension3], type);
19107
19107
  const legacyType = _preferredTypeLegacy(
19108
- extension2,
19109
- types[extension2],
19108
+ extension3,
19109
+ types[extension3],
19110
19110
  type
19111
19111
  );
19112
- if (legacyType !== types[extension2]) {
19113
- exports._extensionConflicts.push([extension2, legacyType, types[extension2]]);
19112
+ if (legacyType !== types[extension3]) {
19113
+ exports._extensionConflicts.push([extension3, legacyType, types[extension3]]);
19114
19114
  }
19115
19115
  }
19116
19116
  });
@@ -19124,7 +19124,7 @@ var require_mime_types = __commonJS({
19124
19124
  var SOURCE_RANK = ["nginx", "apache", void 0, "iana"];
19125
19125
  var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0;
19126
19126
  var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0;
19127
- if (exports.types[extension] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension]?.slice(0, 12) === "application/")) {
19127
+ if (exports.types[extension2] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension2]?.slice(0, 12) === "application/")) {
19128
19128
  return type0;
19129
19129
  }
19130
19130
  return score0 > score1 ? type0 : type1;
@@ -19555,10 +19555,7 @@ var require_json = __commonJS({
19555
19555
  var index = str.indexOf(char);
19556
19556
  var partial2 = "";
19557
19557
  if (index !== -1) {
19558
- partial2 = str.substring(0, index) + JSON_SYNTAX_CHAR;
19559
- for (var i = index + 1; i < str.length; i++) {
19560
- partial2 += JSON_SYNTAX_CHAR;
19561
- }
19558
+ partial2 = str.substring(0, index) + JSON_SYNTAX_CHAR.repeat(str.length - index);
19562
19559
  }
19563
19560
  try {
19564
19561
  JSON.parse(partial2);
@@ -21634,7 +21631,7 @@ var require_stringify = __commonJS({
21634
21631
  }
21635
21632
  if (obj === null) {
21636
21633
  if (strictNullHandling) {
21637
- return encoder && !encodeValuesOnly ? encoder(prefix, defaults2.encoder, charset, "key", format) : prefix;
21634
+ return formatter(encoder && !encodeValuesOnly ? encoder(prefix, defaults2.encoder, charset, "key", format) : prefix);
21638
21635
  }
21639
21636
  obj = "";
21640
21637
  }
@@ -21652,7 +21649,9 @@ var require_stringify = __commonJS({
21652
21649
  var objKeys;
21653
21650
  if (generateArrayPrefix === "comma" && isArray2(obj)) {
21654
21651
  if (encodeValuesOnly && encoder) {
21655
- obj = utils.maybeMap(obj, encoder);
21652
+ obj = utils.maybeMap(obj, function(v) {
21653
+ return v == null ? v : encoder(v);
21654
+ });
21656
21655
  }
21657
21656
  objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }];
21658
21657
  } else if (isArray2(filter2)) {
@@ -21790,6 +21789,9 @@ var require_stringify = __commonJS({
21790
21789
  var sideChannel = getSideChannel();
21791
21790
  for (var i = 0; i < objKeys.length; ++i) {
21792
21791
  var key = objKeys[i];
21792
+ if (typeof key === "undefined" || key === null) {
21793
+ continue;
21794
+ }
21793
21795
  var value = obj[key];
21794
21796
  if (options.skipNulls && value === null) {
21795
21797
  continue;
@@ -21819,9 +21821,9 @@ var require_stringify = __commonJS({
21819
21821
  var prefix = options.addQueryPrefix === true ? "?" : "";
21820
21822
  if (options.charsetSentinel) {
21821
21823
  if (options.charset === "iso-8859-1") {
21822
- prefix += "utf8=%26%2310003%3B&";
21824
+ prefix += "utf8=%26%2310003%3B" + options.delimiter;
21823
21825
  } else {
21824
- prefix += "utf8=%E2%9C%93&";
21826
+ prefix += "utf8=%E2%9C%93" + options.delimiter;
21825
21827
  }
21826
21828
  }
21827
21829
  return joined.length > 0 ? prefix + joined : "";
@@ -22004,8 +22006,8 @@ var require_parse = __commonJS({
22004
22006
  }
22005
22007
  return leaf;
22006
22008
  };
22007
- var splitKeyIntoSegments = function splitKeyIntoSegments2(givenKey, options) {
22008
- var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, "[$1]") : givenKey;
22009
+ var splitKeyIntoSegments = function splitKeyIntoSegments2(originalKey, options) {
22010
+ var key = options.allowDots ? originalKey.replace(/\.([^.[]+)/g, "[$1]") : originalKey;
22009
22011
  if (options.depth <= 0) {
22010
22012
  if (!options.plainObjects && has.call(Object.prototype, key)) {
22011
22013
  if (!options.allowPrototypes) {
@@ -22014,37 +22016,56 @@ var require_parse = __commonJS({
22014
22016
  }
22015
22017
  return [key];
22016
22018
  }
22017
- var brackets = /(\[[^[\]]*])/;
22018
- var child = /(\[[^[\]]*])/g;
22019
- var segment = brackets.exec(key);
22020
- var parent = segment ? key.slice(0, segment.index) : key;
22021
- var keys = [];
22019
+ var segments = [];
22020
+ var first = key.indexOf("[");
22021
+ var parent = first >= 0 ? key.slice(0, first) : key;
22022
22022
  if (parent) {
22023
22023
  if (!options.plainObjects && has.call(Object.prototype, parent)) {
22024
22024
  if (!options.allowPrototypes) {
22025
22025
  return;
22026
22026
  }
22027
22027
  }
22028
- keys[keys.length] = parent;
22028
+ segments[segments.length] = parent;
22029
22029
  }
22030
- var i = 0;
22031
- while ((segment = child.exec(key)) !== null && i < options.depth) {
22032
- i += 1;
22033
- var segmentContent = segment[1].slice(1, -1);
22034
- if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {
22035
- if (!options.allowPrototypes) {
22036
- return;
22030
+ var n = key.length;
22031
+ var open = first;
22032
+ var collected = 0;
22033
+ while (open >= 0 && collected < options.depth) {
22034
+ var level = 1;
22035
+ var i = open + 1;
22036
+ var close = -1;
22037
+ while (i < n && close < 0) {
22038
+ var cu = key.charCodeAt(i);
22039
+ if (cu === 91) {
22040
+ level += 1;
22041
+ } else if (cu === 93) {
22042
+ level -= 1;
22043
+ if (level === 0) {
22044
+ close = i;
22045
+ }
22037
22046
  }
22047
+ i += 1;
22038
22048
  }
22039
- keys[keys.length] = segment[1];
22049
+ if (close < 0) {
22050
+ segments[segments.length] = "[" + key.slice(open) + "]";
22051
+ return segments;
22052
+ }
22053
+ var seg = key.slice(open, close + 1);
22054
+ var content = seg.slice(1, -1);
22055
+ if (!options.plainObjects && has.call(Object.prototype, content) && !options.allowPrototypes) {
22056
+ return;
22057
+ }
22058
+ segments[segments.length] = seg;
22059
+ collected += 1;
22060
+ open = key.indexOf("[", close + 1);
22040
22061
  }
22041
- if (segment) {
22062
+ if (open >= 0) {
22042
22063
  if (options.strictDepth === true) {
22043
22064
  throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true");
22044
22065
  }
22045
- keys[keys.length] = "[" + key.slice(segment.index) + "]";
22066
+ segments[segments.length] = "[" + key.slice(open) + "]";
22046
22067
  }
22047
- return keys;
22068
+ return segments;
22048
22069
  };
22049
22070
  var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
22050
22071
  if (!givenKey) {
@@ -22194,7 +22215,7 @@ var require_urlencoded = __commonJS({
22194
22215
  type: "parameters.too.many"
22195
22216
  });
22196
22217
  }
22197
- var arrayLimit = extended ? Math.max(100, paramCount) : 0;
22218
+ var arrayLimit = extended ? Math.max(100, paramCount) : paramCount;
22198
22219
  debug("parse " + (extended ? "extended " : "") + "urlencoding");
22199
22220
  try {
22200
22221
  return qs.parse(body, {
@@ -32100,7 +32121,7 @@ var require_mime_types2 = __commonJS({
32100
32121
  exports.charset = charset;
32101
32122
  exports.charsets = { lookup: charset };
32102
32123
  exports.contentType = contentType;
32103
- exports.extension = extension;
32124
+ exports.extension = extension2;
32104
32125
  exports.extensions = /* @__PURE__ */ Object.create(null);
32105
32126
  exports.lookup = lookup;
32106
32127
  exports.types = /* @__PURE__ */ Object.create(null);
@@ -32135,7 +32156,7 @@ var require_mime_types2 = __commonJS({
32135
32156
  }
32136
32157
  return mime;
32137
32158
  }
32138
- function extension(type) {
32159
+ function extension2(type) {
32139
32160
  if (!type || typeof type !== "string") {
32140
32161
  return false;
32141
32162
  }
@@ -32150,11 +32171,11 @@ var require_mime_types2 = __commonJS({
32150
32171
  if (!path8 || typeof path8 !== "string") {
32151
32172
  return false;
32152
32173
  }
32153
- var extension2 = extname("x." + path8).toLowerCase().slice(1);
32154
- if (!extension2) {
32174
+ var extension3 = extname("x." + path8).toLowerCase().slice(1);
32175
+ if (!extension3) {
32155
32176
  return false;
32156
32177
  }
32157
- return exports.types[extension2] || false;
32178
+ return exports.types[extension3] || false;
32158
32179
  }
32159
32180
  function populateMaps(extensions, types) {
32160
32181
  Object.keys(db).forEach(function forEachMimeType(type) {
@@ -32165,15 +32186,15 @@ var require_mime_types2 = __commonJS({
32165
32186
  }
32166
32187
  extensions[type] = exts;
32167
32188
  for (var i = 0; i < exts.length; i++) {
32168
- var extension2 = exts[i];
32169
- types[extension2] = _preferredType(extension2, types[extension2], type);
32189
+ var extension3 = exts[i];
32190
+ types[extension3] = _preferredType(extension3, types[extension3], type);
32170
32191
  const legacyType = _preferredTypeLegacy(
32171
- extension2,
32172
- types[extension2],
32192
+ extension3,
32193
+ types[extension3],
32173
32194
  type
32174
32195
  );
32175
- if (legacyType !== types[extension2]) {
32176
- exports._extensionConflicts.push([extension2, legacyType, types[extension2]]);
32196
+ if (legacyType !== types[extension3]) {
32197
+ exports._extensionConflicts.push([extension3, legacyType, types[extension3]]);
32177
32198
  }
32178
32199
  }
32179
32200
  });
@@ -32187,7 +32208,7 @@ var require_mime_types2 = __commonJS({
32187
32208
  var SOURCE_RANK = ["nginx", "apache", void 0, "iana"];
32188
32209
  var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0;
32189
32210
  var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0;
32190
- if (exports.types[extension] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension]?.slice(0, 12) === "application/")) {
32211
+ if (exports.types[extension2] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension2]?.slice(0, 12) === "application/")) {
32191
32212
  return type0;
32192
32213
  }
32193
32214
  return score0 > score1 ? type0 : type1;
@@ -34413,8 +34434,8 @@ var require_application = __commonJS({
34413
34434
  if (typeof fn !== "function") {
34414
34435
  throw new Error("callback function required");
34415
34436
  }
34416
- var extension = ext[0] !== "." ? "." + ext : ext;
34417
- this.engines[extension] = fn;
34437
+ var extension2 = ext[0] !== "." ? "." + ext : ext;
34438
+ this.engines[extension2] = fn;
34418
34439
  return this;
34419
34440
  };
34420
34441
  app.param = function param(name, fn) {
@@ -44473,7 +44494,7 @@ var require_mime_types3 = __commonJS({
44473
44494
  exports.charset = charset;
44474
44495
  exports.charsets = { lookup: charset };
44475
44496
  exports.contentType = contentType;
44476
- exports.extension = extension;
44497
+ exports.extension = extension2;
44477
44498
  exports.extensions = /* @__PURE__ */ Object.create(null);
44478
44499
  exports.lookup = lookup;
44479
44500
  exports.types = /* @__PURE__ */ Object.create(null);
@@ -44508,7 +44529,7 @@ var require_mime_types3 = __commonJS({
44508
44529
  }
44509
44530
  return mime;
44510
44531
  }
44511
- function extension(type) {
44532
+ function extension2(type) {
44512
44533
  if (!type || typeof type !== "string") {
44513
44534
  return false;
44514
44535
  }
@@ -44523,11 +44544,11 @@ var require_mime_types3 = __commonJS({
44523
44544
  if (!path8 || typeof path8 !== "string") {
44524
44545
  return false;
44525
44546
  }
44526
- var extension2 = extname("x." + path8).toLowerCase().slice(1);
44527
- if (!extension2) {
44547
+ var extension3 = extname("x." + path8).toLowerCase().slice(1);
44548
+ if (!extension3) {
44528
44549
  return false;
44529
44550
  }
44530
- return exports.types[extension2] || false;
44551
+ return exports.types[extension3] || false;
44531
44552
  }
44532
44553
  function populateMaps(extensions, types) {
44533
44554
  Object.keys(db).forEach(function forEachMimeType(type) {
@@ -44538,15 +44559,15 @@ var require_mime_types3 = __commonJS({
44538
44559
  }
44539
44560
  extensions[type] = exts;
44540
44561
  for (var i = 0; i < exts.length; i++) {
44541
- var extension2 = exts[i];
44542
- types[extension2] = _preferredType(extension2, types[extension2], type);
44562
+ var extension3 = exts[i];
44563
+ types[extension3] = _preferredType(extension3, types[extension3], type);
44543
44564
  const legacyType = _preferredTypeLegacy(
44544
- extension2,
44545
- types[extension2],
44565
+ extension3,
44566
+ types[extension3],
44546
44567
  type
44547
44568
  );
44548
- if (legacyType !== types[extension2]) {
44549
- exports._extensionConflicts.push([extension2, legacyType, types[extension2]]);
44569
+ if (legacyType !== types[extension3]) {
44570
+ exports._extensionConflicts.push([extension3, legacyType, types[extension3]]);
44550
44571
  }
44551
44572
  }
44552
44573
  });
@@ -44560,7 +44581,7 @@ var require_mime_types3 = __commonJS({
44560
44581
  var SOURCE_RANK = ["nginx", "apache", void 0, "iana"];
44561
44582
  var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0;
44562
44583
  var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0;
44563
- if (exports.types[extension] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension]?.slice(0, 12) === "application/")) {
44584
+ if (exports.types[extension2] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension2]?.slice(0, 12) === "application/")) {
44564
44585
  return type0;
44565
44586
  }
44566
44587
  return score0 > score1 ? type0 : type1;
@@ -54721,7 +54742,7 @@ var require_mime_types4 = __commonJS({
54721
54742
  exports.charset = charset;
54722
54743
  exports.charsets = { lookup: charset };
54723
54744
  exports.contentType = contentType;
54724
- exports.extension = extension;
54745
+ exports.extension = extension2;
54725
54746
  exports.extensions = /* @__PURE__ */ Object.create(null);
54726
54747
  exports.lookup = lookup;
54727
54748
  exports.types = /* @__PURE__ */ Object.create(null);
@@ -54756,7 +54777,7 @@ var require_mime_types4 = __commonJS({
54756
54777
  }
54757
54778
  return mime;
54758
54779
  }
54759
- function extension(type) {
54780
+ function extension2(type) {
54760
54781
  if (!type || typeof type !== "string") {
54761
54782
  return false;
54762
54783
  }
@@ -54771,11 +54792,11 @@ var require_mime_types4 = __commonJS({
54771
54792
  if (!path8 || typeof path8 !== "string") {
54772
54793
  return false;
54773
54794
  }
54774
- var extension2 = extname("x." + path8).toLowerCase().slice(1);
54775
- if (!extension2) {
54795
+ var extension3 = extname("x." + path8).toLowerCase().slice(1);
54796
+ if (!extension3) {
54776
54797
  return false;
54777
54798
  }
54778
- return exports.types[extension2] || false;
54799
+ return exports.types[extension3] || false;
54779
54800
  }
54780
54801
  function populateMaps(extensions, types) {
54781
54802
  Object.keys(db).forEach(function forEachMimeType(type) {
@@ -54786,15 +54807,15 @@ var require_mime_types4 = __commonJS({
54786
54807
  }
54787
54808
  extensions[type] = exts;
54788
54809
  for (var i = 0; i < exts.length; i++) {
54789
- var extension2 = exts[i];
54790
- types[extension2] = _preferredType(extension2, types[extension2], type);
54810
+ var extension3 = exts[i];
54811
+ types[extension3] = _preferredType(extension3, types[extension3], type);
54791
54812
  const legacyType = _preferredTypeLegacy(
54792
- extension2,
54793
- types[extension2],
54813
+ extension3,
54814
+ types[extension3],
54794
54815
  type
54795
54816
  );
54796
- if (legacyType !== types[extension2]) {
54797
- exports._extensionConflicts.push([extension2, legacyType, types[extension2]]);
54817
+ if (legacyType !== types[extension3]) {
54818
+ exports._extensionConflicts.push([extension3, legacyType, types[extension3]]);
54798
54819
  }
54799
54820
  }
54800
54821
  });
@@ -54808,7 +54829,7 @@ var require_mime_types4 = __commonJS({
54808
54829
  var SOURCE_RANK = ["nginx", "apache", void 0, "iana"];
54809
54830
  var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0;
54810
54831
  var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0;
54811
- if (exports.types[extension] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension]?.slice(0, 12) === "application/")) {
54832
+ if (exports.types[extension2] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension2]?.slice(0, 12) === "application/")) {
54812
54833
  return type0;
54813
54834
  }
54814
54835
  return score0 > score1 ? type0 : type1;
@@ -66177,7 +66198,7 @@ var require_mime_types5 = __commonJS({
66177
66198
  exports.charset = charset;
66178
66199
  exports.charsets = { lookup: charset };
66179
66200
  exports.contentType = contentType;
66180
- exports.extension = extension;
66201
+ exports.extension = extension2;
66181
66202
  exports.extensions = /* @__PURE__ */ Object.create(null);
66182
66203
  exports.lookup = lookup;
66183
66204
  exports.types = /* @__PURE__ */ Object.create(null);
@@ -66211,7 +66232,7 @@ var require_mime_types5 = __commonJS({
66211
66232
  }
66212
66233
  return mime;
66213
66234
  }
66214
- function extension(type) {
66235
+ function extension2(type) {
66215
66236
  if (!type || typeof type !== "string") {
66216
66237
  return false;
66217
66238
  }
@@ -66226,11 +66247,11 @@ var require_mime_types5 = __commonJS({
66226
66247
  if (!path8 || typeof path8 !== "string") {
66227
66248
  return false;
66228
66249
  }
66229
- var extension2 = extname("x." + path8).toLowerCase().substr(1);
66230
- if (!extension2) {
66250
+ var extension3 = extname("x." + path8).toLowerCase().substr(1);
66251
+ if (!extension3) {
66231
66252
  return false;
66232
66253
  }
66233
- return exports.types[extension2] || false;
66254
+ return exports.types[extension3] || false;
66234
66255
  }
66235
66256
  function populateMaps(extensions, types) {
66236
66257
  var preference = ["nginx", "apache", void 0, "iana"];
@@ -66242,15 +66263,15 @@ var require_mime_types5 = __commonJS({
66242
66263
  }
66243
66264
  extensions[type] = exts;
66244
66265
  for (var i = 0; i < exts.length; i++) {
66245
- var extension2 = exts[i];
66246
- if (types[extension2]) {
66247
- var from = preference.indexOf(db[types[extension2]].source);
66266
+ var extension3 = exts[i];
66267
+ if (types[extension3]) {
66268
+ var from = preference.indexOf(db[types[extension3]].source);
66248
66269
  var to = preference.indexOf(mime.source);
66249
- if (types[extension2] !== "application/octet-stream" && (from > to || from === to && types[extension2].substr(0, 12) === "application/")) {
66270
+ if (types[extension3] !== "application/octet-stream" && (from > to || from === to && types[extension3].substr(0, 12) === "application/")) {
66250
66271
  continue;
66251
66272
  }
66252
66273
  }
66253
- types[extension2] = type;
66274
+ types[extension3] = type;
66254
66275
  }
66255
66276
  });
66256
66277
  }
@@ -74771,6 +74792,9 @@ var src_exports7 = {};
74771
74792
  __export(src_exports7, {
74772
74793
  default: () => SnowflakeConnector
74773
74794
  });
74795
+ function isDriverManagerLike(value) {
74796
+ return typeof value === "object" && value !== null && "getDriver" in value && typeof value.getDriver === "function";
74797
+ }
74774
74798
  function normaliseAccount(account) {
74775
74799
  let a = account.trim();
74776
74800
  a = a.replace(/\/+$/, "");
@@ -74816,6 +74840,9 @@ function mapSnowflakeTableType(tableType) {
74816
74840
  return "UNKNOWN";
74817
74841
  }
74818
74842
  function connectAsync(connection) {
74843
+ if (typeof connection.connectAsync === "function") {
74844
+ return connection.connectAsync();
74845
+ }
74819
74846
  return new Promise((resolve2, reject) => {
74820
74847
  connection.connect((err) => {
74821
74848
  if (err) {
@@ -74877,10 +74904,11 @@ var init_src8 = __esm({
74877
74904
  init_descriptor7();
74878
74905
  SNOWFLAKE_SYSTEM_SCHEMAS = /* @__PURE__ */ new Set(["INFORMATION_SCHEMA"]);
74879
74906
  SnowflakeConnector = class {
74880
- constructor() {
74907
+ constructor(driverManager) {
74881
74908
  this.id = "snowflake";
74882
74909
  this.supportsPagination = false;
74883
74910
  this.configSchema = snowflakeConnectorConfigSchema;
74911
+ this.driverManager = isDriverManagerLike(driverManager) ? driverManager : { getDriver: async (driverName) => driverName };
74884
74912
  }
74885
74913
  // ── validateConfig ──────────────────────────────────────────────────────
74886
74914
  validateConfig(config2) {
@@ -74891,11 +74919,22 @@ var init_src8 = __esm({
74891
74919
  if (!cfg.username) {
74892
74920
  return "username is required";
74893
74921
  }
74922
+ const authMode = this.resolveAuthMode(cfg);
74923
+ if (!["password", "keypair", "externalbrowser"].includes(authMode)) {
74924
+ return `unsupported Snowflake auth mode: ${String(cfg.authMode)}`;
74925
+ }
74926
+ if (authMode === "keypair" && !cfg.privateKeyPath) {
74927
+ return "privateKeyPath is required for Snowflake key pair authentication";
74928
+ }
74894
74929
  return void 0;
74895
74930
  }
74896
74931
  // ── Private: build connection options ───────────────────────────────────
74932
+ resolveAuthMode(cfg) {
74933
+ return cfg.authMode ?? (cfg.privateKeyPath ? "keypair" : "password");
74934
+ }
74897
74935
  buildConnectionOptions(cfg) {
74898
74936
  const account = normaliseAccount(cfg.account);
74937
+ const authMode = this.resolveAuthMode(cfg);
74899
74938
  const opts = {
74900
74939
  account,
74901
74940
  username: cfg.username,
@@ -74906,7 +74945,12 @@ var init_src8 = __esm({
74906
74945
  loginTimeout: cfg.loginTimeout ?? 60,
74907
74946
  application: cfg.application ?? "sql-preview"
74908
74947
  };
74909
- if (cfg.privateKeyPath) {
74948
+ if (authMode === "externalbrowser") {
74949
+ opts["authenticator"] = "EXTERNALBROWSER";
74950
+ if (cfg.clientStoreTemporaryCredential) {
74951
+ opts["clientStoreTemporaryCredential"] = true;
74952
+ }
74953
+ } else if (authMode === "keypair") {
74910
74954
  const keyContent = (0, import_fs.readFileSync)(cfg.privateKeyPath, "utf8");
74911
74955
  const pk = (0, import_crypto2.createPrivateKey)({
74912
74956
  key: keyContent,
@@ -74921,7 +74965,8 @@ var init_src8 = __esm({
74921
74965
  }
74922
74966
  // ── Private: create and connect ─────────────────────────────────────────
74923
74967
  async createConnection(cfg) {
74924
- const snowflake = require("snowflake-sdk");
74968
+ const driverPath = await this.driverManager.getDriver("snowflake-sdk");
74969
+ const snowflake = require(driverPath);
74925
74970
  const connection = snowflake.createConnection(this.buildConnectionOptions(cfg));
74926
74971
  try {
74927
74972
  await connectAsync(connection);
@@ -75087,6 +75132,15 @@ var init_descriptor7 = __esm({
75087
75132
  snowflakeConnectorConfigSchema = {
75088
75133
  type: "object",
75089
75134
  properties: {
75135
+ authMode: {
75136
+ type: "string",
75137
+ title: "Authentication",
75138
+ description: "Choose password, key-pair, or local browser SSO authentication",
75139
+ enum: ["password", "keypair", "externalbrowser"],
75140
+ enumNames: ["Password", "Key pair", "Browser SSO"],
75141
+ default: "password",
75142
+ ui: { fullWidth: true }
75143
+ },
75090
75144
  account: {
75091
75145
  type: "string",
75092
75146
  title: "Account",
@@ -75097,7 +75151,26 @@ var init_descriptor7 = __esm({
75097
75151
  type: "string",
75098
75152
  title: "Password",
75099
75153
  description: "Password (stored securely)",
75100
- ui: { widget: "password" }
75154
+ ui: { widget: "password", visibleWhen: { field: "authMode", equals: "password" } }
75155
+ },
75156
+ privateKeyPath: {
75157
+ type: "string",
75158
+ title: "Private key path",
75159
+ description: "Absolute path to a PEM private key file",
75160
+ ui: { visibleWhen: { field: "authMode", equals: "keypair" } }
75161
+ },
75162
+ privateKeyPassphrase: {
75163
+ type: "string",
75164
+ title: "Private key passphrase",
75165
+ description: "Passphrase for the private key, if one is required",
75166
+ ui: { widget: "password", visibleWhen: { field: "authMode", equals: "keypair" } }
75167
+ },
75168
+ clientStoreTemporaryCredential: {
75169
+ type: "boolean",
75170
+ title: "Cache browser SSO token",
75171
+ description: "Requests Snowflake driver token caching when the account allows ID-token caching",
75172
+ default: false,
75173
+ ui: { visibleWhen: { field: "authMode", equals: "externalbrowser" } }
75101
75174
  },
75102
75175
  warehouse: {
75103
75176
  type: "string",
@@ -75119,9 +75192,9 @@ var init_descriptor7 = __esm({
75119
75192
  displayName: "Snowflake",
75120
75193
  supportsPagination: false,
75121
75194
  configSchema: snowflakeConnectorConfigSchema,
75122
- create: () => {
75195
+ create: (driverManager) => {
75123
75196
  const { default: SnowflakeConnector2 } = (init_src8(), __toCommonJS(src_exports7));
75124
- return new SnowflakeConnector2();
75197
+ return new SnowflakeConnector2(driverManager);
75125
75198
  }
75126
75199
  };
75127
75200
  }
@@ -76682,6 +76755,13 @@ var init_querySplitter = __esm({
76682
76755
  });
76683
76756
 
76684
76757
  // src/server/DaemonMcpToolManager.ts
76758
+ function isSnowflakeBrowserSsoProfile(value) {
76759
+ if (!value || typeof value !== "object") {
76760
+ return false;
76761
+ }
76762
+ const profile = value;
76763
+ return profile["type"] === "snowflake" && profile["authMode"] === "externalbrowser";
76764
+ }
76685
76765
  function stripCommentsAndStrings(sql) {
76686
76766
  let result = "";
76687
76767
  let inSingleQuote = false;
@@ -76754,7 +76834,7 @@ function isReadOnlySql(sql) {
76754
76834
  }
76755
76835
  return !WRITE_KEYWORDS.test(normalized);
76756
76836
  }
76757
- var WRITE_KEYWORDS, READ_ONLY_START_KEYWORDS, DaemonMcpToolManager;
76837
+ var WRITE_KEYWORDS, READ_ONLY_START_KEYWORDS, SNOWFLAKE_BROWSER_SSO_UNSUPPORTED_MESSAGE, DaemonMcpToolManager;
76758
76838
  var init_DaemonMcpToolManager = __esm({
76759
76839
  "src/server/DaemonMcpToolManager.ts"() {
76760
76840
  "use strict";
@@ -76764,6 +76844,7 @@ var init_DaemonMcpToolManager = __esm({
76764
76844
  init_querySplitter();
76765
76845
  WRITE_KEYWORDS = /\b(ALTER|CALL|COPY|CREATE|DELETE|DROP|EXEC|EXECUTE|GRANT|INSERT|INSTALL|LOAD|MERGE|REPLACE|REVOKE|SET|TRUNCATE|UPDATE|VACUUM)\b/i;
76766
76846
  READ_ONLY_START_KEYWORDS = /* @__PURE__ */ new Set(["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "WITH"]);
76847
+ SNOWFLAKE_BROWSER_SSO_UNSUPPORTED_MESSAGE = "Snowflake browser SSO is only supported from the local VS Code extension because it requires opening a browser on the user's machine.";
76767
76848
  DaemonMcpToolManager = class {
76768
76849
  constructor(sessionManager, queryExecutor, connectionManager, connectorRegistry, queryOperationRunner, options = {}) {
76769
76850
  this.sessionManager = sessionManager;
@@ -77181,6 +77262,9 @@ var init_DaemonMcpToolManager = __esm({
77181
77262
  if (!profile || !profile.id || !profile.name || !profile.type) {
77182
77263
  throw new Error("Invalid connection profile: missing id, name, or type");
77183
77264
  }
77265
+ if (isSnowflakeBrowserSsoProfile(profile)) {
77266
+ throw new Error(SNOWFLAKE_BROWSER_SSO_UNSUPPORTED_MESSAGE);
77267
+ }
77184
77268
  await this.connectionManager.saveProfile(profile);
77185
77269
  return {
77186
77270
  content: [{ type: "text", text: `Connection '${profile.id}' saved.` }]
@@ -77211,6 +77295,9 @@ var init_DaemonMcpToolManager = __esm({
77211
77295
  } else {
77212
77296
  throw new Error("Must provide either connectionId or (type, connectionProfile)");
77213
77297
  }
77298
+ if (typeToTest === "snowflake" && isSnowflakeBrowserSsoProfile(configToTest)) {
77299
+ throw new Error(SNOWFLAKE_BROWSER_SSO_UNSUPPORTED_MESSAGE);
77300
+ }
77214
77301
  const result = await this.queryExecutor.testConnection(
77215
77302
  typeToTest,
77216
77303
  configToTest,
@@ -77681,6 +77768,7 @@ var init_DaemonQueryExecutor = __esm({
77681
77768
  this.logger.info(`Query execution completed for session ${sessionId}`);
77682
77769
  } catch (e) {
77683
77770
  const message = e instanceof Error ? e.message : String(e);
77771
+ const lowerMessage = message.toLowerCase();
77684
77772
  const looksLikeMissingDuckDb = message.includes("@duckdb/node-api") || message.includes("Cannot find module") || message.includes("native module is not available");
77685
77773
  if (isAutoRoutedDuckDbFileQuery && looksLikeMissingDuckDb) {
77686
77774
  throw new OptionalDependencyError({
@@ -77692,6 +77780,17 @@ var init_DaemonQueryExecutor = __esm({
77692
77780
  cause: message
77693
77781
  });
77694
77782
  }
77783
+ const looksLikeMissingSnowflakeSdk = message.includes("snowflake-sdk") || lowerMessage.includes("snowflake sdk") || lowerMessage.includes("sdk is not available");
77784
+ if (profile.type === "snowflake" && looksLikeMissingSnowflakeSdk) {
77785
+ throw new OptionalDependencyError({
77786
+ connector: "snowflake",
77787
+ dependency: "snowflake-sdk",
77788
+ capability: "Snowflake connections",
77789
+ installCommand: "npm install snowflake-sdk",
77790
+ guidance: "Snowflake connections require optional Snowflake SDK support, but the SDK is not available in this extension runtime.",
77791
+ cause: message
77792
+ });
77793
+ }
77695
77794
  if (querySignal.didTimeout()) {
77696
77795
  throw new Error(`Query timed out after ${this.queryConfig.timeoutMs}ms`);
77697
77796
  }
@@ -127265,7 +127364,7 @@ var require_permessage_deflate = __commonJS({
127265
127364
  var kBuffers = Symbol("buffers");
127266
127365
  var kError = Symbol("error");
127267
127366
  var zlibLimiter;
127268
- var PerMessageDeflate = class {
127367
+ var PerMessageDeflate2 = class {
127269
127368
  /**
127270
127369
  * Creates a PerMessageDeflate instance.
127271
127370
  *
@@ -127276,6 +127375,9 @@ var require_permessage_deflate = __commonJS({
127276
127375
  * acknowledge disabling of client context takeover
127277
127376
  * @param {Number} [options.concurrencyLimit=10] The number of concurrent
127278
127377
  * calls to zlib
127378
+ * @param {Boolean} [options.isServer=false] Create the instance in either
127379
+ * server or client mode
127380
+ * @param {Number} [options.maxPayload=0] The maximum allowed message length
127279
127381
  * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the
127280
127382
  * use of a custom server window size
127281
127383
  * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept
@@ -127286,15 +127388,12 @@ var require_permessage_deflate = __commonJS({
127286
127388
  * deflate
127287
127389
  * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on
127288
127390
  * inflate
127289
- * @param {Boolean} [isServer=false] Create the instance in either server or
127290
- * client mode
127291
- * @param {Number} [maxPayload=0] The maximum allowed message length
127292
127391
  */
127293
- constructor(options, isServer, maxPayload) {
127294
- this._maxPayload = maxPayload | 0;
127392
+ constructor(options) {
127295
127393
  this._options = options || {};
127296
127394
  this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024;
127297
- this._isServer = !!isServer;
127395
+ this._maxPayload = this._options.maxPayload | 0;
127396
+ this._isServer = !!this._options.isServer;
127298
127397
  this._deflate = null;
127299
127398
  this._inflate = null;
127300
127399
  this.params = null;
@@ -127604,7 +127703,7 @@ var require_permessage_deflate = __commonJS({
127604
127703
  });
127605
127704
  }
127606
127705
  };
127607
- module2.exports = PerMessageDeflate;
127706
+ module2.exports = PerMessageDeflate2;
127608
127707
  function deflateOnData(chunk) {
127609
127708
  this[kBuffers].push(chunk);
127610
127709
  this[kTotalLength] += chunk.length;
@@ -127839,7 +127938,7 @@ var require_receiver = __commonJS({
127839
127938
  "node_modules/ws/lib/receiver.js"(exports, module2) {
127840
127939
  "use strict";
127841
127940
  var { Writable } = require("stream");
127842
- var PerMessageDeflate = require_permessage_deflate();
127941
+ var PerMessageDeflate2 = require_permessage_deflate();
127843
127942
  var {
127844
127943
  BINARY_TYPES,
127845
127944
  EMPTY_BUFFER,
@@ -127869,6 +127968,10 @@ var require_receiver = __commonJS({
127869
127968
  * extensions
127870
127969
  * @param {Boolean} [options.isServer=false] Specifies whether to operate in
127871
127970
  * client or server mode
127971
+ * @param {Number} [options.maxBufferedChunks=0] The maximum number of
127972
+ * buffered data chunks
127973
+ * @param {Number} [options.maxFragments=0] The maximum number of message
127974
+ * fragments
127872
127975
  * @param {Number} [options.maxPayload=0] The maximum allowed message length
127873
127976
  * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
127874
127977
  * not to skip UTF-8 validation for text and close messages
@@ -127879,6 +127982,8 @@ var require_receiver = __commonJS({
127879
127982
  this._binaryType = options.binaryType || BINARY_TYPES[0];
127880
127983
  this._extensions = options.extensions || {};
127881
127984
  this._isServer = !!options.isServer;
127985
+ this._maxBufferedChunks = options.maxBufferedChunks | 0;
127986
+ this._maxFragments = options.maxFragments | 0;
127882
127987
  this._maxPayload = options.maxPayload | 0;
127883
127988
  this._skipUTF8Validation = !!options.skipUTF8Validation;
127884
127989
  this[kWebSocket] = void 0;
@@ -127909,6 +128014,18 @@ var require_receiver = __commonJS({
127909
128014
  _write(chunk, encoding, cb) {
127910
128015
  if (this._opcode === 8 && this._state == GET_INFO)
127911
128016
  return cb();
128017
+ if (this._maxBufferedChunks > 0 && this._buffers.length >= this._maxBufferedChunks) {
128018
+ cb(
128019
+ this.createError(
128020
+ RangeError,
128021
+ "Too many buffered chunks",
128022
+ false,
128023
+ 1008,
128024
+ "WS_ERR_TOO_MANY_BUFFERED_PARTS"
128025
+ )
128026
+ );
128027
+ return;
128028
+ }
127912
128029
  this._bufferedBytes += chunk.length;
127913
128030
  this._buffers.push(chunk);
127914
128031
  this.startLoop(cb);
@@ -128009,7 +128126,7 @@ var require_receiver = __commonJS({
128009
128126
  return;
128010
128127
  }
128011
128128
  const compressed = (buf[0] & 64) === 64;
128012
- if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {
128129
+ if (compressed && !this._extensions[PerMessageDeflate2.extensionName]) {
128013
128130
  const error2 = this.createError(
128014
128131
  RangeError,
128015
128132
  "RSV1 must be clear",
@@ -128246,6 +128363,17 @@ var require_receiver = __commonJS({
128246
128363
  return;
128247
128364
  }
128248
128365
  if (data.length) {
128366
+ if (this._maxFragments > 0 && this._fragments.length >= this._maxFragments) {
128367
+ const error2 = this.createError(
128368
+ RangeError,
128369
+ "Too many message fragments",
128370
+ false,
128371
+ 1008,
128372
+ "WS_ERR_TOO_MANY_BUFFERED_PARTS"
128373
+ );
128374
+ cb(error2);
128375
+ return;
128376
+ }
128249
128377
  this._messageLength = this._totalPayloadLength;
128250
128378
  this._fragments.push(data);
128251
128379
  }
@@ -128259,7 +128387,7 @@ var require_receiver = __commonJS({
128259
128387
  * @private
128260
128388
  */
128261
128389
  decompress(data, cb) {
128262
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
128390
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
128263
128391
  perMessageDeflate.decompress(data, this._fin, (err, buf) => {
128264
128392
  if (err)
128265
128393
  return cb(err);
@@ -128276,6 +128404,17 @@ var require_receiver = __commonJS({
128276
128404
  cb(error2);
128277
128405
  return;
128278
128406
  }
128407
+ if (this._maxFragments > 0 && this._fragments.length >= this._maxFragments) {
128408
+ const error2 = this.createError(
128409
+ RangeError,
128410
+ "Too many message fragments",
128411
+ false,
128412
+ 1008,
128413
+ "WS_ERR_TOO_MANY_BUFFERED_PARTS"
128414
+ );
128415
+ cb(error2);
128416
+ return;
128417
+ }
128279
128418
  this._fragments.push(buf);
128280
128419
  }
128281
128420
  this.dataMessage(cb);
@@ -128443,7 +128582,10 @@ var require_sender = __commonJS({
128443
128582
  "use strict";
128444
128583
  var { Duplex } = require("stream");
128445
128584
  var { randomFillSync } = require("crypto");
128446
- var PerMessageDeflate = require_permessage_deflate();
128585
+ var {
128586
+ types: { isUint8Array }
128587
+ } = require("util");
128588
+ var PerMessageDeflate2 = require_permessage_deflate();
128447
128589
  var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants3();
128448
128590
  var { isBlob: isBlob2, isValidStatusCode } = require_validation3();
128449
128591
  var { mask: applyMask, toBuffer } = require_buffer_util();
@@ -128599,8 +128741,10 @@ var require_sender = __commonJS({
128599
128741
  buf.writeUInt16BE(code, 0);
128600
128742
  if (typeof data === "string") {
128601
128743
  buf.write(data, 2);
128602
- } else {
128744
+ } else if (isUint8Array(data)) {
128603
128745
  buf.set(data, 2);
128746
+ } else {
128747
+ throw new TypeError("Second argument must be a string or a Uint8Array");
128604
128748
  }
128605
128749
  }
128606
128750
  const options = {
@@ -128730,7 +128874,7 @@ var require_sender = __commonJS({
128730
128874
  * @public
128731
128875
  */
128732
128876
  send(data, options, cb) {
128733
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
128877
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
128734
128878
  let opcode = options.binary ? 2 : 1;
128735
128879
  let rsv1 = options.compress;
128736
128880
  let byteLength;
@@ -128855,7 +128999,7 @@ var require_sender = __commonJS({
128855
128999
  this.sendFrame(Sender2.frame(data, options), cb);
128856
129000
  return;
128857
129001
  }
128858
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
129002
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
128859
129003
  this._bufferedBytes += options[kByteLength];
128860
129004
  this._state = DEFLATING;
128861
129005
  perMessageDeflate.compress(data, options.fin, (_, buf) => {
@@ -129310,12 +129454,12 @@ var require_extension = __commonJS({
129310
129454
  return offers;
129311
129455
  }
129312
129456
  function format(extensions) {
129313
- return Object.keys(extensions).map((extension) => {
129314
- let configurations = extensions[extension];
129457
+ return Object.keys(extensions).map((extension2) => {
129458
+ let configurations = extensions[extension2];
129315
129459
  if (!Array.isArray(configurations))
129316
129460
  configurations = [configurations];
129317
129461
  return configurations.map((params) => {
129318
- return [extension].concat(
129462
+ return [extension2].concat(
129319
129463
  Object.keys(params).map((k) => {
129320
129464
  let values = params[k];
129321
129465
  if (!Array.isArray(values))
@@ -129342,7 +129486,7 @@ var require_websocket = __commonJS({
129342
129486
  var { randomBytes, createHash } = require("crypto");
129343
129487
  var { Duplex, Readable: Readable4 } = require("stream");
129344
129488
  var { URL: URL2 } = require("url");
129345
- var PerMessageDeflate = require_permessage_deflate();
129489
+ var PerMessageDeflate2 = require_permessage_deflate();
129346
129490
  var Receiver2 = require_receiver();
129347
129491
  var Sender2 = require_sender();
129348
129492
  var { isBlob: isBlob2 } = require_validation3();
@@ -129504,6 +129648,10 @@ var require_websocket = __commonJS({
129504
129648
  * multiple times in the same tick
129505
129649
  * @param {Function} [options.generateMask] The function used to generate the
129506
129650
  * masking key
129651
+ * @param {Number} [options.maxBufferedChunks=0] The maximum number of
129652
+ * buffered data chunks
129653
+ * @param {Number} [options.maxFragments=0] The maximum number of message
129654
+ * fragments
129507
129655
  * @param {Number} [options.maxPayload=0] The maximum allowed message size
129508
129656
  * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
129509
129657
  * not to skip UTF-8 validation for text and close messages
@@ -129515,6 +129663,8 @@ var require_websocket = __commonJS({
129515
129663
  binaryType: this.binaryType,
129516
129664
  extensions: this._extensions,
129517
129665
  isServer: this._isServer,
129666
+ maxBufferedChunks: options.maxBufferedChunks,
129667
+ maxFragments: options.maxFragments,
129518
129668
  maxPayload: options.maxPayload,
129519
129669
  skipUTF8Validation: options.skipUTF8Validation
129520
129670
  });
@@ -129556,8 +129706,8 @@ var require_websocket = __commonJS({
129556
129706
  this.emit("close", this._closeCode, this._closeMessage);
129557
129707
  return;
129558
129708
  }
129559
- if (this._extensions[PerMessageDeflate.extensionName]) {
129560
- this._extensions[PerMessageDeflate.extensionName].cleanup();
129709
+ if (this._extensions[PerMessageDeflate2.extensionName]) {
129710
+ this._extensions[PerMessageDeflate2.extensionName].cleanup();
129561
129711
  }
129562
129712
  this._receiver.removeAllListeners();
129563
129713
  this._readyState = WebSocket2.CLOSED;
@@ -129727,7 +129877,7 @@ var require_websocket = __commonJS({
129727
129877
  fin: true,
129728
129878
  ...options
129729
129879
  };
129730
- if (!this._extensions[PerMessageDeflate.extensionName]) {
129880
+ if (!this._extensions[PerMessageDeflate2.extensionName]) {
129731
129881
  opts.compress = false;
129732
129882
  }
129733
129883
  this._sender.send(data || EMPTY_BUFFER, opts, cb);
@@ -129828,6 +129978,8 @@ var require_websocket = __commonJS({
129828
129978
  autoPong: true,
129829
129979
  closeTimeout: CLOSE_TIMEOUT,
129830
129980
  protocolVersion: protocolVersions[1],
129981
+ maxBufferedChunks: 1024 * 1024,
129982
+ maxFragments: 128 * 1024,
129831
129983
  maxPayload: 100 * 1024 * 1024,
129832
129984
  skipUTF8Validation: false,
129833
129985
  perMessageDeflate: true,
@@ -129856,7 +130008,7 @@ var require_websocket = __commonJS({
129856
130008
  } else {
129857
130009
  try {
129858
130010
  parsedUrl = new URL2(address);
129859
- } catch (e) {
130011
+ } catch {
129860
130012
  throw new SyntaxError(`Invalid URL: ${address}`);
129861
130013
  }
129862
130014
  }
@@ -129904,13 +130056,13 @@ var require_websocket = __commonJS({
129904
130056
  opts.path = parsedUrl.pathname + parsedUrl.search;
129905
130057
  opts.timeout = opts.handshakeTimeout;
129906
130058
  if (opts.perMessageDeflate) {
129907
- perMessageDeflate = new PerMessageDeflate(
129908
- opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},
129909
- false,
129910
- opts.maxPayload
129911
- );
130059
+ perMessageDeflate = new PerMessageDeflate2({
130060
+ ...opts.perMessageDeflate,
130061
+ isServer: false,
130062
+ maxPayload: opts.maxPayload
130063
+ });
129912
130064
  opts.headers["Sec-WebSocket-Extensions"] = format({
129913
- [PerMessageDeflate.extensionName]: perMessageDeflate.offer()
130065
+ [PerMessageDeflate2.extensionName]: perMessageDeflate.offer()
129914
130066
  });
129915
130067
  }
129916
130068
  if (protocols.length) {
@@ -130057,23 +130209,25 @@ var require_websocket = __commonJS({
130057
130209
  return;
130058
130210
  }
130059
130211
  const extensionNames = Object.keys(extensions);
130060
- if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) {
130212
+ if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate2.extensionName) {
130061
130213
  const message = "Server indicated an extension that was not requested";
130062
130214
  abortHandshake(websocket, socket, message);
130063
130215
  return;
130064
130216
  }
130065
130217
  try {
130066
- perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);
130218
+ perMessageDeflate.accept(extensions[PerMessageDeflate2.extensionName]);
130067
130219
  } catch (err) {
130068
130220
  const message = "Invalid Sec-WebSocket-Extensions header";
130069
130221
  abortHandshake(websocket, socket, message);
130070
130222
  return;
130071
130223
  }
130072
- websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
130224
+ websocket._extensions[PerMessageDeflate2.extensionName] = perMessageDeflate;
130073
130225
  }
130074
130226
  websocket.setSocket(socket, head, {
130075
130227
  allowSynchronousEvents: opts.allowSynchronousEvents,
130076
130228
  generateMask: opts.generateMask,
130229
+ maxBufferedChunks: opts.maxBufferedChunks,
130230
+ maxFragments: opts.maxFragments,
130077
130231
  maxPayload: opts.maxPayload,
130078
130232
  skipUTF8Validation: opts.skipUTF8Validation
130079
130233
  });
@@ -130407,9 +130561,9 @@ var require_websocket_server = __commonJS({
130407
130561
  var http4 = require("http");
130408
130562
  var { Duplex } = require("stream");
130409
130563
  var { createHash } = require("crypto");
130410
- var extension = require_extension();
130411
- var PerMessageDeflate = require_permessage_deflate();
130412
- var subprotocol = require_subprotocol();
130564
+ var extension2 = require_extension();
130565
+ var PerMessageDeflate2 = require_permessage_deflate();
130566
+ var subprotocol2 = require_subprotocol();
130413
130567
  var WebSocket2 = require_websocket();
130414
130568
  var { CLOSE_TIMEOUT, GUID, kWebSocket } = require_constants3();
130415
130569
  var keyRegex = /^[+/0-9A-Za-z]{22}==$/;
@@ -130435,6 +130589,10 @@ var require_websocket_server = __commonJS({
130435
130589
  * called
130436
130590
  * @param {Function} [options.handleProtocols] A hook to handle protocols
130437
130591
  * @param {String} [options.host] The hostname where to bind the server
130592
+ * @param {Number} [options.maxBufferedChunks=1048576] The maximum number of
130593
+ * buffered data chunks
130594
+ * @param {Number} [options.maxFragments=131072] The maximum number of message
130595
+ * fragments
130438
130596
  * @param {Number} [options.maxPayload=104857600] The maximum allowed message
130439
130597
  * size
130440
130598
  * @param {Boolean} [options.noServer=false] Enable no server mode
@@ -130456,6 +130614,8 @@ var require_websocket_server = __commonJS({
130456
130614
  options = {
130457
130615
  allowSynchronousEvents: true,
130458
130616
  autoPong: true,
130617
+ maxBufferedChunks: 1024 * 1024,
130618
+ maxFragments: 128 * 1024,
130459
130619
  maxPayload: 100 * 1024 * 1024,
130460
130620
  skipUTF8Validation: false,
130461
130621
  perMessageDeflate: false,
@@ -130637,7 +130797,7 @@ var require_websocket_server = __commonJS({
130637
130797
  let protocols = /* @__PURE__ */ new Set();
130638
130798
  if (secWebSocketProtocol !== void 0) {
130639
130799
  try {
130640
- protocols = subprotocol.parse(secWebSocketProtocol);
130800
+ protocols = subprotocol2.parse(secWebSocketProtocol);
130641
130801
  } catch (err) {
130642
130802
  const message = "Invalid Sec-WebSocket-Protocol header";
130643
130803
  abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
@@ -130647,16 +130807,16 @@ var require_websocket_server = __commonJS({
130647
130807
  const secWebSocketExtensions = req.headers["sec-websocket-extensions"];
130648
130808
  const extensions = {};
130649
130809
  if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) {
130650
- const perMessageDeflate = new PerMessageDeflate(
130651
- this.options.perMessageDeflate,
130652
- true,
130653
- this.options.maxPayload
130654
- );
130810
+ const perMessageDeflate = new PerMessageDeflate2({
130811
+ ...this.options.perMessageDeflate,
130812
+ isServer: true,
130813
+ maxPayload: this.options.maxPayload
130814
+ });
130655
130815
  try {
130656
- const offers = extension.parse(secWebSocketExtensions);
130657
- if (offers[PerMessageDeflate.extensionName]) {
130658
- perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);
130659
- extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
130816
+ const offers = extension2.parse(secWebSocketExtensions);
130817
+ if (offers[PerMessageDeflate2.extensionName]) {
130818
+ perMessageDeflate.accept(offers[PerMessageDeflate2.extensionName]);
130819
+ extensions[PerMessageDeflate2.extensionName] = perMessageDeflate;
130660
130820
  }
130661
130821
  } catch (err) {
130662
130822
  const message = "Invalid or unacceptable Sec-WebSocket-Extensions header";
@@ -130730,10 +130890,10 @@ var require_websocket_server = __commonJS({
130730
130890
  ws._protocol = protocol;
130731
130891
  }
130732
130892
  }
130733
- if (extensions[PerMessageDeflate.extensionName]) {
130734
- const params = extensions[PerMessageDeflate.extensionName].params;
130735
- const value = extension.format({
130736
- [PerMessageDeflate.extensionName]: [params]
130893
+ if (extensions[PerMessageDeflate2.extensionName]) {
130894
+ const params = extensions[PerMessageDeflate2.extensionName].params;
130895
+ const value = extension2.format({
130896
+ [PerMessageDeflate2.extensionName]: [params]
130737
130897
  });
130738
130898
  headers.push(`Sec-WebSocket-Extensions: ${value}`);
130739
130899
  ws._extensions = extensions;
@@ -130743,6 +130903,8 @@ var require_websocket_server = __commonJS({
130743
130903
  socket.removeListener("error", socketOnError);
130744
130904
  ws.setSocket(socket, head, {
130745
130905
  allowSynchronousEvents: this.options.allowSynchronousEvents,
130906
+ maxBufferedChunks: this.options.maxBufferedChunks,
130907
+ maxFragments: this.options.maxFragments,
130746
130908
  maxPayload: this.options.maxPayload,
130747
130909
  skipUTF8Validation: this.options.skipUTF8Validation
130748
130910
  });
@@ -130802,12 +130964,15 @@ var require_websocket_server = __commonJS({
130802
130964
  });
130803
130965
 
130804
130966
  // node_modules/ws/wrapper.mjs
130805
- var import_stream7, import_receiver, import_sender, import_websocket, import_websocket_server;
130967
+ var import_stream7, import_extension, import_permessage_deflate, import_receiver, import_sender, import_subprotocol, import_websocket, import_websocket_server;
130806
130968
  var init_wrapper = __esm({
130807
130969
  "node_modules/ws/wrapper.mjs"() {
130808
130970
  import_stream7 = __toESM(require_stream(), 1);
130971
+ import_extension = __toESM(require_extension(), 1);
130972
+ import_permessage_deflate = __toESM(require_permessage_deflate(), 1);
130809
130973
  import_receiver = __toESM(require_receiver(), 1);
130810
130974
  import_sender = __toESM(require_sender(), 1);
130975
+ import_subprotocol = __toESM(require_subprotocol(), 1);
130811
130976
  import_websocket = __toESM(require_websocket(), 1);
130812
130977
  import_websocket_server = __toESM(require_websocket_server(), 1);
130813
130978
  }