var ue = Object.defineProperty; var ie = (r) => { throw TypeError(r); }; var de = (r, e, t) => e in r ? ue(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t; var g = (r, e, t) => de(r, typeof e != "symbol" ? e + "" : e, t), oe = (r, e, t) => e.has(r) || ie("Cannot " + t); var i = (r, e, t) => (oe(r, e, "read from private field"), t ? t.call(r) : e.get(r)), w = (r, e, t) => e.has(r) ? ie("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(r) : e.set(r, t), C = (r, e, t, n) => (oe(r, e, "write to private field"), n ? n.call(r, t) : e.set(r, t), t); function ge(r) { return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, "default") ? r.default : r; } var he = {}; (function(r) { (function(e) { e([], function() { var t = -1, n = -2, s = -3, o = -4, h = -5, R = function(l, u) { u = u || {}; var f = u.verbose || !1; f && console.log("Normalize the JSON Object"), l = typeof l == "string" ? this.JSON.parse(l) : l, f && console.log("Creating a empty dictionary"); var d = { strings: [], integers: [], floats: [] }; f && console.log("Creating the AST"); var p = function S(a) { f && console.log("Calling recursiveAstBuilder with " + this.JSON.stringify(a)); var y = typeof a; if (a === null) return { type: "null", index: s }; if (typeof a > "u") return { type: "undefined", index: h }; if (a instanceof Array) { var x = ["@"]; for (var b in a) a.hasOwnProperty(b) && x.push(S(a[b])); return x; } if (y === "object") { var x = ["$"]; for (var $ in a) a.hasOwnProperty($) && (x.push(S($)), x.push(S(a[$]))); return x; } if (a === "") return { type: "empty", index: o }; if (y === "string") { var O = H.call(d.strings, a); return O == -1 && (d.strings.push(T(a)), O = d.strings.length - 1), { type: "strings", index: O }; } if (y === "number" && a % 1 === 0) { var O = H.call(d.integers, a); return O == -1 && (d.integers.push(_(a)), O = d.integers.length - 1), { type: "integers", index: O }; } if (y === "number") { var O = H.call(d.floats, a); return O == -1 && (d.floats.push(a), O = d.floats.length - 1), { type: "floats", index: O }; } if (y === "boolean") return { type: "boolean", index: a ? t : n }; throw new Error("Unexpected argument of type " + typeof a); }(l), E = d.strings.length, B = d.integers.length; d.floats.length, f && console.log("Parsing the dictionary"); var N = d.strings.join("|"); return N += "^" + d.integers.join("|"), N += "^" + d.floats.join("|"), f && console.log("Parsing the structure"), N += "^" + function S(a) { if (f && console.log("Calling a recursiveParser with " + this.JSON.stringify(a)), a instanceof Array) { var y = a.shift(); for (var x in a) a.hasOwnProperty(x) && (y += S(a[x]) + "|"); return (y[y.length - 1] === "|" ? y.slice(0, -1) : y) + "]"; } var b = a.type, $ = a.index; if (b === "strings") return _($); if (b === "integers") return _(E + $); if (b === "floats") return _(E + B + $); if (b === "boolean") return a.index; if (b === "null") return s; if (b === "undefined") return h; if (b === "empty") return o; throw new TypeError("The item is alien!"); }(p), f && console.log("Ending parser"), u.debug ? { dictionary: d, ast: p, packed: N } : N; }, c = function(l, u) { u = u || {}; var f = l.split("^"); u.verbose && console.log("Building dictionary"); var d = [], p = f[0]; if (p !== "") { p = p.split("|"), u.verbose && console.log("Parse the strings dictionary"); for (var E = 0, B = p.length; E < B; E++) d.push(M(p[E])); } if (p = f[1], p !== "") { p = p.split("|"), u.verbose && console.log("Parse the integers dictionary"); for (var E = 0, B = p.length; E < B; E++) d.push(U(p[E])); } if (p = f[2], p !== "") { p = p.split("|"), u.verbose && console.log("Parse the floats dictionary"); for (var E = 0, B = p.length; E < B; E++) d.push(parseFloat(p[E])); } p = null, u.verbose && console.log("Tokenizing the structure"); for (var N = "", S = [], a = f[3].length, E = 0; E < a; E++) { var y = f[3].charAt(E); y === "|" || y === "$" || y === "@" || y === "]" ? (N && (S.push(U(N)), N = ""), y !== "|" && S.push(y)) : N += y; } var x = S.length, b = 0; return u.verbose && console.log("Starting recursive parser"), function $() { var O = S[b++]; if (u.verbose && console.log("Reading collection type " + (O === "$" ? "object" : "Array")), O === "@") { for (var v = []; b < x; b++) { var A = S[b]; if (u.verbose && console.log("Read " + A + " symbol"), A === "]") return v; if (A === "@" || A === "$") v.push($()); else switch (A) { case t: v.push(!0); break; case n: v.push(!1); break; case s: v.push(null); break; case h: v.push(void 0); break; case o: v.push(""); break; default: v.push(d[A]); } } return u.verbose && console.log("Parsed " + this.JSON.stringify(v)), v; } if (O === "$") { for (var v = {}; b < x; b++) { var P = S[b]; if (P === "]") return v; P === o ? P = "" : P = d[P]; var A = S[++b]; if (A === "@" || A === "$") v[P] = $(); else switch (A) { case t: v[P] = !0; break; case n: v[P] = !1; break; case s: v[P] = null; break; case h: v[P] = void 0; break; case o: v[P] = ""; break; default: v[P] = d[A]; } } return u.verbose && console.log("Parsed " + this.JSON.stringify(v)), v; } throw new TypeError("Bad token " + O + " isn't a type"); }(); }, T = function(l) { return typeof l != "string" ? l : l.replace(/[\+ \|\^\%]/g, function(u) { return { " ": "+", "+": "%2B", "|": "%7C", "^": "%5E", "%": "%25" }[u]; }); }, M = function(l) { return typeof l != "string" ? l : l.replace(/\+|%2B|%7C|%5E|%25/g, function(u) { return { "+": " ", "%2B": "+", "%7C": "|", "%5E": "^", "%25": "%" }[u]; }); }, _ = function(l) { return Number.prototype.toString.call(l, 36).toUpperCase(); }, U = function(l) { return parseInt(l, 36); }, H = Array.prototype.indexOf || function(l, u) { for (var f = u || 0, d = this.length; f < d; f++) if (this[f] === l) return f; return -1; }; return { JSON, pack: R, unpack: c }; }); })(function(e, t) { var n = t(); for (var s in n) r[s] = n[s]; }); })(he); const ae = /* @__PURE__ */ ge(he); var K, L, j, F, Q, W, q, X, Z; class ne { /** * @param {number} code * @param {string} message * @param {unknown} data * @param {string} url * @param {string} res */ constructor(e, t, n, s, o) { /** @type {number} */ g(this, "code", 0); /** @type {string} */ g(this, "message", "操作成功"); /** @type {unknown} */ g(this, "data", null); /** @type {string} */ g(this, "url", ""); /** @type {string} */ g(this, "res", ""); /** @type {HttpResponse} */ w(this, K); // 判断返回 Response 对象, 还是 Response 中的 data /** @type {boolean} */ w(this, L, !0); // 判断是否已经给出错误提示 /** @type {boolean} */ w(this, j, !0); w(this, F, { /** @param {any} __ @param {string} key */ get: (e, t) => i(this, Q).call(this, t), /** @returns {string[]} */ ownKeys: () => Object.keys(i(this, F).getPrototypeOf() || {}), /** @returns {HttpResponse | unknown} */ getPrototypeOf: () => i(this, L) ? this : this.data, /** @returns {PropertyDescriptor} */ getOwnPropertyDescriptor: () => ({ configurable: !0, enumerable: !0, writable: !0, value: i(this, F).getPrototypeOf() }) }); /** * @param {string} key * @returns {unknown} */ w(this, Q, (e) => e === "$echoMsg" ? i(this, q) : e === "msg" ? i(this, W) : e === "then" || e === "resp" ? (C(this, j, !0), C(this, L, e === "resp"), i(this, X)) : e === "catch" ? i(this, Z) : e === "IS_ECHO_MSG" ? i(this, j) : Reflect.get(this, e)); /** * @param {(value: unknown) => unknown} [fn] * @param {boolean} [isResp] * @returns {Promise} */ w(this, W, (e = (n) => n, t = !1) => (i(this, q).call(this), C(this, L, t), Promise.resolve(e == null ? void 0 : e(i(this, F).getPrototypeOf())))); w(this, q, () => { i(this, j) && (C(this, j, !1), se.onMsg(this.code, this.message)); }); /** * @param {(value: unknown) => unknown} [fn] * @returns {Promise} */ w(this, X, (e) => [0, 1].includes(this.code) ? Promise.resolve(e == null ? void 0 : e(i(this, F).getPrototypeOf())) : Promise.reject(i(this, K))); /** * @param {(reason: HttpResponse) => unknown} fn * @returns {Promise} */ w(this, Z, (e) => Promise.resolve(e(i(this, K)))); return this.code = e, this.message = t, this.data = n, this.url = s, this.res = o, C(this, K, new Proxy(this, i(this, F))); } } K = new WeakMap(), L = new WeakMap(), j = new WeakMap(), F = new WeakMap(), Q = new WeakMap(), W = new WeakMap(), q = new WeakMap(), X = new WeakMap(), Z = new WeakMap(); const re = (r, e, t, n = "/", s = "") => new ne(r, e, t, n, s); var fe = [ "utf8", "utf-8", "unicode-1-1-utf-8" ]; function pe(r) { if (fe.indexOf(r) < 0 && typeof r < "u" && r != null) throw new RangeError("Invalid encoding type. Only utf-8 is supported"); this.encoding = "utf-8", this.encode = function(e) { if (typeof e != "string") throw new TypeError("passed argument must be of tye string"); var t = unescape(encodeURIComponent(e)), n = new Uint8Array(t.length); const s = t.split(""); for (let o = 0; o < s.length; o++) n[o] = s[o].charCodeAt(0); return n; }; } function ve(r) { if (fe.indexOf(r) < 0 && typeof r < "u" && r != null) throw new RangeError("Invalid encoding type. Only utf-8 is supported"); this.encoding = "utf-8", this.decode = function(e, t) { if (typeof e > "u") return ""; var n = typeof t < "u" && n in t ? t.stream : !1; if (typeof n != "boolean") throw new TypeError("stream option must be boolean"); if (ArrayBuffer.isView(e)) { var s = new Uint8Array(e.buffer, e.byteOffset, e.byteLength), o = new Array(s.length); for (let h = 0; h < s.length; h++) o[h] = String.fromCharCode(s[h]); return decodeURIComponent(escape(o.join(""))); } else throw new TypeError("passed argument must be an array buffer view"); }; } var le = { TextEncoder: pe, TextDecoder: ve }; const we = new le.TextEncoder("utf8"), ye = new le.TextDecoder("utf8"); function be(r) { let e = 5381; for (let t = 0; t < r.length; t++) e = e * 33 ^ r.charCodeAt(t); return (e >>> 0).toString(16); } function Ee(r, e) { return r.replace(new RegExp(`^${e}+|${e}+$`, "g"), ""); } function Oe(r) { return we.encode(r || ""); } function Ce(r) { return ye.decode(new DataView(r), {}); } const Te = 62, Y = 30, ce = 31, Se = 63; class xe { /** * @param {string} alphabet 62 位编码字母表 */ constructor(e) { /** @type {string[]} */ g(this, "encodeTable", []); /** @type {Uint8Array} */ g(this, "decodeMap", new Uint8Array(256).fill(255)); if (e.length !== Te) throw new Error("Encoding alphabet must be 62 characters long"); if (e.includes(` `) || e.includes("\r")) throw new Error("Encoding alphabet contains newline character"); this.encodeTable = e.split(""), this.decodeMap = new Uint8Array(256).fill(255); for (let t = 0; t < e.length; t++) this.decodeMap[e.charCodeAt(t)] = t; } /** * 将字符串编码为 Base62 字符串 * @param {string} src * @returns {string} */ encode(e) { if (!e || e.length === 0) return ""; const t = new Pe(this).encodeV2(e); return String.fromCharCode(...t); } /** * 将 Base62 字符串解码为原始字符串 * @param {string} src * @returns {string} */ decode(e) { if (!e || e.length === 0) return ""; const t = new _e(this).decode(e); return new TextDecoder().decode(t); } } var z; class Pe { /** * @param {Base62} b62 */ constructor(e) { /** @type {Base62} */ w(this, z); /** @type {Uint8Array} */ g(this, "src", new Uint8Array()); /** @type {number} */ g(this, "pos", 0); C(this, z, e); } /** @returns {number} */ get6bits() { let e = this.pos & 7, t = this.pos >> 3; e === 0 && (t -= 1, e = 8); let n = this.src[t] >> 8 - e; return e < 6 && t > 0 && (n |= this.src[t - 1] << e), n & Se; } /** * @param {string} src * @returns {number[]} */ encodeV2(e) { this.src = Oe(e), this.pos = this.src.length * 8; const t = []; for (; this.pos > 0; ) { let n = 6, s = this.get6bits(); (s & Y) === Y && ((this.pos > 6 || s > ce) && (n = 5), s &= ce), t.push(i(this, z).encodeTable[s].charCodeAt(0)), this.pos -= n; } return t; } } z = new WeakMap(); var k; class _e { /** * @param {Base62} b62 */ constructor(e) { /** @type {Base62} */ w(this, k); C(this, k, e); } /** * @param {string} src * @returns {Uint8Array} */ decode(e) { const t = new Uint8Array(Math.ceil(e.length * 6 / 8) + 1); let n = t.length, s = 0, o = 0; for (let h = 0; h < e.length; h++) { const R = e[h].charCodeAt(0), c = i(this, k).decodeMap[R]; if (c === 255) throw new Error(`CorruptInputError at index ${h}`); h === e.length - 1 ? (o |= c << s, s += Math.ceil(Math.log2(c + 1))) : (c & Y) === Y ? (o |= c << s, s += 5) : (o |= c << s, s += 6), s >= 8 && (n--, t[n] = o & 255, s %= 8, o >>= 8); } return s > 0 && (n--, t[n] = o & 255), t.slice(n); } } k = new WeakMap(); Promise.withResolvers || (Promise.withResolvers = /** @type {typeof Promise.withResolvers} */ function() { let r, e; return { promise: new Promise((n, s) => { r = n, e = s; }), resolve: r, reject: e }; }); var G, D, ee, m, I, J, te, V; class se { /** * @param {string} [appKey] * @param {string} [appSecret] * @param {RequestFn} [reqFn] */ constructor(e, t, n) { /** @type {RequestFn | undefined} */ w(this, G); /** @type {Base62 | undefined} */ w(this, D); /** @type {string | undefined} */ w(this, ee); w(this, m, { /** @type {Map} */ "#": /* @__PURE__ */ new Map(), /** @type {Map} */ $: /* @__PURE__ */ new Map() }); /** @type {Map>} */ w(this, I, /* @__PURE__ */ new Map()); /** @type {Set<[string, '#' | '$', RequestOptions & { method: string }, boolean]>} */ w(this, J, /* @__PURE__ */ new Set()); /** * 初始化请求实例 * @param {string} [appKey] * @param {string} [appSecret] * @param {RequestFn} [reqFn] */ g(this, "init", (e, t, n) => { e && C(this, ee, e), n && C(this, G, n), t && C(this, D, new xe(t)), i(this, te).call(this); }); w(this, te, () => { !i(this, J).size || !i(this, G) || (i(this, J).forEach((e) => i(this, V).call(this, ...e)), i(this, J).clear()); }); /** * @param {string} hash * @param {'#' | '$'} flag * @param {RequestOptions & { method: string }} params * @param {boolean} [isCacheRequest] */ w(this, V, (e, t, n, s = !1) => { if (!i(this, G)) i(this, J).add([e, t, n, s]); else { const { url: o, method: h, ...R } = n || {}; i(this, G).call(this, { url: o, method: h, ...R }).then((c) => { if (![0, 1].includes(c.code)) throw re(c.code, c.msg, c.data, o, c == null ? void 0 : c.res); return [c.code, c.msg, c.data, o, (c == null ? void 0 : c.res) ?? ""]; }).then((c) => { const T = ( /** @type {CacheEntry} */ c ); return (t == "#" || h == "GET") && i(this, m)[t].set(e, T), t != "#" && h == "GET" && !s && setTimeout(() => { i(this, m)[t].delete(e); }, 300), T; }).then((c) => { var T; return (T = i(this, I).get(e)) == null ? void 0 : T.forEach((M, _, U) => { M && M[0](c), delete U[_]; }); }).catch((c) => { var T; i(this, m)[t].delete(e), (T = i(this, I).get(e)) == null || T.forEach((M, _, U) => { M && M[1](c instanceof ne ? c : re(-1, c, null, o)), delete U[_]; }); }).finally(() => i(this, I).delete(e)); } }); /** * 发起请求,支持缓存与并发合并 * @param {RequestOptions} options * @param {boolean} [isCacheRequest] * @returns {any} 返回 Proxy 包裹的 Promise,支持链式调用 .then / .catch / .msg / .resp */ g(this, "request", ({ url: e = "/", method: t = "GET", ...n }, s = !1) => { var _, U; e = Ee(e, "/"); const o = ( /** @type {HttpMethod} */ t.toUpperCase() ), h = be(JSON.stringify([e, o, n])), R = ( /** @type {'#' | '$'} */ (_ = e == null ? void 0 : e.includes) != null && _.call(e, "/_/") ? "#" : "$" ), { promise: c, resolve: T, reject: M } = Promise.withResolvers(); return i(this, m)[R].has(h) ? (console.log("cache", e), T(i(this, m)[R].get(h))) : i(this, I).has(h) ? (U = i(this, I).get(h)) == null || U.push([T, M]) : (i(this, I).set(h, [[T, M]]), i(this, V).call(this, h, R, { url: e, method: o, ...n }, s)), new Proxy(c, { get: (H, l) => (...u) => H.then((f) => ( /** @type {any} */ re(.../** @type {[number, string, unknown, string, string]} */ /** @type {unknown} */ f)[l](...u) )).catch((f) => { if (!(f instanceof ne)) throw f; return typeof /** @type {any} */ f[l] == "function" ? ( /** @type {any} */ f[l](...u) ) : ( /** @type {any} */ f[l] ); }) }); }); /** * GET 请求 * @param {string} url * @param {Record} [params] */ g(this, "get", (e, t = {}) => this.request({ url: e, method: "GET", params: t })); /** * POST 请求 * @param {string} url * @param {unknown} [data] * @param {Record} [params] */ g(this, "post", (e, t = {}, n = {}) => this.request({ url: e, method: "POST", data: t, params: n })); /** * PUT 请求 * @param {string} url * @param {unknown} [data] * @param {Record} [params] */ g(this, "put", (e, t = {}, n = {}) => this.request({ url: e, method: "PUT", data: t, params: n })); /** * DELETE 请求 * @param {string} url * @param {unknown} [data] * @param {Record} [params] */ g(this, "del", (e, t = {}, n = {}) => this.request({ url: e, method: "DELETE", data: t, params: n })); /** * 下载(待实现) * @param {string} url * @param {Record} [params] */ g(this, "download", (e, t) => { }); /** * 永久缓存 GET 请求 * @param {string} url * @param {Record} [params] */ g(this, "cache", (e, t = {}) => this.request({ url: e, method: "GET", params: t }, !0)); /** * 通过 Base62 编码参数请求列表接口 * @param {string} code * @param {Record} [base62param] */ g(this, "list", (e, t = {}) => this.get(`/api/${e}/${this.encode(t)}`)); g(this, "getAppInfo", () => { }); /** * 清除缓存 * @param {boolean} [isSystem] 是否同时清除系统缓存(`/_/` 路由) */ g(this, "refreshCache", (e = !1) => { e && i(this, m)["#"].clear(), i(this, m).$.clear(); }); /** * 解码 Base62 字符串为 JSON 对象 * @param {string} [str] * @param {object} [defaultValue] * @returns {unknown} */ g(this, "decode", (e = "", t = {}) => { if (e === void 0 || e === "" || e === null) return t; try { if (!i(this, D)) throw new Error("未初始化 appSecret,请先通过 init 设置 appSecret"); const n = i(this, D).decode(e); return ae.unpack(n); } catch { return console.warn("core.decode", e), t; } }); /** * 将 JSON 对象编码为 Base62 字符串 * @param {Record} [json] * @returns {string} */ g(this, "encode", (e = {}) => { if (!i(this, D)) throw new Error("未初始化 appSecret,请先通过 init 设置 appSecret"); const t = JSON.stringify(e, (n, s) => s === void 0 ? null : s); return i(this, D).encode(ae.pack(t)); }); this.init(e, t, n); } } G = new WeakMap(), D = new WeakMap(), ee = new WeakMap(), m = new WeakMap(), I = new WeakMap(), J = new WeakMap(), te = new WeakMap(), V = new WeakMap(); se.onUnhandledRejection = (r) => { var e, t, n, s, o, h; r != null && r.IS_ECHO_MSG ? ((e = r == null ? void 0 : r.$echoMsg) == null || e.call(r), (t = r == null ? void 0 : r.preventDefault) == null || t.call(r)) : (n = r.reason) != null && n.IS_ECHO_MSG && ((o = (s = r.reason) == null ? void 0 : s.$echoMsg) == null || o.call(s), (h = r == null ? void 0 : r.preventDefault) == null || h.call(r)); }; se.onMsg = (r, e) => [0, 1].includes(r) ? console.log(e) : console.warn(e); export { ne as HttpResponse, re as NewHttpResponse, se as default, be as signature, Oe as str2uint8array, Ee as trim, Ce as uint8array2str };