@inpageedit/core 0.9.2 → 0.10.0
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/LICENSE +20 -20
- package/README.md +55 -55
- package/dist/ActionButton-BgbTKTg7.js.map +1 -1
- package/dist/CheckBox-D3rHnX7I.js.map +1 -1
- package/dist/IconQuickEdit-CAL1HXIb.js.map +1 -1
- package/dist/InputBox-BV4m05Xs.js.map +1 -1
- package/dist/PluginPrefSync-CNCU2DJU.js +171 -0
- package/dist/PluginPrefSync-CNCU2DJU.js.map +1 -0
- package/dist/Preferences-DS4-CFWe.js.map +1 -1
- package/dist/RadioBox-nJqWsxW2.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/{index-DxGjTpIn.js → index-2mNdeL-V.js} +27 -27
- package/dist/index-2mNdeL-V.js.map +1 -0
- package/dist/{index-btJ_NMuF.js → index-BR6gK_ki.js} +2 -2
- package/dist/index-BR6gK_ki.js.map +1 -0
- package/dist/index-Bh70Udzi.js.map +1 -1
- package/dist/{index-RFAZzS9C.js → index-BnAhw94L.js} +2 -2
- package/dist/{index-RFAZzS9C.js.map → index-BnAhw94L.js.map} +1 -1
- package/dist/{index-UjgKGkN2.js → index-ByJfEsN8.js} +2 -2
- package/dist/index-ByJfEsN8.js.map +1 -0
- package/dist/{index-CWbHdYKu.js → index-ByzgI28q.js} +2 -2
- package/dist/index-ByzgI28q.js.map +1 -0
- package/dist/{index-C-A3jSMx.js → index-CAiGct8U.js} +2 -2
- package/dist/index-CAiGct8U.js.map +1 -0
- package/dist/index-CvhkVj_L.js.map +1 -1
- package/dist/{index-CaI9BFuB.js → index-Cx-YiN1j.js} +2 -2
- package/dist/{index-CaI9BFuB.js.map → index-Cx-YiN1j.js.map} +1 -1
- package/dist/{index-D6055L55.js → index-DqJUIV2e.js} +151 -143
- package/dist/{index-D6055L55.js.map → index-DqJUIV2e.js.map} +1 -1
- package/dist/{index-Ek5d60jn.js → index-Z-_kjibx.js} +1637 -1453
- package/dist/index-Z-_kjibx.js.map +1 -0
- package/dist/{index-CInRo1qR.js → index-eOIVMf9E.js} +2 -2
- package/dist/index-eOIVMf9E.js.map +1 -0
- package/dist/index-lZkYoUca.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/makeCallable-LDU0xZMJ.js.map +1 -1
- package/dist/noop-ClDc6zv4.js.map +1 -1
- package/dist/plugins/preferences-ui/PluginPrefSync.d.ts +25 -0
- package/dist/plugins/preferences-ui/index.d.ts +4 -0
- package/dist/services/PreferencesService.d.ts +7 -0
- package/dist/services/storage/IPEStorageManager.d.ts +25 -0
- package/dist/services/storage/index.d.ts +6 -29
- package/dist/style.css +1 -1
- package/lib/index.umd.js +27 -20
- package/lib/index.umd.js.map +1 -1
- package/lib/style.css +1 -1
- package/package.json +2 -1
- package/dist/index-C-A3jSMx.js.map +0 -1
- package/dist/index-CInRo1qR.js.map +0 -1
- package/dist/index-CWbHdYKu.js.map +0 -1
- package/dist/index-DxGjTpIn.js.map +0 -1
- package/dist/index-Ek5d60jn.js.map +0 -1
- package/dist/index-UjgKGkN2.js.map +0 -1
- package/dist/index-btJ_NMuF.js.map +0 -1
- package/dist/services/storage/IDBStorage.d.ts +0 -52
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Ek5d60jn.js","sources":["../src/polyfills/Promise.withResolvers.ts","../../../node_modules/.pnpm/cosmokit@1.8.0/node_modules/cosmokit/lib/index.mjs","../../../node_modules/.pnpm/@cordisjs+core@3.18.1/node_modules/@cordisjs/core/lib/index.mjs","../../../node_modules/.pnpm/schemastery@3.17.1/node_modules/schemastery/lib/index.mjs","../../../node_modules/.pnpm/@inpageedit+logger@0.1.0/node_modules/@inpageedit/logger/dist/index.js","../../../node_modules/.pnpm/wiki-saikou@7.1.2/node_modules/wiki-saikou/dist/browser.js","../src/services/ApiService.ts","../src/services/CurrentPageService.ts","../src/services/ResourceLoaderService.ts","../../modal/dist/index.js","../src/services/ModalService.tsx","../src/utils/url.ts","../src/services/WikiMetadataService.tsx","../src/services/storage/IDBStorage.ts","../src/services/storage/index.ts","../src/models/WikiPage/types/WatchlistAction.ts","../src/models/WikiPage/index.ts","../src/services/WikiPageService.ts","../src/models/WikiTitle/index.ts","../src/services/WikiTitleService.ts","../src/utils/computeable.ts","../src/services/PreferencesService.tsx","../src/constants/endpoints.ts","../src/InPageEdit.ts","../src/utils/string.ts","../src/plugins/BasePlugin.ts","../src/index.ts"],"sourcesContent":["export const promiseWithResolvers = <T extends unknown = any>() => {\r\n let resolve!: (value: T | PromiseLike<T>) => void\r\n let reject!: (reason?: any) => void\r\n const promise = new Promise<T>((res, rej) => {\r\n resolve = res\r\n reject = rej\r\n })\r\n return { promise, resolve, reject }\r\n}\r\n\r\nif (!Promise.withResolvers) {\r\n Promise.withResolvers = promiseWithResolvers\r\n}\r\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/misc.ts\nfunction noop() {\n}\n__name(noop, \"noop\");\nfunction isNullable(value) {\n return value === null || value === void 0;\n}\n__name(isNullable, \"isNullable\");\nfunction isNonNullable(value) {\n return !isNullable(value);\n}\n__name(isNonNullable, \"isNonNullable\");\nfunction isPlainObject(data) {\n return data && typeof data === \"object\" && !Array.isArray(data);\n}\n__name(isPlainObject, \"isPlainObject\");\nfunction filterKeys(object, filter) {\n return Object.fromEntries(Object.entries(object).filter(([key, value]) => filter(key, value)));\n}\n__name(filterKeys, \"filterKeys\");\nfunction mapValues(object, transform) {\n return Object.fromEntries(Object.entries(object).map(([key, value]) => [key, transform(value, key)]));\n}\n__name(mapValues, \"mapValues\");\nfunction pick(source, keys, forced) {\n if (!keys) return { ...source };\n const result = {};\n for (const key of keys) {\n if (forced || source[key] !== void 0) result[key] = source[key];\n }\n return result;\n}\n__name(pick, \"pick\");\nfunction omit(source, keys) {\n if (!keys) return { ...source };\n const result = { ...source };\n for (const key of keys) {\n Reflect.deleteProperty(result, key);\n }\n return result;\n}\n__name(omit, \"omit\");\nfunction defineProperty(object, key, value) {\n return Object.defineProperty(object, key, { writable: true, value, enumerable: false });\n}\n__name(defineProperty, \"defineProperty\");\n\n// src/array.ts\nfunction contain(array1, array2) {\n return array2.every((item) => array1.includes(item));\n}\n__name(contain, \"contain\");\nfunction intersection(array1, array2) {\n return array1.filter((item) => array2.includes(item));\n}\n__name(intersection, \"intersection\");\nfunction difference(array1, array2) {\n return array1.filter((item) => !array2.includes(item));\n}\n__name(difference, \"difference\");\nfunction union(array1, array2) {\n return Array.from(/* @__PURE__ */ new Set([...array1, ...array2]));\n}\n__name(union, \"union\");\nfunction deduplicate(array) {\n return [...new Set(array)];\n}\n__name(deduplicate, \"deduplicate\");\nfunction remove(list, item) {\n const index = list?.indexOf(item);\n if (index >= 0) {\n list.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n__name(remove, \"remove\");\nfunction makeArray(source) {\n return Array.isArray(source) ? source : isNullable(source) ? [] : [source];\n}\n__name(makeArray, \"makeArray\");\n\n// src/types.ts\nfunction is(type, value) {\n if (arguments.length === 1) return (value2) => is(type, value2);\n return type in globalThis && value instanceof globalThis[type] || Object.prototype.toString.call(value).slice(8, -1) === type;\n}\n__name(is, \"is\");\nfunction isArrayBufferLike(value) {\n return is(\"ArrayBuffer\", value) || is(\"SharedArrayBuffer\", value);\n}\n__name(isArrayBufferLike, \"isArrayBufferLike\");\nfunction isArrayBufferSource(value) {\n return isArrayBufferLike(value) || ArrayBuffer.isView(value);\n}\n__name(isArrayBufferSource, \"isArrayBufferSource\");\nvar Binary;\n((Binary2) => {\n Binary2.is = isArrayBufferLike;\n Binary2.isSource = isArrayBufferSource;\n function fromSource(source) {\n if (ArrayBuffer.isView(source)) {\n return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n } else {\n return source;\n }\n }\n Binary2.fromSource = fromSource;\n __name(fromSource, \"fromSource\");\n function toBase64(source) {\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(source).toString(\"base64\");\n }\n let binary = \"\";\n const bytes = new Uint8Array(source);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n Binary2.toBase64 = toBase64;\n __name(toBase64, \"toBase64\");\n function fromBase64(source) {\n if (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"base64\"));\n return Uint8Array.from(atob(source), (c) => c.charCodeAt(0));\n }\n Binary2.fromBase64 = fromBase64;\n __name(fromBase64, \"fromBase64\");\n function toHex(source) {\n if (typeof Buffer !== \"undefined\") return Buffer.from(source).toString(\"hex\");\n return Array.from(new Uint8Array(source), (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n }\n Binary2.toHex = toHex;\n __name(toHex, \"toHex\");\n function fromHex(source) {\n if (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"hex\"));\n const hex = source.length % 2 === 0 ? source : source.slice(0, source.length - 1);\n const buffer = [];\n for (let i = 0; i < hex.length; i += 2) {\n buffer.push(parseInt(`${hex[i]}${hex[i + 1]}`, 16));\n }\n return Uint8Array.from(buffer).buffer;\n }\n Binary2.fromHex = fromHex;\n __name(fromHex, \"fromHex\");\n})(Binary || (Binary = {}));\nvar base64ToArrayBuffer = Binary.fromBase64;\nvar arrayBufferToBase64 = Binary.toBase64;\nvar hexToArrayBuffer = Binary.fromHex;\nvar arrayBufferToHex = Binary.toHex;\nfunction clone(source, refs = /* @__PURE__ */ new Map()) {\n if (!source || typeof source !== \"object\") return source;\n if (is(\"Date\", source)) return new Date(source.valueOf());\n if (is(\"RegExp\", source)) return new RegExp(source.source, source.flags);\n if (isArrayBufferLike(source)) return source.slice(0);\n if (ArrayBuffer.isView(source)) return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n const cached = refs.get(source);\n if (cached) return cached;\n if (Array.isArray(source)) {\n const result2 = [];\n refs.set(source, result2);\n source.forEach((value, index) => {\n result2[index] = Reflect.apply(clone, null, [value, refs]);\n });\n return result2;\n }\n const result = Object.create(Object.getPrototypeOf(source));\n refs.set(source, result);\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = { ...Reflect.getOwnPropertyDescriptor(source, key) };\n if (\"value\" in descriptor) {\n descriptor.value = Reflect.apply(clone, null, [descriptor.value, refs]);\n }\n Reflect.defineProperty(result, key, descriptor);\n }\n return result;\n}\n__name(clone, \"clone\");\nfunction deepEqual(a, b, strict) {\n if (a === b) return true;\n if (!strict && isNullable(a) && isNullable(b)) return true;\n if (typeof a !== typeof b) return false;\n if (typeof a !== \"object\") return false;\n if (!a || !b) return false;\n function check(test, then) {\n return test(a) ? test(b) ? then(a, b) : false : test(b) ? false : void 0;\n }\n __name(check, \"check\");\n return check(Array.isArray, (a2, b2) => a2.length === b2.length && a2.every((item, index) => deepEqual(item, b2[index]))) ?? check(is(\"Date\"), (a2, b2) => a2.valueOf() === b2.valueOf()) ?? check(is(\"RegExp\"), (a2, b2) => a2.source === b2.source && a2.flags === b2.flags) ?? check(isArrayBufferLike, (a2, b2) => {\n if (a2.byteLength !== b2.byteLength) return false;\n const viewA = new Uint8Array(a2);\n const viewB = new Uint8Array(b2);\n for (let i = 0; i < viewA.length; i++) {\n if (viewA[i] !== viewB[i]) return false;\n }\n return true;\n }) ?? Object.keys({ ...a, ...b }).every((key) => deepEqual(a[key], b[key], strict));\n}\n__name(deepEqual, \"deepEqual\");\n\n// src/string.ts\nfunction capitalize(source) {\n return source.charAt(0).toUpperCase() + source.slice(1);\n}\n__name(capitalize, \"capitalize\");\nfunction uncapitalize(source) {\n return source.charAt(0).toLowerCase() + source.slice(1);\n}\n__name(uncapitalize, \"uncapitalize\");\nfunction camelCase(source) {\n return source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase());\n}\n__name(camelCase, \"camelCase\");\nfunction tokenize(source, delimiters, delimiter) {\n const output = [];\n let state = 0 /* DELIM */;\n for (let i = 0; i < source.length; i++) {\n const code = source.charCodeAt(i);\n if (code >= 65 && code <= 90) {\n if (state === 1 /* UPPER */) {\n const next = source.charCodeAt(i + 1);\n if (next >= 97 && next <= 122) {\n output.push(delimiter);\n }\n output.push(code + 32);\n } else {\n if (state !== 0 /* DELIM */) {\n output.push(delimiter);\n }\n output.push(code + 32);\n }\n state = 1 /* UPPER */;\n } else if (code >= 97 && code <= 122) {\n output.push(code);\n state = 2 /* LOWER */;\n } else if (delimiters.includes(code)) {\n if (state !== 0 /* DELIM */) {\n output.push(delimiter);\n }\n state = 0 /* DELIM */;\n } else {\n output.push(code);\n }\n }\n return String.fromCharCode(...output);\n}\n__name(tokenize, \"tokenize\");\nfunction paramCase(source) {\n return tokenize(source, [45, 95], 45);\n}\n__name(paramCase, \"paramCase\");\nfunction snakeCase(source) {\n return tokenize(source, [45, 95], 95);\n}\n__name(snakeCase, \"snakeCase\");\nvar camelize = camelCase;\nvar hyphenate = paramCase;\nfunction formatProperty(key) {\n if (typeof key !== \"string\") return `[${key.toString()}]`;\n return /^[a-z_$][\\w$]*$/i.test(key) ? `.${key}` : `[${JSON.stringify(key)}]`;\n}\n__name(formatProperty, \"formatProperty\");\nfunction trimSlash(source) {\n return source.replace(/\\/$/, \"\");\n}\n__name(trimSlash, \"trimSlash\");\nfunction sanitize(source) {\n if (!source.startsWith(\"/\")) source = \"/\" + source;\n return trimSlash(source);\n}\n__name(sanitize, \"sanitize\");\n\n// src/time.ts\nvar Time;\n((Time2) => {\n Time2.millisecond = 1;\n Time2.second = 1e3;\n Time2.minute = Time2.second * 60;\n Time2.hour = Time2.minute * 60;\n Time2.day = Time2.hour * 24;\n Time2.week = Time2.day * 7;\n let timezoneOffset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n function setTimezoneOffset(offset) {\n timezoneOffset = offset;\n }\n Time2.setTimezoneOffset = setTimezoneOffset;\n __name(setTimezoneOffset, \"setTimezoneOffset\");\n function getTimezoneOffset() {\n return timezoneOffset;\n }\n Time2.getTimezoneOffset = getTimezoneOffset;\n __name(getTimezoneOffset, \"getTimezoneOffset\");\n function getDateNumber(date = /* @__PURE__ */ new Date(), offset) {\n if (typeof date === \"number\") date = new Date(date);\n if (offset === void 0) offset = timezoneOffset;\n return Math.floor((date.valueOf() / Time2.minute - offset) / 1440);\n }\n Time2.getDateNumber = getDateNumber;\n __name(getDateNumber, \"getDateNumber\");\n function fromDateNumber(value, offset) {\n const date = new Date(value * Time2.day);\n if (offset === void 0) offset = timezoneOffset;\n return new Date(+date + offset * Time2.minute);\n }\n Time2.fromDateNumber = fromDateNumber;\n __name(fromDateNumber, \"fromDateNumber\");\n const numeric = /\\d+(?:\\.\\d+)?/.source;\n const timeRegExp = new RegExp(`^${[\n \"w(?:eek(?:s)?)?\",\n \"d(?:ay(?:s)?)?\",\n \"h(?:our(?:s)?)?\",\n \"m(?:in(?:ute)?(?:s)?)?\",\n \"s(?:ec(?:ond)?(?:s)?)?\"\n ].map((unit) => `(${numeric}${unit})?`).join(\"\")}$`);\n function parseTime(source) {\n const capture = timeRegExp.exec(source);\n if (!capture) return 0;\n return (parseFloat(capture[1]) * Time2.week || 0) + (parseFloat(capture[2]) * Time2.day || 0) + (parseFloat(capture[3]) * Time2.hour || 0) + (parseFloat(capture[4]) * Time2.minute || 0) + (parseFloat(capture[5]) * Time2.second || 0);\n }\n Time2.parseTime = parseTime;\n __name(parseTime, \"parseTime\");\n function parseDate(date) {\n const parsed = parseTime(date);\n if (parsed) {\n date = Date.now() + parsed;\n } else if (/^\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) {\n date = `${(/* @__PURE__ */ new Date()).toLocaleDateString()}-${date}`;\n } else if (/^\\d{1,2}-\\d{1,2}-\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) {\n date = `${(/* @__PURE__ */ new Date()).getFullYear()}-${date}`;\n }\n return date ? new Date(date) : /* @__PURE__ */ new Date();\n }\n Time2.parseDate = parseDate;\n __name(parseDate, \"parseDate\");\n function format(ms) {\n const abs = Math.abs(ms);\n if (abs >= Time2.day - Time2.hour / 2) {\n return Math.round(ms / Time2.day) + \"d\";\n } else if (abs >= Time2.hour - Time2.minute / 2) {\n return Math.round(ms / Time2.hour) + \"h\";\n } else if (abs >= Time2.minute - Time2.second / 2) {\n return Math.round(ms / Time2.minute) + \"m\";\n } else if (abs >= Time2.second) {\n return Math.round(ms / Time2.second) + \"s\";\n }\n return ms + \"ms\";\n }\n Time2.format = format;\n __name(format, \"format\");\n function toDigits(source, length = 2) {\n return source.toString().padStart(length, \"0\");\n }\n Time2.toDigits = toDigits;\n __name(toDigits, \"toDigits\");\n function template(template2, time = /* @__PURE__ */ new Date()) {\n return template2.replace(\"yyyy\", time.getFullYear().toString()).replace(\"yy\", time.getFullYear().toString().slice(2)).replace(\"MM\", toDigits(time.getMonth() + 1)).replace(\"dd\", toDigits(time.getDate())).replace(\"hh\", toDigits(time.getHours())).replace(\"mm\", toDigits(time.getMinutes())).replace(\"ss\", toDigits(time.getSeconds())).replace(\"SSS\", toDigits(time.getMilliseconds(), 3));\n }\n Time2.template = template;\n __name(template, \"template\");\n})(Time || (Time = {}));\nexport {\n Binary,\n Time,\n arrayBufferToBase64,\n arrayBufferToHex,\n base64ToArrayBuffer,\n camelCase,\n camelize,\n capitalize,\n clone,\n contain,\n deduplicate,\n deepEqual,\n defineProperty,\n difference,\n filterKeys,\n formatProperty,\n hexToArrayBuffer,\n hyphenate,\n intersection,\n is,\n isNonNullable,\n isNullable,\n isPlainObject,\n makeArray,\n mapValues,\n noop,\n omit,\n paramCase,\n pick,\n remove,\n sanitize,\n snakeCase,\n trimSlash,\n uncapitalize,\n union,\n mapValues as valueMap\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/context.ts\nimport { defineProperty as defineProperty6 } from \"cosmokit\";\n\n// src/events.ts\nimport { defineProperty as defineProperty3, remove } from \"cosmokit\";\n\n// src/reflect.ts\nimport { defineProperty as defineProperty2, isNullable } from \"cosmokit\";\n\n// src/utils.ts\nimport { defineProperty } from \"cosmokit\";\nvar symbols = {\n // internal symbols\n shadow: Symbol.for(\"cordis.shadow\"),\n receiver: Symbol.for(\"cordis.receiver\"),\n original: Symbol.for(\"cordis.original\"),\n // context symbols\n store: Symbol.for(\"cordis.store\"),\n events: Symbol.for(\"cordis.events\"),\n static: Symbol.for(\"cordis.static\"),\n filter: Symbol.for(\"cordis.filter\"),\n expose: Symbol.for(\"cordis.expose\"),\n isolate: Symbol.for(\"cordis.isolate\"),\n internal: Symbol.for(\"cordis.internal\"),\n intercept: Symbol.for(\"cordis.intercept\"),\n // service symbols\n setup: Symbol.for(\"cordis.setup\"),\n invoke: Symbol.for(\"cordis.invoke\"),\n extend: Symbol.for(\"cordis.extend\"),\n tracker: Symbol.for(\"cordis.tracker\"),\n provide: Symbol.for(\"cordis.provide\"),\n immediate: Symbol.for(\"cordis.immediate\")\n};\nvar GeneratorFunction = function* () {\n}.constructor;\nvar AsyncGeneratorFunction = async function* () {\n}.constructor;\nfunction isConstructor(func) {\n if (!func.prototype) return false;\n if (func instanceof GeneratorFunction) return false;\n if (AsyncGeneratorFunction !== Function && func instanceof AsyncGeneratorFunction) return false;\n return true;\n}\n__name(isConstructor, \"isConstructor\");\nfunction resolveConfig(plugin, config) {\n const schema = plugin[\"Config\"] || plugin[\"schema\"];\n if (schema && plugin[\"schema\"] !== false) config = schema(config);\n return config ?? {};\n}\n__name(resolveConfig, \"resolveConfig\");\nfunction isUnproxyable(value) {\n return [Map, Set, Date, Promise].some((constructor) => value instanceof constructor);\n}\n__name(isUnproxyable, \"isUnproxyable\");\nfunction joinPrototype(proto1, proto2) {\n if (proto1 === Object.prototype) return proto2;\n const result = Object.create(joinPrototype(Object.getPrototypeOf(proto1), proto2));\n for (const key of Reflect.ownKeys(proto1)) {\n Object.defineProperty(result, key, Object.getOwnPropertyDescriptor(proto1, key));\n }\n return result;\n}\n__name(joinPrototype, \"joinPrototype\");\nfunction isObject(value) {\n return value && (typeof value === \"object\" || typeof value === \"function\");\n}\n__name(isObject, \"isObject\");\nfunction getTraceable(ctx, value, noTrap) {\n if (!isObject(value)) return value;\n if (Object.hasOwn(value, symbols.shadow)) {\n return Object.getPrototypeOf(value);\n }\n const tracker = value[symbols.tracker];\n if (!tracker) return value;\n return createTraceable(ctx, value, tracker, noTrap);\n}\n__name(getTraceable, \"getTraceable\");\nfunction withProps(target, props) {\n if (!props) return target;\n return new Proxy(target, {\n get: /* @__PURE__ */ __name((target2, prop, receiver) => {\n if (prop in props && prop !== \"constructor\") return Reflect.get(props, prop, receiver);\n return Reflect.get(target2, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name((target2, prop, value, receiver) => {\n if (prop in props && prop !== \"constructor\") return Reflect.set(props, prop, value, receiver);\n return Reflect.set(target2, prop, value, receiver);\n }, \"set\")\n });\n}\n__name(withProps, \"withProps\");\nfunction withProp(target, prop, value) {\n return withProps(target, Object.defineProperty(/* @__PURE__ */ Object.create(null), prop, {\n value,\n writable: false\n }));\n}\n__name(withProp, \"withProp\");\nfunction createShadow(ctx, target, property, receiver) {\n if (!property) return receiver;\n const origin = Reflect.getOwnPropertyDescriptor(target, property)?.value;\n if (!origin) return receiver;\n return withProp(receiver, property, ctx.extend({ [symbols.shadow]: origin }));\n}\n__name(createShadow, \"createShadow\");\nfunction createShadowMethod(ctx, value, outer, shadow) {\n return new Proxy(value, {\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n if (thisArg === outer) thisArg = shadow;\n args = args.map((arg) => {\n if (typeof arg !== \"function\" || arg[symbols.original]) return arg;\n return new Proxy(arg, {\n get: /* @__PURE__ */ __name((target2, prop, receiver) => {\n if (prop === symbols.original) return target2;\n const value2 = Reflect.get(target2, prop, receiver);\n if (prop === \"toString\" && value2 === Function.prototype.toString) {\n return function(...args2) {\n return Reflect.apply(value2, this === receiver ? target2 : this, args2);\n };\n }\n return value2;\n }, \"get\"),\n apply: /* @__PURE__ */ __name((target2, thisArg2, args2) => {\n return Reflect.apply(target2, getTraceable(ctx, thisArg2), args2.map((arg2) => getTraceable(ctx, arg2)));\n }, \"apply\"),\n construct: /* @__PURE__ */ __name((target2, args2, newTarget) => {\n return Reflect.construct(target2, args2.map((arg2) => getTraceable(ctx, arg2)), newTarget);\n }, \"construct\")\n });\n });\n return getTraceable(ctx, Reflect.apply(target, thisArg, args));\n }, \"apply\")\n });\n}\n__name(createShadowMethod, \"createShadowMethod\");\nfunction createTraceable(ctx, value, tracker, noTrap) {\n if (ctx[symbols.shadow]) {\n ctx = Object.getPrototypeOf(ctx);\n }\n const proxy = new Proxy(value, {\n get: /* @__PURE__ */ __name((target, prop, receiver) => {\n if (prop === symbols.original) return target;\n if (prop === tracker.property) return ctx;\n if (typeof prop === \"symbol\") {\n return Reflect.get(target, prop, receiver);\n }\n if (tracker.associate && ctx[symbols.internal][`${tracker.associate}.${prop}`]) {\n return Reflect.get(ctx, `${tracker.associate}.${prop}`, withProp(ctx, symbols.receiver, receiver));\n }\n const shadow = createShadow(ctx, target, tracker.property, receiver);\n const innerValue = Reflect.get(target, prop, shadow);\n const innerTracker = innerValue?.[symbols.tracker];\n if (innerTracker) {\n return createTraceable(ctx, innerValue, innerTracker);\n } else if (!noTrap && typeof innerValue === \"function\") {\n return createShadowMethod(ctx, innerValue, receiver, shadow);\n } else {\n return innerValue;\n }\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value2, receiver) => {\n if (prop === symbols.original) return false;\n if (prop === tracker.property) return false;\n if (typeof prop === \"symbol\") {\n return Reflect.set(target, prop, value2, receiver);\n }\n if (tracker.associate && ctx[symbols.internal][`${tracker.associate}.${prop}`]) {\n return Reflect.set(ctx, `${tracker.associate}.${prop}`, value2, withProp(ctx, symbols.receiver, receiver));\n }\n const shadow = createShadow(ctx, target, tracker.property, receiver);\n return Reflect.set(target, prop, value2, shadow);\n }, \"set\"),\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n return applyTraceable(proxy, target, thisArg, args);\n }, \"apply\")\n });\n return proxy;\n}\n__name(createTraceable, \"createTraceable\");\nfunction applyTraceable(proxy, value, thisArg, args) {\n if (!value[symbols.invoke]) return Reflect.apply(value, thisArg, args);\n return value[symbols.invoke].apply(proxy, args);\n}\n__name(applyTraceable, \"applyTraceable\");\nfunction createCallable(name, proto, tracker) {\n const self = /* @__PURE__ */ __name(function(...args) {\n const proxy = createTraceable(self[\"ctx\"], self, tracker);\n return applyTraceable(proxy, self, this, args);\n }, \"self\");\n defineProperty(self, \"name\", name);\n return Object.setPrototypeOf(self, proto);\n}\n__name(createCallable, \"createCallable\");\n\n// src/reflect.ts\nvar ReflectService = class _ReflectService {\n constructor(ctx) {\n this.ctx = ctx;\n defineProperty2(this, symbols.tracker, {\n associate: \"reflect\",\n property: \"ctx\"\n });\n this._mixin(\"reflect\", [\"get\", \"set\", \"provide\", \"accessor\", \"mixin\", \"alias\"]);\n this._mixin(\"scope\", [\"config\", \"runtime\", \"effect\", \"collect\", \"accept\", \"decline\"]);\n this._mixin(\"registry\", [\"using\", \"inject\", \"plugin\"]);\n this._mixin(\"lifecycle\", [\"on\", \"once\", \"parallel\", \"emit\", \"serial\", \"bail\", \"start\", \"stop\"]);\n }\n static {\n __name(this, \"ReflectService\");\n }\n static resolveInject(ctx, name) {\n let internal = ctx[symbols.internal][name];\n while (internal?.type === \"alias\") {\n name = internal.name;\n internal = ctx[symbols.internal][name];\n }\n return [name, internal];\n }\n static checkInject(ctx, name, error) {\n ctx = ctx[symbols.shadow] ?? ctx;\n if ([\"prototype\", \"then\", \"registry\", \"lifecycle\"].includes(name)) return;\n if (name[0] === \"$\" || name[0] === \"_\") return;\n if (!ctx.runtime.plugin) return;\n if (ctx.bail(ctx, \"internal/inject\", name)) return;\n const lines = error.stack.split(\"\\n\");\n lines.splice(1, 1);\n error.stack = lines.join(\"\\n\");\n ctx.emit(ctx, \"internal/warning\", error);\n }\n static handler = {\n get: /* @__PURE__ */ __name((target, prop, ctx) => {\n if (typeof prop !== \"string\") return Reflect.get(target, prop, ctx);\n if (Reflect.has(target, prop)) {\n return getTraceable(ctx, Reflect.get(target, prop, ctx), true);\n }\n const [name, internal] = _ReflectService.resolveInject(target, prop);\n const error = new Error(`property ${name} is not registered, declare it as \\`inject\\` to suppress this warning`);\n if (!internal) {\n _ReflectService.checkInject(ctx, name, error);\n return Reflect.get(target, name, ctx);\n } else if (internal.type === \"accessor\") {\n return internal.get.call(ctx, ctx[symbols.receiver]);\n } else {\n if (!internal.builtin) _ReflectService.checkInject(ctx, name, error);\n return ctx.reflect.get(name);\n }\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value, ctx) => {\n if (typeof prop !== \"string\") return Reflect.set(target, prop, value, ctx);\n const [name, internal] = _ReflectService.resolveInject(target, prop);\n if (!internal) {\n return Reflect.set(target, name, value, ctx);\n }\n if (internal.type === \"accessor\") {\n if (!internal.set) return false;\n return internal.set.call(ctx, value, ctx[symbols.receiver]);\n } else {\n ctx.reflect.set(name, value);\n return true;\n }\n }, \"set\"),\n has: /* @__PURE__ */ __name((target, prop) => {\n if (typeof prop !== \"string\") return Reflect.has(target, prop);\n if (Reflect.has(target, prop)) return true;\n const [, internal] = _ReflectService.resolveInject(target, prop);\n return !!internal;\n }, \"has\")\n };\n get(name) {\n const internal = this.ctx[symbols.internal][name];\n if (internal?.type !== \"service\") return;\n const key = this.ctx[symbols.isolate][name];\n const value = this.ctx[symbols.store][key]?.value;\n return getTraceable(this.ctx, value);\n }\n set(name, value) {\n this.provide(name);\n const key = this.ctx[symbols.isolate][name];\n const oldValue = this.ctx[symbols.store][key]?.value;\n value ??= void 0;\n let dispose = /* @__PURE__ */ __name(() => {\n }, \"dispose\");\n if (oldValue === value) return dispose;\n if (!isNullable(value) && !isNullable(oldValue)) {\n throw new Error(`service ${name} has been registered`);\n }\n const ctx = this.ctx;\n if (!isNullable(value)) {\n dispose = ctx.effect(() => () => {\n ctx.set(name, void 0);\n });\n }\n if (isUnproxyable(value)) {\n ctx.emit(ctx, \"internal/warning\", new Error(`service ${name} is an unproxyable object, which may lead to unexpected behavior`));\n }\n const self = Object.create(ctx);\n self[symbols.filter] = (ctx2) => {\n return ctx[symbols.isolate][name] === ctx2[symbols.isolate][name];\n };\n ctx.emit(self, \"internal/before-service\", name, value);\n ctx[symbols.store][key] = { value, source: ctx };\n ctx.emit(self, \"internal/service\", name, oldValue);\n return dispose;\n }\n provide(name, value, builtin) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return;\n const key = Symbol(name);\n internal[name] = { type: \"service\", builtin };\n this.ctx.root[symbols.isolate][name] = key;\n if (!isObject(value)) return;\n this.ctx[symbols.store][key] = { value, source: null };\n defineProperty2(value, symbols.tracker, {\n associate: name,\n property: \"ctx\"\n });\n }\n _accessor(name, options) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return () => {\n };\n internal[name] = { type: \"accessor\", ...options };\n return () => delete this.ctx.root[symbols.isolate][name];\n }\n accessor(name, options) {\n this.ctx.scope.effect(() => {\n return this._accessor(name, options);\n });\n }\n alias(name, aliases) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return;\n for (const key of aliases) {\n internal[key] ||= { type: \"alias\", name };\n }\n }\n _mixin(source, mixins) {\n const entries = Array.isArray(mixins) ? mixins.map((key) => [key, key]) : Object.entries(mixins);\n const getTarget = typeof source === \"string\" ? (ctx) => ctx[source] : () => source;\n const disposables = entries.map(([key, value]) => {\n return this._accessor(value, {\n get(receiver) {\n const service = getTarget(this);\n if (isNullable(service)) return service;\n const mixin = receiver ? withProps(receiver, service) : service;\n const value2 = Reflect.get(service, key, mixin);\n if (typeof value2 !== \"function\") return value2;\n return value2.bind(mixin ?? service);\n },\n set(value2, receiver) {\n const service = getTarget(this);\n const mixin = receiver ? withProps(receiver, service) : service;\n return Reflect.set(service, key, value2, mixin);\n }\n });\n });\n return () => disposables.forEach((dispose) => dispose());\n }\n mixin(source, mixins) {\n this.ctx.scope.effect(() => {\n return this._mixin(source, mixins);\n });\n }\n trace(value) {\n return getTraceable(this.ctx, value);\n }\n bind(callback) {\n return new Proxy(callback, {\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n return target.apply(this.trace(thisArg), args.map((arg) => this.trace(arg)));\n }, \"apply\")\n });\n }\n};\nvar reflect_default = ReflectService;\n\n// src/events.ts\nfunction isBailed(value) {\n return value !== null && value !== false && value !== void 0;\n}\n__name(isBailed, \"isBailed\");\nvar Lifecycle = class {\n constructor(ctx) {\n this.ctx = ctx;\n defineProperty3(this, symbols.tracker, {\n associate: \"lifecycle\",\n property: \"ctx\"\n });\n defineProperty3(this.on(\"internal/listener\", function(name, listener, options) {\n const method = options.prepend ? \"unshift\" : \"push\";\n if (name === \"ready\") {\n if (!this.lifecycle.isActive) return;\n this.scope.ensure(async () => listener());\n return () => false;\n } else if (name === \"dispose\") {\n this.scope.disposables[method](listener);\n defineProperty3(listener, \"name\", \"event <dispose>\");\n return () => remove(this.scope.disposables, listener);\n } else if (name === \"fork\") {\n this.scope.runtime.forkables[method](listener);\n return this.scope.collect(\"event <fork>\", () => remove(this.scope.runtime.forkables, listener));\n }\n }), Context.static, ctx.scope);\n for (const level of [\"info\", \"error\", \"warning\"]) {\n defineProperty3(this.on(`internal/${level}`, (format, ...param) => {\n if (this._hooks[`internal/${level}`].length > 1) return;\n console.info(format, ...param);\n }), Context.static, ctx.scope);\n }\n defineProperty3(this.on(\"internal/before-service\", function(name) {\n for (const runtime of this.registry.values()) {\n if (!runtime.inject[name]?.required) continue;\n const scopes = runtime.isReusable ? runtime.children : [runtime];\n for (const scope of scopes) {\n if (!this[symbols.filter](scope.ctx)) continue;\n scope.updateStatus();\n scope.reset();\n }\n }\n }, { global: true }), Context.static, ctx.scope);\n defineProperty3(this.on(\"internal/service\", function(name) {\n for (const runtime of this.registry.values()) {\n if (!runtime.inject[name]?.required) continue;\n const scopes = runtime.isReusable ? runtime.children : [runtime];\n for (const scope of scopes) {\n if (!this[symbols.filter](scope.ctx)) continue;\n scope.start();\n }\n }\n }, { global: true }), Context.static, ctx.scope);\n const checkInject = /* @__PURE__ */ __name((scope, name) => {\n if (!scope.runtime.plugin) return false;\n for (const key in scope.runtime.inject) {\n if (name === reflect_default.resolveInject(scope.ctx, key)[0]) return true;\n }\n return checkInject(scope.parent.scope, name);\n }, \"checkInject\");\n defineProperty3(this.on(\"internal/inject\", function(name) {\n return checkInject(this.scope, name);\n }, { global: true }), Context.static, ctx.scope);\n }\n static {\n __name(this, \"Lifecycle\");\n }\n isActive = false;\n _tasks = /* @__PURE__ */ new Set();\n _hooks = {};\n async flush() {\n while (this._tasks.size) {\n await Promise.all(Array.from(this._tasks));\n }\n }\n filterHooks(hooks, thisArg) {\n thisArg = getTraceable(this.ctx, thisArg);\n return hooks.slice().filter((hook) => {\n const filter = thisArg?.[Context.filter];\n return hook.global || !filter || filter.call(thisArg, hook.ctx);\n });\n }\n *dispatch(type, args) {\n const thisArg = typeof args[0] === \"object\" || typeof args[0] === \"function\" ? args.shift() : null;\n const name = args.shift();\n if (name !== \"internal/event\") {\n this.emit(\"internal/event\", type, name, args, thisArg);\n }\n for (const hook of this.filterHooks(this._hooks[name] || [], thisArg)) {\n yield hook.callback.apply(thisArg, args);\n }\n }\n async parallel(...args) {\n await Promise.all(this.dispatch(\"emit\", args));\n }\n emit(...args) {\n Array.from(this.dispatch(\"emit\", args));\n }\n async serial(...args) {\n for await (const result of this.dispatch(\"serial\", args)) {\n if (isBailed(result)) return result;\n }\n }\n bail(...args) {\n for (const result of this.dispatch(\"bail\", args)) {\n if (isBailed(result)) return result;\n }\n }\n register(label, hooks, callback, options) {\n const method = options.prepend ? \"unshift\" : \"push\";\n hooks[method]({ ctx: this.ctx, callback, ...options });\n return this.ctx.state.collect(label, () => this.unregister(hooks, callback));\n }\n unregister(hooks, callback) {\n const index = hooks.findIndex((hook) => hook.callback === callback);\n if (index >= 0) {\n hooks.splice(index, 1);\n return true;\n }\n }\n on(name, listener, options) {\n if (typeof options !== \"object\") {\n options = { prepend: options };\n }\n this.ctx.scope.assertActive();\n listener = this.ctx.reflect.bind(listener);\n const result = this.bail(this.ctx, \"internal/listener\", name, listener, options);\n if (result) return result;\n const hooks = this._hooks[name] ||= [];\n const label = typeof name === \"string\" ? `event <${name}>` : \"event (Symbol)\";\n return this.register(label, hooks, listener, options);\n }\n once(name, listener, options) {\n const dispose = this.on(name, function(...args) {\n dispose();\n return listener.apply(this, args);\n }, options);\n return dispose;\n }\n async start() {\n this.isActive = true;\n const hooks = this._hooks.ready || [];\n while (hooks.length) {\n const { ctx, callback } = hooks.shift();\n ctx.scope.ensure(async () => callback());\n }\n await this.flush();\n }\n async stop() {\n this.isActive = false;\n this.ctx.scope.reset();\n }\n};\nvar events_default = Lifecycle;\n\n// src/registry.ts\nimport { defineProperty as defineProperty5 } from \"cosmokit\";\n\n// src/scope.ts\nimport { deepEqual, defineProperty as defineProperty4, isNullable as isNullable2, remove as remove2 } from \"cosmokit\";\nvar ScopeStatus = /* @__PURE__ */ ((ScopeStatus2) => {\n ScopeStatus2[ScopeStatus2[\"PENDING\"] = 0] = \"PENDING\";\n ScopeStatus2[ScopeStatus2[\"LOADING\"] = 1] = \"LOADING\";\n ScopeStatus2[ScopeStatus2[\"ACTIVE\"] = 2] = \"ACTIVE\";\n ScopeStatus2[ScopeStatus2[\"FAILED\"] = 3] = \"FAILED\";\n ScopeStatus2[ScopeStatus2[\"DISPOSED\"] = 4] = \"DISPOSED\";\n return ScopeStatus2;\n})(ScopeStatus || {});\nvar CordisError = class _CordisError extends Error {\n constructor(code, message) {\n super(message ?? _CordisError.Code[code]);\n this.code = code;\n }\n static {\n __name(this, \"CordisError\");\n }\n};\n((CordisError2) => {\n CordisError2.Code = {\n INACTIVE_EFFECT: \"cannot create effect on inactive context\"\n };\n})(CordisError || (CordisError = {}));\nvar EffectScope = class {\n constructor(parent, config) {\n this.parent = parent;\n this.config = config;\n this.uid = parent.registry ? parent.registry.counter : 0;\n this.ctx = this.context = parent.extend({ scope: this });\n this.proxy = new Proxy({}, {\n get: /* @__PURE__ */ __name((target, key) => Reflect.get(this.config, key), \"get\")\n });\n }\n static {\n __name(this, \"EffectScope\");\n }\n uid;\n ctx;\n disposables = [];\n error;\n status = 0 /* PENDING */;\n isActive = false;\n // Same as `this.ctx`, but with a more specific type.\n context;\n proxy;\n acceptors = [];\n tasks = /* @__PURE__ */ new Set();\n hasError = false;\n get _config() {\n return this.runtime.isReactive ? this.proxy : this.config;\n }\n assertActive() {\n if (this.uid !== null || this.isActive) return;\n throw new CordisError(\"INACTIVE_EFFECT\");\n }\n effect(callback, config) {\n this.assertActive();\n const result = isConstructor(callback) ? new callback(this.ctx, config) : callback(this.ctx, config);\n let disposed = false;\n const original = typeof result === \"function\" ? result : result.dispose.bind(result);\n const wrapped = /* @__PURE__ */ __name((...args) => {\n if (disposed) return;\n disposed = true;\n remove2(this.disposables, wrapped);\n return original(...args);\n }, \"wrapped\");\n this.disposables.push(wrapped);\n if (typeof result === \"function\") return wrapped;\n result.dispose = wrapped;\n return result;\n }\n collect(label, callback) {\n const dispose = defineProperty4(() => {\n remove2(this.disposables, dispose);\n return callback();\n }, \"name\", label);\n this.disposables.push(dispose);\n return dispose;\n }\n restart() {\n this.reset();\n this.error = null;\n this.hasError = false;\n this.status = 0 /* PENDING */;\n this.start();\n }\n _getStatus() {\n if (this.uid === null) return 4 /* DISPOSED */;\n if (this.hasError) return 3 /* FAILED */;\n if (this.tasks.size) return 1 /* LOADING */;\n if (this.ready) return 2 /* ACTIVE */;\n return 0 /* PENDING */;\n }\n updateStatus(callback) {\n const oldValue = this.status;\n callback?.();\n this.status = this._getStatus();\n if (oldValue !== this.status) {\n this.context.emit(\"internal/status\", this, oldValue);\n }\n }\n ensure(callback) {\n const task = callback().catch((reason) => {\n this.context.emit(this.ctx, \"internal/error\", reason);\n this.cancel(reason);\n }).finally(() => {\n this.updateStatus(() => this.tasks.delete(task));\n this.context.events._tasks.delete(task);\n });\n this.updateStatus(() => this.tasks.add(task));\n this.context.events._tasks.add(task);\n }\n cancel(reason) {\n this.error = reason;\n this.updateStatus(() => this.hasError = true);\n this.reset();\n }\n get ready() {\n return Object.entries(this.runtime.inject).every(([name, inject]) => {\n return !inject.required || !isNullable2(this.ctx.get(name));\n });\n }\n reset() {\n this.isActive = false;\n this.disposables = this.disposables.splice(0).filter((dispose) => {\n if (this.uid !== null && dispose[Context.static] === this) return true;\n (async () => dispose())().catch((reason) => {\n this.context.emit(this.ctx, \"internal/error\", reason);\n });\n });\n }\n init(error) {\n if (!this.config) {\n this.cancel(error);\n } else {\n this.start();\n }\n }\n start() {\n if (!this.ready || this.isActive || this.uid === null) return true;\n this.isActive = true;\n this.updateStatus(() => this.hasError = false);\n }\n accept(...args) {\n const keys = Array.isArray(args[0]) ? args.shift() : null;\n const acceptor = { keys, callback: args[0], ...args[1] };\n return this.effect(() => {\n this.acceptors.push(acceptor);\n if (acceptor.immediate) acceptor.callback?.(this.config);\n return () => remove2(this.acceptors, acceptor);\n });\n }\n decline(keys) {\n return this.accept(keys, () => true);\n }\n checkUpdate(resolved, forced) {\n if (forced || !this.config) return [true, true];\n if (forced === false) return [false, false];\n const modified = /* @__PURE__ */ Object.create(null);\n const checkPropertyUpdate = /* @__PURE__ */ __name((key) => {\n const result = modified[key] ??= !deepEqual(this.config[key], resolved[key]);\n hasUpdate ||= result;\n return result;\n }, \"checkPropertyUpdate\");\n const ignored = /* @__PURE__ */ new Set();\n let hasUpdate = false, shouldRestart = false;\n let fallback = this.runtime.isReactive || null;\n for (const { keys, callback, passive } of this.acceptors) {\n if (!keys) {\n fallback ||= !passive;\n } else if (passive) {\n keys?.forEach((key) => ignored.add(key));\n } else {\n let hasUpdate2 = false;\n for (const key of keys) {\n hasUpdate2 ||= checkPropertyUpdate(key);\n }\n if (!hasUpdate2) continue;\n }\n const result = callback?.(resolved);\n if (result) shouldRestart = true;\n }\n for (const key in { ...this.config, ...resolved }) {\n if (fallback === false) continue;\n if (!(key in modified) && !ignored.has(key)) {\n const hasUpdate2 = checkPropertyUpdate(key);\n if (fallback === null) shouldRestart ||= hasUpdate2;\n }\n }\n return [hasUpdate, shouldRestart];\n }\n};\nvar ForkScope = class extends EffectScope {\n constructor(parent, runtime, config, error) {\n super(parent, config);\n this.runtime = runtime;\n this.dispose = defineProperty4(parent.scope.collect(`fork <${parent.runtime.name}>`, () => {\n this.uid = null;\n this.reset();\n this.context.emit(\"internal/fork\", this);\n const result = remove2(runtime.disposables, this.dispose);\n if (remove2(runtime.children, this) && !runtime.children.length) {\n parent.registry.delete(runtime.plugin);\n }\n return result;\n }), Context.static, runtime);\n runtime.children.push(this);\n runtime.disposables.push(this.dispose);\n this.context.emit(\"internal/fork\", this);\n this.init(error);\n }\n static {\n __name(this, \"ForkScope\");\n }\n dispose;\n start() {\n if (super.start()) return true;\n for (const fork of this.runtime.forkables) {\n this.ensure(async () => fork(this.context, this._config));\n }\n }\n update(config, forced) {\n const oldConfig = this.config;\n const state = this.runtime.isForkable ? this : this.runtime;\n if (state.config !== oldConfig) return;\n let resolved;\n try {\n resolved = resolveConfig(this.runtime.plugin, config);\n } catch (error) {\n this.context.emit(\"internal/error\", error);\n return this.cancel(error);\n }\n const [hasUpdate, shouldRestart] = state.checkUpdate(resolved, forced);\n this.context.emit(\"internal/before-update\", this, config);\n this.config = resolved;\n state.config = resolved;\n if (hasUpdate) {\n this.context.emit(\"internal/update\", this, oldConfig);\n }\n if (shouldRestart) state.restart();\n }\n};\nvar MainScope = class extends EffectScope {\n constructor(ctx, plugin, config, error) {\n super(ctx, config);\n this.plugin = plugin;\n if (!plugin) {\n this.name = \"root\";\n this.isActive = true;\n } else {\n this.setup();\n this.init(error);\n }\n }\n static {\n __name(this, \"MainScope\");\n }\n value;\n runtime = this;\n schema;\n name;\n inject = /* @__PURE__ */ Object.create(null);\n forkables = [];\n children = [];\n isReusable = false;\n isReactive = false;\n get isForkable() {\n return this.forkables.length > 0;\n }\n fork(parent, config, error) {\n return new ForkScope(parent, this, config, error);\n }\n dispose() {\n this.uid = null;\n this.reset();\n this.context.emit(\"internal/runtime\", this);\n return true;\n }\n setup() {\n const { name } = this.plugin;\n if (name && name !== \"apply\") this.name = name;\n this.schema = this.plugin[\"Config\"] || this.plugin[\"schema\"];\n this.inject = Inject.resolve(this.plugin[\"using\"] || this.plugin[\"inject\"]);\n this.isReusable = this.plugin[\"reusable\"];\n this.isReactive = this.plugin[\"reactive\"];\n this.context.emit(\"internal/runtime\", this);\n if (this.isReusable) {\n this.forkables.push(this.apply);\n }\n }\n apply = /* @__PURE__ */ __name((context, config) => {\n if (typeof this.plugin !== \"function\") {\n return this.plugin.apply(context, config);\n } else if (isConstructor(this.plugin)) {\n const instance = new this.plugin(context, config);\n const name = instance[Context.expose];\n if (name) {\n context.set(name, instance);\n }\n if (instance[\"fork\"]) {\n this.forkables.push(instance[\"fork\"].bind(instance));\n }\n return instance;\n } else {\n return this.plugin(context, config);\n }\n }, \"apply\");\n reset() {\n super.reset();\n for (const fork of this.children) {\n fork.reset();\n }\n }\n start() {\n if (super.start()) return true;\n if (!this.isReusable && this.plugin) {\n this.ensure(async () => this.value = this.apply(this.ctx, this._config));\n }\n for (const fork of this.children) {\n fork.start();\n }\n }\n update(config, forced) {\n if (this.isForkable) {\n const warning = new Error(`attempting to update forkable plugin \"${this.plugin.name}\", which may lead to unexpected behavior`);\n this.context.emit(this.ctx, \"internal/warning\", warning);\n }\n const oldConfig = this.config;\n let resolved;\n try {\n resolved = resolveConfig(this.runtime.plugin || this.context.constructor, config);\n } catch (error) {\n this.context.emit(\"internal/error\", error);\n return this.cancel(error);\n }\n const [hasUpdate, shouldRestart] = this.checkUpdate(resolved, forced);\n const state = this.children.find((fork) => fork.config === oldConfig);\n this.config = resolved;\n if (state) {\n this.context.emit(\"internal/before-update\", state, config);\n state.config = resolved;\n if (hasUpdate) {\n this.context.emit(\"internal/update\", state, oldConfig);\n }\n }\n if (shouldRestart) this.restart();\n }\n};\n\n// src/registry.ts\nfunction isApplicable(object) {\n return object && typeof object === \"object\" && typeof object.apply === \"function\";\n}\n__name(isApplicable, \"isApplicable\");\nfunction Inject(inject) {\n return function(value, ctx) {\n if (ctx.kind === \"class\") {\n value.inject = inject;\n } else if (ctx.kind === \"method\") {\n ctx.addInitializer(function() {\n const property = this[symbols.tracker]?.property;\n if (!property) throw new Error(\"missing context tracker\");\n this[property].inject(inject, (ctx2) => {\n value.call(withProps(this, { [property]: ctx2 }));\n });\n });\n } else {\n throw new Error(\"@Inject can only be used on class or class methods\");\n }\n };\n}\n__name(Inject, \"Inject\");\n((Inject2) => {\n function resolve(inject) {\n if (!inject) return {};\n if (Array.isArray(inject)) {\n return Object.fromEntries(inject.map((name) => [name, { required: true }]));\n }\n const { required, optional, ...rest } = inject;\n if (Array.isArray(required)) {\n Object.assign(rest, Object.fromEntries(required.map((name) => [name, { required: true }])));\n }\n if (Array.isArray(optional)) {\n Object.assign(rest, Object.fromEntries(optional.map((name) => [name, { required: false }])));\n }\n return rest;\n }\n Inject2.resolve = resolve;\n __name(resolve, \"resolve\");\n})(Inject || (Inject = {}));\nvar Registry = class {\n constructor(ctx, config) {\n this.ctx = ctx;\n defineProperty5(this, symbols.tracker, {\n associate: \"registry\",\n property: \"ctx\"\n });\n this.context = ctx;\n const runtime = new MainScope(ctx, null, config);\n ctx.scope = runtime;\n runtime.ctx = ctx;\n this.set(null, runtime);\n }\n static {\n __name(this, \"Registry\");\n }\n _counter = 0;\n _internal = /* @__PURE__ */ new Map();\n context;\n get counter() {\n return ++this._counter;\n }\n get size() {\n return this._internal.size;\n }\n resolve(plugin, assert = false) {\n if (plugin === null) return plugin;\n if (typeof plugin === \"function\") return plugin;\n if (isApplicable(plugin)) return plugin.apply;\n if (assert) throw new Error('invalid plugin, expect function or object with an \"apply\" method, received ' + typeof plugin);\n }\n get(plugin) {\n const key = this.resolve(plugin);\n return key && this._internal.get(key);\n }\n has(plugin) {\n const key = this.resolve(plugin);\n return !!key && this._internal.has(key);\n }\n set(plugin, state) {\n const key = this.resolve(plugin);\n this._internal.set(key, state);\n }\n delete(plugin) {\n const key = this.resolve(plugin);\n const runtime = key && this._internal.get(key);\n if (!runtime) return;\n this._internal.delete(key);\n runtime.dispose();\n return runtime;\n }\n keys() {\n return this._internal.keys();\n }\n values() {\n return this._internal.values();\n }\n entries() {\n return this._internal.entries();\n }\n forEach(callback) {\n return this._internal.forEach(callback);\n }\n using(inject, callback) {\n return this.inject(inject, callback);\n }\n inject(inject, callback) {\n return this.plugin({ inject, apply: callback, name: callback.name });\n }\n plugin(plugin, config, error) {\n this.resolve(plugin, true);\n this.ctx.scope.assertActive();\n if (!error) {\n try {\n config = resolveConfig(plugin, config);\n } catch (reason) {\n this.context.emit(this.ctx, \"internal/error\", reason);\n error = reason;\n config = null;\n }\n }\n let runtime = this.get(plugin);\n if (runtime) {\n if (!runtime.isForkable) {\n this.context.emit(this.ctx, \"internal/warning\", new Error(`duplicate plugin detected: ${plugin.name}`));\n }\n return runtime.fork(this.ctx, config, error);\n }\n runtime = new MainScope(this.ctx, plugin, config, error);\n this.set(plugin, runtime);\n return runtime.fork(this.ctx, config, error);\n }\n};\nvar registry_default = Registry;\n\n// src/context.ts\nvar Context = class _Context {\n static {\n __name(this, \"Context\");\n }\n static store = symbols.store;\n static events = symbols.events;\n static static = symbols.static;\n static filter = symbols.filter;\n static expose = symbols.expose;\n static isolate = symbols.isolate;\n static internal = symbols.internal;\n static intercept = symbols.intercept;\n static origin = \"ctx\";\n static current = \"ctx\";\n static is(value) {\n return !!value?.[_Context.is];\n }\n static {\n _Context.is[Symbol.toPrimitive] = () => Symbol.for(\"cordis.is\");\n _Context.prototype[_Context.is] = true;\n }\n /** @deprecated use `Service.traceable` instead */\n static associate(object, name) {\n return object;\n }\n constructor(config) {\n config = resolveConfig(this.constructor, config);\n this[symbols.store] = /* @__PURE__ */ Object.create(null);\n this[symbols.isolate] = /* @__PURE__ */ Object.create(null);\n this[symbols.internal] = /* @__PURE__ */ Object.create(null);\n this[symbols.intercept] = /* @__PURE__ */ Object.create(null);\n const self = new Proxy(this, reflect_default.handler);\n self.root = self;\n self.reflect = new reflect_default(self);\n self.registry = new registry_default(self, config);\n self.lifecycle = new events_default(self);\n const attach = /* @__PURE__ */ __name((internal) => {\n if (!internal) return;\n attach(Object.getPrototypeOf(internal));\n for (const key of Object.getOwnPropertyNames(internal)) {\n const constructor = internal[key][\"prototype\"]?.constructor;\n if (!constructor) continue;\n self[internal[key][\"key\"]] = new constructor(self, config);\n defineProperty6(self[internal[key][\"key\"]], \"ctx\", self);\n }\n }, \"attach\");\n attach(this[symbols.internal]);\n return self;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return `Context <${this.name}>`;\n }\n get name() {\n let runtime = this.runtime;\n while (runtime && !runtime.name) {\n runtime = runtime.parent.runtime;\n }\n return runtime?.name;\n }\n get events() {\n return this.lifecycle;\n }\n /** @deprecated */\n get state() {\n return this.scope;\n }\n extend(meta = {}) {\n const source = Reflect.getOwnPropertyDescriptor(this, symbols.shadow)?.value;\n const self = Object.assign(Object.create(getTraceable(this, this)), meta);\n if (!source) return self;\n return Object.assign(Object.create(self), { [symbols.shadow]: source });\n }\n isolate(name, label) {\n const shadow = Object.create(this[symbols.isolate]);\n shadow[name] = label ?? Symbol(name);\n return this.extend({ [symbols.isolate]: shadow });\n }\n intercept(name, config) {\n const intercept = Object.create(this[symbols.intercept]);\n intercept[name] = config;\n return this.extend({ [symbols.intercept]: intercept });\n }\n};\nContext.prototype[Context.internal] = /* @__PURE__ */ Object.create(null);\n\n// src/service.ts\nimport { defineProperty as defineProperty7 } from \"cosmokit\";\nvar Service = class _Service {\n static {\n __name(this, \"Service\");\n }\n static setup = symbols.setup;\n static invoke = symbols.invoke;\n static extend = symbols.extend;\n static tracker = symbols.tracker;\n static provide = symbols.provide;\n static immediate = symbols.immediate;\n start() {\n }\n stop() {\n }\n ctx;\n name;\n config;\n constructor(...args) {\n let _ctx, name, immediate, config;\n if (Context.is(args[0])) {\n _ctx = args[0];\n if (typeof args[1] === \"string\") {\n name = args[1];\n immediate = args[2];\n } else {\n config = args[1];\n }\n } else {\n config = args[0];\n }\n name ??= this.constructor[symbols.provide];\n immediate ??= this.constructor[symbols.immediate];\n let self = this;\n const tracker = {\n associate: name,\n property: \"ctx\"\n };\n if (self[symbols.invoke]) {\n self = createCallable(name, joinPrototype(Object.getPrototypeOf(this), Function.prototype), tracker);\n }\n if (_ctx) {\n self.ctx = _ctx;\n } else {\n self[symbols.setup]();\n }\n self.name = name;\n self.config = config;\n defineProperty7(self, symbols.tracker, tracker);\n self.ctx.provide(name);\n self.ctx.runtime.name = name;\n if (immediate) {\n if (_ctx) self[symbols.expose] = name;\n else self.ctx.set(name, self);\n }\n self.ctx.on(\"ready\", async () => {\n await Promise.resolve();\n await self.start();\n if (!immediate) self.ctx.set(name, self);\n });\n self.ctx.on(\"dispose\", () => self.stop());\n return self;\n }\n [symbols.filter](ctx) {\n return ctx[symbols.isolate][this.name] === this.ctx[symbols.isolate][this.name];\n }\n [symbols.setup]() {\n this.ctx = new Context();\n }\n [symbols.extend](props) {\n let self;\n if (this[_Service.invoke]) {\n self = createCallable(this.name, this, this[symbols.tracker]);\n } else {\n self = Object.create(this);\n }\n return Object.assign(self, props);\n }\n static [Symbol.hasInstance](instance) {\n let constructor = instance.constructor;\n while (constructor) {\n constructor = constructor.prototype?.constructor;\n if (constructor === this) return true;\n constructor = Object.getPrototypeOf(constructor);\n }\n return false;\n }\n};\nexport {\n Context,\n CordisError,\n EffectScope,\n ForkScope,\n Inject,\n events_default as Lifecycle,\n MainScope,\n reflect_default as ReflectService,\n registry_default as Registry,\n ScopeStatus,\n Service,\n createCallable,\n getTraceable,\n isBailed,\n isConstructor,\n isObject,\n isUnproxyable,\n joinPrototype,\n resolveConfig,\n symbols,\n withProps\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\n\n// src/index.ts\nimport { Binary, clone, deepEqual, filterKeys, isNullable, isPlainObject, pick, valueMap } from \"cosmokit\";\nvar require_index = __commonJS({\n \"src/index.ts\"(exports, module) {\n var kSchema = Symbol.for(\"schemastery\");\n var kValidationError = Symbol.for(\"ValidationError\");\n globalThis.__schemastery_index__ ??= 0;\n var ValidationError = class extends TypeError {\n constructor(message, options) {\n let prefix = \"$\";\n for (const segment of options.path || []) {\n if (typeof segment === \"string\") {\n prefix += \".\" + segment;\n } else if (typeof segment === \"number\") {\n prefix += \"[\" + segment + \"]\";\n } else if (typeof segment === \"symbol\") {\n prefix += `[Symbol(${segment.toString()})]`;\n }\n }\n if (prefix.startsWith(\".\")) prefix = prefix.slice(1);\n super((prefix === \"$\" ? \"\" : `${prefix} `) + message);\n this.options = options;\n }\n static {\n __name(this, \"ValidationError\");\n }\n name = \"ValidationError\";\n static is(error) {\n return !!error?.[kValidationError];\n }\n };\n Object.defineProperty(ValidationError.prototype, kValidationError, {\n value: true\n });\n var Schema = /* @__PURE__ */ __name(function(options) {\n const schema = /* @__PURE__ */ __name(function(data, options2 = {}) {\n return Schema.resolve(data, schema, options2)[0];\n }, \"schema\");\n if (options.refs) {\n const refs2 = valueMap(options.refs, (options2) => new Schema(options2));\n const getRef = /* @__PURE__ */ __name((uid) => refs2[uid], \"getRef\");\n for (const key in refs2) {\n const options2 = refs2[key];\n options2.sKey = getRef(options2.sKey);\n options2.inner = getRef(options2.inner);\n options2.list = options2.list && options2.list.map(getRef);\n options2.dict = options2.dict && valueMap(options2.dict, getRef);\n }\n return refs2[options.uid];\n }\n Object.assign(schema, options);\n if (typeof schema.callback === \"string\") {\n try {\n schema.callback = new Function(\"return \" + schema.callback)();\n } catch {\n }\n }\n Object.defineProperty(schema, \"uid\", { value: globalThis.__schemastery_index__++ });\n Object.setPrototypeOf(schema, Schema.prototype);\n schema.meta ||= {};\n schema.toString = schema.toString.bind(schema);\n return schema;\n }, \"Schema\");\n Schema.prototype = Object.create(Function.prototype);\n Schema.prototype[kSchema] = true;\n Schema.ValidationError = ValidationError;\n var refs;\n Schema.prototype.toJSON = /* @__PURE__ */ __name(function toJSON() {\n if (refs) {\n refs[this.uid] ??= JSON.parse(JSON.stringify({ ...this }));\n return this.uid;\n }\n refs = { [this.uid]: { ...this } };\n refs[this.uid] = JSON.parse(JSON.stringify({ ...this }));\n const result = { uid: this.uid, refs };\n refs = void 0;\n return result;\n }, \"toJSON\");\n Schema.prototype.set = /* @__PURE__ */ __name(function set(key, value) {\n this.dict[key] = value;\n return this;\n }, \"set\");\n Schema.prototype.push = /* @__PURE__ */ __name(function push(value) {\n this.list.push(value);\n return this;\n }, \"push\");\n function mergeDesc(original, messages) {\n const result = typeof original === \"string\" ? { \"\": original } : { ...original };\n for (const locale in messages) {\n const value = messages[locale];\n if (value?.$description || value?.$desc) {\n result[locale] = value.$description || value.$desc;\n } else if (typeof value === \"string\") {\n result[locale] = value;\n }\n }\n return result;\n }\n __name(mergeDesc, \"mergeDesc\");\n function getInner(value) {\n return value?.$value ?? value?.$inner;\n }\n __name(getInner, \"getInner\");\n function extractKeys(data) {\n return filterKeys(data ?? {}, (key) => !key.startsWith(\"$\"));\n }\n __name(extractKeys, \"extractKeys\");\n Schema.prototype.i18n = /* @__PURE__ */ __name(function i18n(messages) {\n const schema = Schema(this);\n const desc = mergeDesc(schema.meta.description, messages);\n if (Object.keys(desc).length) schema.meta.description = desc;\n if (schema.dict) {\n schema.dict = valueMap(schema.dict, (inner, key) => {\n return inner.i18n(valueMap(messages, (data) => getInner(data)?.[key] ?? data?.[key]));\n });\n }\n if (schema.list) {\n schema.list = schema.list.map((inner, index) => {\n return inner.i18n(valueMap(messages, (data = {}) => {\n if (Array.isArray(getInner(data))) return getInner(data)[index];\n if (Array.isArray(data)) return data[index];\n return extractKeys(data);\n }));\n });\n }\n if (schema.inner) {\n schema.inner = schema.inner.i18n(valueMap(messages, (data) => {\n if (getInner(data)) return getInner(data);\n return extractKeys(data);\n }));\n }\n if (schema.sKey) {\n schema.sKey = schema.sKey.i18n(valueMap(messages, (data) => data?.$key));\n }\n return schema;\n }, \"i18n\");\n Schema.prototype.extra = /* @__PURE__ */ __name(function extra(key, value) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }, \"extra\");\n for (const key of [\"required\", \"disabled\", \"collapse\", \"hidden\", \"loose\"]) {\n Object.assign(Schema.prototype, {\n [key](value = true) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }\n });\n }\n Schema.prototype.deprecated = /* @__PURE__ */ __name(function deprecated() {\n const schema = Schema(this);\n schema.meta.badges ||= [];\n schema.meta.badges.push({ text: \"deprecated\", type: \"danger\" });\n return schema;\n }, \"deprecated\");\n Schema.prototype.experimental = /* @__PURE__ */ __name(function experimental() {\n const schema = Schema(this);\n schema.meta.badges ||= [];\n schema.meta.badges.push({ text: \"experimental\", type: \"warning\" });\n return schema;\n }, \"experimental\");\n Schema.prototype.pattern = /* @__PURE__ */ __name(function pattern(regexp) {\n const schema = Schema(this);\n const pattern2 = pick(regexp, [\"source\", \"flags\"]);\n schema.meta = { ...schema.meta, pattern: pattern2 };\n return schema;\n }, \"pattern\");\n Schema.prototype.simplify = /* @__PURE__ */ __name(function simplify(value) {\n if (deepEqual(value, this.meta.default, this.type === \"dict\")) return null;\n if (isNullable(value)) return value;\n if (this.type === \"object\" || this.type === \"dict\") {\n const result = {};\n for (const key in value) {\n const schema = this.type === \"object\" ? this.dict[key] : this.inner;\n const item = schema?.simplify(value[key]);\n if (this.type === \"dict\" || !isNullable(item)) result[key] = item;\n }\n if (deepEqual(result, this.meta.default, this.type === \"dict\")) return null;\n return result;\n } else if (this.type === \"array\" || this.type === \"tuple\") {\n const result = [];\n value.forEach((value2, index) => {\n const schema = this.type === \"array\" ? this.inner : this.list[index];\n const item = schema ? schema.simplify(value2) : value2;\n result.push(item);\n });\n return result;\n } else if (this.type === \"intersect\") {\n const result = {};\n for (const item of this.list) {\n Object.assign(result, item.simplify(value));\n }\n return result;\n } else if (this.type === \"union\") {\n for (const schema of this.list) {\n try {\n Schema.resolve(value, schema, {});\n return schema.simplify(value);\n } catch {\n }\n }\n }\n return value;\n }, \"simplify\");\n Schema.prototype.toString = /* @__PURE__ */ __name(function toString(inline) {\n return formatters[this.type]?.(this, inline) ?? `Schema<${this.type}>`;\n }, \"toString\");\n Schema.prototype.role = /* @__PURE__ */ __name(function role(role, extra) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, role, extra };\n return schema;\n }, \"role\");\n for (const key of [\"default\", \"link\", \"comment\", \"description\", \"max\", \"min\", \"step\"]) {\n Object.assign(Schema.prototype, {\n [key](value) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }\n });\n }\n var resolvers = {};\n Schema.extend = /* @__PURE__ */ __name(function extend(type, resolve) {\n resolvers[type] = resolve;\n }, \"extend\");\n Schema.resolve = /* @__PURE__ */ __name(function resolve(data, schema, options = {}, strict = false) {\n if (!schema) return [data];\n if (options.ignore?.(data, schema)) return [data];\n if (isNullable(data) && schema.type !== \"lazy\") {\n if (schema.meta.required) throw new ValidationError(`missing required value`, options);\n let current = schema;\n let fallback = schema.meta.default;\n while (current?.type === \"intersect\" && isNullable(fallback)) {\n current = current.list[0];\n fallback = current?.meta.default;\n }\n if (isNullable(fallback)) return [data];\n data = clone(fallback);\n }\n const callback = resolvers[schema.type];\n if (!callback) throw new ValidationError(`unsupported type \"${schema.type}\"`, options);\n try {\n return callback(data, schema, options, strict);\n } catch (error) {\n if (!schema.meta.loose) throw error;\n return [schema.meta.default];\n }\n }, \"resolve\");\n Schema.from = /* @__PURE__ */ __name(function from(source) {\n if (isNullable(source)) {\n return Schema.any();\n } else if ([\"string\", \"number\", \"boolean\"].includes(typeof source)) {\n return Schema.const(source).required();\n } else if (source[kSchema]) {\n return source;\n } else if (typeof source === \"function\") {\n switch (source) {\n case String:\n return Schema.string().required();\n case Number:\n return Schema.number().required();\n case Boolean:\n return Schema.boolean().required();\n case Function:\n return Schema.function().required();\n default:\n return Schema.is(source).required();\n }\n } else {\n throw new TypeError(`cannot infer schema from ${source}`);\n }\n }, \"from\");\n Schema.lazy = /* @__PURE__ */ __name(function lazy(builder) {\n const toJSON = /* @__PURE__ */ __name(() => {\n if (!schema.inner[kSchema]) {\n schema.inner = schema.builder();\n schema.inner.meta = { ...schema.meta, ...schema.inner.meta };\n }\n return schema.inner.toJSON();\n }, \"toJSON\");\n const schema = new Schema({ type: \"lazy\", builder, inner: { toJSON } });\n return schema;\n }, \"lazy\");\n Schema.natural = /* @__PURE__ */ __name(function natural() {\n return Schema.number().step(1).min(0);\n }, \"natural\");\n Schema.percent = /* @__PURE__ */ __name(function percent() {\n return Schema.number().step(0.01).min(0).max(1).role(\"slider\");\n }, \"percent\");\n Schema.date = /* @__PURE__ */ __name(function date() {\n return Schema.union([\n Schema.is(Date),\n Schema.transform(Schema.string().role(\"datetime\"), (value, options) => {\n const date2 = new Date(value);\n if (isNaN(+date2)) throw new ValidationError(`invalid date \"${value}\"`, options);\n return date2;\n }, true)\n ]);\n }, \"date\");\n Schema.regExp = /* @__PURE__ */ __name(function regExp(flag = \"\") {\n return Schema.union([\n Schema.is(RegExp),\n Schema.transform(Schema.string().role(\"regexp\", { flag }), (value, options) => {\n try {\n return new RegExp(value, flag);\n } catch (e) {\n throw new ValidationError(e.message, options);\n }\n }, true)\n ]);\n }, \"regExp\");\n Schema.arrayBuffer = /* @__PURE__ */ __name(function arrayBuffer(encoding) {\n return Schema.union([\n Schema.is(ArrayBuffer),\n Schema.is(SharedArrayBuffer),\n Schema.transform(Schema.any(), (value, options) => {\n if (Binary.isSource(value)) return Binary.fromSource(value);\n throw new ValidationError(`expected ArrayBufferSource but got ${value}`, options);\n }, true),\n ...encoding ? [Schema.transform(Schema.string(), (value, options) => {\n try {\n return encoding === \"base64\" ? Binary.fromBase64(value) : Binary.fromHex(value);\n } catch (e) {\n throw new ValidationError(e.message, options);\n }\n }, true)] : []\n ]);\n }, \"arrayBuffer\");\n Schema.extend(\"lazy\", (data, schema, options, strict) => {\n if (!schema.inner[kSchema]) {\n schema.inner = schema.builder();\n schema.inner.meta = { ...schema.meta, ...schema.inner.meta };\n }\n return Schema.resolve(data, schema.inner, options, strict);\n });\n Schema.extend(\"any\", (data) => {\n return [data];\n });\n Schema.extend(\"never\", (data, _, options) => {\n throw new ValidationError(`expected nullable but got ${data}`, options);\n });\n Schema.extend(\"const\", (data, { value }, options) => {\n if (deepEqual(data, value)) return [value];\n throw new ValidationError(`expected ${value} but got ${data}`, options);\n });\n function checkWithinRange(data, meta, description, options, skipMin = false) {\n const { max = Infinity, min = -Infinity } = meta;\n if (data > max) throw new ValidationError(`expected ${description} <= ${max} but got ${data}`, options);\n if (data < min && !skipMin) throw new ValidationError(`expected ${description} >= ${min} but got ${data}`, options);\n }\n __name(checkWithinRange, \"checkWithinRange\");\n Schema.extend(\"string\", (data, { meta }, options) => {\n if (typeof data !== \"string\") throw new ValidationError(`expected string but got ${data}`, options);\n if (meta.pattern) {\n const regexp = new RegExp(meta.pattern.source, meta.pattern.flags);\n if (!regexp.test(data)) throw new ValidationError(`expect string to match regexp ${regexp}`, options);\n }\n checkWithinRange(data.length, meta, \"string length\", options);\n return [data];\n });\n function decimalShift(data, digits) {\n const str = data.toString();\n if (str.includes(\"e\")) return data * Math.pow(10, digits);\n const index = str.indexOf(\".\");\n if (index === -1) return data * Math.pow(10, digits);\n const frac = str.slice(index + 1);\n const integer = str.slice(0, index);\n if (frac.length <= digits) return +(integer + frac.padEnd(digits, \"0\"));\n return +(integer + frac.slice(0, digits) + \".\" + frac.slice(digits));\n }\n __name(decimalShift, \"decimalShift\");\n function isMultipleOf(data, min, step) {\n step = Math.abs(step);\n if (!/^\\d+\\.\\d+$/.test(step.toString())) {\n return (data - min) % step === 0;\n }\n const index = step.toString().indexOf(\".\");\n const digits = step.toString().slice(index + 1).length;\n return Math.abs(decimalShift(data, digits) - decimalShift(min, digits)) % decimalShift(step, digits) === 0;\n }\n __name(isMultipleOf, \"isMultipleOf\");\n Schema.extend(\"number\", (data, { meta }, options) => {\n if (typeof data !== \"number\") throw new ValidationError(`expected number but got ${data}`, options);\n checkWithinRange(data, meta, \"number\", options);\n const { step } = meta;\n if (step && !isMultipleOf(data, meta.min ?? 0, step)) {\n throw new ValidationError(`expected number multiple of ${step} but got ${data}`, options);\n }\n return [data];\n });\n Schema.extend(\"boolean\", (data, _, options) => {\n if (typeof data === \"boolean\") return [data];\n throw new ValidationError(`expected boolean but got ${data}`, options);\n });\n Schema.extend(\"bitset\", (data, { bits, meta }, options) => {\n let value = 0, keys = [];\n if (typeof data === \"number\") {\n value = data;\n for (const key in bits) {\n if (data & bits[key]) {\n keys.push(key);\n }\n }\n } else if (Array.isArray(data)) {\n keys = data;\n for (const key of keys) {\n if (typeof key !== \"string\") throw new ValidationError(`expected string but got ${key}`, options);\n if (key in bits) value |= bits[key];\n }\n } else {\n throw new ValidationError(`expected number or array but got ${data}`, options);\n }\n if (value === meta.default) return [value];\n return [value, keys];\n });\n Schema.extend(\"function\", (data, _, options) => {\n if (typeof data === \"function\") return [data];\n throw new ValidationError(`expected function but got ${data}`, options);\n });\n Schema.extend(\"is\", (data, { constructor }, options) => {\n if (typeof constructor === \"function\") {\n if (data instanceof constructor) return [data];\n throw new ValidationError(`expected ${constructor.name} but got ${data}`, options);\n } else {\n if (isNullable(data)) {\n throw new ValidationError(`expected ${constructor} but got ${data}`, options);\n }\n let prototype = Object.getPrototypeOf(data);\n while (prototype) {\n if (prototype.constructor?.name === constructor) return [data];\n prototype = Object.getPrototypeOf(prototype);\n }\n throw new ValidationError(`expected ${constructor} but got ${data}`, options);\n }\n });\n function property(data, key, schema, options) {\n try {\n const [value, adapted] = Schema.resolve(data[key], schema, {\n ...options,\n path: [...options.path || [], key]\n });\n if (adapted !== void 0) data[key] = adapted;\n return value;\n } catch (e) {\n if (!options?.autofix) throw e;\n delete data[key];\n return schema.meta.default;\n }\n }\n __name(property, \"property\");\n Schema.extend(\"array\", (data, { inner, meta }, options) => {\n if (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n checkWithinRange(data.length, meta, \"array length\", options, !isNullable(inner.meta.default));\n return [data.map((_, index) => property(data, index, inner, options))];\n });\n Schema.extend(\"dict\", (data, { inner, sKey }, options, strict) => {\n if (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n const result = {};\n for (const key in data) {\n let rKey;\n try {\n rKey = Schema.resolve(key, sKey, options)[0];\n } catch (error) {\n if (strict) continue;\n throw error;\n }\n result[rKey] = property(data, key, inner, options);\n data[rKey] = data[key];\n if (key !== rKey) delete data[key];\n }\n return [result];\n });\n Schema.extend(\"tuple\", (data, { list }, options, strict) => {\n if (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n const result = list.map((inner, index) => property(data, index, inner, options));\n if (strict) return [result];\n result.push(...data.slice(list.length));\n return [result];\n });\n function merge(result, data) {\n for (const key in data) {\n if (key in result) continue;\n result[key] = data[key];\n }\n }\n __name(merge, \"merge\");\n Schema.extend(\"object\", (data, { dict }, options, strict) => {\n if (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n const result = {};\n for (const key in dict) {\n const value = property(data, key, dict[key], options);\n if (!isNullable(value) || key in data) {\n result[key] = value;\n }\n }\n if (!strict) merge(result, data);\n return [result];\n });\n Schema.extend(\"union\", (data, { list, toString }, options, strict) => {\n const messages = [];\n for (const inner of list) {\n try {\n return Schema.resolve(data, inner, options, strict);\n } catch (error) {\n messages.push(error);\n }\n }\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n });\n Schema.extend(\"intersect\", (data, { list, toString }, options, strict) => {\n if (!list.length) return [data];\n let result;\n for (const inner of list) {\n const value = Schema.resolve(data, inner, options, true)[0];\n if (isNullable(value)) continue;\n if (isNullable(result)) {\n result = value;\n } else if (typeof result !== typeof value) {\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n } else if (typeof value === \"object\") {\n merge(result ??= {}, value);\n } else if (result !== value) {\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n }\n }\n if (!strict && isPlainObject(data)) merge(result, data);\n return [result];\n });\n Schema.extend(\"transform\", (data, { inner, callback, preserve }, options) => {\n const [result, adapted = data] = Schema.resolve(data, inner, options, true);\n if (preserve) {\n return [callback(result)];\n } else {\n return [callback(result), callback(adapted)];\n }\n });\n var formatters = {};\n function defineMethod(name, keys, format) {\n formatters[name] = format;\n Object.assign(Schema, {\n [name](...args) {\n const schema = new Schema({ type: name });\n keys.forEach((key, index) => {\n switch (key) {\n case \"sKey\":\n schema.sKey = args[index] ?? Schema.string();\n break;\n case \"inner\":\n schema.inner = Schema.from(args[index]);\n break;\n case \"list\":\n schema.list = args[index].map(Schema.from);\n break;\n case \"dict\":\n schema.dict = valueMap(args[index], Schema.from);\n break;\n case \"bits\": {\n schema.bits = {};\n for (const key2 in args[index]) {\n if (typeof args[index][key2] !== \"number\") continue;\n schema.bits[key2] = args[index][key2];\n }\n break;\n }\n case \"callback\": {\n const callback = schema.callback = args[index];\n callback[\"toJSON\"] ||= () => callback.toString();\n break;\n }\n case \"constructor\": {\n const constructor = schema.constructor = args[index];\n if (typeof constructor === \"function\") {\n ;\n constructor[\"toJSON\"] ||= () => constructor[\"name\"];\n }\n break;\n }\n default:\n schema[key] = args[index];\n }\n });\n if (name === \"object\" || name === \"dict\") {\n schema.meta.default = {};\n } else if (name === \"array\" || name === \"tuple\") {\n schema.meta.default = [];\n } else if (name === \"bitset\") {\n schema.meta.default = 0;\n }\n return schema;\n }\n });\n }\n __name(defineMethod, \"defineMethod\");\n defineMethod(\"is\", [\"constructor\"], ({ constructor }) => {\n if (typeof constructor === \"function\") {\n return constructor.name;\n } else {\n return constructor;\n }\n });\n defineMethod(\"any\", [], () => \"any\");\n defineMethod(\"never\", [], () => \"never\");\n defineMethod(\"const\", [\"value\"], ({ value }) => typeof value === \"string\" ? JSON.stringify(value) : value);\n defineMethod(\"string\", [], () => \"string\");\n defineMethod(\"number\", [], () => \"number\");\n defineMethod(\"boolean\", [], () => \"boolean\");\n defineMethod(\"bitset\", [\"bits\"], () => \"bitset\");\n defineMethod(\"function\", [], () => \"function\");\n defineMethod(\"array\", [\"inner\"], ({ inner }) => `${inner.toString(true)}[]`);\n defineMethod(\"dict\", [\"inner\", \"sKey\"], ({ inner, sKey }) => `{ [key: ${sKey.toString()}]: ${inner.toString()} }`);\n defineMethod(\"tuple\", [\"list\"], ({ list }) => `[${list.map((inner) => inner.toString()).join(\", \")}]`);\n defineMethod(\"object\", [\"dict\"], ({ dict }) => {\n if (Object.keys(dict).length === 0) return \"{}\";\n return `{ ${Object.entries(dict).map(([key, inner]) => {\n return `${key}${inner.meta.required ? \"\" : \"?\"}: ${inner.toString()}`;\n }).join(\", \")} }`;\n });\n defineMethod(\"union\", [\"list\"], ({ list }, inline) => {\n const result = list.map(({ toString: format }) => format()).join(\" | \");\n return inline ? `(${result})` : result;\n });\n defineMethod(\"intersect\", [\"list\"], ({ list }) => {\n return `${list.map((inner) => inner.toString(true)).join(\" & \")}`;\n });\n defineMethod(\"transform\", [\"inner\", \"callback\", \"preserve\"], ({ inner }, isInner) => inner.toString(isInner));\n module.exports = Schema;\n }\n});\nexport default require_index();\n//# sourceMappingURL=index.mjs.map\n","/**\n * @inpageedit/logger\n *\n * Flexible, Extensible Console Logger with Colored Labels and Hierarchical Loggers\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n */\nvar $ = /* @__PURE__ */ ((n) => (n[n.debug = -1] = \"debug\", n[n.log = 0] = \"log\", n[n.info = 1] = \"info\", n[n.warn = 2] = \"warn\", n[n.error = 3] = \"error\", n[n.silent = 4] = \"silent\", n))($ || {});\nconst f = globalThis || window, d = Symbol.for(\"__IPE_LOGGER_COLOR_MAP__\");\nf[d] || (f[d] = /* @__PURE__ */ new Map());\nconst _ = f[d];\nfunction c(n) {\n let t = 2166136261;\n for (let e = 0; e < n.length; e++)\n t ^= n.charCodeAt(e), t = (t >>> 0) * 16777619;\n return t >>> 0;\n}\nconst g = [\n [350, 360],\n [0, 15],\n [15, 30],\n [200, 230],\n [230, 250],\n [250, 280],\n [280, 310],\n [310, 330],\n [140, 160],\n [160, 180]\n];\nfunction E(n, t) {\n const e = g.length, l = c(n) % e, [r, w] = g[l], x = w - r, C = c(n + \":\" + t), s = r + C % (x || 1), b = c(n + \":s\"), a = c(n + \":l\");\n let i, h;\n if (t === \"name\")\n i = 62 + b % 18, h = 30 + a % 12;\n else {\n const P = s >= 0 && s < 50 || s > 330 && s < 360, R = s >= 200 && s <= 300;\n i = 55 + b % 20, R ? h = 55 + a % 8 : P ? h = 48 + a % 6 : h = 50 + a % 8, i < 60 && (i += 5);\n }\n return `hsl(${s}, ${i}%, ${h}%)`;\n}\nfunction u(n, t) {\n if (t)\n return _.set(n, t), t;\n const e = _.get(n);\n if (e) return e;\n const o = n.startsWith(\"name:\") ? \"name\" : \"group\", l = E(n, o);\n return _.set(n, l), l;\n}\n/**\n * @inpageedit/logger\n * Flexible, Extensible Console Logger with Colored Labels and Hierarchical Loggers\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n *\n * @example\n * ```ts\n * const logger = new Logger({ name: 'MyApp', level: LoggerLevel.debug })\n * // normal usage\n * logger.info('Application started')\n * // create sub-logger group\n * const apiLogger = logger.group('API', { color: '#f59e0b' })\n * apiLogger.warn('Deprecated API endpoint used')\n * // define custom level\n * logger.defineLevel('success', { level: LoggerLevel.info, label: '✅', method: 'info' })\n * logger.success('User created successfully')\n * ```\n */\nclass m {\n /**\n * Note: constructor returns a callable Proxy so that you can do `logger('group')`.\n */\n constructor(t = {}) {\n this._custom = (e) => {\n if (!this._enabled(e.level)) return v;\n const [o, l] = this._prefix(e.label);\n return this._consoleMethod(e.method).bind(console, o, ...l);\n }, this._name = t.name, this._nameColor = t.color, this._groupPath = t._groupPath ? [...t._groupPath] : [], this._dynamicLevels = { ...t._dynamicLevels }, this._levelRef = t._levelRef ?? {\n value: t.level ?? 1\n /* info */\n }, this._name && u(`name:${this._name}`, this._nameColor), this._installBuiltinLevels();\n for (const e of Object.keys(this._dynamicLevels))\n this._installLevelGetter(e, this._dynamicLevels[e]);\n return y(this);\n }\n // ---------- public API ----------\n get level() {\n return this._levelRef.value;\n }\n set level(t) {\n this._levelRef.value = t;\n }\n /** Create a sub-logger with a group label */\n group(t, e) {\n return t && u(`group:${t}`, e?.color), new m({\n name: this._name,\n color: this._nameColor,\n _groupPath: [...this._groupPath, t],\n _dynamicLevels: this._dynamicLevels,\n _levelRef: this._levelRef\n });\n }\n /** Define a custom level, e.g. logger.defineLevel('success', { level: info, label: '✅', method: 'info' }) */\n defineLevel(t, e) {\n this._dynamicLevels[t] = { ...e }, this._installLevelGetter(t, e);\n }\n // Built-in level getters\n get debug() {\n return this._method(\"debug\");\n }\n get log() {\n return this._method(\"log\");\n }\n get info() {\n return this._method(\"info\");\n }\n get warn() {\n return this._method(\"warn\");\n }\n get error() {\n return this._method(\"error\");\n }\n // ---------- internals ----------\n _installBuiltinLevels() {\n }\n _installLevelGetter(t, e) {\n Object.defineProperty(this, t, {\n configurable: !0,\n enumerable: !1,\n get: () => this._custom(e)\n });\n }\n _method(t) {\n const e = O[t];\n if (!this._enabled(e.level)) return v;\n const [o, l] = this._prefix(e.label);\n return this._consoleMethod(t).bind(console, o, ...l);\n }\n _consoleMethod(t) {\n const e = console[t];\n return (e || console.log).bind(console);\n }\n _enabled(t) {\n return t >= this._levelRef.value && this._levelRef.value !== 4;\n }\n _prefix(t) {\n const e = [];\n let o = \"\";\n if (this._name) {\n const l = u(`name:${this._name}`, this._nameColor);\n o += `%c${this._name}%c`, e.push(\n `background:${l}; color:#fff; padding:1px 4px; border-radius:2px; font-weight:700;`,\n p\n );\n }\n if (t && (o += ` ${t}`), this._groupPath.length) {\n const l = this._groupPath.join(\"/\"), r = u(`group:${l}`);\n o += ` %c${l}%c`, e.push(`color:${r}; text-decoration: underline;`, p);\n }\n return [o, e];\n }\n}\nconst v = () => {\n}, p = \"color:inherit; background:transparent; text-decoration:none;\", O = {\n debug: { level: -1, label: \"\", method: \"debug\" },\n log: { level: 0, label: \"\", method: \"log\" },\n info: { level: 1, label: \"[I]\", method: \"info\" },\n warn: { level: 2, label: \"[W]\", method: \"warn\" },\n error: { level: 3, label: \"[E]\", method: \"error\" }\n};\nfunction y(n) {\n const t = function(e, o) {\n return n.group(e, o);\n };\n return new Proxy(t, {\n get(e, o, l) {\n return n[o];\n },\n set(e, o, l) {\n return n[o] = l, !0;\n },\n apply(e, o, l) {\n return n.group(l[0], l[1]);\n },\n has(e, o) {\n return o in n;\n }\n });\n}\nfunction S(n) {\n return new m(n);\n}\nexport {\n m as Logger,\n $ as LoggerLevel,\n S as createLogger\n};\n//# sourceMappingURL=index.js.map\n","var w = /* @__PURE__ */ ((n) => (n.BODY_USED = \"BODY_USED\", n.NO_BODY_READER = \"NO_BODY_READER\", n.TIMEOUT = \"TIMEOUT\", n.NETWORK_ERROR = \"NETWORK_ERROR\", n.BODY_NOT_ALLOWED = \"BODY_NOT_ALLOWED\", n.HOOK_CONTEXT_CHANGED = \"HOOK_CONTEXT_CHANGED\", n.ABORTED_BY_HOOK = \"ABORTED_BY_HOOK\", n.INVALID_HOOK_CALLBACK = \"INVALID_HOOK_CALLBACK\", n.UNEXPECTED_HOOK_RETURN = \"UNEXPECTED_HOOK_RETURN\", n))(w || {});\nclass R extends Error {\n constructor(r, t, e, o) {\n super(t, o), this.code = r, this.context = e;\n }\n name = \"FexiosError\";\n static is(r) {\n return r?.constructor === R;\n }\n}\nclass M extends R {\n constructor(r, t, e) {\n super(t.statusText, r, void 0, e), this.response = t;\n }\n name = \"FexiosResponseError\";\n static is(r) {\n return r?.constructor === M;\n }\n}\nconst V = (n) => R.is(n) && !M.is(n);\nfunction x(n, r = 2048) {\n if (!(n instanceof Uint8Array))\n throw new TypeError(\"Input must be a Uint8Array\");\n if (n.length === 0)\n return !0;\n const t = Math.min(\n Math.max(n.length, 256),\n r\n ), e = n.slice(0, t);\n if (H(e))\n return !1;\n const o = F(e);\n if (o.nullByteRatio > 0.05 || o.highByteRatio > 0.95)\n return !1;\n const s = [\"utf-8\", \"utf-16le\", \"utf-16be\", \"iso-8859-1\"];\n let i = -1, a = !1;\n for (const c of s)\n try {\n const u = new TextDecoder(c, { fatal: !0 }).decode(e), l = W(u);\n l > i && (i = l, a = l > 0.7);\n } catch {\n continue;\n }\n return a;\n}\nfunction H(n) {\n if (n.length < 4) return !1;\n const r = [\n [137, 80, 78, 71],\n // PNG\n [255, 216, 255],\n // JPEG\n [71, 73, 70],\n // GIF\n [37, 80, 68, 70],\n // PDF\n [80, 75, 3, 4],\n // ZIP/Office documents\n [80, 75, 5, 6],\n // ZIP empty archive\n [80, 75, 7, 8],\n // ZIP spanned archive\n [127, 69, 76, 70],\n // ELF executable\n [77, 90],\n // Windows executable\n [202, 254, 186, 190],\n // Java class file\n [0, 0, 1, 0],\n // ICO\n [82, 73, 70, 70]\n // RIFF (AVI, WAV, etc.)\n ];\n for (const t of r)\n if (n.length >= t.length) {\n let e = !0;\n for (let o = 0; o < t.length; o++)\n if (n[o] !== t[o]) {\n e = !1;\n break;\n }\n if (e) return !0;\n }\n return !1;\n}\nfunction F(n) {\n let r = 0, t = 0, e = 0;\n for (const o of n)\n o === 0 && r++, o > 127 && t++, (o < 32 && o !== 9 && o !== 10 && o !== 13 || o === 127) && e++;\n return {\n nullByteRatio: r / n.length,\n highByteRatio: t / n.length,\n controlCharRatio: e / n.length\n };\n}\nfunction W(n) {\n if (n.length === 0) return 1;\n let r = 1, t = 0;\n for (let o = 0; o < n.length; o++) {\n const s = n[o].charCodeAt(0);\n s >= 32 && s <= 126 || s === 9 || s === 10 || s === 13 || s === 32 ? t++ : s > 127 && s < 65534 ? !K(s) && !Y(s) && t++ : r -= 0.1;\n }\n const e = t / n.length;\n return r *= e, $(n) && (r *= 1.1), Math.max(0, Math.min(1, r));\n}\nfunction K(n) {\n return n >= 0 && n <= 31 || n >= 127 && n <= 159;\n}\nfunction Y(n) {\n return n >= 57344 && n <= 63743 || n >= 983040 && n <= 1048573 || n >= 1048576 && n <= 1114109;\n}\nfunction $(n) {\n return [\n /\\b\\w+\\b/,\n // Words\n /[.!?]+\\s/,\n // Sentence endings\n /\\s+/,\n // Whitespace\n /[a-zA-Z]{3,}/,\n // English words\n /[\\u4e00-\\u9fa5]+/,\n // Chinese characters\n /\\d+/\n // Numbers\n ].some((r) => r.test(n));\n}\nfunction O(n) {\n if (typeof n != \"object\" || n === null || Object.prototype.toString.call(n) !== \"[object Object]\")\n return !1;\n const r = Object.getPrototypeOf(n);\n return r === Object.prototype || r === null;\n}\nconst U = (n, ...r) => {\n const t = (o) => {\n if (Array.isArray(o)) return o.slice();\n if (O(o)) {\n const s = {};\n for (const i of Reflect.ownKeys(o)) s[i] = t(o[i]);\n return s;\n }\n return o;\n }, e = t(n);\n for (const o of r)\n if (o != null)\n for (const s of Reflect.ownKeys(o)) {\n const i = o[s];\n if (typeof i > \"u\") continue;\n const a = e[s];\n O(a) && O(i) ? e[s] = U(a, i) : e[s] = t(i);\n }\n return e;\n};\nclass S {\n constructor(r, t, e) {\n this.rawResponse = r, this.data = t, this.ok = r.ok, this.status = r.status, this.statusText = r.statusText, this.headers = r.headers, Object.entries(e || {}).forEach(([o, s]) => {\n this[o] = s;\n });\n }\n ok;\n status;\n statusText;\n headers;\n}\nasync function N(n, r, t) {\n if (n.bodyUsed)\n throw new R(\n w.BODY_USED,\n \"Response body has already been used or locked\"\n );\n const e = n.headers.get(\"content-type\") || \"\", o = Number(n.headers.get(\"content-length\")) || 0, s = (a, c) => c === \"json\" || a.startsWith(\"application/json\"), i = (a, c, u) => u === \"blob\" || a.startsWith(\"image/\") && !a.startsWith(\"image/svg\") || a.startsWith(\"video/\") || a.startsWith(\"audio/\") || !x(c);\n if ((n.status === 101 || n.status === 426 || n.headers.get(\"upgrade\")) && typeof globalThis.WebSocket < \"u\") {\n const a = new WebSocket(n.url);\n return await new Promise((c, u) => {\n a.onopen = c, a.onerror = u;\n }), new S(n, a, {\n ok: !0,\n status: 101,\n statusText: \"Switching Protocols\"\n });\n } else if (e.startsWith(\"text/event-stream\") && ![\"text\", \"json\"].includes(r || \"\") && typeof globalThis.EventSource < \"u\") {\n const a = new EventSource(n.url);\n return await new Promise((c, u) => {\n a.onopen = c, a.onerror = u;\n }), new S(n, a);\n } else {\n if (r === \"stream\")\n return new S(\n n,\n n.body\n );\n {\n const a = n.clone().body?.getReader();\n if (!a)\n throw new R(\n w.NO_BODY_READER,\n \"Failed to get ReadableStream from response body\"\n );\n let c = new Uint8Array();\n for (; ; ) {\n const { done: l, value: d } = await a.read();\n if (l) break;\n if (d && (c = new Uint8Array([...c, ...d]), t && o > 0)) {\n const f = Math.min(c.length / o, 1);\n t(f, c);\n }\n }\n const u = new S(n, void 0);\n if (r === \"arrayBuffer\")\n return u.data = c.buffer, u;\n if (s(e, r))\n try {\n const l = new TextDecoder().decode(c);\n u.data = JSON.parse(l);\n } catch {\n }\n if (typeof u.data != \"string\" && i(e, c, r) ? u.data = new Blob([c], {\n type: n.headers.get(\"content-type\") || void 0\n }) : u.data = new TextDecoder().decode(c), typeof u.data == \"string\" && r !== \"text\") {\n const l = u.data.trim(), d = l[0], f = l[l.length - 1];\n if (d === \"{\" && f === \"}\" || d === \"[\" && f === \"]\")\n try {\n u.data = JSON.parse(u.data);\n } catch {\n }\n }\n if (typeof u.data > \"u\" && (u.data = c.length > 0 ? c : void 0), u.ok)\n return u;\n throw new M(\n `Request failed with status code ${n.status}`,\n u\n );\n }\n }\n}\nvar D;\n((n) => {\n n.makeSearchParams = (o) => {\n if (!o)\n return new URLSearchParams();\n if (o instanceof URLSearchParams)\n return o;\n if (typeof o != \"object\" || o?.constructor !== Object)\n throw new TypeError(\"only plain object is supported\");\n const s = new URLSearchParams(), i = (u, l) => {\n l != null && s.append(u, l);\n }, a = (u, l) => {\n l != null && s.set(u, l);\n }, c = (u, l) => {\n if (l != null) {\n if (Array.isArray(l)) {\n for (const d of l) i(u, d?.toString());\n return;\n }\n if (typeof l == \"object\" && l.constructor === Object) {\n for (const [d, f] of Object.entries(l)) {\n if (f == null) continue;\n const h = d.endsWith(\"[]\"), p = h ? d.slice(0, -2) : d, y = `${u}[${p}]`;\n if (h) {\n const b = `${y}[]`;\n if (Array.isArray(f))\n for (const E of f) i(b, E?.toString());\n else typeof f == \"object\" && f !== null && f.constructor === Object ? c(`${y}[]`, f) : i(b, f?.toString());\n } else if (Array.isArray(f))\n for (const b of f) i(y, b?.toString());\n else typeof f == \"object\" && f !== null && f.constructor === Object ? c(y, f) : a(y, f?.toString());\n }\n return;\n }\n a(u, l?.toString());\n }\n };\n for (const [u, l] of Object.entries(o))\n c(u, l);\n return s;\n }, n.makeQueryString = (o) => (0, n.makeSearchParams)(o).toString(), n.makeURL = (o, s, i, a) => {\n const c = typeof window < \"u\" && window.location?.origin || \"http://localhost\", u = typeof o == \"string\" ? new URL(o, a ?? c) : new URL(o), l = (0, n.toQueryRecord)(u.searchParams), d = (0, n.mergeQueries)(l, s || {}), f = (0, n.makeSearchParams)(d);\n return u.search = f.toString(), u.hash = i || \"\", u;\n }, n.toQueryRecord = (o) => {\n typeof o == \"string\" && (o = (0, n.fromString)(o));\n const s = {}, i = (c) => {\n if (!c.includes(\"[\")) return { path: [c], forceArray: !1 };\n const u = [c.slice(0, c.indexOf(\"[\"))], l = /\\[([^\\]]*)\\]/g;\n let d, f = !1, h = !1;\n for (; d = l.exec(c); )\n d[1] === \"\" ? (f = !0, h = !0) : (u.push(d[1]), h = !1);\n return f && h && (u[u.length - 1] = u[u.length - 1] + \"[]\"), { path: u, forceArray: f };\n }, a = (c, u, l, d) => {\n let f = c;\n for (let h = 0; h < u.length; h++) {\n const p = u[h];\n h === u.length - 1 ? d ? f[p] === void 0 ? f[p] = [l] : Array.isArray(f[p]) ? f[p].push(l) : f[p] = [f[p], l] : f[p] === void 0 ? f[p] = l : Array.isArray(f[p]) ? f[p].push(l) : f[p] = [f[p], l] : ((f[p] === void 0 || typeof f[p] != \"object\" || Array.isArray(f[p])) && (f[p] = {}), f = f[p]);\n }\n };\n for (const [c, u] of o.entries()) {\n const { path: l, forceArray: d } = i(String(c));\n a(s, l, u?.toString(), d);\n }\n return s;\n }, n.fromString = (o) => {\n const s = o.trim();\n if (!s) return new URLSearchParams();\n if (s.startsWith(\"?\")) return new URLSearchParams(s.slice(1));\n const i = s.indexOf(\"?\");\n if (i >= 0) {\n const a = s.indexOf(\"#\", i + 1), c = s.slice(i + 1, a >= 0 ? a : void 0);\n return new URLSearchParams(c);\n }\n return new URLSearchParams(s);\n }, n.mergeQueries = (o, ...s) => {\n const i = r(t(o));\n for (const a of s)\n a != null && e(i, t(a));\n return i;\n };\n function r(o) {\n if (Array.isArray(o)) return o.map(r);\n if (O(o)) {\n const s = {};\n for (const [i, a] of Object.entries(o)) s[i] = r(a);\n return s;\n }\n if (o instanceof Map) {\n const s = {};\n for (const [i, a] of o.entries()) s[i] = r(a);\n return s;\n }\n return o;\n }\n function t(o) {\n if (!o) return {};\n if (o instanceof URLSearchParams || o instanceof FormData || o instanceof Map)\n return (0, n.toQueryRecord)(o);\n if (typeof o == \"string\") return (0, n.toQueryRecord)((0, n.fromString)(o));\n if (O(o)) return o;\n throw new TypeError(\n `unsupported type transformation, got: ${Object.prototype.toString.call(\n o\n )}`\n );\n }\n function e(o, s) {\n for (const [i, a] of Object.entries(s)) {\n if (a === void 0) continue;\n if (a === null) {\n delete o[i];\n continue;\n }\n const c = o[i];\n O(c) && O(a) ? e(c, a) : o[i] = r(a);\n }\n }\n})(D || (D = {}));\nconst v = function(n) {\n const r = this.constructor.prototype, t = Reflect.get(r, n, r);\n function e(...o) {\n return Reflect.apply(t, e, o);\n }\n Reflect.setPrototypeOf(e, r);\n for (const o of Reflect.ownKeys(t)) {\n const s = Reflect.getOwnPropertyDescriptor(t, o);\n s && Reflect.defineProperty(e, o, s);\n }\n return e;\n};\nv.prototype = Object.create(Function.prototype);\nvar k;\n((n) => {\n n.makeHeaders = (r) => {\n if (!r) return new Headers();\n if (r instanceof Headers) return new Headers(r);\n const t = new Headers();\n if (r instanceof Map) {\n for (const [e, o] of r.entries())\n if (o != null)\n if (Array.isArray(o))\n for (const s of o)\n s != null && t.append(e, String(s));\n else\n t.append(e, String(o));\n return t;\n }\n if (O(r)) {\n for (const [e, o] of Object.entries(r))\n if (o != null)\n if (Array.isArray(o))\n for (const s of o)\n s != null && t.append(e, String(s));\n else\n t.append(e, String(o));\n return t;\n }\n throw new TypeError(\n \"only plain object, Map/ReadonlyMap, or Headers is supported\"\n );\n }, n.toHeaderRecord = (r) => {\n if (r instanceof Headers) {\n const t = {};\n return r.forEach((e, o) => {\n t[o] = t[o] ? [...t[o], e] : [e];\n }), t;\n }\n if (r instanceof Map) {\n const t = {};\n for (const [e, o] of r.entries())\n if (o != null)\n if (Array.isArray(o)) {\n const s = o.filter((i) => i != null).map((i) => String(i));\n s.length && (t[e] = (t[e] ?? []).concat(s));\n } else {\n const s = String(o);\n t[e] = t[e] ? [...t[e], s] : [s];\n }\n return t;\n }\n throw new TypeError(\n `unsupported type transformation, got: ${Object.prototype.toString.call(\n r\n )}`\n );\n }, n.mergeHeaders = (r, ...t) => {\n const e = r instanceof Headers ? new Headers(r) : (0, n.makeHeaders)(r), o = (s) => {\n for (const [i, a] of Object.entries(s))\n if (a !== void 0) {\n if (a === null) {\n e.delete(i);\n continue;\n }\n if (Array.isArray(a)) {\n e.delete(i);\n for (const c of a)\n c != null && e.append(i, String(c));\n } else\n e.set(i, String(a));\n }\n };\n for (const s of t) {\n if (s == null) continue;\n if (s instanceof Headers) {\n s.forEach((a, c) => {\n e.set(c, a);\n });\n continue;\n }\n if (O(s)) {\n o(s);\n continue;\n }\n const i = (0, n.toHeaderRecord)(s);\n for (const [a, c] of Object.entries(i)) {\n e.delete(a);\n for (const u of c) e.append(a, u);\n }\n }\n return e;\n };\n})(k || (k = {}));\nclass g extends v {\n static FINAL_SYMBOL = Symbol(\"FEXIOS_FINAL_CONTEXT\");\n static NORMALIZED_SYMBOL = Symbol(\"FEXIOS_NORMALIZED_QUERY\");\n baseConfigs;\n static DEFAULT_CONFIGS = {\n baseURL: \"\",\n timeout: 60 * 1e3,\n credentials: \"same-origin\",\n headers: {},\n query: {},\n responseType: void 0,\n fetch: globalThis.fetch\n };\n hooks = [];\n static ALL_METHODS = [\n \"get\",\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n \"head\",\n \"options\",\n \"trace\"\n ];\n static METHODS_WITHOUT_BODY = [\n \"get\",\n \"head\",\n \"options\",\n \"trace\"\n ];\n constructor(r = {}) {\n super(\"request\"), this.baseConfigs = U(g.DEFAULT_CONFIGS, r), g.ALL_METHODS.forEach(\n (t) => this.createMethodShortcut(t.toLowerCase())\n );\n }\n async request(r, t) {\n let e = t = t || {};\n if (typeof r == \"string\" || r instanceof URL ? e.url = r.toString() : typeof r == \"object\" && (e = U(r, e)), e = await this.emit(\"beforeInit\", e, {\n shouldAdjustRequestParams: !0,\n shouldHandleShortCircuitResponse: !0\n }), e[g.FINAL_SYMBOL]) return e;\n if (g.METHODS_WITHOUT_BODY.includes(\n e.method?.toLocaleLowerCase()\n ) && e.body)\n throw new R(\n w.BODY_NOT_ALLOWED,\n `Request method \"${e.method}\" does not allow body`\n );\n if (e = await this.emit(\"beforeRequest\", e, {\n shouldAdjustRequestParams: !0,\n shouldHandleShortCircuitResponse: !0,\n preAdjust: !0,\n requestOptionsOverridesURLSearchParams: !0,\n preRequestOptionsOverridesURLSearchParams: !0,\n postRequestOptionsOverridesURLSearchParams: !0\n }), e[g.FINAL_SYMBOL]) return e;\n let o;\n const s = {};\n if (typeof e.body < \"u\" && e.body !== null && (e.body instanceof Blob || e.body instanceof FormData || e.body instanceof URLSearchParams ? o = e.body : typeof e.body == \"object\" && e.body !== null ? (o = JSON.stringify(e.body), e.headers = this.mergeHeaders(e.headers, {\n \"Content-Type\": \"application/json\"\n })) : o = e.body), !k.makeHeaders(\n t.headers || {}\n ).get(\"content-type\") && o && (o instanceof FormData || o instanceof URLSearchParams ? s[\"content-type\"] = null : typeof o == \"string\" && typeof e.body == \"object\" ? s[\"content-type\"] = \"application/json\" : o instanceof Blob && (s[\"content-type\"] = o.type || \"application/octet-stream\")), e.body = o, e = await this.emit(\"afterBodyTransformed\", e, {\n shouldAdjustRequestParams: !0,\n shouldHandleShortCircuitResponse: !0,\n preAdjust: !0,\n postRequestOptionsOverridesURLSearchParams: !0\n }), e[g.FINAL_SYMBOL]) return e;\n const i = e.abortController || globalThis.AbortController ? new AbortController() : void 0, a = e.baseURL || this.baseConfigs.baseURL || globalThis.location?.href || \"http://localhost\", c = new URL(\n e.url.toString(),\n a\n ), u = D.makeURL(\n c,\n e.query,\n c.hash\n ).toString(), l = new Request(u, {\n method: e.method || \"GET\",\n credentials: e.credentials,\n cache: e.cache,\n mode: e.mode,\n headers: k.mergeHeaders(\n this.baseConfigs.headers,\n e.headers || {},\n s\n ),\n body: e.body,\n signal: i?.signal\n });\n if (e.rawRequest = l, e = await this.emit(\"beforeActualFetch\", e, {\n shouldHandleShortCircuitResponse: !0\n }), e[g.FINAL_SYMBOL]) return e;\n const d = e.timeout || this.baseConfigs.timeout || 60 * 1e3;\n if (e.url.startsWith(\"ws\"))\n try {\n const h = new WebSocket(e.url);\n return await new Promise((p, y) => {\n const b = setTimeout(() => {\n y(\n new R(\n w.TIMEOUT,\n `WebSocket connection timed out after ${d}ms`,\n e\n )\n );\n }, d);\n h.onopen = () => {\n clearTimeout(b), p();\n }, h.onerror = (E) => {\n clearTimeout(b), y(\n new R(\n w.NETWORK_ERROR,\n \"WebSocket connection failed\",\n e\n )\n );\n }, h.onclose = (E) => {\n E.code !== 1e3 && (clearTimeout(b), y(\n new R(\n w.NETWORK_ERROR,\n `WebSocket closed with code ${E.code}`,\n e\n )\n ));\n };\n }), e.rawResponse = new Response(), e.response = new S(e.rawResponse, h, {\n ok: !0,\n status: 101,\n statusText: \"Switching Protocols\"\n }), e.data = h, e.headers = new Headers(), this.emit(\"afterResponse\", e);\n } catch (h) {\n throw h instanceof R ? h : new R(\n w.NETWORK_ERROR,\n `WebSocket creation failed: ${h}`,\n e\n );\n }\n let f;\n try {\n i && (f = setTimeout(() => {\n i.abort();\n }, d));\n const h = await (t.fetch || this.baseConfigs.fetch || globalThis.fetch)(e.rawRequest).catch((p) => {\n throw f && clearTimeout(f), i?.signal.aborted ? new R(\n w.TIMEOUT,\n `Request timed out after ${d}ms`,\n e\n ) : new R(w.NETWORK_ERROR, p.message, e);\n });\n return f && clearTimeout(f), e.rawResponse = h, e.response = await N(\n h,\n e.responseType,\n (p, y) => {\n t?.onProgress?.(p, y);\n }\n ), e.data = e.response.data, e.headers = e.response.headers, this.emit(\"afterResponse\", e);\n } catch (h) {\n throw f && clearTimeout(f), h;\n }\n }\n mergeQueries = D.mergeQueries;\n mergeHeaders = k.mergeHeaders;\n normalizeContext(r, t = {}) {\n const e = r, o = e.baseURL || this.baseConfigs.baseURL || globalThis.location?.href || \"http://localhost\", s = new URL(\n o,\n globalThis.location?.href || \"http://localhost\"\n ), i = new URL(e.url.toString(), s), a = !!e[g.NORMALIZED_SYMBOL];\n e.baseURL = s ? s.origin : i.origin;\n let c;\n a ? c = t.requestOptionsOverridesURLSearchParams ? this.mergeQueries({}, i.search, e.query) : this.mergeQueries({}, e.query, i.search) : (c = t.requestOptionsOverridesURLSearchParams ? this.mergeQueries(\n s?.search || \"\",\n this.baseConfigs.query,\n i.search,\n e.query\n ) : this.mergeQueries(\n s?.search || \"\",\n this.baseConfigs.query,\n e.query,\n i.search\n ), e[g.NORMALIZED_SYMBOL] = !0), e.query = c;\n const u = new URL(i);\n return u.search = \"\", e.url = u.toString(), e;\n }\n async emit(r, t, e = {}) {\n const o = this.hooks.filter((s) => s.event === r);\n if (e?.shouldAdjustRequestParams && e?.preAdjust)\n try {\n t = this.normalizeContext(t, {\n requestOptionsOverridesURLSearchParams: e.preRequestOptionsOverridesURLSearchParams\n });\n } catch {\n }\n try {\n let s = 0;\n for (const i of o) {\n const a = `${r}#${i.action.name || `anonymous#${s}`}`, c = Symbol(\"FEXIOS_HOOK_CONTEXT\");\n t[c] = c;\n const u = t.url;\n let l = \"\";\n try {\n const f = this.mergeQueries(\n {},\n t.query || {}\n );\n l = JSON.stringify(f);\n } catch {\n }\n let d = await i.action.call(this, t);\n if (d === void 0 && (d = t), d === !1)\n throw new R(\n w.ABORTED_BY_HOOK,\n `Request aborted by hook \"${a}\"`,\n t\n );\n if (d instanceof Response) {\n const f = d, h = { ...t, rawResponse: f }, p = await N(\n f,\n t.responseType,\n (y, b) => {\n t.onProgress?.(y, b);\n }\n );\n if (h.response = p, h.data = p.data, h.headers = p.headers, r !== \"afterResponse\") {\n const y = await this.emit(\"afterResponse\", h);\n return y[g.FINAL_SYMBOL] = !0, y;\n } else\n return h[g.FINAL_SYMBOL] = !0, h;\n } else if (typeof d == \"object\" && d[c] === c)\n t = d;\n else {\n const f = globalThis[\"\".concat(\"console\")];\n try {\n throw new R(\n w.HOOK_CONTEXT_CHANGED,\n `Hook \"${a}\" should return the original FexiosContext or return false to abort the request, but got \"${d}\".`\n );\n } catch (h) {\n f.warn(h.stack || h);\n }\n }\n if (e?.shouldAdjustRequestParams)\n try {\n const f = t.baseURL || this.baseConfigs.baseURL || globalThis.location?.href || \"http://localhost\", h = new URL(\n t.url.toString(),\n f\n );\n let p = {};\n if (l)\n try {\n p = JSON.parse(l);\n } catch {\n }\n const y = t.query || {}, b = this.mergeQueries(\n p,\n h.search,\n y\n );\n t.query = b;\n const E = new URL(h);\n E.search = \"\", t.url = E.toString();\n } catch {\n }\n delete t[c], s++;\n }\n } catch (s) {\n return Promise.reject(s);\n }\n return t;\n }\n on(r, t, e = !1) {\n if (typeof t != \"function\")\n throw new R(\n w.INVALID_HOOK_CALLBACK,\n `Hook should be a function, but got \"${typeof t}\"`\n );\n return this.hooks[e ? \"unshift\" : \"push\"]({\n event: r,\n action: t\n }), this;\n }\n off(r, t) {\n return r === \"*\" || !r ? this.hooks = this.hooks.filter((e) => e.action !== t) : this.hooks = this.hooks.filter(\n (e) => e.event !== r || e.action !== t\n ), this;\n }\n createInterceptor(r) {\n return {\n handlers: () => this.hooks.filter((t) => t.event === r).map((t) => t.action),\n use: (t, e = !1) => this.on(r, t, e),\n clear: () => {\n this.hooks = this.hooks.filter((t) => t.event !== r);\n }\n };\n }\n interceptors = {\n request: this.createInterceptor(\"beforeRequest\"),\n response: this.createInterceptor(\"afterResponse\")\n };\n createMethodShortcut(r) {\n return Reflect.defineProperty(this, r, {\n get: () => (t, e, o) => (g.METHODS_WITHOUT_BODY.includes(\n r.toLocaleLowerCase()\n ) ? o = e : (o = o || {}, o.body = e), this.request(t, {\n ...o,\n method: r\n }))\n }), this;\n }\n extends(r) {\n const t = new g(U(this.baseConfigs, r));\n return t.hooks = [...this.hooks], t._plugins = new Map(this._plugins), t._plugins.forEach(async (e) => {\n await t.plugin(e);\n }), t;\n }\n create = g.create;\n static create(r) {\n return new g(r);\n }\n _plugins = /* @__PURE__ */ new Map();\n async plugin(r) {\n if (typeof r?.name == \"string\" && typeof r?.install == \"function\") {\n if (this._plugins.has(r.name))\n return this;\n const t = await r.install(this);\n if (this._plugins.set(r.name, r), t instanceof g)\n return t;\n }\n return this;\n }\n // 版本弃子们.jpg\n /** @deprecated Use checkIsPlainObject from utils instead */\n checkIsPlainObject = O;\n /** @deprecated Use `mergeQueries` instead */\n mergeQuery = this.mergeQueries;\n}\n/**\n * Fexios\n * @desc Fetch based HTTP client with similar API to axios for browser and Node.js\n *\n * @license MIT\n * @author dragon-fish <dragon-fish@qq.com>\n */\nconst Q = g.create, j = Q();\n/* v8 ignore else -- @preserve */\ntypeof globalThis < \"u\" ? globalThis.fexios = j : typeof window < \"u\" && (window.fexios = j);\nvar I;\n((n) => {\n function r(e) {\n return Array.isArray(e) ? e.join(\"|\") : typeof e == \"boolean\" || e === null ? e ? \"1\" : void 0 : typeof e == \"number\" ? \"\" + e : e;\n }\n n.normalizeParamValue = r;\n function t(e) {\n const o = (i) => i && (i instanceof URLSearchParams || i instanceof FormData);\n if (e == null)\n return;\n const s = new FormData();\n if (o(e))\n return e.forEach((i, a) => {\n const c = r(i);\n c != null && s.append(a, c);\n }), s;\n if (O(e))\n return Object.entries(e).forEach(([i, a]) => {\n const c = r(a);\n c != null && s.append(i, c);\n }), s;\n }\n n.normalizeBody = t;\n})(I || (I = {}));\nvar _ = /* @__PURE__ */ ((n) => (n.HTTP_ERROR = \"HTTP_ERROR\", n.LOGIN_FAILED = \"LOGIN_FAILED\", n.LOGIN_RETRY_LIMIT_EXCEEDED = \"LOGIN_RETRY_LIMIT_EXCEEDED\", n.TOKEN_RETRY_LIMIT_EXCEEDED = \"TOKEN_RETRY_LIMIT_EXCEEDED\", n))(_ || {});\nclass m extends Error {\n constructor(r, t = \"\", e) {\n super(), this.code = r, this.message = t, this.cause = e, this.name = \"WikiSaikouError\";\n }\n static is(r, t) {\n return r instanceof this && (t === void 0 || r.code === t);\n }\n}\nclass T extends Error {\n constructor(r, t) {\n super(), this.errors = r, this.cause = t, this.name = \"MediaWikiApiError\", this.errors = T.normalizeErrors(r), this.message = r.map((e) => e.text).filter(Boolean).join(`\n`), this.code = this.isBadTokenError() ? \"badtoken\" : this.errors[0]?.code || \"Unknown Error\";\n }\n get firstError() {\n return this.errors[0];\n }\n isBadTokenError() {\n return this.errors.some((r) => r.code === \"badtoken\") || [\"NeedToken\", \"WrongToken\"].includes(this.cause?.data?.login?.result);\n }\n toString() {\n return `[${this.name} ${this.code}]`;\n }\n static is(r) {\n return r instanceof this;\n }\n static normalizeErrors(r) {\n return Array.isArray(r) === !1 ? [] : r.filter((t) => typeof t == \"object\" && !!t?.code).map((t) => t.text ? t : t.info ? { ...t, text: t.info } : t[\"*\"] ? { ...t, text: t[\"*\"] } : { ...t, text: \"\" });\n }\n}\n((n) => {\n function r(s) {\n if (s == null) return;\n if (s?.response?.data !== void 0) return s.response.data;\n if (s?.data !== void 0) return s.data;\n const i = s instanceof Error ? s.cause : void 0;\n return i?.response?.data !== void 0 ? i.response.data : i?.data !== void 0 ? i.data : s || void 0;\n }\n function t(s) {\n return e(s).length > 0;\n }\n n.includesMediaWikiApiError = t, n.normalizeMwApiErrors = T.normalizeErrors;\n function e(s) {\n let i = r(s);\n if (typeof i != \"object\" || i === null)\n return [];\n const a = i?.error, c = i?.errors, u = [];\n return a && u.push(a), Array.isArray(c) && u.push(...c), (0, n.normalizeMwApiErrors)(u);\n }\n n.extractMediaWikiApiErrors = e;\n function o(s) {\n if (T.is(s))\n return s.isBadTokenError();\n {\n const i = e(s);\n return new T(i).isBadTokenError();\n }\n }\n n.isBadTokenError = o;\n})(m || (m = {}));\nconst q = Symbol.for(\"__FEXIOS_SAIKOU__\");\n/**\n * FexiosSaikou\n *\n * A pre-configured Fexios instance with MediaWiki-friendly defaults:\n * - MediaWiki-specific request/response params normalization\n * - built-in token management\n * - error handling\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n *\n * @param {string|URL} payload create a new FexiosSaikou instance with the given baseURL\n * @param {Fexios} payload or make the given Fexios instance a FexiosSaikou instance\n */\nfunction C(n) {\n const r = n instanceof g ? n : new g({\n baseURL: n instanceof URL ? n.toString() : String(n),\n responseType: \"json\"\n });\n return r[q] || (Reflect.defineProperty(r, q, {\n get: () => !0,\n enumerable: !1,\n configurable: !1\n }), r._tokens = /* @__PURE__ */ new Map(), r.on(\"afterResponse\", (t) => {\n const { data: e, rawRequest: o } = t, s = o?.headers.get(\"x-mw-token-name\");\n s && m.isBadTokenError(e) && r._tokens.delete(s);\n const i = e?.query?.tokens;\n i && typeof i == \"object\" && Object.entries(i).forEach(([c, u]) => {\n typeof u == \"string\" && r._tokens.set(c.replace(/token$/i, \"\").toLowerCase(), u);\n });\n const a = e?.login?.token;\n return typeof a == \"string\" && r._tokens.set(\"login\", a), t;\n }), r.on(\"beforeInit\", (t) => {\n if (t.method?.toLowerCase() !== \"post\")\n return t;\n if (t.body === void 0 || t.body === null)\n return t.body = void 0, t;\n const e = t.body = I.normalizeBody(t.body), o = new URLSearchParams(t.query);\n return e.has(\"format\") && o.delete(\"format\"), e.has(\"formatversion\") && o.delete(\"formatversion\"), e.has(\"action\") && o.delete(\"action\"), e.has(\"origin\") && (o.set(\"origin\", \"\" + e.get(\"origin\")), e.delete(\"origin\")), t.query = Object.fromEntries(o.entries()), t;\n }), r.on(\"beforeInit\", (t) => (t.query = I.normalizeBody(t.query) || {}, t)), r.on(\"beforeRequest\", (t) => {\n const e = new URL(t.url), o = e.searchParams;\n if (globalThis.location && (!o.has(\"origin\") && location.origin !== e.origin ? (o.set(\"origin\", location.origin), r.baseConfigs.credentials = \"include\", r.baseConfigs.mode = \"cors\") : location.origin === e.origin && (o.delete(\"origin\"), r.baseConfigs.credentials = void 0, r.baseConfigs.mode = void 0)), e.searchParams.has(\"origin\")) {\n const s = encodeURIComponent(\n e.searchParams.get(\"origin\") || \"\"\n ).replace(/\\./g, \"%2E\");\n t.query = {}, e.searchParams.delete(\"origin\"), t.url = `${e}${e.search ? \"&\" : \"?\"}origin=${s}`;\n }\n return t;\n })), r;\n}\nconst A = (n, ...r) => {\n const t = (s) => Object.prototype.toString.call(s) === \"[object Object]\", e = (s) => {\n if (Array.isArray(s)) return s.slice();\n if (t(s)) {\n const i = {};\n for (const a of Reflect.ownKeys(s)) i[a] = e(s[a]);\n return i;\n }\n return s;\n }, o = e(n);\n for (const s of r)\n if (s != null)\n for (const i of Reflect.ownKeys(s)) {\n const a = s[i];\n if (typeof a > \"u\") continue;\n const c = o[i];\n t(c) && t(a) ? o[i] = A(c, a) : o[i] = e(a);\n }\n return o;\n}, B = (n, r, t) => {\n let e = { ...P.DEFAULT_CONFIGS };\n if (typeof n == \"string\" ? e = A(e, {\n baseURL: n,\n fexiosConfigs: r || {},\n defaultParams: t || {}\n }) : typeof n == \"object\" && n !== null && (e = A(e, n)), !e.baseURL && typeof window == \"object\" && window.mediaWiki) {\n const { wgServer: o, wgScriptPath: s } = window.mediaWiki?.config?.get([\"wgServer\", \"wgScriptPath\"]) || {};\n typeof o == \"string\" && typeof s == \"string\" && (e.baseURL = `${o}${s}/api.php`);\n }\n if (typeof e.baseURL != \"string\")\n throw new Error(\"baseURL is required\");\n return e;\n}, X = () => {\n}, z = async (n, r) => {\n let t = 0;\n const { retry: e = 3, onRetry: o = X, shouldRetry: s = () => !0 } = r;\n let i;\n do\n try {\n return await n();\n } catch (a) {\n if (i = a, s(a, t))\n o(a, t), t++;\n else\n throw a;\n }\n while (t < e);\n throw i || new Error(\"Retry failed\");\n};\n/**\n * WikiSaikou Core class\n * @internal You **SHOULD NOT** use this class directly, instead, use the `MediaWikiApi` class.\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n */\nconst L = class L {\n constructor(r, t, e) {\n this.version = \"7.1.2\", this.token = this.getToken;\n const o = this.config = B(\n r,\n t,\n e\n );\n this.request = C(o.baseURL);\n }\n setBaseURL(r) {\n return this.config.baseURL = r, this.request.baseConfigs.baseURL = r, this;\n }\n /** Base methods encapsulation */\n async get(r, t) {\n return this.runRequestWithApiErrorMapping(\n () => this.request.get(\n \"\",\n A(\n {},\n this.config.fexiosConfigs,\n { query: A(this.config.defaultParams, r) },\n t\n )\n )\n );\n }\n async post(r, t) {\n return this.runRequestWithApiErrorMapping(\n () => this.request.post(\n \"\",\n r,\n A(\n {},\n this.config.fexiosConfigs,\n {\n query: this.config.defaultParams\n },\n t\n )\n )\n );\n }\n /**\n * Wrap a request to map non-2xx responses containing MediaWiki API error bodies\n * into MediaWikiApiError when throwOnApiError=true, and then pass 2xx responses\n * through handleApiResponse for unified processing.\n */\n async runRequestWithApiErrorMapping(r) {\n try {\n const t = await r();\n return this.handleApiResponse(t);\n } catch (t) {\n throw this.config.throwOnApiError && m.includesMediaWikiApiError(t) ? new T(\n m.extractMediaWikiApiErrors(t),\n t\n ) : t;\n }\n }\n throwIfApiError(r) {\n const t = m.extractMediaWikiApiErrors(r);\n if (t.length > 0)\n throw new T(t, r);\n }\n handleApiResponse(r) {\n return this.config.throwOnApiError && this.throwIfApiError(r.data), r;\n }\n /** Token Handler */\n get tokens() {\n return this.request._tokens;\n }\n async fetchTokens(r = [\"csrf\"]) {\n return this.config.fexiosConfigs.credentials = \"include\", await this.get({\n action: \"query\",\n meta: \"tokens\",\n type: r\n }), this.tokens;\n }\n async getToken(r = \"csrf\", t = !1) {\n return (!this.tokens.get(r) || t) && (this.tokens.delete(r), await this.fetchTokens([r])), this.tokens.get(r);\n }\n badToken(r) {\n return this.tokens.delete(r), this.tokens;\n }\n async postWithToken(r, t, e) {\n const {\n tokenName: o = \"token\",\n retry: s = 3,\n noCache: i = !1,\n fexiosOptions: a\n } = e || {};\n if (s < 1)\n throw new m(\n _.TOKEN_RETRY_LIMIT_EXCEEDED,\n \"The limit of the number of times to automatically re-acquire the token has been exceeded\"\n );\n let c = 0;\n return z(\n async () => {\n const u = await this.getToken(\n r,\n i || c > 0\n );\n try {\n const l = await this.post(\n {\n [o]: u,\n ...t\n },\n A(a || {}, {\n headers: { \"x-mw-token-name\": r }\n })\n );\n if (m.isBadTokenError(l.data))\n throw l;\n return l;\n } catch (l) {\n throw m.isBadTokenError(l) || l?.ok === !1 || T.is(l) ? l : new m(\n _.HTTP_ERROR,\n \"Network/transport or SDK-internal error (not a MediaWiki API error)\",\n l\n );\n }\n },\n {\n retry: s,\n onRetry: (u, l) => {\n c = l + 1;\n },\n shouldRetry: (u) => m.isBadTokenError(u) || u?.ok === !1\n }\n ).catch((u) => {\n throw m.isBadTokenError(u) || u?.ok === !1 ? new m(\n _.TOKEN_RETRY_LIMIT_EXCEEDED,\n \"Retry attempts for acquiring/using token exhausted\",\n u\n ) : u;\n });\n }\n postWithEditToken(r) {\n return this.postWithToken(\"csrf\", r);\n }\n // for backward compatibility\n /** @deprecated Use `this.config.baseURL` instead */\n get baseURL() {\n return this.config.baseURL;\n }\n /** @deprecated Use `this.config.defaultParams` instead */\n get defaultParams() {\n return this.config.defaultParams;\n }\n /** @deprecated Use `this.config.fexiosConfigs` instead */\n get defaultOptions() {\n return this.config.fexiosConfigs;\n }\n};\nL.INIT_DEFAULT_PARAMS = {\n action: \"query\",\n errorformat: \"plaintext\",\n format: \"json\",\n formatversion: 2\n}, L.DEFAULT_CONFIGS = {\n baseURL: void 0,\n fexiosConfigs: {\n responseType: \"json\"\n },\n defaultParams: L.INIT_DEFAULT_PARAMS,\n throwOnApiError: !1\n}, L.createRequestHandler = C;\nlet P = L;\n/**\n * WikiSaikou\n * @description Standalone MediaWiki API SDK with `mw.Api`-like API in any environments\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass G extends P {\n async clientLogin(r, t, e) {\n e ||= {}, !e.logincontinue && !e.loginreturnurl && (e.loginreturnurl = location?.origin);\n const o = await this.postWithToken(\n \"login\",\n {\n action: \"clientlogin\",\n username: r,\n password: t,\n ...e\n },\n {\n tokenName: \"logintoken\"\n }\n );\n if (o?.data?.clientlogin?.status === \"PASS\")\n return o.data.clientlogin;\n throw new m(\n _.LOGIN_FAILED,\n o.data.clientlogin.message,\n o\n );\n }\n}\n/**\n * WikiSaikou for foreign wiki\n * @description Standalone MediaWiki API SDK with `mw.Api`-like API in any environments\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass J extends G {\n constructor(r, t, e) {\n const o = B(\n r,\n {\n credentials: \"include\",\n mode: \"cors\",\n ...t\n },\n {\n origin: location.origin,\n ...e\n }\n );\n super(o);\n }\n}\nexport {\n g as Fexios,\n R as FexiosError,\n w as FexiosErrorCodes,\n D as FexiosQueryBuilder,\n S as FexiosResponse,\n M as FexiosResponseError,\n J as ForeignApi,\n G as MediaWikiApi,\n T as MediaWikiApiError,\n J as MediaWikiForeignApi,\n G as MwApi,\n P as MwApiBase,\n I as MwParamNormalizer,\n P as WikiSaikouCore,\n m as WikiSaikouError,\n _ as WikiSaikouErrorCode,\n x as checkIfTextData,\n O as checkIsPlainObject,\n Q as createFexios,\n C as createFexiosSaikou,\n U as deepMerge,\n j as fexios,\n V as isFexiosError,\n N as resolveResponseBody\n};\n//# sourceMappingURL=browser.js.map\n","import { InPageEdit } from '@/InPageEdit'\nimport { FexiosConfigs } from 'wiki-saikou'\nimport { MwApi } from 'wiki-saikou/browser'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n api: MwApi\n }\n}\n\nexport interface ApiServiceOptions extends Partial<FexiosConfigs> {}\n\nexport class ApiService {\n constructor(\n public ctx: InPageEdit,\n options: Partial<ApiServiceOptions> = {}\n ) {\n if (location?.href && options?.baseURL?.toString()?.startsWith('/')) {\n options.baseURL = new URL(options.baseURL, location.origin)\n }\n const api = new MwApi({\n baseURL: options.baseURL!.toString(),\n fexiosConfigs: {\n headers: {\n 'x-api-user-agent': `InPageEdit-NEXT ${ctx.version}`,\n ...options.headers,\n },\n ...options,\n },\n throwOnApiError: true,\n })\n ctx.set('api', api)\n }\n}\n","import { Inject, InPageEdit, Service } from '@/InPageEdit.js'\nimport { IWikiTitle } from '@/models/WikiTitle'\n\ndeclare module '@/InPageEdit.js' {\n interface InPageEdit {\n /**\n * Basic information of the current web page\n */\n currentPage: CurrentPageService\n }\n}\n\n@Inject(['wiki', 'wikiTitle'])\nexport class CurrentPageService extends Service {\n constructor(readonly ctx: InPageEdit) {\n super(ctx, 'currentPage', false)\n }\n private get logger() {\n return this.ctx.logger('CURRENT_PAGE')\n }\n\n protected async start() {\n await this.#init()\n\n this.#injectHistoryPopState()\n window.addEventListener('popstate', this.#onPopState.bind(this))\n\n this.logger.info('initialized', this.wikiTitle)\n }\n\n protected stop(): void | Promise<void> {\n window.removeEventListener('popstate', this.#onPopState.bind(this))\n }\n\n async #init() {\n await this.#initCurrentTitle()\n await this.#initIsMainPage()\n }\n\n #injectHistoryPopState() {\n const injectKey = Symbol.for('InPageEdit.CurrentPageService.UrlChangeListenerInstalled')\n if ((window as any)[injectKey]) {\n return\n }\n const _pushState = history.pushState\n const _replaceState = history.replaceState\n history.pushState = function (data: any, title: string, url?: string | null) {\n _pushState.apply(this, [data, title, url])\n window.dispatchEvent(new PopStateEvent('popstate', { state: data }))\n }\n history.replaceState = function (data: any, title: string, url?: string | null) {\n _replaceState.apply(this, [data, title, url])\n window.dispatchEvent(new PopStateEvent('popstate', { state: data }))\n }\n ;(window as any)[injectKey] = true\n }\n async #onPopState(e: PopStateEvent) {\n const oldURL = this.url\n const newURL = new URL(window.location.href)\n this.url = newURL\n\n // 只有 path/title=/curid= 变化时,才刷新状态\n if (\n oldURL.pathname !== newURL.pathname ||\n oldURL.searchParams.get('title') !== newURL.searchParams.get('title') ||\n oldURL.searchParams.get('curid') !== newURL.searchParams.get('curid')\n ) {\n await this.#init()\n this.logger.info('location changed', newURL, this.wikiTitle)\n }\n }\n\n url: URL = new URL(window.location.href)\n get params() {\n return this.url.searchParams\n }\n get canonicalUrl() {\n const href = document.querySelector<HTMLLinkElement>('link[rel=\"canonical\"]')?.href\n let url: URL | null = null\n if (href) {\n url = new URL(href, location.origin)\n }\n Reflect.defineProperty(this, 'canonicalUrl', {\n get: () => url,\n })\n return url\n }\n\n readonly isMainPage!: boolean\n async #initIsMainPage() {\n const title = this.wikiTitle\n const isMainPage = title?.getMainDBKey() === this.ctx.wiki.mainPageName\n Reflect.defineProperty(this, 'isMainPage', {\n get: () => isMainPage,\n })\n return isMainPage\n }\n\n /**\n * Get the title of the current page by location URL\n * @returns IWikiTitle or null if cannot be determined\n */\n wikiTitle!: IWikiTitle | null\n async #initCurrentTitle(): Promise<IWikiTitle | null> {\n let title: IWikiTitle | null = null\n if (this.canonicalUrl) {\n title = await this.ctx.wikiTitle.newTitleFromUrl(this.canonicalUrl)\n } else {\n title = await this.ctx.wikiTitle.newTitleFromUrl(this.url)\n }\n Object.freeze(title)\n Reflect.defineProperty(this, 'wikiTitle', {\n get: () => title,\n })\n return title\n }\n\n get wikiAction() {\n return this.params.get('action') || 'view'\n }\n}\n","import { InPageEdit, Service } from '@/InPageEdit'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n resourceLoader: ResourceLoaderService\r\n }\r\n}\r\n\r\nexport class ResourceLoaderService extends Service {\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, 'resourceLoader', true)\r\n }\r\n protected stop(): void | Promise<void> {\r\n // document.querySelectorAll('[data-ipe]').forEach((el) => {\r\n // el.remove()\r\n // })\r\n }\r\n\r\n loadScript(src: string, attrs?: Record<string, any>): Promise<HTMLScriptElement | null> {\r\n if (!src) {\r\n return Promise.resolve(null)\r\n }\r\n const key = `script:${src}`\r\n const existed = document.querySelector(`[data-ipe=\"${key}\"]`)\r\n if (existed) {\r\n return Promise.resolve(existed as HTMLScriptElement)\r\n }\r\n const promise = new Promise<HTMLScriptElement>((resolve, reject) => {\r\n const script = document.createElement('script')\r\n script.src = src\r\n script.dataset.ipe = key\r\n if (attrs) {\r\n Object.entries(attrs).forEach(([key, value]) => {\r\n if (typeof value === 'undefined' || value === false || value === null) {\r\n script.removeAttribute(key)\r\n } else {\r\n script.setAttribute(key, value)\r\n }\r\n })\r\n }\r\n document.body.appendChild(script)\r\n script.onload = () => resolve(script)\r\n script.onerror = (e) => reject(e)\r\n })\r\n return promise\r\n }\r\n\r\n loadStyle(href: string, attrs?: Record<string, any>): Promise<HTMLLinkElement | null> {\r\n if (!href) {\r\n return Promise.resolve(null)\r\n }\r\n const key = `style:${href}`\r\n const existed = document.querySelector(`[data-ipe=\"${key}\"]`)\r\n if (existed) {\r\n return Promise.resolve(existed as HTMLLinkElement)\r\n }\r\n const promise = new Promise<HTMLLinkElement>((resolve, reject) => {\r\n const link = document.createElement('link')\r\n link.rel = 'stylesheet'\r\n link.href = href\r\n link.dataset.ipe = key\r\n if (attrs) {\r\n Object.entries(attrs).forEach(([key, value]) => {\r\n if (typeof value === 'undefined' || value === false || value === null) {\r\n link.removeAttribute(key)\r\n } else {\r\n link.setAttribute(key, value)\r\n }\r\n })\r\n }\r\n const meta =\r\n document.querySelector('meta[name=\"ipe-styles\"]') ||\r\n (() => {\r\n const meta = document.createElement('meta')\r\n meta.id = 'ipe-styles'\r\n meta.name = 'ipe-styles'\r\n document.head.insertAdjacentElement('afterbegin', meta)\r\n return meta\r\n })()\r\n meta.before(link)\r\n link.onload = () => resolve(link)\r\n link.onerror = (e) => reject(e)\r\n })\r\n return promise\r\n }\r\n\r\n resolveImportPath(path: string) {\r\n if (path.startsWith('http') || path.startsWith('//')) {\r\n return path\r\n }\r\n if (import.meta.env.VITE_BUILD_FORMAT === 'import') {\r\n return import.meta.resolve(path)\r\n }\r\n const src = (document.currentScript as HTMLScriptElement)?.src\r\n if (!src) {\r\n return `https://unpkg.com/mediawiki-inpageedit@latest/dist/${path}`\r\n }\r\n const url = new URL(src)\r\n if (!url.pathname.endsWith('.js')) {\r\n url.pathname = url.pathname + '/'\r\n }\r\n return new URL(path, url.toString()).toString()\r\n }\r\n}\r\n","const S = Object.keys;\nfunction j(s) {\n return typeof s == \"boolean\";\n}\nfunction U(s) {\n return s && typeof s.nodeType == \"number\";\n}\nfunction B(s) {\n return typeof s == \"string\";\n}\nfunction I(s) {\n return typeof s == \"number\";\n}\nfunction g(s) {\n return typeof s == \"object\" ? s !== null : v(s);\n}\nfunction v(s) {\n return typeof s == \"function\";\n}\nfunction Y(s) {\n return !!(s && s.isComponent);\n}\nfunction W(s) {\n return g(s) && typeof s.length == \"number\" && typeof s.nodeType != \"number\";\n}\nfunction x(s, t) {\n if (s)\n for (const e of S(s))\n t(s[e], e);\n}\nfunction G(s) {\n return g(s) && \"current\" in s;\n}\nconst A = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0\n};\nfunction Z(s, t) {\n return s + t.charAt(0).toUpperCase() + t.substring(1);\n}\nconst q = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\nS(A).forEach((s) => {\n q.forEach((t) => {\n A[Z(t, s)] = 0;\n });\n});\nconst V = Symbol.for(\"jsx-dom:type\");\nvar R = /* @__PURE__ */ function(s) {\n return s.ShadowRoot = \"ShadowRoot\", s;\n}(R || {});\nfunction J(s) {\n return s != null && s[V] === R.ShadowRoot;\n}\nconst Q = \"http://www.w3.org/2000/svg\", tt = \"http://www.w3.org/1999/xlink\", et = \"http://www.w3.org/XML/1998/namespace\";\nfunction F(s) {\n return !j(s) && s != null;\n}\nfunction T(s) {\n return Array.isArray(s) ? s.map(T).filter(Boolean).join(\" \") : g(s) ? Symbol.iterator in s ? T(Array.from(s)) : S(s).filter((t) => s[t]).join(\" \") : F(s) ? \"\" + s : \"\";\n}\nconst st = {\n animate: 0,\n circle: 0,\n clipPath: 0,\n defs: 0,\n desc: 0,\n ellipse: 0,\n feBlend: 0,\n feColorMatrix: 0,\n feComponentTransfer: 0,\n feComposite: 0,\n feConvolveMatrix: 0,\n feDiffuseLighting: 0,\n feDisplacementMap: 0,\n feDistantLight: 0,\n feFlood: 0,\n feFuncA: 0,\n feFuncB: 0,\n feFuncG: 0,\n feFuncR: 0,\n feGaussianBlur: 0,\n feImage: 0,\n feMerge: 0,\n feMergeNode: 0,\n feMorphology: 0,\n feOffset: 0,\n fePointLight: 0,\n feSpecularLighting: 0,\n feSpotLight: 0,\n feTile: 0,\n feTurbulence: 0,\n filter: 0,\n foreignObject: 0,\n g: 0,\n image: 0,\n line: 0,\n linearGradient: 0,\n marker: 0,\n mask: 0,\n metadata: 0,\n path: 0,\n pattern: 0,\n polygon: 0,\n polyline: 0,\n radialGradient: 0,\n rect: 0,\n stop: 0,\n svg: 0,\n switch: 0,\n symbol: 0,\n text: 0,\n textPath: 0,\n tspan: 0,\n use: 0,\n view: 0\n}, it = /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nfunction nt(s) {\n const t = document.createDocumentFragment();\n return E(s.children, t), t;\n}\nfunction ot(s, t, e) {\n t = {\n ...t,\n children: e\n };\n const i = new s(t), n = i.render();\n return \"ref\" in t && M(t.ref, i), n;\n}\nfunction c(s, t) {\n let { children: e, ...i } = t;\n !i.namespaceURI && st[s] === 0 && (i = {\n ...i,\n namespaceURI: Q\n });\n let n;\n if (B(s)) {\n if (n = i.namespaceURI ? document.createElementNS(i.namespaceURI, s) : document.createElement(s), at(i, n), E(e, n), n instanceof window.HTMLSelectElement && i.value != null)\n if (i.multiple === !0 && Array.isArray(i.value)) {\n const o = i.value.map((l) => String(l));\n n.querySelectorAll(\"option\").forEach(\n (l) => l.selected = o.includes(l.value)\n );\n } else\n n.value = i.value;\n M(i.ref, n);\n } else if (v(s))\n g(s.defaultProps) && (i = {\n ...s.defaultProps,\n ...i\n }), n = Y(s) ? ot(s, i, e) : s({\n ...i,\n children: e\n });\n else\n throw new TypeError(`Invalid JSX element type: ${s}`);\n return n;\n}\nfunction M(s, t) {\n G(s) ? s.current = t : v(s) && s(t);\n}\nfunction E(s, t) {\n if (W(s))\n rt(s, t);\n else if (B(s) || I(s))\n L(document.createTextNode(s), t);\n else if (s === null)\n L(document.createComment(\"\"), t);\n else if (U(s))\n L(s, t);\n else if (J(s)) {\n const e = t.attachShadow(s.attr);\n E(s.children, e), M(s.ref, e);\n }\n}\nfunction rt(s, t) {\n for (const e of [...s])\n E(e, t);\n return t;\n}\nfunction L(s, t) {\n t instanceof window.HTMLTemplateElement ? t.content.appendChild(s) : t.appendChild(s);\n}\nfunction C(s, t) {\n return s.replace(/[A-Z]/g, (e) => t + e.toLowerCase());\n}\nfunction K(s, t) {\n t == null || t === !1 || (Array.isArray(t) ? t.forEach((e) => K(s, e)) : B(t) ? s.setAttribute(\"style\", t) : g(t) && x(t, (e, i) => {\n i.indexOf(\"-\") === 0 ? s.style.setProperty(i, e) : I(e) && A[i] !== 0 ? s.style[i] = e + \"px\" : s.style[i] = e;\n }));\n}\nfunction lt(s, t, e) {\n switch (s) {\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n _(e, tt, C(s, \":\"), t);\n return;\n case \"xmlnsXlink\":\n b(e, C(s, \":\"), t);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n _(e, et, C(s, \":\"), t);\n return;\n }\n switch (s) {\n case \"htmlFor\":\n b(e, \"for\", t);\n return;\n case \"dataset\":\n x(t, (i, n) => {\n i != null && (e.dataset[n] = i);\n });\n return;\n case \"innerHTML\":\n case \"innerText\":\n case \"textContent\":\n F(t) && (e[s] = t);\n return;\n case \"dangerouslySetInnerHTML\":\n g(t) && (e.innerHTML = t.__html);\n return;\n case \"value\":\n if (t == null || e instanceof window.HTMLSelectElement)\n return;\n if (e instanceof window.HTMLTextAreaElement) {\n e.value = t;\n return;\n }\n break;\n case \"spellCheck\":\n e.spellcheck = t;\n return;\n case \"class\":\n case \"className\":\n v(t) ? t(e) : b(e, \"class\", T(t));\n return;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n K(e, t);\n return;\n case \"on\":\n case \"onCapture\":\n x(t, (i, n) => {\n e.addEventListener(n, i, s === \"onCapture\");\n });\n return;\n }\n if (v(t)) {\n if (s[0] === \"o\" && s[1] === \"n\") {\n let i = s.toLowerCase();\n const n = i.endsWith(\"capture\");\n if (i === \"ondoubleclick\" ? i = \"ondblclick\" : n && i === \"ondoubleclickcapture\" && (i = \"ondblclickcapture\"), !n && e[i] === null)\n e[i] = t;\n else if (n)\n e.addEventListener(\n i.substring(2, i.length - 7),\n t,\n !0\n );\n else {\n let o;\n i in window ? o = i.substring(2) : o = i[2] + s.slice(3), e.addEventListener(o, t);\n }\n }\n } else g(t) ? e[s] = t : t === !0 ? b(e, s, \"\") : t !== !1 && t != null && (e instanceof SVGElement && !it.test(s) ? b(e, C(s, \"-\"), t) : b(e, s, t));\n}\nfunction b(s, t, e) {\n s.setAttribute(t, e);\n}\nfunction _(s, t, e, i) {\n s.setAttributeNS(t, e, i);\n}\nfunction at(s, t) {\n for (const e of S(s))\n lt(e, s[e], t);\n return t;\n}\nvar P = /* @__PURE__ */ ((s) => (s.Init = \"modal.init\", s.BeforeShow = \"modal.beforeShow\", s.Show = \"modal.show\", s.BeforeClose = \"modal.beforeClose\", s.Close = \"modal.close\", s.Destroy = \"modal.destroy\", s.ToastShow = \"toast.show\", s.ToastClose = \"toast.close\", s))(P || {});\nlet ct = 0;\nconst z = (s) => `${s}-${++ct}`;\nfunction k(s) {\n return s instanceof Node ? s : document.createTextNode(String(s));\n}\nfunction m(s, t) {\n if (!s) throw new Error(`${t ?? \"Element\"} not found`);\n return s;\n}\nfunction H(s) {\n const t = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(\",\");\n return Array.from(s.querySelectorAll(t)).filter(\n (e) => !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)\n );\n}\nfunction h(s, t = {}) {\n const e = document.createElement(s);\n if (t.className && (e.className = t.className), t.html != null && (e.innerHTML = t.html), t.text != null && (e.textContent = t.text), t.attrs)\n for (const [i, n] of Object.entries(t.attrs)) e.setAttribute(i, n);\n return e;\n}\nconst ht = typeof navigator < \"u\" && /Mac|iPhone|iPad|iPod/i.test(navigator.platform), X = [\"ctrl\", \"alt\", \"shift\", \"meta\"];\nfunction dt(s) {\n if (!s) return null;\n const t = String(s).trim().toLowerCase().split(/[+\\-\\s]+/g).filter(Boolean), e = [];\n let i = null;\n const n = (l) => {\n e.includes(l) || e.push(l);\n };\n for (const l of t) {\n let r = l;\n if (r === \"control\" || r === \"ctrl\") {\n n(\"ctrl\");\n continue;\n }\n if (r === \"alt\" || r === \"option\") {\n n(\"alt\");\n continue;\n }\n if (r === \"shift\") {\n n(\"shift\");\n continue;\n }\n if (r === \"meta\" || r === \"cmd\" || r === \"command\" || r === \"super\") {\n n(\"meta\");\n continue;\n }\n if (r === \"mod\") {\n n(ht ? \"meta\" : \"ctrl\");\n continue;\n }\n r === \"esc\" && (r = \"escape\"), r === \"return\" && (r = \"enter\"), (r === \"space\" || r === \"spacebar\") && (r = \"space\"), i = r;\n }\n const o = X.filter((l) => e.includes(l));\n return !i || i === \"\" ? o.length ? o.join(\"+\") : null : o.length ? `${o.join(\"+\")}+${i}` : i;\n}\nfunction ft(s) {\n const t = [];\n s.ctrlKey && t.push(\"ctrl\"), s.altKey && t.push(\"alt\"), s.shiftKey && t.push(\"shift\"), s.metaKey && t.push(\"meta\");\n let e = s.key;\n e === \" \" && (e = \"space\");\n const i = (e.length === 1, e.toLowerCase()), n = X.filter((o) => t.includes(o));\n return n.length ? `${n.join(\"+\")}+${i}` : i;\n}\nclass ut {\n constructor() {\n this.zBase = 1e3, this.stack = [];\n }\n push(t) {\n this.stack.push(t), this.syncZ();\n }\n remove(t) {\n this.stack = this.stack.filter((e) => e !== t), this.syncZ();\n }\n top() {\n return this.stack[this.stack.length - 1];\n }\n closeAll(t, e) {\n const i = new Set((Array.isArray(e) ? e : e ? [e] : []).map(String)), n = new Set((Array.isArray(t) ? t : t ? [t] : []).map(String));\n [...this.stack].reverse().forEach((o) => {\n const l = o.modalId, r = n.size ? n.has(o.pluginName) : !0, a = i.has(l);\n r && !a && o.close();\n });\n }\n removeAll() {\n [...this.stack].forEach((t) => t.destroy()), this.stack = [];\n }\n syncZ() {\n this.stack.forEach((t, e) => t.setZIndex(this.zBase + e * 2));\n }\n lockBodyScroll() {\n document.body.classList.add(\"ipe-modal-no-scroll\");\n }\n unlockBodyScroll() {\n document.body.classList.remove(\"ipe-modal-no-scroll\");\n }\n}\nconst d = new ut();\nclass N {\n constructor(t = {}) {\n this.backdropId = z(\"ipe-modal-backdrop\"), this.modalId = z(\"ipe-modal\"), this.numberId = this.modalId.split(\"-\")[1], this._isDestroyed = !1, this.pluginName = \"normalModal\", this.buttonElsLeft = [], this.buttonElsRight = [], this.keyMap = /* @__PURE__ */ new Map(), this.isOpen = !1, this.isToast = !1, this.isDragging = !1, this.dragStartX = 0, this.dragStartY = 0, this.modalStartX = 0, this.modalStartY = 0, this.Event = P, this._hooks = [], this.startCloseTimer = (e) => {\n this.stopCloseTimer(), this.closeTimer = window.setTimeout(() => this.close(), e);\n }, this.stopCloseTimer = () => {\n this.closeTimer && window.clearTimeout(this.closeTimer), this.closeTimer = void 0;\n }, this.onDragMove = (e) => {\n if (!this.isDragging) return;\n e.preventDefault();\n const i = e.clientX - this.dragStartX, n = e.clientY - this.dragStartY, o = this.get$modal(), l = this.modalStartX + i, r = this.modalStartY + n;\n o.style.left = `${l}px`, o.style.top = `${r}px`;\n }, this.onDragEnd = () => {\n if (!this.isDragging) return;\n this.isDragging = !1, document.removeEventListener(\"pointermove\", this.onDragMove), document.removeEventListener(\"pointerup\", this.onDragEnd);\n const e = this.get$modal(), i = this.get$window();\n e.classList.remove(\"is-dragging\"), i.style.animation = \"none\", requestAnimationFrame(() => {\n this.applyAnimation(!0);\n });\n }, this.options = { ...N.DEFAULT_OPTIONS, ...t }, this.options.backdrop === !1 && t.bodyScroll === void 0 && (this.options.bodyScroll = !0);\n }\n get isDestroyed() {\n return this._isDestroyed;\n }\n static {\n this.DEFAULT_OPTIONS = {\n className: \"\",\n sizeClass: \"auto\",\n center: !0,\n fitScreen: !1,\n closeIcon: !0,\n bodyScroll: !1,\n outSideClose: !0,\n backdrop: !0,\n animation: {\n show: \"ipe-modal-fade-in\",\n hide: \"ipe-modal-fade-out\"\n },\n animationSpeed: 200\n };\n }\n static extends(t = {}) {\n return class extends this {\n constructor(e = {}) {\n super({ ...t, ...e });\n }\n };\n }\n // ------------------------------ lifecycle ------------------------------ //\n init() {\n if (this.$modal) return this;\n const t = this.options.backdrop !== !1;\n let e;\n t && (e = h(\"div\", {\n className: \"ipe-modal-backdrop\",\n attrs: { id: this.backdropId, \"data-modal-id\": this.modalId }\n }));\n const i = h(\"div\", {\n className: \"ipe-modal-modal\",\n attrs: { id: this.modalId, role: \"dialog\", \"aria-modal\": \"true\", tabindex: \"-1\" }\n });\n if (i.modal = this, !t) {\n i.classList.add(\"no-backdrop\");\n const w = window.pageYOffset || document.documentElement.scrollTop, $ = window.pageXOffset || document.documentElement.scrollLeft, D = window.innerWidth;\n i.style.top = `${w + 60}px`, this.once(\"modal.show\", () => {\n i.style.left = `${$ + D / 2 - i.offsetWidth / 2}px`;\n });\n }\n const n = h(\"div\", {\n className: `ipe-modal-modal__window size--${this.options.sizeClass || \"auto\"} plugin--${this.pluginName}`\n });\n n.modal = this;\n const o = h(\"div\", { className: \"ipe-modal-modal__header\" }), l = `${this.modalId}-title`, r = h(\"h2\", {\n className: \"ipe-modal-modal__title\",\n attrs: { id: l, role: \"heading\", \"aria-level\": \"2\" }\n });\n i.setAttribute(\"aria-labelledby\", l);\n const a = h(\"div\", { className: \"ipe-modal-modal__icons\" });\n if (this.options.closeIcon) {\n const w = h(\"button\", {\n className: \"ipe-modal-modal__close\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n html: \"×\"\n });\n w.addEventListener(\"click\", () => {\n let $ = !0;\n typeof this.options.onClickClose == \"function\" ? this.options.onClickClose(this) === !1 && ($ = !1) : this.options.onClickClose === !1 && ($ = !1), $ && this.close();\n }), a.appendChild(w);\n }\n o.append(r, a), !t && this.options.draggable && (o.style.cursor = \"move\", o.style.userSelect = \"none\", o.addEventListener(\"pointerdown\", this.onDragStart.bind(this)));\n const u = h(\"div\", { className: \"ipe-modal-modal__content\" }), f = h(\"div\", { className: \"ipe-modal-modal__footer\" }), y = h(\"div\", {\n className: \"ipe-modal-modal__buttons ipe-modal-modal__buttons--left\"\n }), O = h(\"div\", {\n className: \"ipe-modal-modal__buttons ipe-modal-modal__buttons--right\"\n });\n return f.append(y, O), n.append(o, u, f), i.appendChild(n), this.$backdrop = e, this.$modal = i, this.$window = n, this.$header = o, this.$title = r, this.$icons = a, this.$content = u, this.$footer = f, this.$buttonsLeft = y, this.$buttonsRight = O, this.options.title && this.setTitle(this.options.title), this.options.content && this.setContent(this.options.content), this.options.buttons?.length ? this.setButtons(this.options.buttons) : f.style.display = \"none\", this.options.center && this.$modal.classList.add(\"is-centered\"), this.options.fitScreen && this.$modal.classList.add(\"is-fullscreen\"), this.options.iconButtons && this.$header.classList.add(\"has-icon-buttons\"), this.options.className && this.$window.classList.add(...this.options.className.split(/[\\s\\.#+]+/g).filter(Boolean)), typeof this.options.fixedHeight == \"number\" ? this.$window.style.height = `${Math.max(0, this.options.fixedHeight)}px` : this.options.fixedHeight === !0 && this.$window.classList.add(\"is-fixed-height\"), e && e.addEventListener(\"pointerdown\", (w) => {\n this.options.outSideClose && w.target === e && this.close();\n }), this.onKeyDown = this.onKeyDown.bind(this), this.emit(\n \"modal.init\"\n /* Init */\n ), this;\n }\n show() {\n if (this.$modal || this.init(), !this.$modal) throw new Error(\"Failed to initialize modal\");\n if (this.isOpen) return this;\n {\n const i = this.emit(\"modal.beforeShow\", !0), n = this.options.beforeShow ? this.options.beforeShow(this) !== !1 : !0;\n if (!i || !n) return this;\n }\n this.lastFocused = document.activeElement ?? null, this.$backdrop && document.body.appendChild(this.$backdrop), document.body.appendChild(this.$modal), this.shouldLockBodyOnOpen() && d.lockBodyScroll(), requestAnimationFrame(() => {\n this.$backdrop?.classList.add(\"is-open\"), this.$modal.classList.add(\"is-open\"), this.applyAnimation(!0), this.focusFirst();\n }), document.addEventListener(\"keydown\", this.onKeyDown), d.push(this), this.isOpen = !0, this.options.onShow?.(this), this.emit(\n \"modal.show\"\n /* Show */\n );\n const t = typeof this.options.closeAfter == \"number\" ? this.options.closeAfter : this.options.closeAfter?.time, e = typeof this.options.closeAfter == \"number\" ? !0 : this.options.closeAfter?.resetOnHover;\n return t && (this.startCloseTimer(t), e && (this.$window?.addEventListener(\"mouseenter\", this.stopCloseTimer), this.$window?.addEventListener(\"mouseleave\", () => this.startCloseTimer(t)))), this;\n }\n close() {\n if (!this.isOpen) return this;\n {\n const o = this.emit(\"modal.beforeClose\", !0), l = this.options.beforeClose ? this.options.beforeClose(this) !== !1 : !0;\n if (!o || !l) return this;\n }\n if (this.isToast) {\n this.applyAnimation(!1), this.emit(\n \"modal.close\"\n /* Close */\n ), this.emit(\n \"toast.close\"\n /* ToastClose */\n );\n const o = this.isAnimationDisabled() ? 0 : this.options.animationSpeed ?? 200;\n let l = !1;\n const r = () => {\n l || (l = !0, this.destroy(), this.options.onClose?.(this));\n }, a = (u, f) => {\n const y = () => {\n u.removeEventListener(f, y), r();\n };\n u.addEventListener(f, y, { once: !0 });\n };\n return o > 0 && this.$window ? (a(this.$window, \"transitionend\"), a(this.$window, \"animationend\"), window.setTimeout(r, o + 20)) : window.setTimeout(r, o), this;\n }\n this.applyAnimation(!1), this.$backdrop?.classList.remove(\"is-open\"), this.$modal?.classList.remove(\"is-open\"), this.emit(\n \"modal.close\"\n /* Close */\n );\n const t = this.isAnimationDisabled() ? 0 : this.options.animationSpeed ?? 200;\n let e = !1;\n const i = () => {\n e || (e = !0, this.destroy(), this.options.onClose?.(this));\n }, n = (o, l) => {\n const r = () => {\n o.removeEventListener(l, r), i();\n };\n o.addEventListener(l, r, { once: !0 });\n };\n return t > 0 && this.$window ? (n(this.$window, \"transitionend\"), n(this.$window, \"animationend\"), window.setTimeout(i, t + 20)) : window.setTimeout(i, t), this;\n }\n /** Immediately removes DOM and listeners */\n destroy() {\n if (this._isDestroyed) return this;\n if (this.stopCloseTimer(), document.removeEventListener(\"keydown\", this.onKeyDown), this.isDragging && this.onDragEnd(), this.$window?.removeEventListener(\"mouseenter\", this.stopCloseTimer), this.isToast) {\n this.$window?.parentElement && this.$window.parentElement.removeChild(this.$window);\n const t = p.indexOf(this);\n t !== -1 && p.splice(t, 1);\n } else\n this.$backdrop?.parentElement && this.$backdrop.parentElement.removeChild(this.$backdrop), this.$modal?.parentElement && this.$modal.parentElement.removeChild(this.$modal), d.remove(this), this.shouldUnlockBodyOnClose() && d.unlockBodyScroll();\n return this.isOpen = !1, this.lastFocused?.focus?.(), this.emit(\n \"modal.destroy\"\n /* Destroy */\n ), this._isDestroyed = !0, this;\n }\n // ------------------------------ getters ------------------------------- //\n get$backdrop() {\n return this.$backdrop;\n }\n get$modal() {\n return m(this.$modal, \"modal\");\n }\n get$window() {\n return m(this.$window, \"window\");\n }\n get$header() {\n return m(this.$header, \"header\");\n }\n get$title() {\n return m(this.$title, \"title\");\n }\n get$content() {\n return m(this.$content, \"content\");\n }\n get$icons() {\n return m(this.$icons, \"icons\");\n }\n get$buttons(t) {\n return t === \"leftButtons\" ? m(this.$buttonsLeft, \"leftButtons\") : t === \"rightButtons\" ? m(this.$buttonsRight, \"rightButtons\") : m(this.$footer, \"buttons\");\n }\n // ------------------------------ content ------------------------------- //\n setTitle(t) {\n const e = this.get$title();\n return e.innerHTML = \"\", e.append(k(t)), this;\n }\n setContent(t, e = \"replace\") {\n const i = this.get$content();\n return e === \"replace\" ? (i.innerHTML = \"\", i.append(k(t))) : e === \"append\" ? i.append(k(t)) : i.prepend(k(t)), this;\n }\n setIcons(t) {\n const e = this.get$icons();\n e.innerHTML = \"\";\n for (const i of t) {\n const n = h(\"button\", {\n className: `ipe-modal-modal__icon ${i.className}`,\n attrs: { type: \"button\" }\n });\n n.addEventListener(\"click\", i.method), e.appendChild(n);\n }\n return this;\n }\n setButtons(t, e) {\n const i = this.$buttonsLeft, n = this.$buttonsRight;\n [i, n].forEach((l) => l.innerHTML = \"\"), this.buttonElsLeft = [], this.buttonElsRight = [], this.keyMap.clear();\n const o = e ?? this.$footer;\n if (o === this.$footer)\n t.forEach((l) => this.addButton(l)), t.length === 0 && (this.$footer.style.display = \"none\");\n else {\n o.innerHTML = \"\";\n for (const l of t) {\n const r = this.generateButton(l);\n o.appendChild(r);\n }\n }\n return this;\n }\n generateButton(t) {\n const e = t.type ?? \"button\", i = e === \"link\" ? h(\"a\") : h(\"button\", { attrs: { type: \"button\" } });\n t.id && (i.id = t.id), i.className = `ipe-modal-btn ${t.className ?? \"\"}`.trim();\n const n = k(t.label ?? \"OK\");\n if (i.append(n), e === \"link\" && t.href && (i.href = t.href), t.method && i.addEventListener(\"click\", (o) => {\n if (i._ipe_tmpDisabled) {\n o.preventDefault(), o.stopPropagation();\n return;\n }\n t.method.call(i, o, this);\n }), typeof t.closeAfter == \"number\" && t.closeAfter >= 0 && i.addEventListener(\"click\", () => {\n window.setTimeout(() => this.close(), t.closeAfter);\n }), typeof t.enableAfter == \"number\" && t.enableAfter > 0) {\n e === \"button\" && i.setAttribute(\"disabled\", \"true\"), i._ipe_tmpDisabled = !0, i.setAttribute(\"aria-disabled\", \"true\");\n const o = () => {\n e === \"button\" && i.removeAttribute(\"disabled\"), delete i._ipe_tmpDisabled, i.removeAttribute(\"aria-disabled\");\n };\n window.setTimeout(o, t.enableAfter);\n }\n if (t.keyPress) {\n const l = String(t.keyPress).split(/[\\,\\|]+/g).map((r) => r.trim()).filter(Boolean);\n for (const r of l) {\n const a = dt(r);\n a && this.keyMap.set(a, i);\n }\n }\n return i;\n }\n /** Dynamically add button(s) into footer. Supports insertion index per side. */\n addButton(t, e) {\n this.$footer && (this.$footer.style.display = \"\");\n const i = t.side ?? \"right\", n = i === \"left\" ? this.$buttonsLeft : this.$buttonsRight, o = i === \"left\" ? this.buttonElsLeft : this.buttonElsRight, l = this.generateButton(t), r = Math.max(0, Math.min(e ?? o.length, o.length));\n return r >= n.children.length ? n.appendChild(l) : n.insertBefore(l, n.children[r]), o.splice(r, 0, l), this;\n }\n /** Remove button by element / id / global index (left first, then right). */\n removeButton(t) {\n const e = this.buttonElsLeft, i = this.buttonElsRight, n = [...e, ...i];\n let o = null;\n if (t === \"*\")\n return n.forEach((r) => {\n this.keyMap.delete(r.id), r.parentElement?.removeChild(r);\n }), this.$footer && (this.$footer.style.display = \"none\"), this;\n if (typeof t == \"number\" ? o = n[t] ?? null : typeof t == \"string\" ? o = n.find((r) => r.id === t) ?? null : t instanceof HTMLElement && (o = n.find((r) => r === t) ?? null), !o) return this;\n for (const [r, a] of this.keyMap.entries()) a === o && this.keyMap.delete(r);\n let l = e.indexOf(o);\n return l !== -1 ? (e.splice(l, 1), o.parentElement?.removeChild(o)) : (l = i.indexOf(o), l !== -1 && (i.splice(l, 1), o.parentElement?.removeChild(o))), e.length === 0 && i.length === 0 && this.$footer && (this.$footer.style.display = \"none\"), this;\n }\n changePreviewState() {\n return this.get$modal().classList.toggle(\"is-fullscreen\"), this;\n }\n setModalHeight(t, e = \"height\") {\n const i = this.get$window(), n = Math.max(0, window.innerHeight - t);\n return i.style[e] = `${n}px`, n;\n }\n setOptions(t, e) {\n return typeof t == \"string\" ? this.options[t] = e : Object.assign(this.options, t), this;\n }\n setPluginName(t) {\n return this.$window && (this.$window.className = this.$window.className.replace(\n `plugin--${this.pluginName}`,\n `plugin--${t}`\n )), this.pluginName = t, this;\n }\n // ------------------------------ helpers ------------------------------- //\n applyAnimation(t) {\n const e = this.get$modal(), i = this.get$window(), n = this.$backdrop, o = this.options.modalAnimation ?? this.options.animation, l = typeof o == \"string\" ? o : o && (t ? o.show : o.hide), r = this.options.backdropAnimation ?? this.options.animation, a = typeof r == \"string\" ? r : r && (t ? r.show : r.hide);\n !l || l === !1 ? (e.style.transition = \"none\", i.style.animation = \"none\", i.style.removeProperty(\"--ipe-modal-anim\")) : (e.style.removeProperty(\"transition\"), i.style.setProperty(\"--ipe-modal-anim\", l)), n && (!a || a === !1 ? n.style.transition = \"none\" : n.style.removeProperty(\"transition\"));\n }\n on(t, e) {\n return this._hooks.push({ type: t, listener: e }), () => this.off(t, e);\n }\n off(t, e) {\n return this._hooks = this._hooks.filter(\n (i) => i.type !== t && (e ? i.listener !== e : !0)\n ), this;\n }\n once(t, e) {\n const i = this.on(t, (n) => (i(), e(n)));\n return i;\n }\n emit(t, e) {\n const i = this._hooks.filter((a) => a.type === t);\n let n = !0;\n for (const a of i) {\n const u = new CustomEvent(t, { detail: this, cancelable: e }), f = a.listener(u);\n if (u.defaultPrevented && (n = !1), f === !1 && (n = !1), !n) break;\n }\n const o = this.$modal ?? document.body, l = new CustomEvent(t, { detail: this, cancelable: e });\n return (!o.dispatchEvent(l) || l.defaultPrevented) && (n = !1), n;\n }\n focusFirst() {\n const t = this.get$modal(), e = H(t);\n e.length ? e[0].focus() : t.focus({ preventScroll: !0 });\n }\n onKeyDown(t) {\n if (d.top() !== this) return;\n if (t.key === \"Escape\") {\n t.preventDefault(), this.close();\n return;\n }\n const e = this.get$modal();\n if (!e.contains(document.activeElement)) return;\n if (t.key === \"Tab\") {\n const r = H(e);\n if (!r.length) return;\n const a = r[0], u = r[r.length - 1], f = document.activeElement;\n t.shiftKey && f === a ? (t.preventDefault(), u.focus()) : !t.shiftKey && f === u && (t.preventDefault(), a.focus());\n }\n const i = t.ctrlKey || t.altKey || t.metaKey, n = t.target;\n if (!i && (n && [\"INPUT\", \"TEXTAREA\"].includes(n.tagName) || n.contentEditable === \"true\"))\n return;\n const o = ft(t), l = this.keyMap.get(o);\n if (l) {\n t.preventDefault(), l.click();\n return;\n }\n }\n setZIndex(t) {\n this.$backdrop && (this.$backdrop.style.zIndex = String(t)), this.$modal && (this.$modal.style.zIndex = String(t + 1));\n }\n /** Bring this modal to the top of the stack. */\n bringToFront() {\n return d.remove(this), d.push(this), this;\n }\n isAnimationDisabled() {\n const t = this.options.modalAnimation ?? this.options.animation;\n return t === !1 || t == null;\n }\n shouldLockBodyOnOpen() {\n return this.options.backdrop === !1 || this.options.bodyScroll !== !1 ? !1 : !d.stack.some(\n (e) => e !== this && e.options.backdrop !== !1 && e.options.bodyScroll === !1\n );\n }\n shouldUnlockBodyOnClose() {\n return this.options.backdrop === !1 || this.options.bodyScroll !== !1 ? !1 : !d.stack.some(\n (e) => e !== this && e.options.backdrop !== !1 && e.options.bodyScroll === !1\n );\n }\n // ------------------------------ drag handlers ------------------------------- //\n onDragStart(t) {\n if (this.options.backdrop !== !1 || !this.options.draggable) return;\n t.preventDefault(), this.isDragging = !0, this.bringToFront(), this.dragStartX = t.clientX, this.dragStartY = t.clientY;\n const e = this.get$modal(), i = e.getBoundingClientRect();\n this.modalStartX = i.left + window.pageXOffset, this.modalStartY = i.top + window.pageYOffset, e.style.transform = \"none\", e.style.left = `${this.modalStartX}px`, e.style.top = `${this.modalStartY}px`, document.addEventListener(\"pointermove\", this.onDragMove), document.addEventListener(\"pointerup\", this.onDragEnd), e.classList.add(\"is-dragging\");\n }\n // ------------------------------ toast ------------------------------- //\n /** Show as toast (no backdrop, container stack). */\n showToast(t) {\n this.$window || this.init();\n const e = mt(t.position ?? \"top right\"), i = this.get$window();\n this.isToast = !0, i.style.pointerEvents = \"auto\", this.applyAnimation(!0), e.appendChild(i);\n const n = (typeof this.options.closeAfter == \"number\" ? this.options.closeAfter : this.options.closeAfter?.time) ?? 3e3, o = (typeof this.options.closeAfter == \"number\" ? !0 : this.options.closeAfter?.resetOnHover) ?? !0;\n return n > 0 && (this.startCloseTimer(n), o && (i.addEventListener(\"mouseenter\", this.stopCloseTimer), i.addEventListener(\"mouseleave\", () => this.startCloseTimer(n)))), this.isOpen = !0, this.options.onShow?.(this), p.push(this), this.emit(\n \"toast.show\"\n /* ToastShow */\n ), this.emit(\n \"modal.show\"\n /* Show */\n ), this;\n }\n // ------------------------------ static helpers --------------------------- //\n static show(t, e) {\n return new this(t).init().show();\n }\n static createObject(t, e) {\n return new this(t);\n }\n static close(t) {\n if (!t) {\n const o = d.top();\n return o?.close(), o;\n }\n const e = typeof t == \"string\" ? t : t.id, i = d.stack.find((o) => o.modalId === e);\n if (i)\n return i.close(), i;\n const n = p.find((o) => o.modalId === e);\n return n?.close(), n;\n }\n static closeAll(t, e) {\n const i = new Set((Array.isArray(e) ? e : e ? [e] : []).map(String)), n = new Set((Array.isArray(t) ? t : t ? [t] : []).map(String));\n return d.closeAll(t, e), [...p].forEach((o) => {\n const l = o.modalId, r = n.size ? n.has(o.pluginName) : !0, a = i.has(l);\n r && !a && o.close();\n }), d.top() ?? new N();\n }\n static removeAll() {\n d.removeAll(), [...p].forEach((t) => t.destroy());\n }\n static dialog(t, e) {\n const i = new this({\n sizeClass: \"dialog\",\n buttons: [\n {\n label: \"OK\",\n className: \"is-primary is-ghost\",\n method: (n, o) => {\n e?.(n, o), n.defaultPrevented || i.close();\n },\n keyPress: \"Enter\"\n }\n ],\n ...t\n });\n return i.init().show();\n }\n static confirm(t, e) {\n t.title ??= \"Confirm\", t.content ??= \"Are you sure you want to perform this action?\";\n const i = t.okBtn ?? { label: \"OK\", className: \"is-primary is-ghost\" }, n = t.cancelBtn ?? { label: \"Cancel\", className: \"is-danger is-ghost\" };\n return new this({\n sizeClass: \"dialog\",\n ...t,\n buttons: [\n {\n label: n.label,\n className: n.className,\n keyPress: \"n\",\n method: (l, r) => {\n e?.(!1, r, l), r.close();\n }\n },\n {\n label: i.label,\n className: i.className,\n keyPress: \"y\",\n method: (l, r) => {\n e?.(!0, r, l), l.defaultPrevented || r.close();\n }\n }\n ]\n }).init().show();\n }\n static getDefaultNotifyIcon(t) {\n switch (t) {\n case \"success\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-circle-check\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z\" })\n ]\n }\n );\n case \"error\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-alert-triangle\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M12 1.67c.955 0 1.845 .467 2.39 1.247l.105 .16l8.114 13.548a2.914 2.914 0 0 1 -2.307 4.363l-.195 .008h-16.225a2.914 2.914 0 0 1 -2.582 -4.2l.099 -.185l8.11 -13.538a2.914 2.914 0 0 1 2.491 -1.403zm.01 13.33l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -7a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z\" })\n ]\n }\n );\n case \"warning\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-alert-circle\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm.01 13l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -8a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z\" })\n ]\n }\n );\n case \"info\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-info-circle\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm0 9h-1l-.117 .007a1 1 0 0 0 0 1.986l.117 .007v3l.007 .117a1 1 0 0 0 .876 .876l.117 .007h1l.117 -.007a1 1 0 0 0 .876 -.876l.007 -.117l-.007 -.117a1 1 0 0 0 -.764 -.857l-.112 -.02l-.117 -.006v-3l-.007 -.117a1 1 0 0 0 -.876 -.876l-.117 -.007zm.01 -3l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007z\" })\n ]\n }\n );\n case \"dialog\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n class: \"icon icon-tabler icons-tabler-outline icon-tabler-message-dots\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M12 11v.01\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M8 11v.01\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M16 11v.01\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3z\" })\n ]\n }\n );\n case \"confirm\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-copy-check\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M18.333 6a3.667 3.667 0 0 1 3.667 3.667v8.666a3.667 3.667 0 0 1 -3.667 3.667h-8.666a3.667 3.667 0 0 1 -3.667 -3.667v-8.666a3.667 3.667 0 0 1 3.667 -3.667zm-3.333 -4c1.094 0 1.828 .533 2.374 1.514a1 1 0 1 1 -1.748 .972c-.221 -.398 -.342 -.486 -.626 -.486h-10c-.548 0 -1 .452 -1 1v9.998c0 .32 .154 .618 .407 .805l.1 .065a1 1 0 1 1 -.99 1.738a3 3 0 0 1 -1.517 -2.606v-10c0 -1.652 1.348 -3 3 -3zm1.293 9.293l-3.293 3.292l-1.293 -1.292a1 1 0 0 0 -1.414 1.414l2 2a1 1 0 0 0 1.414 0l4 -4a1 1 0 0 0 -1.414 -1.414\" })\n ]\n }\n );\n default:\n return null;\n }\n }\n static notify(t, e, i) {\n if (e?.overrideOther && [...p].forEach((r) => r.close()), typeof e.title > \"u\") {\n const r = t || \"Notification\";\n e.title = r[0].toUpperCase() + r.slice(1).toLowerCase();\n }\n const n = e.icon ?? this.getDefaultNotifyIcon(t);\n n && (n instanceof Element && n.classList.add(\"ipe-modal-notify-icon\"), e.title = /* @__PURE__ */ c(nt, { children: [\n n,\n e.title\n ] })), t === \"confirm\" && (typeof e.closeAfter > \"u\" && (e.closeAfter = 0), e.okBtn || (e.okBtn = { label: \"OK\" })), e.okBtn && (typeof e.okBtn != \"object\" && (e.okBtn = { label: \"OK\" }), e.okBtn.label ??= \"OK\", e.okBtn.className ??= \"is-primary is-text ok-btn\", e.okBtn.method = (r, a) => {\n i?.(!0, a, r), a.close();\n }), e.cancelBtn && (typeof e.cancelBtn != \"object\" && (e.cancelBtn = { label: \"Cancel\" }), e.cancelBtn.label ??= \"Cancel\", e.cancelBtn.className ??= \"is-danger is-text cancel-btn\", e.cancelBtn.method = (r, a) => {\n i?.(!1, a, r), a.close();\n }), e.buttons = [e.cancelBtn, e.okBtn, ...e.buttons ?? []].filter(\n Boolean\n );\n const o = `is-notify type-${t || \"default\"} ${e.className ?? \"\"}`, l = new this({\n ...e,\n className: o,\n sizeClass: \"auto\",\n center: !1,\n fitScreen: !1,\n closeIcon: !0,\n outSideClose: !1,\n bodyScroll: !0,\n buttons: e.buttons ?? []\n });\n return l.setPluginName(\"toast\"), l.showToast({\n position: e.position ?? \"top right\"\n });\n }\n}\nconst p = [];\nfunction mt(s = \"top right\") {\n const t = \"ipe-modal-toast-container\", e = `${t}-${s.replace(/[\\s-\\.|\\/]+/g, \"-\")}`;\n let i = document.getElementById(e);\n return i || (i = h(\"div\", {\n className: `${t} ${s}`,\n attrs: { id: e, \"data-position\": s }\n }), document.body.appendChild(i)), i;\n}\nexport {\n N as IPEModal,\n P as IPEModalEvent\n};\n//# sourceMappingURL=index.js.map\n","import { InPageEdit } from '@/InPageEdit'\r\nimport { IPEModal, IPEModalEvent, IPEModalOptions } from '@inpageedit/modal'\r\nimport '@inpageedit/modal/style.css'\r\n\r\nexport * from '@inpageedit/modal'\r\n\r\ndeclare module '@/InPageEdit' {\r\n export interface InPageEdit {\r\n modal: ModalService\r\n }\r\n}\r\n\r\n// Custom plugins\r\nexport class CustomIPEModal extends IPEModal {\r\n constructor(options: Partial<IPEModalOptions> = {}) {\r\n options.className ||= ''\r\n options.className += ' theme-ipe'\r\n options.modalAnimation ||= {\r\n show: 'ipe-modal-fade-in',\r\n hide: 'ipe-modal-fade-out',\r\n }\r\n super(options)\r\n }\r\n\r\n private _tmpDisabledActiveInputs?: NodeListOf<HTMLInputElement | HTMLButtonElement>\r\n setLoadingState(state: boolean) {\r\n this.get$window().classList.toggle('loading', state)\r\n // start loading\r\n if (state) {\r\n const activeInputs = this.get$window().querySelectorAll<HTMLInputElement | HTMLButtonElement>(\r\n 'input:not([disabled]),button:not([disabled])'\r\n )\r\n this._tmpDisabledActiveInputs = activeInputs\r\n activeInputs.forEach((el) => {\r\n el.disabled = true\r\n })\r\n this.get$content().append(\r\n <div\r\n id=\"ipe-modalLoadingWrapper\"\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\r\n zIndex: 2000,\r\n }}\r\n >\r\n <ProgressBar style={{ width: '80%', maxWidth: '800px' }} />\r\n </div>\r\n )\r\n } else {\r\n // stop loading\r\n this.get$window().querySelector('#ipe-modalLoadingWrapper')?.remove()\r\n const activeInputs = this._tmpDisabledActiveInputs\r\n if (activeInputs) {\r\n activeInputs.forEach((el) => {\r\n el.disabled = false\r\n })\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class ModalService {\r\n constructor(public ctx: InPageEdit) {\r\n ctx.set('modal', this)\r\n ctx.on('dispose', () => {\r\n CustomIPEModal.closeAll()\r\n })\r\n }\r\n IPEModal = CustomIPEModal\r\n IPEModalEvent = IPEModalEvent\r\n show = CustomIPEModal.show.bind(CustomIPEModal) as (\r\n ...args: Parameters<typeof CustomIPEModal.show>\r\n ) => CustomIPEModal\r\n createObject = CustomIPEModal.createObject.bind(CustomIPEModal) as (\r\n ...args: Parameters<typeof CustomIPEModal.createObject>\r\n ) => CustomIPEModal\r\n close = CustomIPEModal.close.bind(CustomIPEModal)\r\n closeAll = CustomIPEModal.closeAll.bind(CustomIPEModal)\r\n removeAll = CustomIPEModal.removeAll.bind(CustomIPEModal)\r\n dialog = CustomIPEModal.dialog.bind(CustomIPEModal) as (\r\n ...args: Parameters<typeof CustomIPEModal.dialog>\r\n ) => CustomIPEModal\r\n confirm = CustomIPEModal.confirm.bind(CustomIPEModal) as (\r\n ...args: Parameters<typeof CustomIPEModal.confirm>\r\n ) => CustomIPEModal\r\n notify = CustomIPEModal.notify.bind(CustomIPEModal) as (\r\n ...args: Parameters<typeof CustomIPEModal.notify>\r\n ) => CustomIPEModal\r\n}\r\n","/**\r\n * Transform a plain object into a URL search params string.\r\n *\r\n * @example\r\n * ```\r\n * makeURLSearchParams({ str: '123' }) // str=123\r\n * makeURLSearchParams({ num: 123 }) // num=123\r\n * makeURLSearchParams({ bool: true }) // bool=true\r\n * makeURLSearchParams({ arr: [1, 2, 3] }) // arr=1&arr=2&arr=3\r\n * makeURLSearchParams({ plainObj: { a: 1, b: 2 } }) // plainObj[a]=1&plainObj[b]=2\r\n * makeURLSearchParams({ obj: <object> }) // obj=<object>.toString() (if object is not a primitive type)\r\n * makeURLSearchParams({ empty: '' }) // empty=\r\n * makeURLSearchParams({ null: null, undefined: undefined }) // (ignored)\r\n * ```\r\n */\r\nexport const makeSearchParams = (params?: Record<string, any>): URLSearchParams => {\r\n if (!params) {\r\n return new URLSearchParams()\r\n }\r\n if (params instanceof URLSearchParams) {\r\n return params\r\n }\r\n if (typeof params !== 'object' || params?.constructor !== Object) {\r\n throw new TypeError('only plain object is supported')\r\n }\r\n\r\n const sp = new URLSearchParams()\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value === void 0 || value === null) {\r\n continue\r\n }\r\n if (Array.isArray(value)) {\r\n for (const item of value) {\r\n sp.append(key, item?.toString())\r\n }\r\n continue\r\n }\r\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\r\n for (const [objKey, objValue] of Object.entries(value)) {\r\n if (objValue !== void 0 && objValue !== null) {\r\n sp.set(`${key}[${objKey}]`, objValue?.toString())\r\n }\r\n }\r\n continue\r\n }\r\n sp.set(key, value?.toString())\r\n }\r\n return sp\r\n}\r\n\r\n/**\r\n * Create a URL object with the given parameters.\r\n *\r\n * @example\r\n * ```\r\n * makeURL('https://example.com?existing=1', { foo: 'bar' }, 'baz') // https://example.com?existing=1&foo=bar#baz\r\n */\r\nexport const makeURL = (url: string | URL, params?: Record<string, any>, hash?: string): URL => {\r\n const u = typeof url === 'string' ? new URL(url, window?.location?.origin) : new URL(url)\r\n\r\n const existingParams = new URLSearchParams(u.search)\r\n const newParams = makeSearchParams(params)\r\n for (const [key, value] of newParams.entries()) {\r\n existingParams.set(key, value)\r\n }\r\n\r\n u.search = existingParams.toString()\r\n u.hash = hash || ''\r\n return u\r\n}\r\n","import { Inject, InPageEdit, Logger, Schema, Service } from '@/InPageEdit'\nimport { WikiMetadata, WikiUserBlockInfo } from '@/types/WikiMetadata'\nimport { AbstactIPEStorageManager } from './storage'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n wiki: WikiMetadataService\n getUrl: WikiMetadataService['getUrl']\n getSciprtUrl: WikiMetadataService['getSciprtUrl']\n getMainpageUrl: WikiMetadataService['getMainpageUrl']\n }\n}\n\n@Inject(['api', 'storage'])\nexport class WikiMetadataService extends Service {\n private _data!: WikiMetadata\n private readonly CACHE_TTL = 1000 * 60 * 60 * 24 // 1 day\n private readonly VERSION = 2\n private db: AbstactIPEStorageManager<WikiMetadata>\n private logger: Logger\n private queryData = {\n meta: 'siteinfo|userinfo',\n siprop: 'general|specialpagealiases|namespacealiases|namespaces|magicwords',\n uiprop: 'groups|rights|blockinfo|options',\n }\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wiki', false)\n this.db = ctx.storage.createDatabse<WikiMetadata>('wiki-metadata', this.CACHE_TTL, this.VERSION)\n this.logger = ctx.logger('WIKI_METADATA')\n }\n\n get api() {\n return this.ctx.api\n }\n\n mwConfig = {\n get: ((key: string, fallback?: any) => {\n return window?.mw?.config?.get?.(key, fallback) ?? fallback\n }) as typeof mw.config.get,\n has: ((key: string) => {\n return window?.mw?.config?.exists?.(key) ?? false\n }) as typeof mw.config.exists,\n get values() {\n return ((window?.mw?.config as any)?.values || {}) as ReturnType<typeof mw.config.get>\n },\n }\n\n protected async start(): Promise<void> {\n const cached = await this.fetchFromCache()\n if (cached) {\n this._data = cached\n this.logger.debug('Using cached')\n } else {\n const meta = await this.fetchFromApi()\n this.saveToCache(meta)\n this._data = meta\n this.logger.debug('Fetched from API')\n }\n this.logger.info('loaded', this._data)\n\n this.ctx.set('getUrl', this.getUrl.bind(this))\n this.ctx.set('getSciprtUrl', this.getSciprtUrl.bind(this))\n this.ctx.set('getMainpageUrl', this.getMainpageUrl.bind(this))\n\n this.ctx.inject(['preferences'], (ctx) => {\n ctx.preferences.registerCustomConfig(\n 'WikiMetadataService',\n Schema.object({\n WikiMetadataService: Schema.const(\n <div>\n <h3>Wiki Informations</h3>\n <ul>\n <li>\n <strong>Site:</strong> {this.general.sitename} ({this.landingPageUrl})\n </li>\n <li>\n <strong>User</strong>: {this.userInfo.name} (ID: {this.userInfo.id})\n </li>\n <li>\n <strong>Groups</strong>: {this.userGroups.join(', ') || 'None'}\n </li>\n </ul>\n <p>\n <button\n onClick={(e) => {\n e.preventDefault()\n this.invalidateCache().then(() => {\n window.location.reload()\n })\n }}\n >\n Clear caches and reload page\n </button>\n </p>\n </div>\n ).role('raw-html'),\n }).description('WikiMetadataService'),\n 'general'\n )\n })\n }\n\n get metadataCacheId() {\n return this.ctx.api.config.baseURL\n }\n\n async fetchFromApi() {\n return this.api\n .get({\n action: 'query',\n ...this.queryData,\n })\n .then(({ data }) => {\n if (typeof data?.query?.general === 'undefined') {\n throw new Error('Invalid siteinfo')\n }\n return data.query\n })\n .catch((e) => {\n this.logger.error('Failed to fetch metadata', e)\n return Promise.reject(e)\n })\n }\n\n async fetchFromCache() {\n const key = this.metadataCacheId\n const userId = this.mwConfig.get('wgUserId', 0)\n const data = await this.db.get(key)\n if (data && typeof data === 'object' && !!data.general && data.userinfo.id === userId) {\n return data\n } else {\n this.logger.info(data ? 'Cache mis-match' : 'Missing cache')\n this.invalidateCache()\n return null\n }\n }\n async saveToCache(data: WikiMetadata) {\n const key = this.metadataCacheId\n return this.db.set(key, data)\n }\n async invalidateCache() {\n const key = this.metadataCacheId\n return this.db.delete(key)\n }\n\n // shortcuts\n\n get _raw() {\n return this._data\n }\n get general() {\n return this._data.general\n }\n get specialPageAliases() {\n return this._data.specialpagealiases\n }\n get namespaceAliases() {\n return this._data.namespacealiases\n }\n get namespaces() {\n return this._data.namespaces\n }\n get namespaceMap() {\n const map = Object.values(this.namespaces)\n .map((ns) => ({\n id: ns.id,\n canonical: ns.canonical,\n aliases: this.namespaceAliases\n .filter((alias) => alias.id === ns.id)\n .map((alias) => alias.alias),\n }))\n .sort((a, b) => a.id - b.id)\n Reflect.defineProperty(this, 'namespaceMap', {\n get: () => map,\n })\n return map\n }\n get magicWords() {\n return this._data.magicwords\n }\n get userInfo() {\n return this._data.userinfo\n }\n get userOptions() {\n return this.userInfo.options\n }\n get isUserBlocked() {\n return (\n this.userInfo.blockedbyid &&\n this.userInfo.blockexpiry &&\n new Date(this.userInfo.blockexpiry).getTime() > Date.now()\n )\n }\n get userGroups() {\n return this.userInfo.groups\n }\n get userRights() {\n return this.userInfo.rights\n }\n /**\n * Base URL, without trailing slash\n * @example \"https://mediawiki.org\"\n */\n get baseUrl() {\n const server = this.general.server\n if (server.startsWith('//')) {\n return `${window?.location?.protocol || 'https:'}//${server.slice(2)}`\n } else {\n return server\n }\n }\n /**\n * Home page URL of this wiki\n * @description Generally same as the Mainpage URL,\n * but after MediaWiki 1.34,\n * it can be set to the website root directory.\n * @example \"https://mediawiki.org/wiki/Main_Page\" (In most cases)\n * @example \"https://mediawiki.org/\" ($wgMainPageIsDomainRoot = true)\n */\n get landingPageUrl() {\n return this.general.base\n }\n get mainPageName() {\n return this.general.mainpage\n }\n /**\n * Exact Mainpage URL of this wiki\n * @example \"https://mediawiki.org/wiki/Main_Page\"\n */\n get mainPageUrl() {\n return this.getUrl(this.mainPageName)\n }\n /**\n * Article path, with the $1 placeholder\n * @example \"/wiki/$1\"\n */\n get articlePath() {\n return this.general.articlepath\n }\n /**\n * Script path, without trailing slash\n * @example \"/w\"\n */\n get scriptPath() {\n return this.general.scriptpath\n }\n /**\n * Article base URL, with the $1 placeholder\n * @example \"https://mediawiki.org/wiki/$1\"\n */\n get articleBaseUrl() {\n return `${this.baseUrl}${this.articlePath}`\n }\n /**\n * Script base URL, without trailing slash\n * @example \"https://mediawiki.org/w\"\n */\n get scriptBaseUrl() {\n return `${this.baseUrl}${this.scriptPath}`\n }\n\n // utils\n getSciprtUrl(name = 'index') {\n return `${this.scriptBaseUrl}/${name.replace(/\\.php$/, '')}.php`\n }\n\n /** Get mainpage URL */\n getMainpageUrl(params?: Record<string, any>): string {\n return makeURL(this._data.general.base, params).toString()\n }\n /** Get page URL by title */\n getUrl(title: string, params?: Record<string, any>): string\n /** Get page URL by page ID */\n getUrl(pageId: number, params?: Record<string, any>): string\n getUrl(titleOrPageId: string | number, params?: Record<string, any>): string {\n const searchParams = makeSearchParams(params)\n let url: URL\n if (typeof titleOrPageId === 'string' && titleOrPageId !== '') {\n url = new URL(`${this.articleBaseUrl.replace('$1', titleOrPageId)}`)\n } else if (typeof titleOrPageId === 'number') {\n searchParams.set('curid', titleOrPageId.toString())\n url = new URL(this.getSciprtUrl('index'))\n } else {\n url = new URL(this.getSciprtUrl('index'))\n }\n url.search = searchParams.toString()\n return url.toString()\n }\n\n hasRight(right: string) {\n return this.userRights.includes(right)\n }\n hasAnyRight(...rights: string[]) {\n return rights.some((right) => this.hasRight(right))\n }\n hasEveryRights(...rights: string[]) {\n return rights.every((right) => this.hasRight(right))\n }\n inGroup(name: string) {\n return this.userGroups.includes(name)\n }\n inAnyGroup(...names: string[]) {\n return this.userGroups.some((group) => names.includes(group))\n }\n getBlockInfo() {\n if (!this.isUserBlocked) return null\n return {\n blockid: this.userInfo.blockid!,\n blockedby: this.userInfo.blockedbyid!,\n blockedbyid: this.userInfo.blockedbyid!,\n blockreason: this.userInfo.blockreason!,\n blockedtimestamp: this.userInfo.blockedtimestamp!,\n blockexpiry: this.userInfo.blockexpiry!,\n } as WikiUserBlockInfo\n }\n}\n","export interface IDBStoreDefinition {\r\n dbName: string\r\n storeName: string\r\n dbPromise: Promise<IDBDatabase>\r\n}\r\n\r\nexport namespace IDBHelper {\r\n /** Promisify IDBRequest */\r\n export function promisifyRequest<T = unknown>(req: IDBRequest<T>) {\r\n return new Promise<T>((resolve, reject) => {\r\n req.onsuccess = () => resolve(req.result as T)\r\n req.onerror = () => reject(req.error)\r\n })\r\n }\r\n\r\n // -----------------------------\r\n // Connection & upgrade control\r\n // -----------------------------\r\n\r\n // Maintain a long-lived connection per database\r\n const _connections: Map<string, Promise<IDBDatabase>> = new Map()\r\n\r\n // Serialize per-db upgrade flows to avoid racing bumps\r\n const _upgradeLocks: Map<string, Promise<unknown>> = new Map()\r\n\r\n function runSerial<T>(key: string, job: () => Promise<T>): Promise<T> {\r\n const prev = _upgradeLocks.get(key) ?? Promise.resolve()\r\n const next = prev.then(job, job)\r\n // keep a handled promise so the chain doesn't reject\r\n _upgradeLocks.set(\r\n key,\r\n next.catch(() => {})\r\n )\r\n return next\r\n }\r\n\r\n /** Open a database with a cached long-lived connection. */\r\n export function openDatabase(dbName: string): Promise<IDBDatabase> {\r\n if (_connections.has(dbName)) return _connections.get(dbName) as Promise<IDBDatabase>\r\n\r\n const p = new Promise<IDBDatabase>((resolve, reject) => {\r\n const req = indexedDB.open(dbName)\r\n req.onupgradeneeded = () => {\r\n // no-op: stores are created lazily in createStore()\r\n }\r\n req.onsuccess = () => {\r\n const db = req.result\r\n // Auto-close & invalidate cache on versionchange to unblock upgrades elsewhere\r\n db.onversionchange = () => {\r\n try {\r\n db.close()\r\n } finally {\r\n _connections.delete(dbName)\r\n }\r\n }\r\n resolve(db)\r\n }\r\n req.onerror = () => reject(req.error)\r\n req.onblocked = () => {\r\n // Optional: could log or expose a callback; we'll just wait.\r\n }\r\n })\r\n\r\n _connections.set(dbName, p)\r\n return p\r\n }\r\n\r\n /** Close a given database connection (and drop cache). */\r\n export async function closeDatabase(dbName: string) {\r\n const p = _connections.get(dbName)\r\n if (!p) return\r\n try {\r\n ;(await p).close()\r\n } finally {\r\n _connections.delete(dbName)\r\n }\r\n }\r\n\r\n /** Close all cached database connections. */\r\n export async function closeAllDatabases() {\r\n const names = Array.from(_connections.keys())\r\n await Promise.all(names.map(closeDatabase))\r\n }\r\n\r\n /**\r\n * Ensure an object store exists. If missing, bump IDB version to create it.\r\n * Concurrent calls are serialized per db to avoid racing upgrades.\r\n */\r\n export async function createStore(dbName: string, storeName: string): Promise<IDBDatabase> {\r\n return runSerial(dbName, async () => {\r\n let db = await openDatabase(dbName)\r\n if (db.objectStoreNames.contains(storeName)) return db\r\n\r\n const newVersion = db.version + 1\r\n db.close()\r\n\r\n const p = new Promise<IDBDatabase>((resolve, reject) => {\r\n const req = indexedDB.open(dbName, newVersion)\r\n req.onupgradeneeded = () => {\r\n const udb = req.result\r\n if (!udb.objectStoreNames.contains(storeName)) {\r\n udb.createObjectStore(storeName)\r\n }\r\n }\r\n req.onsuccess = () => {\r\n const udb = req.result\r\n udb.onversionchange = () => {\r\n try {\r\n udb.close()\r\n } finally {\r\n _connections.delete(dbName)\r\n }\r\n }\r\n resolve(udb)\r\n }\r\n req.onerror = () => reject(req.error)\r\n req.onblocked = () => {\r\n // Optional: surface UI to close other tabs. We'll rely on versionchange in other contexts.\r\n }\r\n })\r\n\r\n _connections.set(dbName, p)\r\n return p\r\n })\r\n }\r\n\r\n /** Convenience: open & ensure store, return a store definition. */\r\n export async function openStore(dbName: string, storeName: string): Promise<IDBStoreDefinition> {\r\n return { dbName, storeName, dbPromise: createStore(dbName, storeName) }\r\n }\r\n\r\n // -----------------------------\r\n // Transactions\r\n // -----------------------------\r\n\r\n export async function withObjectStore<T>(\r\n store: IDBStoreDefinition,\r\n mode: IDBTransactionMode,\r\n fn: (os: IDBObjectStore) => Promise<T> | T\r\n ): Promise<T> {\r\n const db = await store.dbPromise\r\n const tx = db.transaction(store.storeName, mode)\r\n const os = tx.objectStore(store.storeName)\r\n\r\n const done = new Promise<void>((resolve, reject) => {\r\n tx.oncomplete = () => resolve()\r\n tx.onerror = () => reject(tx.error)\r\n tx.onabort = () => reject(tx.error)\r\n })\r\n\r\n try {\r\n const result = await fn(os)\r\n await done\r\n return result\r\n } catch (e) {\r\n try {\r\n tx.abort()\r\n } catch {}\r\n throw e\r\n }\r\n }\r\n\r\n // -----------------------------\r\n // KV helpers\r\n // -----------------------------\r\n\r\n export async function get<T = unknown>(\r\n store: IDBStoreDefinition,\r\n key: IDBValidKey\r\n ): Promise<T | undefined> {\r\n return withObjectStore<T | undefined>(store, 'readonly', async (os) => {\r\n const req = os.get(key)\r\n return promisifyRequest<T | undefined>(req)\r\n })\r\n }\r\n\r\n export async function set(\r\n store: IDBStoreDefinition,\r\n key: IDBValidKey,\r\n value: unknown\r\n ): Promise<void> {\r\n return withObjectStore<void>(store, 'readwrite', async (os) => {\r\n const req = os.put(value as any, key)\r\n await promisifyRequest(req)\r\n })\r\n }\r\n\r\n export async function del(store: IDBStoreDefinition, key: IDBValidKey): Promise<void> {\r\n return withObjectStore<void>(store, 'readwrite', async (os) => {\r\n const req = os.delete(key)\r\n await promisifyRequest(req)\r\n })\r\n }\r\n\r\n export async function clear(store: IDBStoreDefinition): Promise<void> {\r\n return withObjectStore<void>(store, 'readwrite', async (os) => {\r\n const req = os.clear()\r\n await promisifyRequest(req)\r\n })\r\n }\r\n\r\n export async function keys(store: IDBStoreDefinition): Promise<IDBValidKey[]> {\r\n return withObjectStore<IDBValidKey[]>(store, 'readonly', async (os) => {\r\n const anyOs: any = os\r\n if (typeof anyOs.getAllKeys === 'function') {\r\n const req = anyOs.getAllKeys()\r\n const res = await promisifyRequest<IDBValidKey[]>(req)\r\n return res\r\n }\r\n // Fallback: iterate by cursor\r\n const out: IDBValidKey[] = []\r\n await new Promise<void>((resolve, reject) => {\r\n const cursorReq = os.openKeyCursor()\r\n cursorReq.onsuccess = () => {\r\n const cursor = cursorReq.result\r\n if (!cursor) return resolve()\r\n out.push(cursor.key)\r\n cursor.continue()\r\n }\r\n cursorReq.onerror = () => reject(cursorReq.error)\r\n })\r\n return out\r\n })\r\n }\r\n\r\n export async function entries(store: IDBStoreDefinition): Promise<[IDBValidKey, any][]> {\r\n return withObjectStore(store, 'readonly', async (os) => {\r\n const items: [IDBValidKey, any][] = []\r\n // Prefer getAll/getAllKeys when available for fewer round-trips\r\n const anyOs: any = os\r\n if (typeof anyOs.getAll === 'function' && typeof anyOs.getAllKeys === 'function') {\r\n const [vals, ks] = await Promise.all([\r\n promisifyRequest<any[]>(anyOs.getAll()),\r\n promisifyRequest<IDBValidKey[]>(anyOs.getAllKeys()),\r\n ])\r\n for (let i = 0; i < ks.length; i++) items.push([ks[i], vals[i]])\r\n return items\r\n }\r\n // Fallback: cursor\r\n await new Promise<void>((resolve, reject) => {\r\n const cursorReq = os.openCursor()\r\n cursorReq.onsuccess = () => {\r\n const cursor = cursorReq.result as IDBCursorWithValue | null\r\n if (!cursor) return resolve()\r\n items.push([cursor.key, cursor.value])\r\n cursor.continue()\r\n }\r\n cursorReq.onerror = () => reject(cursorReq.error)\r\n })\r\n return items\r\n })\r\n }\r\n\r\n export function entriesIter(\r\n store: IDBStoreDefinition,\r\n batchSize = 100\r\n ): AsyncIterable<[IDBValidKey, any]> {\r\n return {\r\n [Symbol.asyncIterator]() {\r\n let buffer: [IDBValidKey, any][] = []\r\n let done = false\r\n let lastKey: IDBValidKey | undefined = undefined\r\n\r\n const fillBuffer = async () => {\r\n if (done) return\r\n buffer = []\r\n await withObjectStore(store, 'readonly', async (os) => {\r\n const range =\r\n lastKey === undefined ? undefined : IDBKeyRange.lowerBound(lastKey, /* open */ true)\r\n await new Promise<void>((resolve, reject) => {\r\n let count = 0\r\n const req = os.openCursor(range, 'next')\r\n req.onsuccess = () => {\r\n const cursor = req.result as IDBCursorWithValue | null\r\n if (!cursor || count >= batchSize) {\r\n resolve()\r\n return\r\n }\r\n buffer.push([cursor.key, cursor.value])\r\n lastKey = cursor.key\r\n count++\r\n cursor.continue()\r\n }\r\n req.onerror = () => reject(req.error)\r\n })\r\n if (buffer.length === 0) {\r\n done = true\r\n }\r\n })\r\n }\r\n\r\n return {\r\n async next(): Promise<IteratorResult<[IDBValidKey, any]>> {\r\n if (buffer.length === 0 && !done) {\r\n await fillBuffer()\r\n }\r\n if (buffer.length === 0) {\r\n return { value: undefined, done: true }\r\n }\r\n const value = buffer.shift()!\r\n return { value, done: false }\r\n },\r\n }\r\n },\r\n }\r\n }\r\n\r\n export function keysIter(store: IDBStoreDefinition, batchSize = 200): AsyncIterable<IDBValidKey> {\r\n const iter = entriesIter(store, batchSize)\r\n return {\r\n [Symbol.asyncIterator]() {\r\n const it = iter[Symbol.asyncIterator]()\r\n return {\r\n async next(): Promise<IteratorResult<IDBValidKey>> {\r\n const r = await it.next()\r\n if (r.done) return { value: undefined, done: true }\r\n return { value: r.value[0], done: false }\r\n },\r\n }\r\n },\r\n }\r\n }\r\n}\r\n\r\nexport class IDBStorage<K extends IDBValidKey, V> implements AsyncIterable<[K, V]> {\r\n private readonly store: IDBStoreDefinition\r\n private readonly iterBatch: number\r\n\r\n private constructor(store: IDBStoreDefinition, iterBatch = 128) {\r\n this.store = store\r\n this.iterBatch = iterBatch\r\n }\r\n\r\n static async open<K extends IDBValidKey, V>(\r\n dbName: string,\r\n storeName: string,\r\n iterBatch = 128\r\n ): Promise<IDBStorage<K, V>> {\r\n const store = await IDBHelper.openStore(dbName, storeName)\r\n return new IDBStorage<K, V>(store, iterBatch)\r\n }\r\n\r\n async get(key: K): Promise<V | undefined> {\r\n return IDBHelper.get<V>(this.store, key)\r\n }\r\n\r\n async set(key: K, value: V): Promise<this> {\r\n await IDBHelper.set(this.store, key, value)\r\n return this\r\n }\r\n\r\n async delete(key: K): Promise<boolean> {\r\n const existed = (await this.get(key)) !== undefined\r\n await IDBHelper.del(this.store, key)\r\n return existed\r\n }\r\n\r\n async has(key: K): Promise<boolean> {\r\n return (await this.get(key)) !== undefined\r\n }\r\n\r\n async clear(): Promise<void> {\r\n await IDBHelper.clear(this.store)\r\n }\r\n\r\n /**\r\n * @note expensive operation: iterates all keys to count them\r\n */\r\n async size(): Promise<number> {\r\n let n = 0\r\n for await (const _k of IDBHelper.keysIter(this.store, this.iterBatch)) n++\r\n return n\r\n }\r\n\r\n entries(batchSize = this.iterBatch): AsyncIterable<[K, V]> {\r\n const iter = IDBHelper.entriesIter(this.store, batchSize)\r\n return {\r\n [Symbol.asyncIterator]() {\r\n const it = iter[Symbol.asyncIterator]()\r\n return {\r\n async next(): Promise<IteratorResult<[K, V]>> {\r\n const r = await it.next()\r\n if (r.done) return { value: undefined, done: true }\r\n // 类型断言成 K,V\r\n return { value: [r.value[0] as K, r.value[1] as V], done: false }\r\n },\r\n }\r\n },\r\n }\r\n }\r\n\r\n keys(batchSize = this.iterBatch): AsyncIterable<K> {\r\n const iter = IDBHelper.entriesIter(this.store, batchSize)\r\n return {\r\n [Symbol.asyncIterator]() {\r\n const it = iter[Symbol.asyncIterator]()\r\n return {\r\n async next(): Promise<IteratorResult<K>> {\r\n const r = await it.next()\r\n if (r.done) return { value: undefined, done: true }\r\n return { value: r.value as unknown as K, done: false }\r\n },\r\n }\r\n },\r\n }\r\n }\r\n\r\n values(batchSize = this.iterBatch): AsyncIterable<V> {\r\n const entries = this.entries(batchSize)[Symbol.asyncIterator]()\r\n return {\r\n [Symbol.asyncIterator]() {\r\n return {\r\n async next(): Promise<IteratorResult<V>> {\r\n const r = await entries.next()\r\n if (r.done) return { value: undefined, done: true }\r\n return { value: r.value[1] as V, done: false }\r\n },\r\n }\r\n },\r\n }\r\n }\r\n\r\n [Symbol.asyncIterator](): AsyncIterator<[K, V]> {\r\n return this.entries(this.iterBatch)[Symbol.asyncIterator]()\r\n }\r\n\r\n async forEach(\r\n callback: (value: V, key: K, map: IDBStorage<K, V>) => void | Promise<void>\r\n ): Promise<void> {\r\n for await (const [k, v] of this.entries()) {\r\n await callback(v, k, this)\r\n }\r\n }\r\n\r\n async toArray(limit = Infinity): Promise<Array<[K, V]>> {\r\n const out: Array<[K, V]> = []\r\n let count = 0\r\n for await (const pair of this) {\r\n out.push(pair)\r\n if (++count >= limit) break\r\n }\r\n return out\r\n }\r\n}\r\n","import { InPageEdit, Service } from '@/InPageEdit.js'\r\nimport { IDBStoreDefinition, IDBHelper } from './IDBStorage.js'\r\n\r\ndeclare module '@/InPageEdit' {\r\n export interface InPageEdit {\r\n storage: StorageService\r\n }\r\n}\r\n\r\nexport class StorageService extends Service {\r\n constructor(ctx: InPageEdit) {\r\n super(ctx, 'storage', false)\r\n }\r\n\r\n createDatabse<T = any>(storeName: string, ttl?: number, version?: number) {\r\n return new IDBStorageManager<T>('InPageEdit', storeName, ttl, version)\r\n }\r\n}\r\n\r\nexport interface IPEStorageRecord<T = any> {\r\n /** last update time */\r\n time: number\r\n /** stored value */\r\n value: T\r\n /** version */\r\n version?: number\r\n}\r\n\r\nexport interface AbstactIPEStorageManager<T = unknown> {\r\n get(key: string, ttl?: number, setter?: () => Promise<any> | any): Promise<T | null>\r\n set(key: string, value: null | undefined): Promise<void>\r\n set(key: string, value: T): Promise<IPEStorageRecord<T>>\r\n has(key: string, ttl?: number): Promise<boolean>\r\n delete(key: string): Promise<void>\r\n iterate(callback: (value: T, key: string) => void): Promise<void>\r\n keys(): Promise<string[]>\r\n clear(): Promise<this>\r\n}\r\n\r\nexport class IDBStorageManager<T = unknown> implements AbstactIPEStorageManager<T> {\r\n readonly store: IDBStoreDefinition\r\n constructor(\r\n readonly dbName: string,\r\n readonly storeName: string,\r\n public ttl: number = Infinity,\r\n public version?: number\r\n ) {\r\n this.store = IDBStorageManager.createStore(dbName, storeName)\r\n IDBHelper.set(this.store, '_touched', Date.now())\r\n }\r\n\r\n private static _cached_stores: Map<string, IDBStoreDefinition> = new Map()\r\n private static createStore(dbName: string, storeName: string) {\r\n const key = `${dbName}:${storeName}`\r\n if (this._cached_stores.has(key)) {\r\n return this._cached_stores.get(key)!\r\n }\r\n const dbPromise = IDBHelper.createStore(dbName, storeName)\r\n const store: IDBStoreDefinition = { dbName, storeName, dbPromise }\r\n this._cached_stores.set(key, store)\r\n return store\r\n }\r\n\r\n async keys(): Promise<string[]> {\r\n const ks = await IDBHelper.keys(this.store)\r\n return ks.map((k) => String(k))\r\n }\r\n\r\n async get(key: string, ttl = this.ttl, setter?: () => Promise<T> | T): Promise<T | null> {\r\n const data = await this.loadFromDB(key)\r\n const isExpired = this.checkIfExpired(data, ttl)\r\n if (!data || isExpired) {\r\n if (typeof setter === 'function') {\r\n const newData = await setter()\r\n await this.set(key, newData as T)\r\n return newData as T\r\n }\r\n return null\r\n }\r\n return data.value\r\n }\r\n\r\n set(key: string, value: null | undefined): Promise<void>\r\n set(key: string, value: T): Promise<IPEStorageRecord<T>>\r\n async set(key: string, value: T | null | undefined): Promise<IPEStorageRecord<T> | void> {\r\n if (value === null || typeof value === 'undefined') {\r\n return this.delete(key)\r\n }\r\n const record: IPEStorageRecord<T> = {\r\n time: Date.now(),\r\n value,\r\n version: this.version,\r\n }\r\n await IDBHelper.set(this.store, key, record)\r\n return record\r\n }\r\n\r\n async has(key: string, ttl = this.ttl): Promise<boolean> {\r\n const data = await this.loadFromDB(key)\r\n const isExpired = this.checkIfExpired(data, ttl)\r\n return data !== null && !isExpired\r\n }\r\n\r\n async delete(key: string): Promise<void> {\r\n await IDBHelper.del(this.store, key)\r\n }\r\n\r\n async iterate(callback: (value: T, key: string) => void): Promise<void> {\r\n const all = await IDBHelper.entries(this.store)\r\n for (const [k, v] of all) {\r\n const key = String(k)\r\n const data = v as IPEStorageRecord<T> | null\r\n if (data && typeof (data as any).value !== 'undefined') {\r\n callback((data as IPEStorageRecord<T>).value, key)\r\n }\r\n }\r\n }\r\n\r\n private async loadFromDB(key: string) {\r\n const data = await IDBHelper.get<IPEStorageRecord<T>>(this.store, key)\r\n // Not exist\r\n if (!data) {\r\n return null\r\n }\r\n // Bad data\r\n if (typeof data.time !== 'number' || typeof data.value === 'undefined') {\r\n try {\r\n await this.delete(key)\r\n } catch (_) {}\r\n return null\r\n }\r\n // Version mismatch\r\n if (typeof this.version === 'number' && data.version !== this.version) {\r\n try {\r\n await this.delete(key)\r\n } catch (_) {}\r\n return null\r\n }\r\n return data\r\n }\r\n\r\n private checkIfExpired(data: IPEStorageRecord<T> | null, ttl = this.ttl) {\r\n if (!data) return false\r\n return Date.now() - data.time > ttl\r\n }\r\n\r\n /**\r\n * [DANGER] Use with caution!\r\n * Delete all data from the database.\r\n */\r\n async clear() {\r\n await IDBHelper.clear(this.store)\r\n return this\r\n }\r\n}\r\n","export enum WatchlistAction {\r\n preferences = 'preferences',\r\n watch = 'watch',\r\n unwatch = 'unwatch',\r\n nochange = 'nochange',\r\n}\r\n","import type { PageInfo } from './types/PageInfo'\nimport { PageParseData } from './types/PageParseData'\nimport { WatchlistAction } from './types/WatchlistAction'\nimport { MediaWikiApi, MwApiParams, MwApiResponse, FexiosFinalContext } from 'wiki-saikou/browser'\n\nexport interface WikiPageEditPayload {\n text?: string\n prependtext?: string\n appendtext?: string\n summary?: string\n watchlist?: WatchlistAction\n section?: number | 'new' | undefined\n}\n\nexport interface IWikiPage {\n pageInfo: PageInfo\n parse(params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{ parse: PageParseData }>>>\n preview(\n text: string,\n params?: MwApiParams\n ): Promise<FexiosFinalContext<MwApiResponse<{ parse: PageParseData }>>>\n edit(\n payload: WikiPageEditPayload,\n params?: MwApiParams\n ): Promise<FexiosFinalContext<MwApiResponse<{ success: boolean }>>>\n createOnly(\n payload: { text: string } & Pick<WikiPageEditPayload, 'summary' | 'watchlist'>,\n params?: MwApiParams\n ): Promise<FexiosFinalContext<MwApiResponse<{ success: boolean }>>>\n delete(\n reason?: string,\n params?: MwApiParams\n ): Promise<FexiosFinalContext<MwApiResponse<{ success: boolean }>>>\n moveTo(\n title: string,\n reason?: string,\n params?: Partial<\n MwApiParams & {\n movetalk: boolean\n movesubpages: boolean\n }\n >\n ): Promise<FexiosFinalContext<MwApiResponse<{ success: boolean }>>>\n userCan(action: keyof PageInfo['actions']): boolean\n userCanEdit(): boolean\n reloadSelfInfo(): Promise<this>\n // sugar getters (instance level)\n readonly pageid: PageInfo['pageid']\n readonly title: PageInfo['title']\n readonly ns: PageInfo['ns']\n readonly contentmodel: PageInfo['contentmodel']\n readonly fullurl: PageInfo['fullurl']\n readonly canonicalurl: PageInfo['canonicalurl']\n readonly editurl: PageInfo['editurl']\n readonly revisions: NonNullable<PageInfo['revisions']>\n readonly lastrevid: PageInfo['lastrevid']\n readonly templates: NonNullable<PageInfo['templates']>\n readonly images: NonNullable<PageInfo['images']>\n}\n\nexport interface WikiPageConstructor {\n // Constructor\n new (pageInfo: Partial<PageInfo>, loaded?: boolean): IWikiPage\n // Static members\n newFromApi(payload: MwApiParams): Promise<IWikiPage>\n newBlankPage(init?: Partial<PageInfo>): IWikiPage\n}\n\nexport function createWikiPageModel(api: MediaWikiApi): WikiPageConstructor {\n class WikiPage implements IWikiPage {\n private static readonly api = api\n readonly api = api\n public pageInfo: PageInfo\n static readonly DEFAULT_QUERY_PARAMS: MwApiParams = {\n action: 'query',\n prop: 'info|templates|transcludedin|images|pageimages|revisions',\n inprop: 'protection|url|varianttitles',\n intestactions: 'edit|move|delete',\n tllimit: 'max',\n tilimit: 'max',\n imlimit: 'max',\n piprop: 'thumbnail|name|original',\n pithumbsize: '200',\n pilimit: 'max',\n rvprop: 'ids|timestamp|flags|comment|user|content',\n rvslots: 'main',\n }\n static readonly DEFAULT_PAGE_INFO: PageInfo = {\n pageid: 0,\n ns: 0,\n title: '',\n contentmodel: 'wikitext',\n pagelanguage: '',\n pagelanguagehtmlcode: '',\n pagelanguagedir: 'ltr',\n touched: new Date().toISOString(),\n lastrevid: 0,\n length: 0,\n protection: [],\n restrictiontypes: [],\n fullurl: '',\n canonicalurl: '',\n editurl: '',\n varianttitles: {},\n actions: {\n edit: true,\n move: false,\n delete: false,\n },\n revisions: [],\n templates: [],\n images: [],\n }\n\n constructor(\n pageInfo: Partial<PageInfo>,\n public _loaded = true\n ) {\n // Handle modern MW content model slots\n pageInfo.revisions?.forEach((rev) => {\n // @ts-ignore\n if (typeof rev?.slots?.main === 'object') {\n Object.assign(rev, (rev as any).slots.main)\n }\n })\n this.pageInfo = {\n ...WikiPage.DEFAULT_PAGE_INFO,\n ...pageInfo,\n }\n }\n\n // Utils\n static async newFromApi(payload: MwApiParams) {\n const { data } = await this.api.get<{\n query: {\n pages: PageInfo[]\n }\n }>({\n ...WikiPage.DEFAULT_QUERY_PARAMS,\n ...payload,\n })\n const info = data?.query?.pages?.[0]\n if (!info || !info.title) {\n throw new Error('Invalid page info', { cause: data })\n }\n return new WikiPage(info, true)\n }\n static newBlankPage(init: Partial<PageInfo> = {}) {\n return new WikiPage(init, false)\n }\n\n // Page actions\n async parse(params?: MwApiParams) {\n return this.api.post({\n action: 'parse',\n page: this.pageInfo.title,\n prop: 'text|langlinks|categories|links|templates|images|externallinks|sections|revid|displaytitle|iwlinks|properties|parsewarnings',\n ...params,\n })\n }\n async preview(text: string, params?: MwApiParams) {\n return this.parse({\n action: 'parse',\n page: undefined,\n title: this.title,\n text,\n pst: 1,\n preview: 1,\n disableeditsection: 1,\n disablelimitreport: 1,\n ...params,\n })\n }\n async edit(payload: WikiPageEditPayload, params?: MwApiParams) {\n const {\n text,\n prependtext,\n appendtext,\n summary = '',\n watchlist = WatchlistAction.preferences,\n section,\n } = payload\n return this.api.postWithEditToken({\n action: 'edit',\n title: this.title,\n starttimestamp: this.pageInfo.touched,\n basetimestamp: this.revisions[0]?.timestamp,\n text,\n prependtext,\n appendtext,\n summary,\n watchlist,\n section,\n ...params,\n })\n }\n async createOnly(\n payload: { text: string; summary?: string; watchlist?: WatchlistAction },\n params?: MwApiParams\n ) {\n return this.edit(payload, { createonly: 1, ...params })\n }\n async delete(reason?: string, params?: MwApiParams) {\n return this.api.postWithEditToken({\n action: 'delete',\n pageid: this.pageInfo.pageid,\n reason,\n ...params,\n })\n }\n async moveTo(\n title: string,\n reason?: string,\n params?: Partial<\n MwApiParams & {\n movetalk: boolean\n movesubpages: boolean\n }\n >\n ) {\n return this.api.postWithEditToken({\n action: 'move',\n from: this.pageInfo.title,\n to: title,\n reason,\n movetalk: 1,\n movesubpages: 1,\n ...params,\n })\n }\n\n // === utilities ===\n\n userCan(action: keyof PageInfo['actions']) {\n const val = this.pageInfo?.actions?.[action]\n return !!val\n }\n userCanEdit() {\n return this.userCan('edit')\n }\n async reloadSelfInfo() {\n const page = await WikiPage.newFromApi({\n pageids: this.pageInfo.pageid,\n titles: this.pageInfo.title,\n })\n const revisions = (this.pageInfo.revisions || [])\n .concat(page.revisions || [])\n .sort((a, b) => a.revid - b.revid)\n .reduce(\n (acc, cur) => {\n if (!acc.find((rev) => rev.revid === cur.revid)) acc.push(cur)\n return acc\n },\n [] as Required<PageInfo>['revisions']\n )\n this.pageInfo = page.pageInfo\n this.pageInfo.revisions = revisions\n this._loaded = true\n return this\n }\n\n // === sugar getters ===\n get pageid() {\n return this.pageInfo.pageid\n }\n get title() {\n return this.pageInfo.title\n }\n get ns() {\n return this.pageInfo.ns\n }\n get contentmodel() {\n return this.pageInfo.contentmodel\n }\n get fullurl() {\n return this.pageInfo.fullurl\n }\n get canonicalurl() {\n return this.pageInfo.canonicalurl\n }\n get editurl() {\n return this.pageInfo.editurl\n }\n get revisions() {\n return this.pageInfo.revisions || []\n }\n get lastrevid() {\n return this.pageInfo.lastrevid\n }\n get templates() {\n return this.pageInfo.templates || []\n }\n get images() {\n return this.pageInfo.images || []\n }\n }\n\n return WikiPage as WikiPageConstructor\n}\n","import { Inject, InPageEdit, Service } from '@/InPageEdit'\nimport { createWikiPageModel, IWikiPage, WikiPageConstructor } from '@/models/WikiPage'\nimport { PageInfo } from '@/models/WikiPage/types/PageInfo'\nimport { IWikiTitle } from '@/models/WikiTitle/index.js'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n wikiPage: WikiPageService\n }\n}\n\nexport class WikiPageService extends Service {\n static readonly inject: Inject = ['api']\n WikiPage: WikiPageConstructor\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wikiPage', true)\n this.WikiPage = createWikiPageModel(this.ctx.api)\n }\n\n async createInstance(payload: Record<string, any>, noCache = false) {\n const page = await this.WikiPage.newFromApi(payload)\n return page\n }\n async newFromTitle(\n title: string | IWikiTitle,\n converttitles = false,\n rvsection?: number | string,\n noCache = false\n ) {\n return this.createInstance({ titles: title.toString(), converttitles, rvsection }, noCache)\n }\n async newFromPageId(pageid: number, rvsection?: number | string, noCache = false) {\n return this.createInstance({ pageids: pageid, rvsection }, noCache)\n }\n async newFromRevision(revid: number, rvsection?: number | string, noCache = false) {\n return await this.createInstance({ revids: revid, rvsection }, noCache)\n }\n newBlankPage(init: Partial<PageInfo> = {}) {\n return this.WikiPage.newBlankPage(init)\n }\n}\n\n// TODO: Currently not used\nclass WikiPageCache {\n private _cachedPages = new Map<string, IWikiPage>()\n getCacheByPayload(payload: Record<string, any>) {\n const title = payload.titles || ''\n const pageId = payload.pageids ? String(payload.pageids) : ''\n const revId = payload.revids ? String(payload.revids) : ''\n const section = payload.rvsection ? String(payload.rvsection) : 'full'\n let cacheKey = ''\n\n if (revId) {\n cacheKey = `rev:${revId}#${section}`\n } else if (pageId) {\n cacheKey = `pageid:${pageId}#section:${section}`\n } else if (title) {\n cacheKey = `title:${title}#section:${section}`\n }\n return this._cachedPages.get(cacheKey) || null\n }\n setCacheByPage(page: IWikiPage, section?: number | string) {\n const title = page.title || ''\n const pageId = page.pageid ? String(page.pageid) : ''\n const revId = page.revisions?.[0]?.revid ? String(page.revisions[0].revid) : ''\n const sectionStr = section !== void 0 ? String(section) : 'full'\n if (!pageId) {\n return page\n }\n const keys = [\n `rev:${revId}#section:${sectionStr}`,\n `pageid:${pageId}#section:${sectionStr}`,\n `title:${title}#section:${sectionStr}`,\n ]\n keys.forEach((cacheKey) => {\n this._cachedPages.set(cacheKey, page)\n })\n return page\n }\n removeCacheByPage(page: IWikiPage) {\n this._cachedPages.entries().forEach(([key, cachedPage]) => {\n if (cachedPage.pageid === page.pageid) {\n this._cachedPages.delete(key)\n }\n })\n return this\n }\n}\n","import { WikiMetadata } from '@/types/WikiMetadata'\n\n// 使用 WeakMap 避免内存泄漏\nconst caches = new WeakMap<WikiMetadata, WikiTitleConstructor>()\n\n// 命名空间查找索引\ninterface NamespaceIndex {\n byName: Map<string, number>\n byCanonical: Map<string, number>\n byAlias: Map<string, number>\n byNormalized: Map<string, number> // 标准化索引:全小写+下划线格式\n}\n\n// 特殊页面别名索引\ninterface SpecialPageIndex {\n byRealName: Map<string, string> // realname -> realname\n byAlias: Map<string, string> // alias -> realname\n byNormalized: Map<string, string> // normalized -> realname\n}\n\nexport interface IWikiTitle {\n /**\n * Get db key without namespace prefix\n * e.g. \"template:hello world\" -> \"Hello_world\"\n */\n getMainDBKey(): string\n\n /**\n * Get page name without namespace prefix\n * e.g. \"template:hello world\" -> \"Hello world\"\n */\n getMainText(): string\n\n /**\n * Get db key with namespace prefix\n * e.g. \"template:hello world\" -> \"Template:Hello_world\"\n */\n getPrefixedDBKey(): string\n\n /**\n * Get page name with namespace prefix\n * e.g. \"template:hello world\" -> \"Template:Hello world\"\n */\n getPrefixedText(): string\n\n // Shortcuts\n toText: () => string\n toString: () => string\n\n /**\n * Get namespace ID\n * e.g. \"template:hello world\" -> 10\n */\n getNamespaceId(): number\n\n /**\n * Get namespace text\n * e.g. \"template:hello world\" -> \"Template\"\n */\n getNamespaceText(): string\n\n /**\n * Get namespace db key\n * e.g. \"template talk:hello world\" -> \"Template_talk\"\n */\n getNamespaceDBKey(): string\n\n /**\n * Get subject page\n * If current page is subject page, return itself\n * e.g. \"template talk:hello world\" -> new WikiTitle(\"Template:Hello world\")\n */\n getSubjectPage(): IWikiTitle\n\n /**\n * Get talk page\n * If current page is talk page, return itself\n * If current page cannot have talk page, return null\n * e.g. \"template:hello world\" -> new WikiTitle(\"Template talk:Hello world\")\n */\n getTalkPage(): IWikiTitle | null\n\n /**\n * Get URL of the page\n * e.g. \"template:hello world\" -> \"https://example.com/wiki/Template:Hello_world\"\n */\n getURL(params?: Record<string, string> | URLSearchParams): URL\n\n /**\n * Reset current title with given title string\n */\n setTitle(title: string): IWikiTitle\n\n /**\n * Set main title, keep current ns, update dbkey\n */\n setMainText(mainTitle: string): IWikiTitle\n\n /**\n * Set namespace by text\n */\n setNamespaceText(namespaceText: string): IWikiTitle\n\n /**\n * Set namespace by ID\n */\n setNamespaceId(namespaceId: number): IWikiTitle\n\n /**\n * Check if the title is equal to another title\n */\n equals(other: IWikiTitle | string): boolean\n\n /**\n * Check if the title is specific special page\n * e.g. \"Special:Diff\" is \"差异\" or \"diff\" -> true\n */\n isSpecial(alia: string): boolean\n\n newTitle(title: string, namespace?: number): IWikiTitle\n}\n\nexport interface WikiTitleConstructor {\n new (title: string, namespace?: number): IWikiTitle\n create(title: string, namespace?: number): IWikiTitle\n}\n\n// 工具函数\nconst titleUtils = {\n toDBKey: (text: string): string => text.replace(/ /g, '_'),\n toNormalText: (text: string): string => text.replace(/_/g, ' '),\n ensureCase: (text: string, caseType: string): string => {\n if (caseType === 'first-letter') {\n return text.charAt(0).toUpperCase() + text.slice(1)\n } else {\n return text\n }\n },\n}\n\n// 特殊页面工具函数\nconst specialPageUtils = {\n /**\n * 标准化特殊页面名称:转换为全小写\n */\n normalizeSpecialPageName: (name: string): string => {\n return name.toLowerCase()\n },\n\n /**\n * 构建特殊页面别名索引\n */\n buildSpecialPageIndex: (metadata: WikiMetadata): SpecialPageIndex => {\n const byRealName = new Map<string, string>()\n const byAlias = new Map<string, string>()\n const byNormalized = new Map<string, string>()\n\n for (const specialPage of metadata.specialpagealiases) {\n const realName = specialPage.realname\n byRealName.set(realName, realName)\n\n // 添加标准化索引\n const normalizedRealName = specialPageUtils.normalizeSpecialPageName(realName)\n byNormalized.set(normalizedRealName, realName)\n\n // 处理别名\n for (const alias of specialPage.aliases) {\n byAlias.set(alias, realName)\n\n // 添加标准化的别名索引\n const normalizedAlias = specialPageUtils.normalizeSpecialPageName(alias)\n byNormalized.set(normalizedAlias, realName)\n }\n }\n\n return { byRealName, byAlias, byNormalized }\n },\n\n /**\n * 查找特殊页面的真实名称\n */\n findSpecialPageRealName: (name: string, index: SpecialPageIndex): string | null => {\n // 提取主部分(忽略子页面)\n const mainPart = name.split('/')[0]\n\n // 首先尝试原始输入(精确匹配)\n let result = index.byRealName.get(mainPart) ?? index.byAlias.get(mainPart)\n if (result !== undefined) {\n return result\n }\n\n // 标准化输入并查找\n const normalized = specialPageUtils.normalizeSpecialPageName(mainPart)\n return index.byNormalized.get(normalized) ?? null\n },\n}\n\n// 命名空间工具函数\nconst namespaceUtils = {\n /**\n * 标准化命名空间文本:转换为全小写+下划线格式\n */\n normalizeNamespaceText: (text: string): string => {\n return text\n .replace(/[_\\s]+/g, '_') // 将空格和下划线统一为下划线\n .toLowerCase()\n .replace(/^_+|_+$/g, '') // 移除首尾下划线\n },\n\n buildIndex: (metadata: WikiMetadata): NamespaceIndex => {\n const byName = new Map<string, number>()\n const byCanonical = new Map<string, number>()\n const byAlias = new Map<string, number>()\n const byNormalized = new Map<string, number>()\n\n // 构建命名空间索引\n for (const [id, ns] of Object.entries(metadata.namespaces)) {\n const nsId = parseInt(id)\n byName.set(ns.name, nsId)\n byCanonical.set(ns.canonical ?? '', nsId)\n\n // 添加标准化索引\n const normalizedName = namespaceUtils.normalizeNamespaceText(ns.name)\n const normalizedCanonical = namespaceUtils.normalizeNamespaceText(ns.canonical ?? '')\n byNormalized.set(normalizedName, nsId)\n byNormalized.set(normalizedCanonical, nsId)\n }\n\n // 构建别名索引\n for (const alias of metadata.namespacealiases) {\n byAlias.set(alias.alias, alias.id)\n\n // 添加标准化的别名索引\n const normalizedAlias = namespaceUtils.normalizeNamespaceText(alias.alias)\n byNormalized.set(normalizedAlias, alias.id)\n }\n\n return { byName, byCanonical, byAlias, byNormalized }\n },\n\n findNamespaceId: (namespaceText: string, index: NamespaceIndex): number | null => {\n // 首先尝试原始输入(精确匹配)\n let result =\n index.byName.get(namespaceText) ??\n index.byCanonical.get(namespaceText) ??\n index.byAlias.get(namespaceText)\n if (result !== undefined) {\n return result\n }\n\n // 标准化输入并查找\n const normalized = namespaceUtils.normalizeNamespaceText(namespaceText)\n return index.byNormalized.get(normalized) ?? null\n },\n\n isTalkPage: (ns: number): boolean => ns % 2 === 1 && ns > 0,\n\n getDefaultNamespaceInfo: (ns: number) => ({\n id: ns,\n name: '',\n canonical: '',\n case: 'first-letter' as const,\n content: false,\n nonincludable: false,\n subpages: false,\n }),\n}\n\nexport function createWikiTitleModel(metadata: WikiMetadata): WikiTitleConstructor {\n const exists = caches.get(metadata)\n if (exists) {\n return exists\n }\n\n // 预建命名空间索引\n const namespaceIndex = namespaceUtils.buildIndex(metadata)\n // 预建特殊页面索引\n const specialPageIndex = specialPageUtils.buildSpecialPageIndex(metadata)\n\n class WikiTitle implements IWikiTitle {\n static readonly _meta = metadata\n static readonly _namespaceIndex = namespaceIndex\n static readonly _specialPageIndex = specialPageIndex\n\n /** 缓存的 main title,不包含命名空间前缀,大小写和空格状态不确定 */\n #title: string\n /** 缓存的 namespace ID */\n #ns: number\n\n constructor(title: string, namespace?: number) {\n this.#title = title || ''\n this.#ns = namespace ?? 0\n\n // 只有在没有显式命名空间参数时才解析标题中的命名空间前缀\n if (namespace === void 0) {\n this.fixNSByTitle()\n }\n\n if (this.getMainText() === '') {\n throw new Error('Invalid title')\n }\n }\n\n static create(title: string, namespace?: number): WikiTitle {\n return new WikiTitle(title, namespace)\n }\n newTitle = WikiTitle.create.bind(WikiTitle)\n\n private fixNSByTitle(): void {\n const colonIndex = this.#title.indexOf(':')\n if (colonIndex === -1) {\n return // 没有命名空间前缀\n }\n\n if (colonIndex === 0) {\n // 只有冒号,将冒号后的部分作为标题\n this.#title = this.#title.substring(1)\n return\n }\n\n const potentialNamespace = this.#title.substring(0, colonIndex)\n const mainTitle = this.#title.substring(colonIndex + 1)\n\n // 查找匹配的命名空间\n const namespaceId = namespaceUtils.findNamespaceId(\n potentialNamespace,\n WikiTitle._namespaceIndex\n )\n if (namespaceId !== null) {\n this.#title = mainTitle\n this.#ns = namespaceId\n }\n }\n\n private getNamespaceInfo() {\n return (\n WikiTitle._meta.namespaces[this.#ns] ?? namespaceUtils.getDefaultNamespaceInfo(this.#ns)\n )\n }\n\n getMainDBKey(): string {\n const nsInfo = this.getNamespaceInfo()\n\n // 如果是特殊页面,将主部分替换为真实名称,保留子页面部分\n if (this.#ns === -1) {\n const realName = specialPageUtils.findSpecialPageRealName(\n this.#title,\n WikiTitle._specialPageIndex\n )\n if (realName) {\n // 构建包含子页面的完整标题\n const subPage = this.#title.includes('/')\n ? this.#title.substring(this.#title.indexOf('/'))\n : ''\n const fullTitle = realName + subPage\n return titleUtils.ensureCase(titleUtils.toDBKey(fullTitle), nsInfo.case)\n }\n }\n\n return titleUtils.ensureCase(titleUtils.toDBKey(this.#title), nsInfo.case)\n }\n\n getMainText(): string {\n const nsInfo = this.getNamespaceInfo()\n\n // 如果是特殊页面,将主部分替换为真实名称,保留子页面部分\n if (this.#ns === -1) {\n const realName = specialPageUtils.findSpecialPageRealName(\n this.#title,\n WikiTitle._specialPageIndex\n )\n if (realName) {\n // 构建包含子页面的完整标题\n const subPage = this.#title.includes('/')\n ? this.#title.substring(this.#title.indexOf('/'))\n : ''\n const fullTitle = realName + subPage\n return titleUtils.ensureCase(titleUtils.toNormalText(fullTitle), nsInfo.case)\n }\n }\n\n return titleUtils.ensureCase(titleUtils.toNormalText(this.#title), nsInfo.case)\n }\n\n private getMainRootText(): string {\n return this.getMainText().split('/')[0]\n }\n\n getPrefixedDBKey(): string {\n if (this.#ns === 0) {\n return this.getMainDBKey()\n }\n return `${this.getNamespaceDBKey()}:${this.getMainDBKey()}`\n }\n\n getPrefixedText(): string {\n if (this.#ns === 0) {\n return this.getMainText()\n }\n return `${this.getNamespaceText()}:${this.getMainText()}`\n }\n\n // aliases\n toText = this.getPrefixedText.bind(this)\n toString = this.getPrefixedDBKey.bind(this)\n\n getNamespaceId(): number {\n return this.#ns\n }\n\n getNamespaceText(): string {\n return this.getNamespaceInfo().name ?? ''\n }\n getNamespaceDBKey(): string {\n const nsInfo = this.getNamespaceInfo()\n return titleUtils.ensureCase(titleUtils.toDBKey(this.getNamespaceText()), nsInfo.case)\n }\n\n getSubjectPage(): IWikiTitle {\n if (namespaceUtils.isTalkPage(this.#ns)) {\n const subjectNs = this.#ns - 1\n return new WikiTitle(this.#title, subjectNs)\n }\n return this\n }\n\n getTalkPage(): IWikiTitle | null {\n if (namespaceUtils.isTalkPage(this.#ns)) {\n return this\n }\n\n // 特殊页面和媒体页面没有讨论页\n if (this.#ns < 0) {\n return null\n }\n\n const talkNs = this.#ns + 1\n const talkNsInfo = WikiTitle._meta.namespaces[talkNs.toString()]\n if (!talkNsInfo) {\n return null\n }\n\n return new WikiTitle(this.#title, talkNs)\n }\n\n getURL(params?: Record<string, string> | URLSearchParams): URL {\n const baseUrl = WikiTitle._meta.general.articlepath\n const prefixedDbKey = this.getPrefixedDBKey()\n\n // 替换 $1 占位符为页面标题,冒号不进行编码\n const path = baseUrl.replace('$1', prefixedDbKey)\n const url = new URL(path, WikiTitle._meta.general.base)\n\n if (params) {\n const searchParams =\n params instanceof URLSearchParams ? params : new URLSearchParams(params)\n\n searchParams.forEach((value, key) => {\n url.searchParams.set(key, value)\n })\n }\n\n return url\n }\n\n /**\n * 设置标题,重置当前实例的 dbkey 和 ns\n * @param title 新的标题字符串\n */\n setTitle(title: string): this {\n this.#title = title\n this.#ns = 0\n this.fixNSByTitle()\n return this\n }\n\n setMainText(text: string): this {\n this.#title = text\n return this\n }\n\n setNamespaceText(namespaceText: string): this {\n const namespaceId = namespaceUtils.findNamespaceId(namespaceText, WikiTitle._namespaceIndex)\n if (namespaceId !== null) {\n this.#ns = namespaceId\n }\n return this\n }\n\n setNamespaceId(namespaceId: number): this {\n this.#ns = namespaceId\n return this\n }\n\n equals(other: IWikiTitle | string): boolean {\n if (typeof other === 'string') {\n other = new WikiTitle(other)\n }\n return this.getPrefixedDBKey() === other.getPrefixedDBKey()\n }\n\n isSpecial(alia: string): boolean {\n // 如果不是特殊页面命名空间,直接返回 false\n if (this.#ns !== -1) {\n return false\n }\n const targetTitle = new WikiTitle(alia, -1)\n return this.getMainRootText() === targetTitle.getMainRootText()\n }\n\n toJSON(): Record<string, any> {\n return {\n ns: this.#ns,\n text: this.getMainText(),\n title: this.getPrefixedText(),\n url: this.getURL().toString(),\n isSpecial: this.#ns < 0,\n }\n }\n }\n\n caches.set(metadata, WikiTitle)\n return WikiTitle\n}\n","import { Inject, InPageEdit, Service } from '@/InPageEdit'\nimport { IWikiPage } from '@/models/WikiPage/index.js'\nimport { createWikiTitleModel, IWikiTitle, WikiTitleConstructor } from '@/models/WikiTitle/index.js'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n wikiTitle: WikiTitleService\n }\n}\n\nexport interface WikiLinkMetadata {\n title?: IWikiTitle\n pageId?: number\n revId?: number\n url: URL\n params: URLSearchParams\n hash: string\n action: 'view' | 'edit' | 'create' | 'diff' | string\n}\n\nexport class WikiTitleService extends Service {\n static readonly inject: Inject = ['wiki']\n\n readonly Title: WikiTitleConstructor\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wikiTitle', true)\n this.Title = createWikiTitleModel(this.ctx.wiki._raw)\n }\n private readonly logger = this.ctx.logger('WikiTitleService')\n\n newTitle(title: string, namespace?: number) {\n return new this.Title(title, namespace)\n }\n newMainPageTitle() {\n return this.newTitle(this.ctx.wiki.mainPageName)\n }\n async newTitleFromUrl(url: string | URL) {\n const linkInfo = this.parseWikiLink(url)\n if (linkInfo?.title) {\n return linkInfo.title\n } else if (linkInfo?.pageId) {\n return this.newTitleFromPageId(linkInfo.pageId)\n } else {\n return null\n }\n }\n private _cachedTitles = new Map<string, Promise<IWikiTitle | null>>()\n private async newTitleFromAnyId(\n payload: { title?: string; pageId?: number; revId?: number },\n noCache = false\n ) {\n const { title, pageId, revId } = payload ?? {}\n if (typeof title === 'string') {\n return this.newTitle(title)\n }\n let id: number | undefined = undefined\n let kind: 'pageid' | 'revid' | undefined = undefined\n if (revId) {\n id = parseInt(revId.toString(), 10)\n kind = 'revid'\n } else if (pageId) {\n id = parseInt(pageId.toString(), 10)\n kind = 'pageid'\n }\n if (!id || !kind || isNaN(id) || id <= 0) {\n throw new Error('Invalid id or kind', { cause: payload })\n }\n\n if (!noCache && this._cachedTitles.has(`${kind}:${id}`)) {\n return await this._cachedTitles.get(`${kind}:${id}`)!\n }\n const { promise, resolve, reject } = promiseWithResolvers<IWikiTitle | null>()\n this._cachedTitles.set(`${kind}:${id}`, promise)\n try {\n const { wikiPage } = await this.ctx.useScope(['wikiPage'])\n let page: IWikiPage | null = null\n if (kind === 'pageid') {\n page = await wikiPage.newFromPageId(id)\n } else if (kind === 'revid') {\n page = await wikiPage.newFromRevision(id)\n } else {\n throw new Error(`Invalid kind: ${kind}`)\n }\n resolve(this.newTitle(page.title))\n } catch (e) {\n this._cachedTitles.delete(`${kind}:${id}`)\n reject(e)\n }\n return promise\n }\n async newTitleFromPageId(pageId: number) {\n return this.newTitleFromAnyId({ pageId: pageId })\n }\n async newTitleFromRevision(revId: number) {\n return this.newTitleFromAnyId({ revId: revId })\n }\n\n /**\n * Resolve **special** special pages to it's real target\n *\n * If target is self or cannot be resolved, return null\n * @example\n * ```\n * Special:MyPage -> User:<username>\n * Special:Edit/Page_Title -> Page_Title\n * Special:NewSection/Page_Title -> Page_Title (section=new)\n * ```\n */\n resolveSpecialPageTarget(input: IWikiTitle | string): {\n title: IWikiTitle\n action?: string | undefined\n section?: number | 'new' | undefined\n } | null {\n const title = typeof input === 'string' ? this.newTitle(input) : input\n if (!title) {\n return null\n }\n if (title.getNamespaceId() !== -1) {\n return null\n }\n let titleText: string | undefined\n let section: number | 'new' | undefined = undefined\n let action = 'view'\n const sub = title.getMainDBKey().split('/').slice(1).join('/') || ''\n if (title.isSpecial('edit') && sub) {\n titleText = sub\n action = 'edit'\n } else if (title.isSpecial('talkpage') && sub) {\n const talkPage = title.newTitle(sub).getTalkPage()\n if (!talkPage) {\n return null\n }\n titleText = talkPage.getPrefixedDBKey()\n } else if (title.isSpecial('mypage')) {\n const userPage = title.newTitle(this.ctx.wiki.userInfo.name, 2)\n titleText = userPage.getPrefixedDBKey() + (sub ? `/${sub}` : '')\n } else if (title.isSpecial('mytalk')) {\n const userTalkPage = title.newTitle(this.ctx.wiki.userInfo.name, 3)\n titleText = userTalkPage.getPrefixedDBKey() + (sub ? `/${sub}` : '')\n } else if (title.isSpecial('newsection') && sub) {\n titleText = sub\n section = 'new'\n action = 'edit'\n } else {\n return null\n }\n\n return {\n title: new this.Title(titleText),\n section,\n action,\n }\n }\n\n // shortcuts\n private readonly wiki = this.ctx.wiki\n /**\n * @example \"https://example.com\"\n */\n private readonly wikiBaseUrl = this.wiki.baseUrl\n /**\n * Article path, with trailing slash\n * @example \"/wiki/\" (if wgArticlePath is \"/wiki/$1\")\n */\n private readonly wikiArticlePath = this.wiki.articlePath.replace('$1', '')\n /**\n * Article base URL, with trailing slash\n * @example \"https://example.com/wiki/\" (if wgArticlePath is \"/wiki/$1\")\n */\n private readonly wikiArticleBaseUrl = this.wiki.articleBaseUrl.replace('$1', '')\n /**\n * Script base URL, **without** trailing slash\n * @example \"https://example.com/w\" (if wgScriptPath is \"/w\")\n */\n private readonly wikiIndexPhpUrl = this.wiki.getSciprtUrl('index.php')\n\n isWikiLink(url: string): boolean {\n return (\n url.startsWith(this.wikiArticleBaseUrl) ||\n url.startsWith(this.wikiIndexPhpUrl) ||\n // Some servers allow index.php to be omitted\n url.startsWith(`${this.wikiBaseUrl}/?`)\n )\n }\n\n static readonly REG_SKIPPED_HREF = /^(#|javascript:|vbscript:|file:)/i\n validateHrefAttr(href: string | null): boolean {\n if (typeof href !== 'string') {\n return false\n }\n return !WikiTitleService.REG_SKIPPED_HREF.test(href)\n }\n\n parseWikiLink(link: string | URL): WikiLinkMetadata | null {\n if (!link) {\n return null\n }\n\n if (typeof link === 'string' && !this.validateHrefAttr(link)) {\n return null\n }\n\n const url = makeURL(link)\n if (!this.isWikiLink(url.toString())) {\n return null\n }\n const params = url.searchParams\n const hash = url.hash.replace('#', '')\n const action = params.get('action') || 'view'\n const titleParam = params.get('title') || ''\n const curid = parseInt(params.get('curid') || '0', 10)\n const oldid = parseInt(params.get('oldid') || '0', 10)\n let titleText =\n titleParam ||\n (() => {\n try {\n return decodeURIComponent(url.pathname.substring(this.wikiArticlePath.length))\n } catch (e) {\n this.logger.error('parseLink', url, e)\n return ''\n }\n })()\n if (titleText.endsWith('index.php')) {\n titleText = ''\n }\n\n let title: IWikiTitle | undefined = undefined\n let pageId: number | undefined = undefined\n let revId: number | undefined = undefined\n // 此处的优先级遵循 MediaWiki 对 url 参数处理的优先级\n if (oldid) {\n revId = oldid\n } else if (curid) {\n pageId = curid\n } else if (titleText) {\n title = this.newTitle(titleText)\n } else {\n // 无任何有效参数\n if (url.origin + url.pathname === this.ctx.wiki.landingPageUrl) {\n // 但 url 是 landingPageUrl,则认为是主页\n title = this.newMainPageTitle()\n } else {\n return null\n }\n }\n\n return {\n title,\n pageId,\n revId,\n url,\n params,\n hash,\n action,\n }\n }\n}\n","export type ComputeAble<T> = (() => T | Promise<T>) | T\r\nconst isFunction = (value: any): value is Function => typeof value === 'function'\r\nexport async function computeFallback<T>(value: ComputeAble<T>): Promise<T> {\r\n if (isFunction(value)) {\r\n return await value()\r\n } else {\r\n return value\r\n }\r\n}\r\n","import { Inject, InPageEdit, Schema, Service } from '@/InPageEdit.js'\r\nimport { IPEStorageRecord, AbstactIPEStorageManager } from '@/services/storage/index.js'\r\nimport { computeFallback, ComputeAble } from '@/utils/computeable.js'\r\n\r\ndeclare module '@/InPageEdit' {\r\n export interface InPageEdit {\r\n preferences: PreferencesService\r\n }\r\n}\r\n\r\nexport interface InPageEditPreferenceUICategory {\r\n name: string\r\n label: string\r\n description?: string\r\n index?: number\r\n}\r\n\r\nexport interface InPageEditPreferenceUIRegistryItem {\r\n name: string\r\n schema: Schema\r\n category: string\r\n}\r\n\r\n@Inject(['storage'])\r\nexport class PreferencesService extends Service {\r\n private db: AbstactIPEStorageManager<any>\r\n public customRegistries: InPageEditPreferenceUIRegistryItem[] = []\r\n public categoryDefinitions: InPageEditPreferenceUICategory[] = []\r\n private _defaultPreferences: Record<string, any> = {}\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, 'preferences', true)\r\n this.db = ctx.storage.createDatabse<any>('preferences', Infinity)\r\n }\r\n\r\n get logger() {\r\n return this.ctx.logger('PREFERENCES')\r\n }\r\n\r\n async start() {\r\n this.defineCategory({\r\n name: 'general',\r\n label: 'General',\r\n description: 'General settings',\r\n })\r\n this.defineCategory({\r\n name: 'edit',\r\n label: 'Editing',\r\n description: 'Settings related to editing content',\r\n })\r\n }\r\n\r\n async get<T = any>(key: string, fallback?: ComputeAble<T>): Promise<T | null> {\r\n fallback ??= () => {\r\n const defaultValue = this.getDefaultValue(key)\r\n this.logger.debug(key, `(fallback value: ${defaultValue})`)\r\n return defaultValue as T\r\n }\r\n const value = (await this.db.get(key, undefined)) as T | null\r\n return value !== null ? value : ((await computeFallback(fallback)) as T)\r\n }\r\n\r\n getDefaultValue(key: string): unknown {\r\n return (this._defaultPreferences[key] ??= this.loadDefaultConfigs()[key])\r\n }\r\n\r\n set<T = any>(key: string, value: T): Promise<IPEStorageRecord<T> | void> {\r\n const defaultValue = this.getDefaultValue(key)\r\n if (value === defaultValue) {\r\n return this.db.delete(key)\r\n } else {\r\n return this.db.set(key, value)\r\n }\r\n }\r\n\r\n async getAll() {\r\n const data = this.loadDefaultConfigs()\r\n await this.db.iterate((value: IPEStorageRecord, key: string) => {\r\n data[key] = value\r\n })\r\n return data\r\n }\r\n\r\n private loadDefaultConfigs() {\r\n const data = {} as Record<string, any>\r\n this.getConfigRegistries().forEach((item) => {\r\n // 首先读取 schema 上的默认值\r\n try {\r\n const defaultValues = item.schema({}) as any\r\n Object.entries(defaultValues).forEach(([key, val]) => {\r\n data[key] = val\r\n })\r\n } catch {}\r\n })\r\n\r\n Object.entries(data).forEach(([key, val]) => {\r\n this._defaultPreferences[key] = val\r\n })\r\n\r\n return data\r\n }\r\n\r\n registerCustomConfig(name: string, schema: Schema, category: string) {\r\n this.customRegistries.push({\r\n name,\r\n schema,\r\n category,\r\n })\r\n return this\r\n }\r\n\r\n getConfigRegistries(category?: string): InPageEditPreferenceUIRegistryItem[] {\r\n return Array.from(this.ctx.registry.entries())\r\n .map<{\r\n name: string\r\n schema: Schema\r\n }>(([plugin]) => {\r\n if (plugin === null) {\r\n return {\r\n name: '@root',\r\n schema: (InPageEdit as any)?.PreferencesSchema || null,\r\n }\r\n } else {\r\n return {\r\n name: plugin.name,\r\n schema: (plugin as any)?.PreferencesSchema || null,\r\n }\r\n }\r\n })\r\n .filter((item) => item.schema !== null)\r\n .map((item) => {\r\n return {\r\n ...item,\r\n category: item.schema.meta.category || 'general',\r\n }\r\n })\r\n .concat(this.customRegistries)\r\n .filter((item) => !category || item.category === category)\r\n }\r\n\r\n defineCategory(category: InPageEditPreferenceUICategory) {\r\n const index = this.categoryDefinitions.findIndex((tab) => tab.name === category.name)\r\n if (index < 0) {\r\n this.categoryDefinitions.push(category)\r\n } else {\r\n this.categoryDefinitions[index] = category\r\n }\r\n this.categoryDefinitions.sort((a, b) => {\r\n return (a.index ?? 0) - (b.index ?? 0)\r\n })\r\n return this\r\n }\r\n\r\n getConfigCategories() {\r\n return this.categoryDefinitions\r\n }\r\n}\r\n","export enum Endpoints {\r\n ANALYTICS_API_BASE = 'https://analytics.ipe.wiki/api',\r\n ANALYTICS_DASH_URL = 'https://analytics.ipe.wiki',\r\n GITHUB_URL = 'https://github.com/inpageedit/inpageedit-next',\r\n HOME_URL = 'https://www.ipe.wiki/',\r\n UPDATE_LOGS_URL = 'https://www.ipe.wiki/changelogs/',\r\n}\r\n","import { Context, Inject, Events as CordisEvents } from '@cordisjs/core'\r\nimport Schema from 'schemastery'\r\nimport { LoggerLevel, createLogger, type Logger } from '@inpageedit/logger'\r\nimport { deepMerge, FexiosConfigs } from 'wiki-saikou'\r\nimport { ApiService } from '@/services/ApiService.js'\r\nimport { CurrentPageService } from '@/services/CurrentPageService'\r\nimport { ResourceLoaderService } from '@/services/ResourceLoaderService.js'\r\nimport { ModalService } from '@/services/ModalService.js'\r\nimport { WikiMetadataService } from '@/services/WikiMetadataService.js'\r\nimport { StorageService } from '@/services/storage/index.js'\r\nimport { WikiPageService } from '@/services/WikiPageService.js'\r\nimport { WikiTitleService } from '@/services/WikiTitleService.js'\r\nimport '@/styles/index.scss'\r\nimport { PreferencesService } from './services/PreferencesService'\r\n\r\nexport interface InPageEditCoreConfig {\r\n apiConfigs: Partial<FexiosConfigs>\r\n legacyPreferences: Record<string, any>\r\n logLevel: number\r\n autoloadStyles: boolean\r\n}\r\n\r\n/**\r\n * ✏️ InPageEdit NEXT\r\n *\r\n * 🚀 Modular, Extensible Supercharged Plugin for MediaWiki\r\n *\r\n * @author dragon-fish <dragon-fish@qq.com>\r\n * @license MIT\r\n * @see https://github.com/inpageedit/inpageedit-next\r\n * @see https://www.ipe.wiki/\r\n */\r\nexport class InPageEdit extends Context {\r\n readonly version: string = import.meta.env.__VERSION__ || '0.0.0'\r\n\r\n public config: InPageEditCoreConfig\r\n static DEFAULT_CONFIG: InPageEditCoreConfig = {\r\n apiConfigs: {},\r\n legacyPreferences: {},\r\n logLevel: import.meta.env.DEV ? LoggerLevel.debug : LoggerLevel.info,\r\n autoloadStyles: true,\r\n }\r\n Endpoints = Endpoints\r\n readonly schema = Schema\r\n readonly logger: Logger\r\n\r\n constructor(config?: Partial<InPageEditCoreConfig>) {\r\n super({\r\n name: 'InPageEdit',\r\n })\r\n this.config = deepMerge(InPageEdit.DEFAULT_CONFIG, config)\r\n this.logger = createLogger({\r\n name: 'IPE',\r\n color: '#33aaff',\r\n level: this.config.logLevel,\r\n })\r\n this.#initCoreServices()\r\n this.#initCorePlugins()\r\n this.#initCoreAssets()\r\n }\r\n\r\n async #initCoreServices() {\r\n this.plugin(ApiService, this.config.apiConfigs)\r\n this.plugin(CurrentPageService)\r\n this.plugin(ResourceLoaderService)\r\n this.plugin(ModalService)\r\n this.plugin(PreferencesService)\r\n this.plugin(StorageService)\r\n this.plugin(WikiMetadataService)\r\n this.plugin(WikiPageService)\r\n this.plugin(WikiTitleService)\r\n\r\n // 标记内置服务,所以用户即使忘记 inject 也能使用\r\n this.#markServiceAsBuiltIn([\r\n 'api',\r\n 'currentPage',\r\n 'resourceLoader',\r\n 'modal',\r\n 'preferences',\r\n 'storage',\r\n 'wikiPage',\r\n 'wikiTitle',\r\n // WikiMetadataService\r\n 'wiki',\r\n 'getUrl',\r\n 'getSciprtUrl',\r\n 'getMainpageUrl',\r\n ])\r\n }\r\n\r\n #markServiceAsBuiltIn(services: string | string[]) {\r\n if (typeof services === 'string') {\r\n services = [services]\r\n }\r\n if (!Array.isArray(services) || services.length === 0) return this\r\n for (const name of services) {\r\n const internal = this[InPageEdit.internal][name]\r\n if (internal?.type === 'service') {\r\n internal.builtin = true\r\n }\r\n }\r\n return this\r\n }\r\n\r\n // TODO: 这里不应该硬编码,暂时先这样\r\n async #initCorePlugins() {\r\n const plugins = [\r\n import('@/plugins/in-article-links/index.js').then(\r\n ({ PluginInArticleLinks }) => PluginInArticleLinks\r\n ),\r\n import('@/plugins/preferences-ui/index.js').then(\r\n ({ PluginPreferencesUI }) => PluginPreferencesUI\r\n ),\r\n import('@/plugins/quick-edit/index.js').then(({ PluginQuickEdit }) => PluginQuickEdit),\r\n import('@/plugins/quick-delete/index.js').then(({ PluginQuickDelete }) => PluginQuickDelete),\r\n import('@/plugins/quick-move/index.js').then(({ PluginQuickMove }) => PluginQuickMove),\r\n import('@/plugins/quick-preview/index.js').then(\r\n ({ PluginQuickPreview }) => PluginQuickPreview\r\n ),\r\n import('@/plugins/quick-diff/index.js').then(({ PluginQuickDiff }) => PluginQuickDiff),\r\n import('@/plugins/quick-redirect/index.js').then(\r\n ({ PluginQuickRedirect }) => PluginQuickRedirect\r\n ),\r\n import('@/plugins/toolbox/index.js').then(({ PluginToolbox }) => PluginToolbox),\r\n ]\r\n plugins.forEach(async (plugin) => {\r\n this.plugin(await plugin)\r\n })\r\n\r\n if (import.meta.env.DEV) {\r\n this.plugin((await import('@/plugins/_debug/index.js')).default)\r\n }\r\n }\r\n\r\n // TODO: 应该抽象到 PluginTheme 中去,暂时先硬编码\r\n async #initCoreAssets() {\r\n this.inject(['resourceLoader'], (ctx) => {\r\n if (\r\n import.meta.env.PROD &&\r\n import.meta.env.VITE_BUILD_FORMAT === 'import' &&\r\n this.config.autoloadStyles\r\n ) {\r\n ctx.resourceLoader.loadStyle(import.meta.resolve('./style.css'))\r\n }\r\n })\r\n }\r\n\r\n async useScope(inject: Inject) {\r\n const { promise, resolve } = promiseWithResolvers<this>()\r\n this.inject(inject, (ctx) => {\r\n resolve(ctx)\r\n })\r\n return promise\r\n }\r\n}\r\n\r\n// 导出依赖包以便用户使用\r\nexport { default as Schema } from 'schemastery'\r\nexport * from '@inpageedit/logger'\r\n\r\n// 类型体操\r\nexport { Inject, Service } from '@cordisjs/core'\r\nexport interface Events<C extends InPageEdit = InPageEdit> extends CordisEvents<C> {}\r\nexport interface InPageEdit {\r\n [InPageEdit.events]: Events<this>\r\n}\r\n","export function capitalize(source: string) {\r\n return source.charAt(0).toUpperCase() + source.slice(1)\r\n}\r\n\r\nexport function uncapitalize(source: string) {\r\n return source.charAt(0).toLowerCase() + source.slice(1)\r\n}\r\n\r\nexport function camelCase(source: string) {\r\n return source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase())\r\n}\r\n\r\nexport function paramCase(source: string) {\r\n return uncapitalize(source)\r\n .replace(/_/g, '-')\r\n .replace(/.[A-Z]+/g, (str) => str[0] + '-' + str.slice(1).toLowerCase())\r\n}\r\n\r\nexport function snakeCase(source: string) {\r\n return uncapitalize(source)\r\n .replace(/-/g, '_')\r\n .replace(/.[A-Z]+/g, (str) => str[0] + '_' + str.slice(1).toLowerCase())\r\n}\r\n\r\nexport function trimSlash(source: string) {\r\n return source.replace(/\\/+$/, '')\r\n}\r\n\r\nexport function ensureSlash(source: string) {\r\n return source.endsWith('/') ? source : source + '/'\r\n}\r\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\r\nimport { snakeCase } from '@/utils/string'\r\n\r\ninterface DisposeHandler {\r\n (ctx: InPageEdit): Promise<void> | void\r\n}\r\n\r\nexport default class BasePlugin<ConfigType extends unknown = any> {\r\n #name!: string\r\n public config: ConfigType\r\n private disposeHandlers: DisposeHandler[] = []\r\n /** 依赖注入 */\r\n static inject?: Inject = []\r\n /** 可重用? */\r\n static reusable = false\r\n /** 插件的偏好设置模式 */\r\n static PreferencesSchema?: Schema\r\n\r\n constructor(\r\n public ctx: InPageEdit,\r\n config: ConfigType = undefined as unknown as ConfigType,\r\n name?: string\r\n ) {\r\n this.name = name || ''\r\n this.config = config || ({} as ConfigType)\r\n const { promise, resolve, reject } = Promise.withResolvers<void>()\r\n queueMicrotask(() => {\r\n if (!this.name) {\r\n this.name = this.constructor.name\r\n }\r\n try {\r\n const ret = this.start()\r\n if (ret && typeof (ret as Promise<unknown>).then === 'function') {\r\n ;(ret as Promise<unknown>)\r\n .then(() => resolve())\r\n .catch((err) => {\r\n this.logger.error('start() returns a rejected promise', err)\r\n reject(err)\r\n })\r\n } else {\r\n resolve()\r\n }\r\n } catch (err) {\r\n this.logger.error('start() threw synchronously', err)\r\n reject(err)\r\n }\r\n\r\n promise.then(() => {\r\n this.logger.debug('started')\r\n })\r\n promise.catch((e) => {\r\n this.logger.error('start failed', e)\r\n this.ctx.scope.dispose()\r\n })\r\n })\r\n this.ctx.once('dispose', () => {\r\n this.disposeHandlers.forEach((fn) => fn(this.ctx))\r\n this.stop()\r\n this.logger.debug('disposed')\r\n })\r\n }\r\n\r\n protected start(): Promise<void> | void {}\r\n protected stop(): Promise<void> | void {}\r\n protected addDisposeHandler(fn: DisposeHandler) {\r\n this.disposeHandlers.push(fn)\r\n }\r\n protected removeDisposeHandler(fn: DisposeHandler) {\r\n this.disposeHandlers = this.disposeHandlers.filter((f) => f !== fn)\r\n }\r\n\r\n set name(name: string) {\r\n this.#name = snakeCase(name).toUpperCase()\r\n }\r\n get name() {\r\n return this.#name\r\n }\r\n\r\n get logger() {\r\n return this.ctx.logger(this.name)\r\n }\r\n}\r\n","import '@/polyfills'\nimport { InPageEdit as IPECore } from '@/InPageEdit'\nimport { Endpoints } from './constants/endpoints.js'\n\nexport * from '@/InPageEdit'\nexport { default as BasePlugin } from '@/plugins/BasePlugin'\n\n// Safe guard\nwindow.RLQ ||= []\nwindow.__IPE_MODULES__ ||= []\n\n// Auto load if the site is MediaWiki\nrunOnce('InPageEdit#autoload', () => {\n const baseURL = detectMediaWikiApiEndpoint()\n if (baseURL) {\n autoload({\n baseURL,\n CoreClass: IPECore,\n })\n }\n})\nasync function autoload(\n _overload: {\n baseURL?: string\n CoreClass: typeof IPECore\n } = { baseURL: detectMediaWikiApiEndpoint(), CoreClass: IPECore }\n) {\n const { baseURL, CoreClass: IPE } = _overload\n\n // 防止多次运行\n if (typeof window?.ipe?.stop === 'function') {\n console.warn('[InPageEdit] Already loaded, disposing...')\n await window.ipe.stop()\n }\n\n const oldGlobalVar: any = window.InPageEdit || {}\n const ipe = new IPE({\n apiConfigs: {\n baseURL,\n },\n legacyPreferences: oldGlobalVar?.myPreferences || {},\n })\n\n // Merge into global variables\n window.InPageEdit = IPE\n window.ipe = ipe\n\n // Start the App\n await ipe.start()\n\n // Trigger the mw.hook\n window.RLQ.push(() => {\n mw.hook('InPageEdit.ready').fire(ipe)\n })\n\n // Initialize global modules\n if (Array.isArray(window.__IPE_MODULES__)) {\n const installedModules = [] as any[]\n while (window.__IPE_MODULES__.length) {\n try {\n const payload = window.__IPE_MODULES__.shift()\n typeof payload === 'function' && payload?.(ipe)\n installedModules.push(payload)\n } catch (error) {\n console.error('[InPageEdit] Failed to initialize module:', error)\n }\n }\n window.__IPE_MODULES__ = {\n push: (payload) => {\n typeof payload === 'function' && payload(ipe)\n installedModules.push(payload)\n },\n }\n ipe.on('dispose', () => {\n window.__IPE_MODULES__ = installedModules\n })\n }\n\n // 花里胡哨的加载提示\n ipe.logger('AUTOLOAD').info(\n '\\n' +\n ' ____ ____ ______ ___ __ \\n / _/___ / __ \\\\____ _____ ____ / ____/___/ (_) /_\\n / // __ \\\\/ /_/ / __ `/ __ `/ _ \\\\/ __/ / __ / / __/\\n _/ // / / / ____/ /_/ / /_/ / __/ /___/ /_/ / / /_ \\n/___/_/ /_/_/ \\\\__,_/\\\\__, /\\\\___/_____/\\\\__,_/_/\\\\__/ \\n /____/ v' +\n ipe.version +\n `\n- Wiki API Endpoint: ${baseURL}\n- Documentation: ${Endpoints.HOME_URL}\n- Bug Reports: ${Endpoints.GITHUB_URL}`\n )\n}\n\nfunction detectMediaWikiApiEndpoint(): string | undefined {\n const isMediaWiki =\n document.querySelector('meta[name=\"generator\"][content^=\"MediaWiki\"]') !== null\n const apiBase = document\n .querySelector<HTMLLinkElement>('link[rel=\"EditURI\"]')\n ?.href?.split('?')[0]\n return isMediaWiki && apiBase ? apiBase : undefined\n}\n\nfunction runOnce(key: string, fn: Function) {\n const sym = Symbol.for(key)\n if ((window as any)[sym]) {\n return false\n }\n ;(window as any)[sym] = true\n fn()\n return true\n}\n\n// Global types declaration\ndeclare global {\n const InPageEdit: typeof IPECore\n const ipe: IPECore\n interface Window {\n InPageEdit: typeof IPECore\n ipe: IPECore\n __IPE_MODULES__: {\n push(payload: (ipe: IPECore) => void): void\n }\n }\n}\n\n// MediaWiki ResourceLoader Queue\ndeclare global {\n interface Window {\n RLQ: {\n push(callback: () => void): void\n push(depAndCallback: [string, () => void]): void\n push(depsAndCallback: [string[], () => void]): void\n }\n }\n}\n\n// declare mw.hook\ndeclare global {\n namespace mw {\n /**\n * @see https://doc.wikimedia.org/mediawiki-core/master/js/Hook.html\n * @see https://github.com/wikimedia-gadgets/types-mediawiki/blob/9b4e7c3b9034d64a44a0667229a6d9585fe09b30/mw/hook.d.ts\n */\n interface Hook<T extends any[] = any[]> {\n add(...handler: Array<(...data: T) => any>): this\n deprecate(msg: string): this\n fire(...data: T): this\n remove(...handler: Array<(...data: T) => any>): this\n }\n function hook(name: 'InPageEdit.ready'): Hook<[IPECore]>\n }\n}\n\n// HMR\nif (import.meta.hot) {\n const SEPARATOR = `\\n${'='.repeat(20)} [InPageEdit] HMR ${'='.repeat(20)}\\n`\n import.meta.hot.accept(async (modules) => {\n const apiBase = detectMediaWikiApiEndpoint()!\n const IPE = modules?.InPageEdit as unknown as typeof IPECore\n if (!apiBase || !IPE) {\n console.warn(SEPARATOR.trimStart(), 'missing modules', SEPARATOR.trimEnd())\n location.reload()\n return\n }\n\n console.info(SEPARATOR.trimStart(), \"I'm so hot!\", modules, SEPARATOR.trimEnd())\n await window?.ipe?.stop()\n window.ipe = undefined as any\n window.InPageEdit = undefined as any\n autoload({\n baseURL: apiBase,\n CoreClass: IPE,\n })\n })\n}\n"],"names":["promiseWithResolvers","resolve","reject","res","rej","__defProp","__name","target","value","noop","isNullable","isNonNullable","isPlainObject","data","filterKeys","object","filter","key","mapValues","transform","pick","source","keys","forced","result","omit","defineProperty","contain","array1","array2","item","intersection","difference","union","deduplicate","array","remove","list","index","makeArray","is","type","value2","isArrayBufferLike","isArrayBufferSource","Binary","Binary2","fromSource","toBase64","binary","bytes","i","fromBase64","c","toHex","byte","fromHex","hex","buffer","clone","refs","cached","result2","descriptor","deepEqual","a","b","strict","check","test","then","a2","b2","viewA","viewB","capitalize","uncapitalize","camelCase","str","tokenize","delimiters","delimiter","output","state","code","next","paramCase","snakeCase","formatProperty","trimSlash","sanitize","Time","Time2","timezoneOffset","setTimezoneOffset","offset","getTimezoneOffset","getDateNumber","date","fromDateNumber","numeric","timeRegExp","unit","parseTime","capture","parseDate","parsed","format","ms","abs","toDigits","length","template","template2","time","symbols","GeneratorFunction","AsyncGeneratorFunction","isConstructor","func","resolveConfig","plugin","config","schema","isUnproxyable","constructor","joinPrototype","proto1","proto2","isObject","getTraceable","ctx","noTrap","tracker","createTraceable","withProps","props","target2","prop","receiver","withProp","createShadow","property","origin","createShadowMethod","outer","shadow","thisArg","args","arg","args2","thisArg2","arg2","newTarget","proxy","innerValue","innerTracker","applyTraceable","createCallable","name","proto","self","ReflectService","_ReflectService","defineProperty2","internal","error","lines","oldValue","dispose","ctx2","builtin","options","aliases","mixins","entries","getTarget","disposables","service","mixin","callback","reflect_default","isBailed","Lifecycle","defineProperty3","listener","method","Context","level","param","runtime","scopes","scope","checkInject","hooks","hook","label","events_default","CordisError","_CordisError","message","CordisError2","EffectScope","parent","disposed","original","wrapped","remove2","defineProperty4","task","reason","inject","isNullable2","acceptor","resolved","modified","checkPropertyUpdate","hasUpdate","ignored","shouldRestart","fallback","passive","hasUpdate2","ForkScope","fork","oldConfig","MainScope","Inject","context","instance","warning","isApplicable","Inject2","required","optional","rest","Registry","defineProperty5","assert","registry_default","_Context","attach","defineProperty6","meta","intercept","Service","_Service","_ctx","immediate","defineProperty7","__getOwnPropNames","__commonJS","cb","mod","require_index","exports","module","kSchema","kValidationError","ValidationError","prefix","segment","Schema","options2","refs2","valueMap","getRef","uid","mergeDesc","messages","locale","getInner","extractKeys","desc","inner","regexp","pattern2","inline","formatters","role","extra","resolvers","current","builder","toJSON","date2","flag","e","encoding","_","checkWithinRange","description","skipMin","max","min","decimalShift","digits","frac","integer","isMultipleOf","step","bits","prototype","adapted","sKey","rKey","merge","dict","toString","preserve","defineMethod","key2","isInner","$","n","f","d","t","g","E","l","r","w","x","C","s","h","P","R","u","o","m$2","m","v","y","O","p","S","M","H","F","W","K","Y","U","S$1","N","D","k","Q","j","I","T","q","A","B","X","z","L","ApiService","api","MwApi","_CurrentPageService_decorators","_init","_a","CurrentPageService","#init","#injectHistoryPopState","#onPopState","#initCurrentTitle","#initIsMainPage","injectKey","_pushState","_replaceState","title","url","oldURL","newURL","href","isMainPage","__decoratorStart","__decorateElement","__runInitializers","ResourceLoaderService","src","attrs","existed","script","link","path","G","Z","V","J","tt","et","st","it","nt","ot","at","rt","lt","ct","ht","dt","ft","ut","mt","CustomIPEModal","IPEModal","activeInputs","el","jsx","ProgressBar","ModalService","IPEModalEvent","makeSearchParams","params","sp","objKey","objValue","makeURL","hash","existingParams","newParams","_WikiMetadataService_decorators","WikiMetadataService","jsxs","userId","map","ns","alias","server","titleOrPageId","searchParams","right","rights","names","group","IDBHelper","promisifyRequest","req","_connections","_upgradeLocks","runSerial","job","openDatabase","dbName","db","closeDatabase","closeAllDatabases","createStore","storeName","newVersion","udb","openStore","withObjectStore","store","mode","fn","tx","os","done","get","set","del","clear","anyOs","out","cursorReq","cursor","items","vals","ks","entriesIter","batchSize","lastKey","fillBuffer","range","count","keysIter","iter","StorageService","ttl","version","IDBStorageManager","dbPromise","setter","isExpired","newData","record","all","WatchlistAction","createWikiPageModel","WikiPage","pageInfo","_loaded","rev","payload","info","init","text","prependtext","appendtext","summary","watchlist","section","action","page","revisions","acc","cur","WikiPageService","noCache","converttitles","rvsection","pageid","revid","caches","titleUtils","caseType","specialPageUtils","metadata","byRealName","byAlias","byNormalized","specialPage","realName","normalizedRealName","normalizedAlias","mainPart","normalized","namespaceUtils","byName","byCanonical","id","nsId","normalizedName","normalizedCanonical","namespaceText","createWikiTitleModel","exists","namespaceIndex","specialPageIndex","WikiTitle","namespace","#title","#ns","colonIndex","potentialNamespace","mainTitle","namespaceId","nsInfo","subPage","fullTitle","subjectNs","talkNs","baseUrl","prefixedDbKey","other","alia","targetTitle","WikiTitleService","linkInfo","pageId","revId","kind","promise","wikiPage","input","titleText","sub","talkPage","titleParam","curid","oldid","isFunction","computeFallback","_PreferencesService_decorators","PreferencesService","defaultValue","defaultValues","val","category","InPageEdit","tab","Endpoints","deepMerge","createLogger","#initCoreServices","#initCorePlugins","#initCoreAssets","LoggerLevel","#markServiceAsBuiltIn","services","PluginInArticleLinks","PluginPreferencesUI","PluginQuickEdit","PluginQuickDelete","PluginQuickMove","PluginQuickPreview","PluginQuickDiff","PluginQuickRedirect","PluginToolbox","BasePlugin","ret","err","#name","runOnce","baseURL","detectMediaWikiApiEndpoint","autoload","IPECore","_overload","IPE","oldGlobalVar","ipe","installedModules","isMediaWiki","apiBase","sym"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5]}
|