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.
- package/Changelog.md +13 -0
- package/dist/mcp-app.html +172 -42
- package/out/server/standalone.js +310 -145
- package/package.json +1 -1
- package/server.json +2 -2
package/out/server/standalone.js
CHANGED
|
@@ -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 =
|
|
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
|
|
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
|
|
19091
|
-
if (!
|
|
19090
|
+
var extension3 = extname("x." + path8).toLowerCase().slice(1);
|
|
19091
|
+
if (!extension3) {
|
|
19092
19092
|
return false;
|
|
19093
19093
|
}
|
|
19094
|
-
return exports.types[
|
|
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
|
|
19106
|
-
types[
|
|
19105
|
+
var extension3 = exts[i];
|
|
19106
|
+
types[extension3] = _preferredType(extension3, types[extension3], type);
|
|
19107
19107
|
const legacyType = _preferredTypeLegacy(
|
|
19108
|
-
|
|
19109
|
-
types[
|
|
19108
|
+
extension3,
|
|
19109
|
+
types[extension3],
|
|
19110
19110
|
type
|
|
19111
19111
|
);
|
|
19112
|
-
if (legacyType !== types[
|
|
19113
|
-
exports._extensionConflicts.push([
|
|
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[
|
|
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,
|
|
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(
|
|
22008
|
-
var key = options.allowDots ?
|
|
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
|
|
22018
|
-
var
|
|
22019
|
-
var
|
|
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
|
-
|
|
22028
|
+
segments[segments.length] = parent;
|
|
22029
22029
|
}
|
|
22030
|
-
var
|
|
22031
|
-
|
|
22032
|
-
|
|
22033
|
-
|
|
22034
|
-
|
|
22035
|
-
|
|
22036
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
22066
|
+
segments[segments.length] = "[" + key.slice(open) + "]";
|
|
22046
22067
|
}
|
|
22047
|
-
return
|
|
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) :
|
|
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 =
|
|
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
|
|
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
|
|
32154
|
-
if (!
|
|
32174
|
+
var extension3 = extname("x." + path8).toLowerCase().slice(1);
|
|
32175
|
+
if (!extension3) {
|
|
32155
32176
|
return false;
|
|
32156
32177
|
}
|
|
32157
|
-
return exports.types[
|
|
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
|
|
32169
|
-
types[
|
|
32189
|
+
var extension3 = exts[i];
|
|
32190
|
+
types[extension3] = _preferredType(extension3, types[extension3], type);
|
|
32170
32191
|
const legacyType = _preferredTypeLegacy(
|
|
32171
|
-
|
|
32172
|
-
types[
|
|
32192
|
+
extension3,
|
|
32193
|
+
types[extension3],
|
|
32173
32194
|
type
|
|
32174
32195
|
);
|
|
32175
|
-
if (legacyType !== types[
|
|
32176
|
-
exports._extensionConflicts.push([
|
|
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[
|
|
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
|
|
34417
|
-
this.engines[
|
|
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 =
|
|
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
|
|
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
|
|
44527
|
-
if (!
|
|
44547
|
+
var extension3 = extname("x." + path8).toLowerCase().slice(1);
|
|
44548
|
+
if (!extension3) {
|
|
44528
44549
|
return false;
|
|
44529
44550
|
}
|
|
44530
|
-
return exports.types[
|
|
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
|
|
44542
|
-
types[
|
|
44562
|
+
var extension3 = exts[i];
|
|
44563
|
+
types[extension3] = _preferredType(extension3, types[extension3], type);
|
|
44543
44564
|
const legacyType = _preferredTypeLegacy(
|
|
44544
|
-
|
|
44545
|
-
types[
|
|
44565
|
+
extension3,
|
|
44566
|
+
types[extension3],
|
|
44546
44567
|
type
|
|
44547
44568
|
);
|
|
44548
|
-
if (legacyType !== types[
|
|
44549
|
-
exports._extensionConflicts.push([
|
|
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[
|
|
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 =
|
|
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
|
|
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
|
|
54775
|
-
if (!
|
|
54795
|
+
var extension3 = extname("x." + path8).toLowerCase().slice(1);
|
|
54796
|
+
if (!extension3) {
|
|
54776
54797
|
return false;
|
|
54777
54798
|
}
|
|
54778
|
-
return exports.types[
|
|
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
|
|
54790
|
-
types[
|
|
54810
|
+
var extension3 = exts[i];
|
|
54811
|
+
types[extension3] = _preferredType(extension3, types[extension3], type);
|
|
54791
54812
|
const legacyType = _preferredTypeLegacy(
|
|
54792
|
-
|
|
54793
|
-
types[
|
|
54813
|
+
extension3,
|
|
54814
|
+
types[extension3],
|
|
54794
54815
|
type
|
|
54795
54816
|
);
|
|
54796
|
-
if (legacyType !== types[
|
|
54797
|
-
exports._extensionConflicts.push([
|
|
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[
|
|
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 =
|
|
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
|
|
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
|
|
66230
|
-
if (!
|
|
66250
|
+
var extension3 = extname("x." + path8).toLowerCase().substr(1);
|
|
66251
|
+
if (!extension3) {
|
|
66231
66252
|
return false;
|
|
66232
66253
|
}
|
|
66233
|
-
return exports.types[
|
|
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
|
|
66246
|
-
if (types[
|
|
66247
|
-
var from = preference.indexOf(db[types[
|
|
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[
|
|
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[
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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 =
|
|
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
|
|
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[
|
|
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[
|
|
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
|
|
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[
|
|
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[
|
|
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((
|
|
129314
|
-
let configurations = extensions[
|
|
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 [
|
|
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
|
|
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[
|
|
129560
|
-
this._extensions[
|
|
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[
|
|
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
|
|
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
|
|
129908
|
-
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
|
-
[
|
|
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] !==
|
|
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[
|
|
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[
|
|
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
|
|
130411
|
-
var
|
|
130412
|
-
var
|
|
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 =
|
|
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
|
|
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 =
|
|
130657
|
-
if (offers[
|
|
130658
|
-
perMessageDeflate.accept(offers[
|
|
130659
|
-
extensions[
|
|
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[
|
|
130734
|
-
const params = extensions[
|
|
130735
|
-
const value =
|
|
130736
|
-
[
|
|
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
|
}
|