aboutsummaryrefslogtreecommitdiff
path: root/src/js/node/querystring.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/node/querystring.js')
-rw-r--r--src/js/node/querystring.js396
1 files changed, 396 insertions, 0 deletions
diff --git a/src/js/node/querystring.js b/src/js/node/querystring.js
new file mode 100644
index 000000000..232bdac75
--- /dev/null
+++ b/src/js/node/querystring.js
@@ -0,0 +1,396 @@
+var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
+
+var Buffer = require("node:buffer").Buffer;
+
+// src/node-fallbacks/node_modules/querystring-es3/src/object-keys.js
+var require_object_keys = __commonJS((exports, module) => {
+ var objectKeys =
+ Object.keys ||
+ (function () {
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ var hasDontEnumBug = !{ toString: null }.propertyIsEnumerable("toString");
+ var dontEnums = [
+ "toString",
+ "toLocaleString",
+ "valueOf",
+ "hasOwnProperty",
+ "isPrototypeOf",
+ "propertyIsEnumerable",
+ "constructor",
+ ];
+ var dontEnumsLength = dontEnums.length;
+ return function (obj) {
+ if (typeof obj !== "function" && (typeof obj !== "object" || obj === null)) {
+ throw new TypeError("Object.keys called on non-object");
+ }
+ var result = [];
+ var prop;
+ var i;
+ for (prop in obj) {
+ if (hasOwnProperty.call(obj, prop)) {
+ result.push(prop);
+ }
+ }
+ if (hasDontEnumBug) {
+ for (i = 0; i < dontEnumsLength; i++) {
+ if (hasOwnProperty.call(obj, dontEnums[i])) {
+ result.push(dontEnums[i]);
+ }
+ }
+ }
+ return result;
+ };
+ })();
+ module.exports = objectKeys;
+});
+
+// src/node-fallbacks/node_modules/querystring-es3/src/index.js
+var require_src = __commonJS((exports, module) => {
+ var ParsedQueryString = function () {};
+ var unescapeBuffer = function (s, decodeSpaces) {
+ var out = Buffer.allocUnsafe(s.length);
+ var state = 0;
+ var n, m, hexchar, c;
+ for (var inIndex = 0, outIndex = 0; ; inIndex++) {
+ if (inIndex < s.length) {
+ c = s.charCodeAt(inIndex);
+ } else {
+ if (state > 0) {
+ out[outIndex++] = 37;
+ if (state === 2) out[outIndex++] = hexchar;
+ }
+ break;
+ }
+ switch (state) {
+ case 0:
+ switch (c) {
+ case 37:
+ n = 0;
+ m = 0;
+ state = 1;
+ break;
+ case 43:
+ if (decodeSpaces) c = 32;
+ default:
+ out[outIndex++] = c;
+ break;
+ }
+ break;
+ case 1:
+ hexchar = c;
+ n = unhexTable[c];
+ if (!(n >= 0)) {
+ out[outIndex++] = 37;
+ out[outIndex++] = c;
+ state = 0;
+ break;
+ }
+ state = 2;
+ break;
+ case 2:
+ state = 0;
+ m = unhexTable[c];
+ if (!(m >= 0)) {
+ out[outIndex++] = 37;
+ out[outIndex++] = hexchar;
+ out[outIndex++] = c;
+ break;
+ }
+ out[outIndex++] = 16 * n + m;
+ break;
+ }
+ }
+ return out.slice(0, outIndex);
+ };
+ var qsUnescape = function (s, decodeSpaces) {
+ try {
+ return decodeURIComponent(s);
+ } catch (e) {
+ return QueryString.unescapeBuffer(s, decodeSpaces).toString();
+ }
+ };
+ var qsEscape = function (str) {
+ if (typeof str !== "string") {
+ if (typeof str === "object") str = String(str);
+ else str += "";
+ }
+ var out = "";
+ var lastPos = 0;
+ for (var i2 = 0; i2 < str.length; ++i2) {
+ var c = str.charCodeAt(i2);
+ if (c < 128) {
+ if (noEscape[c] === 1) continue;
+ if (lastPos < i2) out += str.slice(lastPos, i2);
+ lastPos = i2 + 1;
+ out += hexTable[c];
+ continue;
+ }
+ if (lastPos < i2) out += str.slice(lastPos, i2);
+ if (c < 2048) {
+ lastPos = i2 + 1;
+ out += hexTable[192 | (c >> 6)] + hexTable[128 | (c & 63)];
+ continue;
+ }
+ if (c < 55296 || c >= 57344) {
+ lastPos = i2 + 1;
+ out += hexTable[224 | (c >> 12)] + hexTable[128 | ((c >> 6) & 63)] + hexTable[128 | (c & 63)];
+ continue;
+ }
+ ++i2;
+ var c2;
+ if (i2 < str.length) c2 = str.charCodeAt(i2) & 1023;
+ else throw new URIError("URI malformed");
+ lastPos = i2 + 1;
+ c = 65536 + (((c & 1023) << 10) | c2);
+ out +=
+ hexTable[240 | (c >> 18)] +
+ hexTable[128 | ((c >> 12) & 63)] +
+ hexTable[128 | ((c >> 6) & 63)] +
+ hexTable[128 | (c & 63)];
+ }
+ if (lastPos === 0) return str;
+ if (lastPos < str.length) return out + str.slice(lastPos);
+ return out;
+ };
+ var stringifyPrimitive = function (v) {
+ if (typeof v === "string") return v;
+ if (typeof v === "number" && isFinite(v)) return "" + v;
+ if (typeof v === "boolean") return v ? "true" : "false";
+ return "";
+ };
+ var stringify = function (obj, sep, eq, options) {
+ sep = sep || "&";
+ eq = eq || "=";
+ var encode = QueryString.escape;
+ if (options && typeof options.encodeURIComponent === "function") {
+ encode = options.encodeURIComponent;
+ }
+ if (obj !== null && typeof obj === "object") {
+ var keys = objectKeys(obj);
+ var len = keys.length;
+ var flast = len - 1;
+ var fields = "";
+ for (var i2 = 0; i2 < len; ++i2) {
+ var k = keys[i2];
+ var v = obj[k];
+ var ks = encode(stringifyPrimitive(k)) + eq;
+ if (isArray(v)) {
+ var vlen = v.length;
+ var vlast = vlen - 1;
+ for (var j = 0; j < vlen; ++j) {
+ fields += ks + encode(stringifyPrimitive(v[j]));
+ if (j < vlast) fields += sep;
+ }
+ if (vlen && i2 < flast) fields += sep;
+ } else {
+ fields += ks + encode(stringifyPrimitive(v));
+ if (i2 < flast) fields += sep;
+ }
+ }
+ return fields;
+ }
+ return "";
+ };
+ var charCodes = function (str) {
+ if (str.length === 0) return [];
+ if (str.length === 1) return [str.charCodeAt(0)];
+ const ret = [];
+ for (var i2 = 0; i2 < str.length; ++i2) ret[ret.length] = str.charCodeAt(i2);
+ return ret;
+ };
+ var parse = function (qs, sep, eq, options) {
+ const obj = new ParsedQueryString();
+ if (typeof qs !== "string" || qs.length === 0) {
+ return obj;
+ }
+ var sepCodes = !sep ? defSepCodes : charCodes(sep + "");
+ var eqCodes = !eq ? defEqCodes : charCodes(eq + "");
+ const sepLen = sepCodes.length;
+ const eqLen = eqCodes.length;
+ var pairs = 1000;
+ if (options && typeof options.maxKeys === "number") {
+ pairs = options.maxKeys > 0 ? options.maxKeys : -1;
+ }
+ var decode = QueryString.unescape;
+ if (options && typeof options.decodeURIComponent === "function") {
+ decode = options.decodeURIComponent;
+ }
+ const customDecode = decode !== qsUnescape;
+ const keys = [];
+ var posIdx = 0;
+ var lastPos = 0;
+ var sepIdx = 0;
+ var eqIdx = 0;
+ var key = "";
+ var value = "";
+ var keyEncoded = customDecode;
+ var valEncoded = customDecode;
+ var encodeCheck = 0;
+ for (var i2 = 0; i2 < qs.length; ++i2) {
+ const code = qs.charCodeAt(i2);
+ if (code === sepCodes[sepIdx]) {
+ if (++sepIdx === sepLen) {
+ const end = i2 - sepIdx + 1;
+ if (eqIdx < eqLen) {
+ if (lastPos < end) key += qs.slice(lastPos, end);
+ } else if (lastPos < end) value += qs.slice(lastPos, end);
+ if (keyEncoded) key = decodeStr(key, decode);
+ if (valEncoded) value = decodeStr(value, decode);
+ if (key || value || lastPos - posIdx > sepLen || i2 === 0) {
+ if (indexOf(keys, key) === -1) {
+ obj[key] = value;
+ keys[keys.length] = key;
+ } else {
+ const curValue = obj[key] || "";
+ if (curValue.pop) curValue[curValue.length] = value;
+ else if (curValue) obj[key] = [curValue, value];
+ }
+ } else if (i2 === 1) {
+ delete obj[key];
+ }
+ if (--pairs === 0) break;
+ keyEncoded = valEncoded = customDecode;
+ encodeCheck = 0;
+ key = value = "";
+ posIdx = lastPos;
+ lastPos = i2 + 1;
+ sepIdx = eqIdx = 0;
+ }
+ continue;
+ } else {
+ sepIdx = 0;
+ if (!valEncoded) {
+ if (code === 37) {
+ encodeCheck = 1;
+ } else if (
+ encodeCheck > 0 &&
+ ((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))
+ ) {
+ if (++encodeCheck === 3) valEncoded = true;
+ } else {
+ encodeCheck = 0;
+ }
+ }
+ }
+ if (eqIdx < eqLen) {
+ if (code === eqCodes[eqIdx]) {
+ if (++eqIdx === eqLen) {
+ const end = i2 - eqIdx + 1;
+ if (lastPos < end) key += qs.slice(lastPos, end);
+ encodeCheck = 0;
+ lastPos = i2 + 1;
+ }
+ continue;
+ } else {
+ eqIdx = 0;
+ if (!keyEncoded) {
+ if (code === 37) {
+ encodeCheck = 1;
+ } else if (
+ encodeCheck > 0 &&
+ ((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))
+ ) {
+ if (++encodeCheck === 3) keyEncoded = true;
+ } else {
+ encodeCheck = 0;
+ }
+ }
+ }
+ }
+ if (code === 43) {
+ if (eqIdx < eqLen) {
+ if (lastPos < i2) key += qs.slice(lastPos, i2);
+ key += "%20";
+ keyEncoded = true;
+ } else {
+ if (lastPos < i2) value += qs.slice(lastPos, i2);
+ value += "%20";
+ valEncoded = true;
+ }
+ lastPos = i2 + 1;
+ }
+ }
+ if (pairs !== 0 && (lastPos < qs.length || eqIdx > 0)) {
+ if (lastPos < qs.length) {
+ if (eqIdx < eqLen) key += qs.slice(lastPos);
+ else if (sepIdx < sepLen) value += qs.slice(lastPos);
+ }
+ if (keyEncoded) key = decodeStr(key, decode);
+ if (valEncoded) value = decodeStr(value, decode);
+ if (indexOf(keys, key) === -1) {
+ obj[key] = value;
+ keys[keys.length] = key;
+ } else {
+ const curValue = obj[key];
+ if (curValue.pop) curValue[curValue.length] = value;
+ else obj[key] = [curValue, value];
+ }
+ }
+ return obj;
+ };
+ var decodeStr = function (s, decoder) {
+ try {
+ return decoder(s);
+ } catch (e) {
+ return QueryString.unescape(s, true);
+ }
+ };
+ var QueryString = (module.exports = {
+ unescapeBuffer,
+ unescape: qsUnescape,
+ escape: qsEscape,
+ stringify,
+ encode: stringify,
+ parse,
+ decode: parse,
+ });
+ var objectKeys = require_object_keys();
+ var isArray = arg => Object.prototype.toString.call(arg) === "[object Array]";
+ var indexOf = (arr, searchElement, fromIndex) => {
+ var k;
+ if (arr == null) {
+ throw new TypeError('"arr" is null or not defined');
+ }
+ var o = Object(arr);
+ var len = o.length >>> 0;
+ if (len === 0) {
+ return -1;
+ }
+ var n = fromIndex | 0;
+ if (n >= len) {
+ return -1;
+ }
+ k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+ while (k < len) {
+ if (k in o && o[k] === searchElement) {
+ return k;
+ }
+ k++;
+ }
+ return -1;
+ };
+ ParsedQueryString.prototype = Object.create ? Object.create(null) : {};
+ var unhexTable = [
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1,
+ -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ ];
+ var hexTable = [];
+ for (i = 0; i < 256; ++i) hexTable[i] = "%" + ((i < 16 ? "0" : "") + i.toString(16)).toUpperCase();
+ var i;
+ var noEscape = [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0,
+ ];
+ var defSepCodes = [38];
+ var defEqCodes = [61];
+});
+export default require_src();