@inpageedit/core 0.15.0 → 0.16.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.
Files changed (100) hide show
  1. package/dist/{ActionButton-CRjo_l3y.js → ActionButton-B6OUgtHx.js} +2 -2
  2. package/dist/{ActionButton-CRjo_l3y.js.map → ActionButton-B6OUgtHx.js.map} +1 -1
  3. package/dist/CheckBox-Dx3r3LQz.js +13 -0
  4. package/dist/CheckBox-Dx3r3LQz.js.map +1 -0
  5. package/dist/IconQuickDiff-BkbxyY-d.js +29 -0
  6. package/dist/IconQuickDiff-BkbxyY-d.js.map +1 -0
  7. package/dist/IconQuickEdit-BiRYADU_.js +68 -0
  8. package/dist/IconQuickEdit-BiRYADU_.js.map +1 -0
  9. package/dist/IconUpload-Bz4BW_nc.js +27 -0
  10. package/dist/IconUpload-Bz4BW_nc.js.map +1 -0
  11. package/dist/InPageEdit.js +20 -0
  12. package/dist/InPageEdit.js.map +1 -0
  13. package/dist/InputBox-D2ZRTMFP.js +42 -0
  14. package/dist/InputBox-D2ZRTMFP.js.map +1 -0
  15. package/dist/{PluginImagesUsed-Bq_C_rgg.js → PluginImagesUsed-BVyvFA1_.js} +7 -7
  16. package/dist/{PluginImagesUsed-Bq_C_rgg.js.map → PluginImagesUsed-BVyvFA1_.js.map} +1 -1
  17. package/dist/{PluginPrefSync-DP5NyPnI.js → PluginPrefSync-CUKkx4Qk.js} +10 -10
  18. package/dist/{PluginPrefSync-DP5NyPnI.js.map → PluginPrefSync-CUKkx4Qk.js.map} +1 -1
  19. package/dist/{PluginStoreApp-_YWpLgfs.js → PluginStoreApp-CoOAw1fr.js} +4 -4
  20. package/dist/{PluginStoreApp-_YWpLgfs.js.map → PluginStoreApp-CoOAw1fr.js.map} +1 -1
  21. package/dist/{PluginTemplatesUsed-DS_rHctR.js → PluginTemplatesUsed-CdjT1wR4.js} +12 -12
  22. package/dist/{PluginTemplatesUsed-DS_rHctR.js.map → PluginTemplatesUsed-CdjT1wR4.js.map} +1 -1
  23. package/dist/{index-CM_6yF2v.js → Promise.withResolvers-C4chhLB1.js} +17 -11
  24. package/dist/Promise.withResolvers-C4chhLB1.js.map +1 -0
  25. package/dist/{RadioBox-0UuxlcWZ.js → RadioBox-B0z9YHQg.js} +2 -2
  26. package/dist/{RadioBox-0UuxlcWZ.js.map → RadioBox-B0z9YHQg.js.map} +1 -1
  27. package/dist/components/index.js +75 -46
  28. package/dist/components/index.js.map +1 -1
  29. package/dist/{BasePlugin-BCVSn9QJ.js → core.js} +28 -10
  30. package/dist/core.js.map +1 -0
  31. package/dist/{index-n5KKWE9v.js → index-1tsXE6ax.js} +9 -8
  32. package/dist/{index-n5KKWE9v.js.map → index-1tsXE6ax.js.map} +1 -1
  33. package/dist/{index-CS1kidKF.js → index-B32tFyLB.js} +57 -57
  34. package/dist/{index-CS1kidKF.js.map → index-B32tFyLB.js.map} +1 -1
  35. package/dist/{index-Cq8xPcEY.js → index-BPTMltVf.js} +35 -35
  36. package/dist/index-BPTMltVf.js.map +1 -0
  37. package/dist/{index-rKL4D_7I.js → index-BYlcHc-O.js} +22 -24
  38. package/dist/index-BYlcHc-O.js.map +1 -0
  39. package/dist/{index-DjyjqpeO.js → index-C4qm_X_A.js} +11 -11
  40. package/dist/{index-DjyjqpeO.js.map → index-C4qm_X_A.js.map} +1 -1
  41. package/dist/index-CAtPo7xJ.js +793 -0
  42. package/dist/index-CAtPo7xJ.js.map +1 -0
  43. package/dist/{index-DPA1ptYq.js → index-CVCy0wPP.js} +8 -7
  44. package/dist/{index-DPA1ptYq.js.map → index-CVCy0wPP.js.map} +1 -1
  45. package/dist/index-CYfkwXRf.js +1631 -0
  46. package/dist/index-CYfkwXRf.js.map +1 -0
  47. package/dist/{index-mFwJhDwE.js → index-DZa9mxN4.js} +11 -11
  48. package/dist/{index-mFwJhDwE.js.map → index-DZa9mxN4.js.map} +1 -1
  49. package/dist/{index-B9VO3swL.js → index-Dm2vgYkZ.js} +58 -81
  50. package/dist/index-Dm2vgYkZ.js.map +1 -0
  51. package/dist/{index-C3t-Xj3e.js → index-NWWeW3tX.js} +10 -10
  52. package/dist/{index-C3t-Xj3e.js.map → index-NWWeW3tX.js.map} +1 -1
  53. package/dist/index-QnWieXQc.js +4932 -0
  54. package/dist/index-QnWieXQc.js.map +1 -0
  55. package/dist/{index-CbdkXGs7.js → index-bQ0CVu3l.js} +13 -17
  56. package/dist/{index-CbdkXGs7.js.map → index-bQ0CVu3l.js.map} +1 -1
  57. package/dist/{index-Cb2_vqBl.js → index-ygc4AMy4.js} +10 -10
  58. package/dist/{index-Cb2_vqBl.js.map → index-ygc4AMy4.js.map} +1 -1
  59. package/dist/{index-DD5CVCfD.js → index-z_qDGCMT.js} +2 -2
  60. package/dist/{index-DD5CVCfD.js.map → index-z_qDGCMT.js.map} +1 -1
  61. package/dist/index.d.ts +98 -36
  62. package/dist/index.js +24 -26
  63. package/dist/index.js.map +1 -1
  64. package/dist/{makeCallable-LDU0xZMJ.js → makeCallable-Cg4zUG4c.js} +2 -2
  65. package/dist/{makeCallable-LDU0xZMJ.js.map → makeCallable-Cg4zUG4c.js.map} +1 -1
  66. package/dist/models/index.js +7 -7
  67. package/dist/models/index.js.map +1 -1
  68. package/dist/plugins/index.js +12 -12
  69. package/dist/services/index.js +5 -4
  70. package/dist/style.css +1 -1
  71. package/dist/{vueHooks-l04s8cIl.js → vueHooks-Bs93iP61.js} +1519 -1492
  72. package/dist/vueHooks-Bs93iP61.js.map +1 -0
  73. package/lib/index.umd.js +19 -15
  74. package/lib/index.umd.js.map +1 -1
  75. package/lib/style.css +1 -1
  76. package/package.json +36 -27
  77. package/dist/BasePlugin-BCVSn9QJ.js.map +0 -1
  78. package/dist/IconQuickEdit-CMCQncyj.js +0 -27
  79. package/dist/IconQuickEdit-CMCQncyj.js.map +0 -1
  80. package/dist/InputBox-CZ1v4_l3.js +0 -50
  81. package/dist/InputBox-CZ1v4_l3.js.map +0 -1
  82. package/dist/Preferences-DqtjY7XU.js +0 -1541
  83. package/dist/Preferences-DqtjY7XU.js.map +0 -1
  84. package/dist/WatchlistAction-BbNAyryN.js +0 -5
  85. package/dist/WatchlistAction-BbNAyryN.js.map +0 -1
  86. package/dist/browser-DR-yCqVg.js +0 -1160
  87. package/dist/browser-DR-yCqVg.js.map +0 -1
  88. package/dist/index-B9VO3swL.js.map +0 -1
  89. package/dist/index-CG38LlAh.js +0 -46
  90. package/dist/index-CG38LlAh.js.map +0 -1
  91. package/dist/index-CM_6yF2v.js.map +0 -1
  92. package/dist/index-CcAmmXbb.js +0 -3290
  93. package/dist/index-CcAmmXbb.js.map +0 -1
  94. package/dist/index-Cq8xPcEY.js.map +0 -1
  95. package/dist/index-DVvsTsLI.js +0 -505
  96. package/dist/index-DVvsTsLI.js.map +0 -1
  97. package/dist/index-FvMu0Ka0.js +0 -342
  98. package/dist/index-FvMu0Ka0.js.map +0 -1
  99. package/dist/index-rKL4D_7I.js.map +0 -1
  100. package/dist/vueHooks-l04s8cIl.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-QnWieXQc.js","sources":["../../../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.2/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.4.1/node_modules/wiki-saikou/dist/browser.mjs","../src/services/ApiService.ts","../src/components/utils.tsx","../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/managers/LocalStorageManager.ts","../../../node_modules/.pnpm/idb-plus@0.2.0/node_modules/idb-plus/dist/index.js","../src/services/storage/managers/IDBStorageManager.ts","../src/services/storage/index.ts","../src/decorators/Preferences.ts","../src/services/ThemeService.ts","../src/services/WikiPageService.ts","../src/services/WikiTitleService.ts","../src/utils/computeable.ts","../src/services/PreferencesService.tsx","../src/constants/endpoints.ts","../src/services/i18n/interpolate.ts","../src/utils/string.ts","../src/services/i18n/I18nManager.ts","../src/services/i18n/index.ts","../src/utils/hash.ts","../src/services/WikiFileService.ts","../src/InPageEdit.ts"],"sourcesContent":["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 globalThis.__schemastery_refs__ = void 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 refs = valueMap(options.refs, (options2) => new Schema(options2));\n const getRef = /* @__PURE__ */ __name((uid) => refs[uid], \"getRef\");\n for (const key in refs) {\n const options2 = refs[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 refs[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 Schema.prototype.toJSON = /* @__PURE__ */ __name(function toJSON() {\n if (globalThis.__schemastery_refs__) {\n globalThis.__schemastery_refs__[this.uid] ??= JSON.parse(JSON.stringify({ ...this }));\n return this.uid;\n }\n globalThis.__schemastery_refs__ = { [this.uid]: { ...this } };\n globalThis.__schemastery_refs__[this.uid] = JSON.parse(JSON.stringify({ ...this }));\n const result = { uid: this.uid, refs: globalThis.__schemastery_refs__ };\n globalThis.__schemastery_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","import { W as WikiSaikouCore, a as WikiSaikouError, b as WikiSaikouErrorCode, r as resolveLegacyCtor } from './shared/wiki-saikou.CdApFkBG.mjs';\nexport { M as MediaWikiApiError, d as MwParamNormalizer, c as createFexiosSaikou } from './shared/wiki-saikou.CdApFkBG.mjs';\nexport * from 'fexios';\n\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 MediaWikiApi extends WikiSaikouCore {\n async clientLogin(username, password, params) {\n params ||= {};\n if (!params.logincontinue && !params.loginreturnurl) {\n params.loginreturnurl = location?.origin;\n }\n const res = await this.postWithToken(\n \"login\",\n {\n action: \"clientlogin\",\n username,\n password,\n ...params\n },\n {\n tokenName: \"logintoken\"\n }\n );\n if (res?.data?.clientlogin?.status === \"PASS\") {\n return res.data.clientlogin;\n } else {\n throw new WikiSaikouError(\n WikiSaikouErrorCode.LOGIN_FAILED,\n res.data.clientlogin.message,\n res\n );\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 MediaWikiForeignApi extends MediaWikiApi {\n constructor(configOrBaseURL, defaultOptions, defaultParams) {\n const config = resolveLegacyCtor(\n configOrBaseURL,\n {\n credentials: \"include\",\n mode: \"cors\",\n ...defaultOptions\n },\n {\n origin: location.origin,\n ...defaultParams\n }\n );\n super(config);\n }\n}\n\nexport { MediaWikiForeignApi as ForeignApi, MediaWikiApi, MediaWikiForeignApi, MediaWikiApi as MwApi, WikiSaikouCore as MwApiBase, WikiSaikouCore, WikiSaikouError, WikiSaikouErrorCode };\n//# sourceMappingURL=browser.mjs.map\n","import { InPageEdit } from '@/InPageEdit'\nimport { WikiFileRepo } from '@/types/WikiMetadata.js'\nimport { FexiosConfigs, WikiSaikouInitConfig } from 'wiki-saikou'\nimport { ForeignApi, MwApi } from 'wiki-saikou/browser'\n\nexport type * from 'wiki-saikou/browser'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n api: MwApi\n apiService: ApiService\n }\n}\n\nexport interface ApiServiceOptions extends Partial<FexiosConfigs> {}\n\nexport class ApiService {\n api!: MwApi\n\n constructor(\n public ctx: InPageEdit,\n private 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 = (this.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 ctx.set('apiService', this)\n }\n\n private _apiClients = new Map<string, MwApi>()\n getClientByFileRepo(repo: WikiFileRepo) {\n const endpointUrl = new URL(`${repo.scriptDirUrl}/api.php`, location.origin)\n const endpointHref = endpointUrl.toString()\n if (endpointHref === this.ctx.root.config.apiConfigs.baseURL?.toString()) {\n return this.ctx.api\n }\n if (!this._apiClients.has(endpointHref)) {\n const isSameOrigin = endpointUrl.origin === location.origin\n const initConfig: WikiSaikouInitConfig = {\n baseURL: endpointUrl.toString(),\n throwOnApiError: true,\n }\n const client = isSameOrigin ? new MwApi(initConfig) : new ForeignApi(initConfig)\n // FIXME: CORS request should not set custom headers\n client.request.on('beforeRequest', (ctx) => {\n ctx.headers = client.request.mergeHeaders(ctx.headers, {\n 'x-api-user-agent': null,\n 'x-mw-token-name': null,\n })\n })\n this._apiClients.set(endpointHref, client)\n }\n return this._apiClients.get(endpointHref)!\n }\n}\n","import { CSSProperties, ReactElement } from 'jsx-dom'\n\nexport const qs = <T extends Element>(\n selector: string,\n parent: HTMLElement | Document = document\n) => {\n return parent.querySelector(selector) as T | null\n}\nexport const qsa = <T extends Element>(\n selector: string,\n parent: HTMLElement | Document = document\n) => {\n return parent.querySelectorAll(selector) as NodeListOf<T>\n}\n\nexport const setStyles = (el: HTMLElement | ReactElement, style: CSSProperties) => {\n Object.entries(style).forEach(([key, value]) => {\n if (typeof value === 'undefined' || value === null) {\n el.style.removeProperty(key)\n } else {\n const isImportant = typeof value === 'string' && value.endsWith('!important')\n // @ts-ignore\n el.style.setProperty(\n key,\n value.replace('!important', '').trim(),\n isImportant ? 'important' : undefined\n )\n }\n })\n return el\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 = (\n qs<HTMLLinkElement>('link[rel=\"alternate\"][hreflang=\"x-default\"]') ||\n qs<HTMLLinkElement>('link[rel=\"canonical\"]')\n )?.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'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n resourceLoader: ResourceLoaderService\n }\n}\n\nexport class ResourceLoaderService extends Service {\n constructor(public ctx: InPageEdit) {\n super(ctx, 'resourceLoader', true)\n }\n protected stop(): void | Promise<void> {\n this.removeAll()\n }\n\n loadScript(src: string, attrs?: Record<string, any>): Promise<HTMLScriptElement | null> {\n if (!src) {\n return Promise.resolve(null)\n }\n const key = `script:${src}`\n const existed = document.querySelector(`[data-ipe=\"${key}\"]`)\n if (existed) {\n return Promise.resolve(existed as HTMLScriptElement)\n }\n const promise = new Promise<HTMLScriptElement>((resolve, reject) => {\n const script = document.createElement('script')\n script.src = src\n script.dataset.ipe = key\n if (attrs) {\n Object.entries(attrs).forEach(([key, value]) => {\n if (typeof value === 'undefined' || value === false || value === null) {\n script.removeAttribute(key)\n } else {\n script.setAttribute(key, value)\n }\n })\n }\n document.body.appendChild(script)\n script.onload = () => resolve(script)\n script.onerror = (e) => reject(e)\n })\n return promise\n }\n\n loadStyle(href: string, attrs?: Record<string, any>): Promise<HTMLLinkElement | null> {\n if (!href) {\n return Promise.resolve(null)\n }\n const key = `style:${href}`\n const existed = document.querySelector(`[data-ipe=\"${key}\"]`)\n if (existed) {\n return Promise.resolve(existed as HTMLLinkElement)\n }\n const promise = new Promise<HTMLLinkElement>((resolve, reject) => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n link.dataset.ipe = key\n if (attrs) {\n Object.entries(attrs).forEach(([key, value]) => {\n if (typeof value === 'undefined' || value === false || value === null) {\n link.removeAttribute(key)\n } else {\n link.setAttribute(key, value)\n }\n })\n }\n const meta =\n document.querySelector('meta[name=\"ipe-styles\"]') ||\n (() => {\n const meta = document.createElement('meta')\n meta.id = 'ipe-styles'\n meta.name = 'ipe-styles'\n document.head.insertAdjacentElement('afterbegin', meta)\n return meta\n })()\n meta.before(link)\n link.onload = () => resolve(link)\n link.onerror = (e) => reject(e)\n })\n return promise\n }\n\n removeStyle(href: string) {\n const key = `style:${href}`\n const link = document.querySelector(`[data-ipe=\"${key}\"]`)\n if (link) {\n link.remove()\n }\n }\n removeScript(src: string) {\n const key = `script:${src}`\n const script = document.querySelector(`[data-ipe=\"${key}\"]`)\n if (script) {\n script.remove()\n }\n }\n removeAll() {\n document.querySelectorAll('[data-ipe]').forEach((el) => {\n el.remove()\n })\n }\n\n resolveImportPath(path: string) {\n if (path.startsWith('http') || path.startsWith('//')) {\n return path\n }\n if (import.meta.env.VITE_BUILD_FORMAT === 'import') {\n return import.meta.resolve(path)\n }\n const src = (document.currentScript as HTMLScriptElement)?.src\n if (!src) {\n return `https://unpkg.com/mediawiki-inpageedit@latest/dist/${path}`\n }\n const url = new URL(src)\n if (!url.pathname.endsWith('.js')) {\n url.pathname = url.pathname + '/'\n }\n return new URL(path, url.toString()).toString()\n }\n}\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 w(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 w(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 w(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 = /* @__PURE__ */ 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(\" \") : w(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 w(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) : w(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 w(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 w(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 p(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 m = window.pageYOffset || document.documentElement.scrollTop, $ = window.pageXOffset || document.documentElement.scrollLeft, D = window.innerWidth;\n i.style.top = `${m + 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 m = h(\"button\", {\n className: \"ipe-modal-modal__close\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n html: \"&times;\"\n });\n m.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(m);\n }\n o.append(r, a), this.options.draggable && t && (this.options.draggable = !1), this.options.draggable && (o.style.cursor = \"move\", o.style.userSelect = \"none\", o.addEventListener(\"pointerdown\", this.onDragStart.bind(this)), i.classList.add(\"is-draggable\"));\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\", (m) => {\n this.options.outSideClose && m.target === e && this.close();\n }), this.options.draggable && n.addEventListener(\"pointerdown\", (m) => {\n m.target && n.contains(m.target) && this.bringToFront();\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 = g.indexOf(this);\n t !== -1 && g.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 p(this.$modal, \"modal\");\n }\n get$window() {\n return p(this.$window, \"window\");\n }\n get$header() {\n return p(this.$header, \"header\");\n }\n get$title() {\n return p(this.$title, \"title\");\n }\n get$content() {\n return p(this.$content, \"content\");\n }\n get$icons() {\n return p(this.$icons, \"icons\");\n }\n get$buttons(t) {\n return t === \"leftButtons\" ? p(this.$buttonsLeft, \"leftButtons\") : t === \"rightButtons\" ? p(this.$buttonsRight, \"rightButtons\") : p(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), g.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 = g.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), [...g].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(), [...g].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 && [...g].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 g = [];\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'\nimport { IPEModal, IPEModalEvent, IPEModalOptions } from '@inpageedit/modal'\nimport '@inpageedit/modal/style.css'\n\nexport * from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n modal: ModalService\n }\n}\n\n// Custom plugins\nexport class CustomIPEModal extends IPEModal {\n constructor(options: Partial<IPEModalOptions> = {}) {\n options.className ||= ''\n options.className += ' theme-ipe'\n options.modalAnimation ||= {\n show: 'ipe-modal-fade-in',\n hide: 'ipe-modal-fade-out',\n }\n super(options)\n }\n\n private _tmpDisabledActiveInputs?: NodeListOf<HTMLInputElement | HTMLButtonElement>\n setLoadingState(state: boolean) {\n this.get$window().classList.toggle('loading', state)\n // start loading\n if (state) {\n const activeInputs = this.get$window().querySelectorAll<HTMLInputElement | HTMLButtonElement>(\n 'input:not([disabled]),button:not([disabled])'\n )\n this._tmpDisabledActiveInputs = activeInputs\n activeInputs.forEach((el) => {\n el.disabled = true\n })\n this.get$content().append(\n <div\n id=\"ipe-modalLoadingWrapper\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\n zIndex: 2000,\n }}\n >\n <ProgressBar style={{ width: '80%', maxWidth: '800px' }} />\n </div>\n )\n } else {\n // stop loading\n this.get$window().querySelector('#ipe-modalLoadingWrapper')?.remove()\n const activeInputs = this._tmpDisabledActiveInputs\n if (activeInputs) {\n activeInputs.forEach((el) => {\n el.disabled = false\n })\n }\n }\n }\n}\n\nexport class ModalService {\n constructor(public ctx: InPageEdit) {\n ctx.set('modal', this)\n ctx.on('dispose', () => {\n CustomIPEModal.closeAll()\n })\n }\n IPEModal = CustomIPEModal\n IPEModalEvent = IPEModalEvent\n show = CustomIPEModal.show.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.show>\n ) => CustomIPEModal\n createObject = CustomIPEModal.createObject.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.createObject>\n ) => CustomIPEModal\n close = CustomIPEModal.close.bind(CustomIPEModal)\n closeAll = CustomIPEModal.closeAll.bind(CustomIPEModal)\n removeAll = CustomIPEModal.removeAll.bind(CustomIPEModal)\n dialog = CustomIPEModal.dialog.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.dialog>\n ) => CustomIPEModal\n confirm = CustomIPEModal.confirm.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.confirm>\n ) => CustomIPEModal\n notify = CustomIPEModal.notify.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.notify>\n ) => CustomIPEModal\n}\n","/**\n * Transform a plain object into a URL search params string.\n *\n * @example\n * ```\n * makeURLSearchParams({ str: '123' }) // str=123\n * makeURLSearchParams({ num: 123 }) // num=123\n * makeURLSearchParams({ bool: true }) // bool=true\n * makeURLSearchParams({ arr: [1, 2, 3] }) // arr=1&arr=2&arr=3\n * makeURLSearchParams({ plainObj: { a: 1, b: 2 } }) // plainObj[a]=1&plainObj[b]=2\n * makeURLSearchParams({ obj: <object> }) // obj=<object>.toString() (if object is not a primitive type)\n * makeURLSearchParams({ empty: '' }) // empty=\n * makeURLSearchParams({ null: null, undefined: undefined }) // (ignored)\n * ```\n */\nexport const makeSearchParams = (params?: Record<string, any>): URLSearchParams => {\n if (!params) {\n return new URLSearchParams()\n }\n if (params instanceof URLSearchParams) {\n return params\n }\n if (typeof params !== 'object' || params?.constructor !== Object) {\n throw new TypeError('only plain object is supported')\n }\n\n const sp = new URLSearchParams()\n for (const [key, value] of Object.entries(params)) {\n if (value === void 0 || value === null) {\n continue\n }\n if (Array.isArray(value)) {\n for (const item of value) {\n sp.append(key, item?.toString())\n }\n continue\n }\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n for (const [objKey, objValue] of Object.entries(value)) {\n if (objValue !== void 0 && objValue !== null) {\n sp.set(`${key}[${objKey}]`, objValue?.toString())\n }\n }\n continue\n }\n sp.set(key, value?.toString())\n }\n return sp\n}\n\n/**\n * Create a URL object with the given parameters.\n *\n * @example\n * ```\n * makeURL('https://example.com?existing=1', { foo: 'bar' }, 'baz') // https://example.com?existing=1&foo=bar#baz\n */\nexport const makeURL = (url: string | URL, params?: Record<string, any>, hash?: string): URL => {\n const u = typeof url === 'string' ? new URL(url, window?.location?.origin) : new URL(url)\n\n const existingParams = new URLSearchParams(u.search)\n const newParams = makeSearchParams(params)\n for (const [key, value] of newParams.entries()) {\n existingParams.set(key, value)\n }\n\n u.search = existingParams.toString()\n u.hash = hash || ''\n return u\n}\n","import { Inject, InPageEdit, Schema, Service } from '@/InPageEdit'\nimport { WikiSiteInfo, WikiUserBlockInfo, WikiUserInfo } from '@/types/WikiMetadata'\nimport { AbstractIPEStorageManager } from './storage'\nimport { MwApiParams } from 'wiki-saikou'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n wiki: WikiMetadataService\n getUrl: WikiMetadataService['getUrl']\n getSciprtUrl: WikiMetadataService['getSciprtUrl']\n getMainpageUrl: WikiMetadataService['getMainpageUrl']\n }\n interface Events {\n /**\n * Application requires to clear caches and reload the page\n * If returns true, the page will not be reloaded\n */\n 'clear-cache'(): AwaitAble<boolean | void>\n }\n}\n\ninterface WikiMetadataKindMap {\n siteinfo: WikiSiteInfo\n userinfo: WikiUserInfo\n}\n\n@Inject(['api', 'storage'])\nexport class WikiMetadataService extends Service {\n private readonly _data: WikiMetadataKindMap = {} as any\n private readonly CACHE_VERSION = 4\n private readonly CACHE_TTL: Readonly<Record<keyof WikiMetadataKindMap, number>> = {\n siteinfo: 1000 * 60 * 60 * 24 * 3, // 3 days\n userinfo: 1000 * 60 * 30, // 30 minutes\n }\n private readonly QUERY_DATA: Readonly<Record<keyof WikiMetadataKindMap, MwApiParams>> = {\n siteinfo: {\n meta: 'siteinfo|filerepoinfo',\n siprop: 'general|specialpagealiases|namespacealiases|namespaces|magicwords',\n friprop: 'canUpload|displayname|initialCapital|local|name|rootUrl|scriptDirUrl|thumbUrl|url',\n },\n userinfo: { meta: 'userinfo', uiprop: 'groups|rights|blockinfo|options' },\n }\n private readonly CACHE_DB: AbstractIPEStorageManager<\n WikiMetadataKindMap[keyof WikiMetadataKindMap]\n >\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wiki', false)\n this.CACHE_DB = ctx.storage.createDatabase<WikiMetadataKindMap[keyof WikiMetadataKindMap]>(\n 'wiki-metadata',\n Infinity,\n this.CACHE_VERSION\n )\n }\n\n private get logger() {\n return this.ctx.logger('WIKI_METADATA')\n }\n\n private get api() {\n return this.ctx.api\n }\n\n readonly 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 await Promise.all(\n Object.keys(this.QUERY_DATA).map((key) => this.initData(key as keyof WikiMetadataKindMap))\n )\n this.ctx.on('clear-cache', this.onClearCache.bind(this))\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 const $ = 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 <div>\n <p style={{ fontStyle: 'italic' }}>\n {$`If the information shown above is incorrect (for example, the user is not you), click the button below.`}\n </p>\n <button\n className=\"btn danger\"\n onClick={async (e) => {\n e.preventDefault()\n const prevent = await ctx.serial('clear-cache')\n if (!prevent) {\n window.location.reload()\n }\n }}\n >\n 🧹 {$`Clear caches & Reload`}\n </button>\n </div>\n </div>\n ).role('raw-html'),\n }).description('WikiMetadataService'),\n 'about'\n )\n })\n\n this.logger.info('All initialized', this._data)\n }\n\n async initData<T extends keyof WikiMetadataKindMap>(kind: T, noCache = false) {\n const cached = noCache ? null : await this.fetchFromCache(kind)\n if (cached) {\n this._data[kind] = cached\n this.logger.debug('Using cached', kind, cached)\n return cached\n } else {\n const data = await this.fetchFromApi(kind)\n this.saveToCache(kind, data)\n this._data[kind] = data\n this.logger.debug('Fetched from API', kind, data)\n return data\n }\n }\n\n private getCacheKey<T extends keyof WikiMetadataKindMap>(kind: T): string {\n return `${kind}:${new URL(this.ctx.api.config.baseURL).pathname.replace(/^\\//, '')}`\n }\n\n async fetchFromApi<T extends keyof WikiMetadataKindMap>(\n kind: T\n ): Promise<WikiMetadataKindMap[T]> {\n return this.api\n .get({\n action: 'query',\n ...this.QUERY_DATA[kind],\n })\n .then(({ data }) => {\n if (typeof data?.query !== 'object' || data.query === null) {\n throw new Error('Invalid query data', { cause: data })\n }\n if (kind === 'siteinfo') {\n return data.query as WikiMetadataKindMap[T]\n } else {\n return (data.query?.[kind] || data.query) as WikiMetadataKindMap[T]\n }\n })\n .catch((e) => {\n this.logger.error('Failed to fetch', e)\n return Promise.reject(e)\n })\n }\n\n async fetchFromCache<T extends keyof WikiMetadataKindMap>(\n kind: T\n ): Promise<WikiMetadataKindMap[T] | null> {\n const key = this.getCacheKey(kind)\n const data = await this.CACHE_DB.get(key, this.CACHE_TTL[kind])\n return data as WikiMetadataKindMap[T] | null\n }\n async saveToCache<T extends keyof WikiMetadataKindMap>(kind: T, data: WikiMetadataKindMap[T]) {\n const key = this.getCacheKey(kind)\n return this.CACHE_DB.set(key, data)\n }\n async invalidateCache<T extends keyof WikiMetadataKindMap>(kind: T) {\n const key = this.getCacheKey(kind)\n return this.CACHE_DB.delete(key)\n }\n private async onClearCache() {\n await this.CACHE_DB.clear()\n }\n\n // ====== shortcuts ======\n get _raw() {\n return this._data\n }\n\n // siteInfo\n get siteInfo() {\n return this._data.siteinfo\n }\n get general() {\n return this.siteInfo.general\n }\n get specialPageAliases() {\n return this.siteInfo.specialpagealiases\n }\n get namespaceAliases() {\n return this.siteInfo.namespacealiases\n }\n get namespaces() {\n return this.siteInfo.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.siteInfo.magicwords\n }\n\n // userInfo\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 // fileRepoInfo\n get fileRepos() {\n return this.siteInfo.repos || []\n }\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.siteInfo.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","import { AbstractIPEStorageManager, TypedStorageEntry } from '../index.js'\nimport { MemoryStorage, useMemoryStorage } from '@/models/MemoryStorage.js'\n\nconst _memoryStorage = (() => {\n const sym = Symbol.for('IPE.GlobalMemoryStorage')\n if (!(sym in globalThis)) {\n ;(globalThis as any)[sym] = useMemoryStorage()\n }\n return (globalThis as any)[sym] as MemoryStorage\n})()\n\nexport class LocalStorageManager<T = unknown> implements AbstractIPEStorageManager<T> {\n private db: Storage\n constructor(\n public dbName?: string,\n readonly storeName?: string,\n public ttl: number = Infinity,\n public version?: number | string,\n public engine: 'localStorage' | 'sessionStorage' | 'memory' = 'localStorage'\n ) {\n // Normalize ttl\n if (typeof ttl !== 'number') this.ttl = Number(ttl)\n if (isNaN(this.ttl) || this.ttl <= 0) this.ttl = Infinity\n\n // Initialize storage engine\n if (this.engine === 'localStorage' && 'localStorage' in window) {\n this.db = window.localStorage\n } else if (this.engine === 'sessionStorage' && 'sessionStorage' in window) {\n this.db = window.sessionStorage\n } else {\n this.db = _memoryStorage\n }\n }\n\n // Key builder\n private makeKey(key: string) {\n return `${this.dbName ? this.dbName + ':' : ''}${this.storeName ? this.storeName + '/' : ''}${key}`\n }\n\n // Internal load & validation\n private load(key: string): TypedStorageEntry<T> | null {\n const raw = this.getRaw(key)\n if (raw === null) return null\n let parsed: unknown\n try {\n parsed = JSON.parse(raw)\n } catch (_) {\n this.deleteSync(key)\n return null\n }\n const rec = parsed as Partial<TypedStorageEntry<T>>\n // Structural checks\n if (typeof rec.time !== 'number' || !('value' in rec)) {\n this.deleteSync(key)\n return null\n }\n // Version check\n if (\n typeof this.version !== 'undefined' &&\n typeof this.version !== 'undefined' &&\n rec.version !== this.version\n ) {\n this.deleteSync(key)\n return null\n }\n return rec as TypedStorageEntry<T>\n }\n\n private getRaw(key: string): string | null {\n const fullKey = this.makeKey(key)\n return this.db.getItem(fullKey)\n }\n\n private setRaw(key: string, value: string) {\n const fullKey = this.makeKey(key)\n try {\n this.db.setItem(fullKey, value)\n } catch (_) {\n // Quota exceeded or write error — silently ignore for now.\n }\n }\n\n private deleteSync(key: string) {\n const fullKey = this.makeKey(key)\n this.db.removeItem(fullKey)\n }\n\n private isExpired(rec: TypedStorageEntry<T> | null, ttl = this.ttl) {\n if (!rec) return false\n return Date.now() - rec.time > ttl\n }\n\n async get(key: string, ttl = this.ttl, setter?: () => Promise<T> | T): Promise<T | null> {\n const rec = this.load(key)\n const expired = this.isExpired(rec, ttl)\n if (!rec || expired) {\n if (typeof setter === 'function') {\n const newValue = await setter()\n await this.set(key, newValue as T)\n return newValue as T\n }\n return null\n }\n return rec.value\n }\n\n // Overloads\n async set(key: string, value: null | undefined): Promise<void>\n async set(key: string, value: T): Promise<TypedStorageEntry<T>>\n async set(\n record: Record<string, T | null | undefined>\n ): Promise<Record<string, TypedStorageEntry<T> | void>>\n async set(\n keyOrRecord: string | Record<string, T | null | undefined>,\n maybeValue?: T | null | undefined\n ): Promise<TypedStorageEntry<T> | void | Record<string, TypedStorageEntry<T> | void>> {\n const now = Date.now()\n\n if (typeof keyOrRecord === 'string') {\n const key = keyOrRecord\n const value = maybeValue as T | null | undefined\n if (value === null || typeof value === 'undefined') {\n await this.delete(key)\n return\n }\n const rec: TypedStorageEntry<T> = { time: now, value, version: this.version }\n this.setRaw(key, JSON.stringify(rec))\n return rec\n }\n\n const recordObj = keyOrRecord as Record<string, T | null | undefined>\n const results: Record<string, TypedStorageEntry<T> | void> = {}\n for (const [k, v] of Object.entries(recordObj)) {\n if (v === null || typeof v === 'undefined') {\n this.deleteSync(k)\n continue\n }\n const rec: TypedStorageEntry<T> = { time: now, value: v as T, version: this.version }\n this.setRaw(k, JSON.stringify(rec))\n results[k] = rec\n }\n return results\n }\n\n async has(key: string, ttl = this.ttl): Promise<boolean> {\n const rec = this.load(key)\n return rec !== null && !this.isExpired(rec, ttl)\n }\n\n async delete(key: string): Promise<void> {\n this.deleteSync(key)\n }\n\n async updatedAt(key: string): Promise<number> {\n const rec = this.load(key)\n return rec ? rec.time : 0\n }\n\n async clear(): Promise<this> {\n // Remove only keys with our prefix+storeName\n const prefix = this.makeKey('')\n // Collect first to avoid index shifting issues\n const toRemove: string[] = []\n for (let i = 0; i < this.db.length; i++) {\n const k = this.db.key(i)\n if (k && k.startsWith(prefix)) toRemove.push(k)\n }\n for (const k of toRemove) this.db.removeItem(k)\n return this\n }\n\n // Async generators\n async *keys(): AsyncIterable<string> {\n const prefix = this.makeKey('')\n for (let i = 0; i < this.db.length; i++) {\n const k = this.db.key(i)\n if (k && k.startsWith(prefix)) yield k.slice(prefix.length)\n }\n }\n\n async *values(): AsyncIterable<TypedStorageEntry<T>> {\n for await (const k of this.keys()) {\n const rec = this.load(k)\n if (!rec) continue\n if (this.isExpired(rec)) {\n this.deleteSync(k)\n continue\n }\n yield rec\n }\n }\n\n async *entries(): AsyncIterable<[string, TypedStorageEntry<T>]> {\n for await (const k of this.keys()) {\n const rec = this.load(k)\n if (!rec) continue\n if (this.isExpired(rec)) {\n this.deleteSync(k)\n continue\n }\n yield [k, rec]\n }\n }\n}\n","var s;\n((i) => {\n i.cache = /* @__PURE__ */ new Map(), i.defaults = Object.freeze({ iterBatch: 100, retry: { attempts: 3, baseDelayMs: 16 } }), i.sleep = (e) => new Promise((n) => setTimeout(n, e));\n function t(e) {\n const n = e?.name ?? \"\";\n return n === \"AbortError\" || n === \"InvalidStateError\" || n === \"TransactionInactiveError\" || n === \"UnknownError\";\n }\n i.shouldReconnect = t;\n async function a(e, n, r) {\n const w = Math.max(1, e.attempts);\n for (let y = 0; y < w; y++)\n try {\n return await n(y);\n } catch (d) {\n if (y === w - 1) throw d;\n await r?.(d, y);\n const u = e.baseDelayMs * Math.pow(2, y) + Math.floor(Math.random() * 10);\n await (0, i.sleep)(u);\n }\n throw new Error(\"withRetry exhausted unexpectedly\");\n }\n i.withRetry = a;\n function o(e, n, r) {\n return new Promise((w, y) => {\n const d = indexedDB.open(e, n);\n d.onupgradeneeded = () => {\n try {\n const u = d.result, l = d.transaction;\n r?.(u, l);\n } catch (u) {\n y(u);\n }\n }, d.onerror = () => y(d.error), d.onblocked = () => {\n }, d.onsuccess = () => {\n const u = d.result;\n u.onversionchange = () => {\n try {\n u.close();\n } finally {\n i.cache.delete(e);\n }\n }, w(u);\n };\n });\n }\n async function h(e, n, r) {\n let w = !e.objectStoreNames.contains(n), y = [];\n if (!w && r?.indexes?.length) {\n const l = e.transaction(n, \"readonly\"), p = l.objectStore(n), g = new Set(Array.from(p.indexNames));\n y = (r.indexes || []).filter((m) => !g.has(m.name)), await new Promise((m, R) => {\n l.oncomplete = () => m(), l.onabort = () => R(l.error), l.onerror = () => R(l.error);\n });\n }\n if (!w && y.length === 0) return e;\n const d = e.version + 1;\n e.close();\n const u = await o(e.name, d, (l, p) => {\n let g;\n l.objectStoreNames.contains(n) ? g = p.objectStore(n) : g = l.createObjectStore(n, {\n keyPath: r?.keyPath ?? void 0,\n autoIncrement: !!r?.autoIncrement\n });\n for (const m of y)\n g.indexNames.contains(m.name) || g.createIndex(m.name, m.keyPath, m.options);\n });\n return u.onversionchange = () => {\n try {\n u.close();\n } finally {\n i.cache.delete(u.name);\n }\n }, u;\n }\n async function c(e, n, r) {\n let w = i.cache.get(e);\n return w ? (w = w.then((y) => h(y, n, r)), i.cache.set(e, w)) : (w = (async () => {\n const y = await o(e);\n return h(y, n, r);\n })(), i.cache.set(e, w)), w;\n }\n i.getDB = c;\n async function f(e) {\n const n = i.cache.get(e);\n if (i.cache.delete(e), n)\n try {\n (await n).close();\n } catch {\n }\n }\n i.closeConnection = f;\n function v(e) {\n return new Promise((n, r) => {\n e.onsuccess = () => n(e.result), e.onerror = () => r(e.error);\n });\n }\n i.asyncRequest = v;\n function S(e) {\n return new Promise((n, r) => {\n e.oncomplete = () => n(), e.onabort = () => r(e.error ?? new DOMException(\"Aborted\", \"AbortError\")), e.onerror = () => r(e.error ?? new DOMException(\"TransactionError\", \"UnknownError\"));\n });\n }\n i.waitTx = S;\n})(s || (s = {}));\n/**\n * IDB Plus\n *\n * 🗄️ Minimal Promise based IndexedDB Wrapper with Map-like API\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass x {\n constructor(t, a, o = {}) {\n this.dbName = t, this.storeName = a, this.options = o;\n }\n get _iterBatch() {\n return this.options.iterBatch ?? s.defaults.iterBatch;\n }\n get _retryCfg() {\n const t = this.options.retry ?? s.defaults.retry;\n return { attempts: t.attempts ?? 3, baseDelayMs: t.baseDelayMs ?? 16 };\n }\n async _withStore(t, a) {\n const o = this._retryCfg;\n return s.withRetry(\n o,\n async () => {\n const h = await s.getDB(this.dbName, this.storeName, this.options.ensure);\n try {\n const c = h.transaction(this.storeName, t), f = c.objectStore(this.storeName), v = await a(f);\n return await s.waitTx(c), v;\n } catch (c) {\n throw c;\n }\n },\n async (h) => {\n s.shouldReconnect(h) && await s.closeConnection(this.dbName);\n }\n );\n }\n async get(t) {\n return this._withStore(\"readonly\", async (a) => {\n const o = await s.asyncRequest(a.get(t));\n return o === void 0 ? void 0 : o;\n });\n }\n async set(t, a) {\n return await this._withStore(\"readwrite\", async (o) => {\n const c = this.options.ensure?.keyPath != null ? o.put(a) : o.put(a, t);\n await s.asyncRequest(c);\n }), this;\n }\n async delete(t) {\n return this._withStore(\"readwrite\", async (a) => {\n const o = await s.asyncRequest(a.get(t)) !== void 0;\n return await s.asyncRequest(a.delete(t)), o;\n });\n }\n async clear() {\n await this._withStore(\"readwrite\", async (t) => {\n await s.asyncRequest(t.clear());\n });\n }\n async has(t) {\n return await this.get(t) !== void 0;\n }\n async count() {\n return this._withStore(\"readonly\", async (t) => await s.asyncRequest(t.count()) ?? 0);\n }\n async *_iterateEntries() {\n let t = null, a = !1;\n const o = Math.max(1, this._iterBatch);\n for (; !a; ) {\n const h = await this._withStore(\"readonly\", async (c) => {\n const f = [], v = t === null ? void 0 : IDBKeyRange.lowerBound(t, !0);\n return await new Promise((S, e) => {\n const n = c.openCursor(v);\n n.onerror = () => e(n.error), n.onsuccess = () => {\n const r = n.result;\n if (!r) {\n a = !0, S();\n return;\n }\n f.push([r.key, r.value]), t = r.key, f.length >= o ? S() : r.continue();\n };\n }), f;\n });\n for (const c of h) yield c;\n if (h.length === 0) break;\n }\n }\n entries() {\n return this._iterateEntries();\n }\n async *keys() {\n for await (const [t] of this.entries()) yield t;\n }\n async *values() {\n for await (const [, t] of this.entries()) yield t;\n }\n [Symbol.asyncIterator]() {\n return this.entries()[Symbol.asyncIterator]();\n }\n async forEach(t) {\n for await (const [a, o] of this.entries())\n await t(o, a, this);\n }\n async getMany(t) {\n const a = /* @__PURE__ */ new Map();\n for await (const o of t) a.set(o, void 0);\n return await this._withStore(\"readonly\", async (o) => {\n await Promise.all(\n a.keys().map(async (h) => {\n const c = await s.asyncRequest(o.get(h));\n a.set(h, c === void 0 ? void 0 : c);\n })\n );\n }), a;\n }\n async setMany(t) {\n const a = this.options.ensure?.keyPath != null;\n return await this._withStore(\"readwrite\", async (o) => {\n for await (const [h, c] of t) {\n const f = a ? o.put(c) : o.put(c, h);\n await s.asyncRequest(f);\n }\n }), this;\n }\n async deleteMany(t) {\n let a = 0;\n return await this._withStore(\"readwrite\", async (o) => {\n for await (const h of t)\n await s.asyncRequest(o.get(h)) !== void 0 && a++, await s.asyncRequest(o.delete(h));\n }), a;\n }\n async disconnect() {\n await s.closeConnection(this.dbName);\n }\n}\nexport {\n x as IDBPlus,\n s as IDBPlusHelper\n};\n//# sourceMappingURL=index.js.map\n","import { IDBPlus } from 'idb-plus'\nimport { AbstractIPEStorageManager, TypedStorageEntry } from '../index.js'\n\nexport class IDBStorageManager<T = unknown> implements AbstractIPEStorageManager<T> {\n readonly db: IDBPlus<string, TypedStorageEntry<T>>\n keys: () => AsyncIterable<string>\n values: () => AsyncIterable<TypedStorageEntry<T>>\n entries: () => AsyncIterable<[string, TypedStorageEntry<T>]>\n\n constructor(\n readonly dbName: string,\n readonly storeName: string,\n public ttl: number = Infinity,\n public version?: number | string\n ) {\n this.db = new IDBPlus<string, TypedStorageEntry<T>>(dbName, storeName)\n this.keys = this.db.keys.bind(this.db)\n this.values = this.db.values.bind(this.db)\n this.entries = this.db.entries.bind(this.db)\n if (typeof this.ttl !== 'number') {\n this.ttl = Number(this.ttl)\n }\n if (isNaN(this.ttl) || this.ttl <= 0) {\n this.ttl = Infinity\n }\n this._clearExpiredEntries().catch(() => {})\n }\n\n private async _clearExpiredEntries() {\n if (this.ttl === Infinity) return\n const now = Date.now()\n const toDelete: string[] = []\n for await (const [key, entry] of this.db.entries()) {\n if (typeof entry.time === 'number' && now - entry.time > this.ttl) {\n toDelete.push(key)\n }\n }\n if (toDelete.length > 0) {\n await this.db.deleteMany(toDelete)\n }\n }\n\n async get(key: string, ttl = this.ttl, setter?: () => Promise<T> | T): Promise<T | null> {\n const data = await this.loadFromDB(key)\n const isExpired = this.checkIfExpired(data, ttl)\n if (!data || isExpired) {\n if (typeof setter === 'function') {\n const newData = await setter()\n await this.set(key, newData as T)\n return newData as T\n }\n return null\n }\n return data.value\n }\n\n set(key: string, value: null | undefined): Promise<void>\n set(key: string, value: T): Promise<TypedStorageEntry<T>>\n set(\n record: Record<string, T | null | undefined>\n ): Promise<Record<string, TypedStorageEntry<T> | void>>\n async set(\n keyOrRecord: string | Record<string, T | null | undefined>,\n maybeValue?: T | null | undefined\n ): Promise<TypedStorageEntry<T> | void | Record<string, TypedStorageEntry<T> | void>> {\n const now = Date.now()\n\n // Overload 1: set(key, value)\n if (typeof keyOrRecord === 'string') {\n const key = keyOrRecord\n const value = maybeValue as T | null | undefined\n if (value === null || typeof value === 'undefined') {\n return this.delete(key)\n }\n const record: TypedStorageEntry<T> = {\n time: now,\n value,\n version: this.version,\n }\n await this.db.set(key, record)\n return record\n }\n\n // Overload 2: set(record)\n const recordObject = keyOrRecord as Record<string, T | null | undefined>\n const toSet: Array<[string, TypedStorageEntry<T>]> = []\n const toDelete: Array<string> = []\n const results: Record<string, TypedStorageEntry<T> | void> = {}\n\n for (const [key, value] of Object.entries(recordObject)) {\n if (value === null || typeof value === 'undefined') {\n toDelete.push(key)\n } else {\n const rec: TypedStorageEntry<T> = { time: now, value: value as T, version: this.version }\n toSet.push([key, rec])\n results[key] = rec\n }\n }\n\n if (toSet.length > 0) {\n await this.db.setMany(toSet)\n }\n if (toDelete.length > 0) {\n await this.db.deleteMany(toDelete)\n }\n return results\n }\n\n async has(key: string, ttl = this.ttl): Promise<boolean> {\n const data = await this.loadFromDB(key)\n const isExpired = this.checkIfExpired(data, ttl)\n return data !== null && !isExpired\n }\n\n async delete(key: string): Promise<void> {\n await this.db.delete(key)\n }\n\n async updatedAt(key: string): Promise<number> {\n const data = await this.loadFromDB(key)\n return data ? data.time : 0\n }\n\n private async loadFromDB(key: string) {\n const data = await this.db.get(key)\n // Not exist\n if (data === void 0) {\n return null\n }\n // Bad data\n if (typeof data.time !== 'number' || typeof data.value === 'undefined') {\n try {\n await this.delete(key)\n } catch (_) {}\n return null\n }\n // Version mismatch\n if (\n typeof this.version !== 'undefined' &&\n typeof this.version !== 'undefined' &&\n data.version !== this.version\n ) {\n try {\n await this.delete(key)\n } catch (_) {}\n return null\n }\n return data\n }\n\n private checkIfExpired(data: TypedStorageEntry<T> | null, ttl = this.ttl) {\n if (!data) return false\n return Date.now() - data.time > ttl\n }\n\n /**\n * [DANGER] Use with caution!\n * Delete all data from the database.\n */\n async clear() {\n await this.db.clear()\n return this\n }\n}\n","import { InPageEdit, Service } from '@/InPageEdit.js'\nimport { LocalStorageManager } from './managers/LocalStorageManager.js'\nimport { IDBStorageManager } from './managers/IDBStorageManager.js'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n storage: StorageService\n }\n}\n\nexport interface StorageServiceConfig {\n dbName: string\n}\n\nexport class StorageService extends Service<StorageServiceConfig> {\n readonly kv: IDBStorageManager<any>\n readonly simpleKV: LocalStorageManager<any>\n readonly memoryKV: LocalStorageManager<any>\n constructor(\n ctx: InPageEdit,\n public config: StorageServiceConfig\n ) {\n super(ctx, 'storage', false)\n this.kv = this.createDatabase<any>('key-val', 0, 1, 'indexedDB') as IDBStorageManager<any>\n this.simpleKV = this.createDatabase<any>('~', 0, 1, 'localStorage') as LocalStorageManager<any>\n this.memoryKV = this.createDatabase<any>('~', 0, 1, 'memory') as LocalStorageManager<any>\n }\n\n createDatabase<T = any>(\n storeName: string,\n ttl?: number,\n version?: number | string,\n engine: 'indexedDB' | 'localStorage' | 'sessionStorage' | 'memory' = 'indexedDB'\n ): AbstractIPEStorageManager<T> {\n const canUseIDB = 'indexedDB' in window && window.indexedDB !== null\n if (engine === 'indexedDB' && !canUseIDB) {\n engine = 'localStorage'\n }\n switch (engine) {\n case 'indexedDB':\n return new IDBStorageManager<T>(this.config.dbName, storeName, ttl, version)\n case 'localStorage':\n case 'sessionStorage':\n case 'memory':\n return new LocalStorageManager<T>(this.config.dbName, storeName, ttl, version, engine)\n default:\n throw new Error(`Unsupported storage engine: ${engine}`)\n }\n }\n}\n\nexport interface TypedStorageEntry<T = any> {\n /** last update time */\n time: number\n /** stored value */\n value: T\n /** version */\n version?: number | string\n}\n\nexport interface AbstractIPEStorageManager<T = unknown> {\n get(key: string, ttl?: number, setter?: () => Promise<any> | any): Promise<T | null>\n set(key: string, value: null | undefined): Promise<void>\n set(\n record: Record<string, T | null | undefined>\n ): Promise<Record<string, TypedStorageEntry<T> | void>>\n set(key: string, value: T): Promise<TypedStorageEntry<T>>\n has(key: string, ttl?: number): Promise<boolean>\n delete(key: string): Promise<void>\n keys(): AsyncIterable<string>\n values(): AsyncIterable<TypedStorageEntry<T>>\n entries(): AsyncIterable<[string, TypedStorageEntry<T>]>\n updatedAt(key: string): Promise<number>\n clear(): Promise<this>\n}\n","import type Schema from 'schemastery'\n\ntype AnyConstructor<T = any> = new (...args: any[]) => T\n\nexport type PreferenceAugmented<D, C extends AnyConstructor> = C & {\n PreferencesSchema: Schema<D>\n}\n\n/**\n * Decorator for registering preferences\n *\n * ```ts\n * @RegisterPreferences(\n * Schema.object({\n * foo: Schema.string().description('Foo description'),\n * })\n * )\n * class Foo {}\n * ```\n *\n * same as:\n *\n * ```ts\n * class Foo {\n * static ConfigSchema = Schema.object({\n * foo: Schema.string().description('Foo description')\n * })\n * }\n * ```\n */\nexport function RegisterPreferences<D extends Record<string, any>>(schema: Schema<D>) {\n return function <T extends AnyConstructor>(target: T): PreferenceAugmented<D, T> {\n ;(target as any).PreferencesSchema = schema\n return target as PreferenceAugmented<D, T>\n }\n}\n","import { Inject, InPageEdit, Schema, Service } from '@/InPageEdit'\nimport { RegisterPreferences } from '@/decorators/Preferences'\n\ntype ThemePreference = 'light' | 'dark' | 'auto' | 'fandom'\ntype ThemeMode = 'light' | 'dark'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n theme: ThemeService\n }\n interface Events {\n 'theme/changed'(payload: { ctx: InPageEdit; theme: ThemeMode }): void\n }\n interface PreferencesMap {\n theme: ThemePreference\n }\n}\n\n@Inject(['preferences'])\n@RegisterPreferences(\n Schema.object({\n theme: Schema.union([\n Schema.const('auto').description('Follow system'),\n Schema.const('light').description('Light mode'),\n Schema.const('dark').description('Dark mode'),\n Schema.const('fandom').description('Follow Fandom'),\n ])\n .default('auto')\n .description('Theme preference'),\n })\n .description('Theme settings')\n .extra('category', 'general')\n)\nexport class ThemeService extends Service {\n private _mediaQueryList: MediaQueryList | null = null\n private _observer: MutationObserver | null = null\n\n private readonly _handleSystemThemeChange = this._onSystemThemeChange.bind(this)\n private readonly _handleBodyClassChange = this._onBodyClassChange.bind(this)\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'theme', false)\n }\n\n protected async start() {\n this._mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)')\n this._mediaQueryList.addEventListener('change', this._handleSystemThemeChange)\n this._observer = new MutationObserver(this._handleBodyClassChange)\n\n await this.applyTheme()\n\n this.ctx.on('preferences/changed', async ({ changes }) => {\n if ('theme' in changes) {\n await this.applyTheme()\n }\n })\n }\n\n protected stop() {\n if (this._mediaQueryList) {\n this._mediaQueryList.removeEventListener('change', this._handleSystemThemeChange)\n }\n this._observer?.disconnect()\n }\n\n private async _onSystemThemeChange() {\n await this.applyTheme()\n }\n\n private async _onBodyClassChange() {\n await this.applyTheme()\n }\n\n async applyTheme() {\n const pref = (await this.ctx.preferences.get('theme')) || 'auto'\n\n this.updateFandomObserver(pref)\n\n const theme = this.getTheme(pref)\n this.applyThemeClass(theme)\n this.ctx.emit('theme/changed', { ctx: this.ctx, theme })\n }\n\n // don't run observer unless using fandom option\n private updateFandomObserver(pref: ThemePreference) {\n if (pref === 'fandom') {\n this._observer?.observe(document.body, {\n attributes: true,\n attributeFilter: ['class'],\n })\n } else {\n this._observer?.disconnect()\n }\n }\n\n private getTheme(pref: ThemePreference): ThemeMode {\n if (pref === 'auto') {\n return this._mediaQueryList?.matches ? 'dark' : 'light'\n }\n\n if (pref === 'fandom') {\n const body = document.body\n return body.classList.contains('theme-fandomdesktop-dark') ||\n body.classList.contains('theme-fandommobile-dark')\n ? 'dark'\n : 'light'\n }\n\n return pref\n }\n\n private applyThemeClass(theme: ThemeMode) {\n const root = document.body\n if (theme === 'dark') {\n root.classList.add('ipe-theme-dark')\n root.setAttribute('data-ipe-theme', 'dark')\n } else {\n root.classList.remove('ipe-theme-dark')\n root.setAttribute('data-ipe-theme', 'light')\n }\n }\n\n get currentTheme(): ThemeMode {\n return document.body.classList.contains('ipe-theme-dark') ? 'dark' : 'light'\n }\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 { 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', 'wikiPage']\n\n readonly Title: WikiTitleConstructor\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wikiTitle', true)\n this.Title = createWikiTitleModel(this.ctx.wiki.siteInfo)\n }\n private readonly logger = this.ctx.logger('WikiTitleService')\n\n newTitle(title: string | IWikiTitle, namespace?: number) {\n if (typeof title === 'string') {\n return new this.Title(title, namespace)\n } else {\n return title\n }\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 } = this.ctx\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 // It's the landing page\n url === this.ctx.wiki.landingPageUrl\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","const isFunction = (value: any): value is Function => typeof value === 'function'\n\nexport type ComputeAble<T> = (() => T | Promise<T>) | T\nexport async function computeFallback<T>(value: ComputeAble<T>): Promise<T> {\n if (isFunction(value)) {\n return await value()\n } else {\n return value\n }\n}\n\nexport type ComputeAbleSync<T> = (() => T) | T\nexport function computeFallbackSync<T>(value: ComputeAbleSync<T>): T {\n if (isFunction(value)) {\n return value()\n } else {\n return value\n }\n}\n","import { Inject, InPageEdit, Schema, Service, type PreferencesMap } from '@/InPageEdit.js'\nimport { AbstractIPEStorageManager } from '@/services/storage/index.js'\nimport { computeFallback, ComputeAble } from '@/utils/computeable.js'\nimport { IDBStorageManager } from './storage/managers/IDBStorageManager'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n preferences: PreferencesService\n // Alias\n prefs: PreferencesService\n }\n export interface Events {\n 'preferences/changed'(payload: {\n ctx: InPageEdit\n /** original input */\n input: Record<string, unknown>\n /** changed settings */\n changes: Record<string, unknown>\n }): void\n }\n}\n\nexport interface InPageEditPreferenceUICategory {\n name: string\n label: string\n description?: string\n index?: number\n /**\n * 自定义渲染函数\n * @param ctx - InPageEdit 上下文\n * @param onUnmount - 卸载回调,当偏好设置 UI 被卸载时会被调用\n */\n customRenderer?: (payload: {\n ctx: InPageEdit\n onMounted: (callback: (container: HTMLElement) => void) => void\n onUnmount: (callback: () => void) => void\n }) => Promise<Node> | Node\n /**\n * 是否自动生成该分类下的表单\n * @default true\n */\n autoGenerateForm?: boolean\n}\n\nexport interface InPageEditPreferenceUIRegistryItem {\n name: string\n schema: Schema\n category: string\n}\n\n@Inject(['storage', 'wiki'])\nexport class PreferencesService extends Service {\n private db: AbstractIPEStorageManager<any>\n public customRegistries: InPageEditPreferenceUIRegistryItem[] = []\n public categoryDefinitions: InPageEditPreferenceUICategory[] = []\n private _defaultPreferences: Record<string, any> = {}\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'preferences', true)\n ctx.set('prefs', this)\n this.db = ctx.storage.createDatabase<any>(`preferences:${ctx.wiki.userInfo.id}`, Infinity)\n try {\n this._migrageFromLegacyMasterDB()\n } catch (e) {}\n }\n\n get logger() {\n return this.ctx.logger('PREFERENCES')\n }\n\n async start() {}\n\n // 重载魔术:一些类型体操……\n /**\n * 获取配置项的值\n * @param key 配置项的键名\n * @param fallback 当配置项不存在时的回退值\n * @returns\n * - 未提供 key 时,返回所有配置项的键值对\n * - 提供 key 时,返回对应配置项的值,若不存在则返回回退值或 null\n * @tips 你可以通过重载 PreferencesMap 来定义你的配置项类型,以自动获得类型推导\n */\n get(): Promise<PreferencesMap>\n get<K extends keyof PreferencesMap>(\n key: K,\n fallback?: ComputeAble<PreferencesMap[K]>\n ): Promise<PreferencesMap[K] | null>\n get<U = unknown>(key: string, fallback?: ComputeAble<U>): Promise<U | null>\n async get(key?: string, fallback?: ComputeAble<unknown>): Promise<unknown | null> {\n if (!key) {\n return this.getAll()\n }\n fallback ??= () => {\n const defaultValue = this.defaultOf(key as keyof PreferencesMap)\n this.logger.debug(key, `(fallback value: ${defaultValue})`)\n return defaultValue as unknown\n }\n const value = await this.db.get(key, undefined)\n return value !== null ? value : await computeFallback(fallback)\n }\n /**\n * 获取全部注册的配置项以及最终生效的值\n * 未保存的配置项将使用默认值\n */\n async getAll() {\n const data = this.loadDefaultConfigs()\n for await (const [key, record] of this.db.entries()) {\n // 旧版本埋的坑\n if (key === '_touched') continue\n if (key in data) {\n ;(data as any)[key] = record.value\n }\n }\n return data\n }\n\n set<K extends keyof PreferencesMap>(\n key: K,\n value: PreferencesMap[K] | undefined | null\n ): Promise<PreferencesMap[K] | void>\n set<U = unknown>(key: string, value: U | undefined | null): Promise<U | void>\n async set(key: string, value: unknown): Promise<unknown | void> {\n const result = await this.setMany({ [key]: value } as any)\n return (result as any)[key]\n }\n\n setMany(input: {\n [K in keyof PreferencesMap]?: PreferencesMap[K] | undefined | null\n }): Promise<{\n [K in keyof PreferencesMap]?: PreferencesMap[K] | undefined | null\n }>\n setMany<U = unknown>(\n input: Record<string, U | undefined | null>\n ): Promise<Record<string, U | undefined | null>>\n async setMany(input: Record<string, unknown>) {\n const defaults = this.loadDefaultConfigs()\n const changes: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(input)) {\n if (value === (defaults as any)[key] || value === void 0) {\n changes[key] = void 0\n } else {\n changes[key] = value\n }\n }\n await this.db.set(changes)\n this.ctx.emit('preferences/changed', { ctx: this.ctx, input, changes })\n return changes\n }\n\n defaultOf<T extends keyof PreferencesMap>(key: T): PreferencesMap[T] | undefined\n defaultOf<U = unknown>(key: string): U | undefined\n defaultOf(key: string) {\n return (this._defaultPreferences[key] ??=\n this.loadDefaultConfigs()[key as keyof PreferencesMap])\n }\n\n /**\n * Get exportable configurations\n * - exclude values that are the same as the default value\n * - exclude invalid or undefined values\n * - sort by keys\n */\n async getExportableRecord(configs?: Record<string, unknown>) {\n configs ??= (await this.getAll()) as any\n const defaults = this.loadDefaultConfigs()\n\n const out: Record<string, any> = {}\n Object.entries(defaults)\n .sort(([a], [b]) => a.localeCompare(b))\n .forEach(([key, value]) => {\n const pref = configs![key]\n if (pref !== void 0 && pref !== value) {\n out[key] = pref\n }\n })\n return out\n }\n\n private loadDefaultConfigs() {\n const data = {} as any\n this.getConfigRegistries().forEach((item) => {\n // 首先读取 schema 上的默认值\n try {\n const defaultValues = item.schema({}) as any\n Object.entries(defaultValues).forEach(([key, val]) => {\n data[key] = val\n })\n } catch {}\n })\n\n Object.entries(data).forEach(([key, val]) => {\n this._defaultPreferences[key] = val\n })\n\n return data as PreferencesMap\n }\n\n registerCustomConfig(id: string, schema: Schema, category?: string) {\n const config = {\n name: id,\n schema,\n category: category || 'general',\n }\n const index = this.customRegistries.findIndex((item) => item.name === id)\n if (index >= 0) {\n this.customRegistries[index] = config\n } else {\n this.customRegistries.push(config)\n }\n return this\n }\n\n getConfigRegistries(category?: string): InPageEditPreferenceUIRegistryItem[] {\n return Array.from(this.ctx.registry.entries())\n .map<{\n name: string\n schema: Schema\n }>(([plugin]) => {\n if (plugin === null) {\n return {\n name: '@root',\n schema: (InPageEdit as any)?.PreferencesSchema || null,\n }\n } else {\n return {\n name: plugin.name,\n schema: (plugin as any)?.PreferencesSchema || null,\n }\n }\n })\n .filter((item) => item.schema !== null)\n .map((item) => {\n return {\n ...item,\n category: item.schema.meta.category || 'general',\n }\n })\n .concat(this.customRegistries)\n .filter((item) => !category || item.category === category)\n }\n getAllSchema() {\n return new Schema<PreferencesMap>(\n Schema.intersect(this.getConfigRegistries().map((item) => item.schema))\n )\n }\n\n defineCategory(category: InPageEditPreferenceUICategory) {\n const index = this.categoryDefinitions.findIndex((tab) => tab.name === category.name)\n if (index < 0) {\n this.categoryDefinitions.push(category)\n } else {\n this.categoryDefinitions[index] = category\n }\n this.categoryDefinitions.sort((a, b) => {\n return (a.index ?? 0) - (b.index ?? 0)\n })\n return this\n }\n\n getConfigCategories() {\n return this.categoryDefinitions\n }\n\n private async _migrageFromLegacyMasterDB() {\n const legacyDB = this.ctx.storage.createDatabase<any>('preferences', Infinity)\n let count = 0\n for await (const [key, record] of legacyDB.entries()) {\n if (key === '_touched') continue\n await this.db.set(key, record.value)\n count++\n }\n count && this.logger.info(`Migrated ${count} preferences from master DB`)\n await legacyDB.clear()\n await (legacyDB as IDBStorageManager)?.db?.disconnect?.()\n return count\n }\n}\n","export enum Endpoints {\n ANALYTICS_API_BASE = 'https://analytics.ipe.wiki/api/v6',\n ANALYTICS_DASH_URL = 'https://analytics.ipe.wiki',\n GITHUB_URL = 'https://github.com/inpageedit/inpageedit-next',\n GITHUB_OWNER = 'inpageedit',\n GITHUB_REPO = 'inpageedit-next',\n HOME_URL = 'https://www.ipe.wiki/',\n UPDATE_LOGS_URL = 'https://www.ipe.wiki/changelogs/',\n PLUGIN_REGISTRY_URL = 'https://registry.ipe.wiki/registry.v1.json',\n I18N_INDEX_URL = 'https://registry.ipe.wiki/i18n/index.json',\n QQ_GROUP_ID = '1026023666',\n}\n","// keyword & RegExp caches\nconst ESCAPE_ARG_L = '\\uF114'\nconst ESCAPE_ARG_R = '\\uF514'\nconst REG_ESCAPE_ARG_L = /\\\\\\{/g\nconst REG_ESCAPE_ARG_R = /\\\\\\}/g\nconst REG_RESTORE_ARG_L = new RegExp(ESCAPE_ARG_L, 'g')\nconst REG_RESTORE_ARG_R = new RegExp(ESCAPE_ARG_R, 'g')\n\n/**\n * interpolate\n * - 具名插值:`{{expr}}`,其中 expr 可为标识符或简单表达式(如 `{{ name || \"world\" }}`、`{{ name ? 'hi ' + name : '' }}`)。\n * - 匿名插值:使用 `{{ $1 }}`、`{{ $2 }}`...,可用可变参数或数组提供位置参数。\n * - 具名与匿名可混用;若缺失值,替换为空字符串。\n *\n * 示例:\n * ```ts\n * interpolate('hello, {{ name }}') // 'hello, '\n * interpolate('hello, {{ name || \"world\" }}') // 'hello, world'\n * interpolate('hello, {{ name || \"world\" }}', { name: 'dragon' }) // 'hello, dragon'\n * interpolate('hello, {{ $1 }}. {{ $2 }}', 'dragon', 'yeah') // 'hello, dragon. yeah'\n * interpolate('hello, {{ $1 }}. {{ $2 }}', ['dragon', 'yeah']) // 'hello, dragon. yeah'\n * interpolate('hello, {{ $1 }}. {{ greeting || \"\" }}', { $1: 'dragon', greeting: 'yeah' }) // 'hello, dragon. yeah'\n * ```\n */\nexport function interpolate(template: string): string\nexport function interpolate(template: string, context: Record<string, unknown>): string\nexport function interpolate(template: string, ...numricContext: string[]): string\nexport function interpolate(template: string, numricContext: string[]): string\nexport function interpolate(template: string, ...args: Array<unknown>): string {\n return baseInterpolate(undefined, template, ...args)\n}\n\n/**\n * 创建带有“全局可用函数/变量”的插值函数。\n * - 传入的 globals 会作为模板可用的全局,只在上下文未提供同名键时生效(上下文优先)。\n * - 返回的函数与 interpolate 具有相同签名。\n *\n * 示例:\n * ```ts\n * const interpolate = createInterpolate({ getUrl })\n * interpolate('url is: {{ getUrl(title) }}', { title: 'foo' })\n * ```\n */\nexport type Interpolator = {\n (template: string): string\n (template: string, context: Record<string, unknown>): string\n (template: string, ...numricContext: string[]): string\n (template: string, numricContext: string[]): string\n}\nexport function createInterpolate(globals?: Record<string, unknown>): Interpolator {\n const g = globals ? { ...globals } : undefined\n const fn = (template: string, ...args: Array<unknown>) => {\n return baseInterpolate(g, template, ...args)\n }\n return fn as Interpolator\n}\n\nfunction baseInterpolate(\n globals: Record<string, unknown> | undefined,\n template: string,\n ...args: Array<unknown>\n): string {\n if (!template) return ''\n\n let out = String(template)\n .replace(REG_ESCAPE_ARG_L, ESCAPE_ARG_L)\n .replace(REG_ESCAPE_ARG_R, ESCAPE_ARG_R)\n\n let named: Record<string, unknown> = {}\n let numrics: unknown[] = []\n\n if (args.length === 1 && Array.isArray(args[0])) {\n numrics = args[0] as unknown[]\n } else if (args.length === 1 && isPlainObject(args[0])) {\n named = args[0] as Record<string, unknown>\n } else if (args.length > 0) {\n numrics = args\n }\n\n const ctx: Record<string, unknown> = Object.create(null)\n if (numrics && numrics.length) {\n for (let i = 0; i < numrics.length; i++) {\n ctx[`$${i + 1}`] = numrics[i]\n }\n }\n if (named && Object.keys(named).length) {\n for (const k of Object.keys(named)) ctx[k] = (named as any)[k]\n }\n // 合入全局(不覆盖上下文已提供的同名键)\n if (globals && Object.keys(globals).length) {\n for (const k of Object.keys(globals)) {\n if (typeof ctx[k] === 'undefined') {\n ctx[k] = (globals as any)[k]\n }\n }\n }\n\n out = out.replace(/\\{\\{\\s*([\\s\\S]*?)\\s*\\}\\}/g, (_m, exprRaw: string) => {\n const expr = String(exprRaw).trim()\n if (!expr) return ''\n try {\n const value = safeEval(expr, ctx)\n if (value == null) return ''\n return String(value)\n } catch {\n return ''\n }\n })\n\n return out.replace(REG_RESTORE_ARG_L, '{').replace(REG_RESTORE_ARG_R, '}')\n}\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && (v as object).constructor === Object\n}\n\nconst safeEval = createEvaluator()\nfunction createEvaluator() {\n const globalNames = new Set([\n 'eval',\n 'Object',\n 'Array',\n 'String',\n 'Number',\n 'Boolean',\n 'Date',\n 'Math',\n 'JSON',\n 'undefined',\n 'null',\n 'true',\n 'false',\n 'NaN',\n 'Infinity',\n 'isNaN',\n 'isFinite',\n 'parseInt',\n 'parseFloat',\n ])\n\n const fn = new Function(\n '__expr__',\n 'ctx',\n `\n try {\n with (ctx) {\n return (eval(__expr__));\n }\n } catch (e) {\n throw e;\n }\n `\n ) as (expr: string, ctx: Record<string, unknown>) => unknown\n return (expr: string, ctx: Record<string, unknown>) => {\n /**\n * 创建 ctx 的代理,避免模板字符串调用了未传递的参数\n * 例如:interpolate('hello, {{ name || \"world\" }}')\n * 我们没有传递任何参数,引用 name 会出现 ReferenceError\n */\n const proxiedCtx = new Proxy(ctx, {\n has: (target, prop) => {\n if (typeof prop === 'symbol') {\n return prop in target\n }\n if (typeof prop === 'string' && (globalNames.has(prop) || prop === '__expr__')) {\n return false\n }\n return true\n },\n get: (target, prop) => {\n if (prop in target) {\n return target[prop as string]\n }\n return undefined\n },\n })\n return fn(expr, proxiedCtx)\n }\n}\n","export function capitalize(source: string) {\n return source.charAt(0).toUpperCase() + source.slice(1)\n}\n\nexport function uncapitalize(source: string) {\n return source.charAt(0).toLowerCase() + source.slice(1)\n}\n\nexport function camelCase(source: string) {\n return source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase())\n}\n\nexport function paramCase(source: string) {\n return uncapitalize(source)\n .replace(/_/g, '-')\n .replace(/.[A-Z]+/g, (str) => str[0] + '-' + str.slice(1).toLowerCase())\n}\n\nexport function snakeCase(source: string) {\n return uncapitalize(source)\n .replace(/-/g, '_')\n .replace(/.[A-Z]+/g, (str) => str[0] + '_' + str.slice(1).toLowerCase())\n}\n\nexport function trimSlash(source: string) {\n return source.replace(/\\/+$/, '')\n}\n\nexport function ensureSlash(source: string) {\n return source.endsWith('/') ? source : source + '/'\n}\n","import { createInterpolate } from './interpolate.js'\nimport type { Interpolator } from './interpolate.js'\n\nfunction joinTemplateStrings(strings: TemplateStringsArray, values: Array<unknown>) {\n let out = strings[0] ?? ''\n for (let i = 0; i < values.length; i++) {\n out += String(values[i]) + (strings[i + 1] ?? '')\n }\n return out\n}\n\nexport class I18nManager {\n private languages = new Map<string, Map<string, string>>()\n private currentLanguage = 'en'\n // 记录某个键在哪些语言中缺失了\n private missingKeys = new Map<string, string[]>()\n // 记录已使用的所有键\n private usedKeys = new Set<string>()\n interpolate: Interpolator\n constructor(\n init?: Record<string, any>,\n options?: {\n language?: string\n globals?: Record<string, unknown>\n }\n ) {\n const lang = options?.language || 'en'\n this.currentLanguage = lang\n this.interpolate = createInterpolate(options?.globals)\n if (init && Object.keys(init).length) {\n this.setLanguageData(lang, init)\n }\n }\n\n setGlobals(globals: Record<string, unknown>) {\n this.interpolate = createInterpolate(globals)\n return this\n }\n\n /**\n * ```\n * { foo: 'foo', bar: { baz: 'qux' } }\n * ```\n * will be merged into\n * ```\n * { foo: 'foo', 'bar.baz': 'qux' }\n * ```\n */\n set(key: string, value: string): this\n set(data: Record<string, any>): this\n set(arg1: string | Record<string, any>, arg2?: string): this {\n const lang = this.currentLanguage\n const dict = this.ensureLanguageMap(lang)\n if (typeof arg1 === 'string' && typeof arg2 === 'string') {\n dict.set(arg1, arg2)\n } else if (typeof arg1 === 'object') {\n const flat = this.toStringRecord(arg1)\n for (const [k, v] of Object.entries(flat)) {\n dict.set(k, v)\n }\n }\n return this\n }\n\n setLanguageData(language: string, data: Record<string, any>): this {\n language = paramCase(language).toLowerCase()\n const dict = this.ensureLanguageMap(language)\n const flat = this.toStringRecord(data)\n for (const [k, v] of Object.entries(flat)) {\n dict.set(k, v)\n }\n return this\n }\n\n setLanguage(language: string) {\n language = paramCase(language).toLowerCase()\n this.currentLanguage = language\n return this\n }\n\n getLanguage() {\n return this.currentLanguage\n }\n\n hasLanguage(language: string) {\n language = paramCase(language).toLowerCase()\n const data = this.languages.get(language)\n return data && Object.keys(data).length > 0\n }\n\n private toStringRecord(data: Record<string, any>, prefix?: string): Record<string, string> {\n const result: Record<string, string> = {}\n for (const [key, value] of Object.entries(data)) {\n const nextKey = prefix ? `${prefix}.${key}` : key\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const nested = this.toStringRecord(value as Record<string, any>, nextKey)\n for (const [nk, nv] of Object.entries(nested)) {\n result[nk] = String(nv)\n }\n } else {\n result[nextKey] = String(value)\n }\n }\n return result\n }\n\n has(key: string) {\n const langs = this.resolveLanguageOrder(this.currentLanguage)\n for (const lg of langs) {\n const dict = this.languages.get(lg)\n if (dict?.has(key)) return true\n }\n return false\n }\n\n get(key: string) {\n this.recordUsedKey(key)\n const langs = this.resolveLanguageOrder(this.currentLanguage)\n const missing: string[] = []\n for (const lg of langs) {\n const dict = this.languages.get(lg)\n const val = dict?.get(key)\n if (typeof val !== 'undefined') {\n if (missing.length) this.recordMissing(key, missing)\n return val\n }\n missing.push(lg)\n }\n // 全链均未命中,记录整条链\n if (missing.length) this.recordMissing(key, missing)\n return undefined\n }\n\n /**\n * [payload as template] Interpolate a message with optional arguments\n * @example\n * ```\n * i18n.msg('Hello, {{ name }}', 'dragon')\n * // good: \"你好,dragon\"\n * // missing: \"Hello, dragon\"\n * ```\n */\n translate(msg: string): string\n translate(msg: string, context: Record<string, unknown>): string\n translate(msg: string, ...numricContext: string[]): string\n translate(msg: string, numricContext: string[]): string\n translate(msg: string, ...args: Array<unknown>): string {\n if (!msg) {\n return ''\n }\n if (this.currentLanguage === 'qqx') {\n return `⧼${msg}⧽`\n }\n const template = this.get(msg)\n if (typeof template === 'undefined') {\n return this.interpolate(msg, ...(args as any))\n }\n return this.interpolate(template, ...(args as any))\n }\n /**\n * $ => translate\n * @example\n * ```\n * $`hello, world` // \"你好,世界\"\n * $('dragon')`hello, {{ $1 }}` // \"你好,dragon\"\n */\n $(\n context: Record<string, unknown>\n ): (strings: TemplateStringsArray, ...values: unknown[]) => string\n $(...numricContext: string[]): (strings: TemplateStringsArray, ...values: unknown[]) => string\n $(strings: TemplateStringsArray, ...values: unknown[]): string\n $(...args: any[]): any {\n const isTagCall = Array.isArray(args[0]) && (args[0] as any)?.raw\n if (isTagCall) {\n // 直接作为模板标签使用:$`...`\n const strings = args[0] as TemplateStringsArray\n const values = args.slice(1)\n const msg = joinTemplateStrings(strings, values)\n return this.translate(msg)\n }\n // 先传上下文/位置参数,返回模板标签函数:$({...})`...` / $('a','b')`...`\n const capturedArgs = args\n return (strings: TemplateStringsArray, ...values: unknown[]) => {\n const msg = joinTemplateStrings(strings, values)\n return this.translate(msg, ...(capturedArgs as any))\n }\n }\n\n /**\n * [payload as template] Return the raw message without interpolation\n * @example\n * ```\n * i18n.rawMsg('Hello, {{ name }}')\n * // good: \"你好,{{ name }}\"\n * // missing: \"Hello, {{ name }}\"\n * ```\n */\n translateRaw(msg: string): string {\n if (!msg) {\n return ''\n }\n if (this.currentLanguage === 'qqx') {\n return `⧼${msg}⧽`\n }\n const template = this.get(msg)\n return template ?? msg\n }\n /**\n * $raw => translateRaw\n * @example\n * ```\n * $raw`hello, {{ $1 }}`\n * // good: \"你好,{{ $1 }}\"\n * // missing: \"hello, {{ $1 }}\"\n * ```\n */\n $raw(\n _context: Record<string, unknown>\n ): (strings: TemplateStringsArray, ...values: unknown[]) => string\n $raw(..._numricContext: string[]): (strings: TemplateStringsArray, ...values: unknown[]) => string\n $raw(strings: TemplateStringsArray, ...values: unknown[]): string\n $raw(...args: any[]): any {\n const isTagCall = Array.isArray(args[0]) && (args[0] as any)?.raw\n if (isTagCall) {\n const strings = args[0] as TemplateStringsArray\n const values = args.slice(1)\n const msg = joinTemplateStrings(strings, values)\n return this.translateRaw(msg)\n }\n return (strings: TemplateStringsArray, ...values: unknown[]) => {\n const msg = joinTemplateStrings(strings, values)\n return this.translateRaw(msg)\n }\n }\n\n /**\n * [payload as key] Interpolate a message by key with optional arguments\n * @example\n * ```\n * i18n.strictMsg('greeting', 'dragon')\n * // good: \"你好,dragon\"\n * // missing: \"(greeting)\"\n * ```\n */\n message(key: string): string\n message(key: string, context: Record<string, unknown>): string\n message(key: string, ...numricContext: string[]): string\n message(key: string, numricContext: string[]): string\n message(key: string, ...args: Array<unknown>): string {\n if (!key) {\n return ''\n }\n if (this.currentLanguage === 'qqx') {\n return `⧼${key}⧽`\n }\n const template = this.get(key)\n if (typeof template === 'undefined') {\n return `(${key})`\n }\n return this.interpolate(template, ...(args as any))\n }\n /**\n * $$ => message\n * @example\n * ```\n * $$`hello`\n * // good: \"你好\"\n * // missing: \"(hello)\"\n * $$('dragon')`greeting`\n * // good: \"你好,dragon\"\n * // missing: \"(greeting)\"\n * ```\n */\n $$(\n context: Record<string, unknown>\n ): (strings: TemplateStringsArray, ...values: unknown[]) => string\n $$(...numricContext: string[]): (strings: TemplateStringsArray, ...values: unknown[]) => string\n $$(strings: TemplateStringsArray, ...values: unknown[]): string\n $$(...args: any[]): any {\n const isTagCall = Array.isArray(args[0]) && (args[0] as any)?.raw\n if (isTagCall) {\n const strings = args[0] as TemplateStringsArray\n const values = args.slice(1)\n const key = joinTemplateStrings(strings, values)\n return this.message(key)\n }\n const capturedArgs = args\n return (strings: TemplateStringsArray, ...values: unknown[]) => {\n const key = joinTemplateStrings(strings, values)\n return this.message(key, ...(capturedArgs as any))\n }\n }\n\n /**\n * [payload as key] Return the raw message without interpolation\n * @example\n * ```\n * i18n.rawMsg('greeting')\n * // good: \"你好,{{ name }}\"\n * // missing: \"(greeting)\"\n * ```\n */\n messageRaw(key: string): string {\n if (!key) {\n return ''\n }\n if (this.currentLanguage === 'qqx') {\n return `⧼${key}⧽`\n }\n const template = this.get(key)\n return template ?? `(${key})`\n }\n /**\n * $$raw => messageRaw\n * @example\n * ```\n * $$raw`greeting`\n * // good: \"你好,{{ name }}\"\n * // missing: \"(greeting)\"\n * ```\n */\n $$raw(\n _context: Record<string, unknown>\n ): (strings: TemplateStringsArray, ...values: unknown[]) => string\n $$raw(\n ..._numricContext: string[]\n ): (strings: TemplateStringsArray, ...values: unknown[]) => string\n $$raw(strings: TemplateStringsArray, ...values: unknown[]): string\n $$raw(...args: any[]): any {\n const isTagCall = Array.isArray(args[0]) && (args[0] as any).raw\n if (isTagCall) {\n const strings = args[0] as TemplateStringsArray\n const values = args.slice(1)\n const key = joinTemplateStrings(strings, values)\n return this.messageRaw(key)\n }\n return (strings: TemplateStringsArray, ...values: unknown[]) => {\n const key = joinTemplateStrings(strings, values)\n return this.messageRaw(key)\n }\n }\n\n getAvailableLanguages() {\n return Array.from(this.languages.keys())\n }\n\n private ensureLanguageMap(language: string) {\n let dict = this.languages.get(language)\n if (!dict) {\n dict = new Map<string, string>()\n this.languages.set(language, dict)\n }\n return dict\n }\n\n private resolveLanguageOrder(language: string) {\n // 简化回退逻辑:仅当前语言 -> en\n const cur = language\n return cur === 'en' ? ['en'] : [cur, 'en']\n }\n\n /**\n * 获取缺失键报告:\n * { foo: ['zh', 'zh-hans', 'en'] }\n */\n getMissingReport() {\n return Object.fromEntries(this.missingKeys.entries())\n }\n\n /**\n * 清空缺失键记录\n */\n clearMissingReport() {\n this.missingKeys.clear()\n }\n\n private recordMissing(key: string, langs: string[]) {\n if (!langs.length) return\n const list = this.missingKeys.get(key) || []\n for (const lg of langs) {\n if (!list.includes(lg)) list.push(lg)\n }\n this.missingKeys.set(key, list)\n }\n\n private recordUsedKey(key: string) {\n this.usedKeys.add(key)\n }\n\n private getUsedKeys() {\n return Array.from(this.usedKeys)\n }\n private generateBlankKeyRecord() {\n const record: Record<string, string> = {}\n for (const key of this.getUsedKeys()) {\n record[key] = ''\n }\n return record\n }\n}\n","import { Inject, InPageEdit, Logger, Schema, Service } from '@/InPageEdit'\nimport { I18nManager as I18nManager } from './I18nManager.js'\nimport { Endpoints } from '@/constants/endpoints.js'\nimport { AbstractIPEStorageManager } from '../storage/index.js'\n\nexport interface I18nIndexV1 {\n manifest_version: 1\n base_language: string\n last_modified: string\n languages: Record<string, I18nIndexLanguage>\n}\n\nexport interface I18nIndexLanguage {\n file: string\n iso_name?: string\n endonym?: string\n fallback?: string\n data?: I18nStringRecord\n}\n\ninterface I18nStringRecord {\n [key: string]: string | I18nStringRecord\n}\n\nexport const I18nIndexV1Schema = new Schema<I18nIndexV1>(\n Schema.object({\n manifest_version: Schema.const(1).required(),\n base_language: Schema.string().required(),\n last_modified: Schema.string().required(),\n languages: Schema.dict(\n Schema.object({\n file: Schema.string().required(),\n fallback: Schema.string(),\n iso_name: Schema.string(),\n endonym: Schema.string(),\n data: Schema.transform(Schema.dict(Schema.any()).default({}), (v) =>\n Object.keys(v).length > 0 ? v : undefined\n ),\n })\n ).required(),\n })\n)\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n i18n: I18nService\n\n /**\n * $ => translate [payload as template]\n * @example\n * ```\n * $`hello, world`\n * // good: \"你好,世界\"\n * // missing: \"hello, world\"\n * $('dragon')`hello, {{ $1 }}`\n * // good: \"你好,dragon\"\n * // missing: \"hello, dragon\"\n * ```\n */\n $: I18nManager['$']\n /**\n * $raw => translateRaw [payload as template]\n * @example\n * ```\n * $raw`hello, {{ $1 }}`\n * // good: \"你好,{{ $1 }}\"\n * // missing: \"hello, {{ $1 }}\"\n * ```\n */\n $raw: I18nManager['$raw']\n /**\n * $$ => message [payload as key]\n * @example\n * ```\n * $$`hello`\n * // good: \"你好\"\n * // missing: \"(hello)\"\n * $$('dragon')`greeting`\n * // good: \"你好,dragon\"\n * // missing: \"(greeting)\"\n * ```\n */\n $$: I18nManager['$$']\n /**\n * $$raw => messageRaw [payload as key]\n * @example\n * ```\n * $$raw`greeting`\n * // good: \"你好,{{ name }}\"\n * // missing: \"(greeting)\"\n * ```\n */\n $$raw: I18nManager['$$raw']\n }\n export interface PreferencesMap {\n language: string\n 'i18n.index_url': string\n }\n export interface Events {\n 'i18n/changed'(payload: { ctx: InPageEdit; language: string }): void\n }\n}\n\n@Inject(['wiki', 'preferences'])\n@RegisterPreferences(\n Schema.object({\n 'i18n.index_url': Schema.string()\n .description('I18n index URL (DO NOT CHANGE THIS) ')\n .default(\n import.meta.env.PROD\n ? Endpoints.I18N_INDEX_URL\n : import.meta.resolve('/src/__mock__/i18n/index.json')\n ),\n })\n .description('')\n .extra('category', 'general')\n)\nexport class I18nService extends Service {\n private readonly logger: Logger\n private _indexUrl!: string\n private _indexCache: I18nIndexV1 | null = null\n public readonly manager: I18nManager\n\n private i18nIndexDB: AbstractIPEStorageManager<I18nIndexV1>\n private i18nDataDB: AbstractIPEStorageManager<Record<string, string>>\n\n $!: I18nManager['$']\n $raw!: I18nManager['$raw']\n $$!: I18nManager['$$']\n $$raw!: I18nManager['$$raw']\n\n constructor(readonly ctx: InPageEdit) {\n super(ctx, 'i18n', false)\n this.logger = this.ctx.logger('I18nService')\n this.manager = new I18nManager(\n {},\n {\n language: '',\n globals: {\n userName: this.ctx.wiki.userInfo.name || '',\n userId: this.ctx.wiki.userInfo.id || 0,\n siteName: this.ctx.wiki.siteInfo.general.sitename || '',\n },\n }\n )\n this.i18nIndexDB = ctx.storage.createDatabase<I18nIndexV1>(\n 'i18n-index',\n 1000 * 60 * 60 * 24 * 3, // 3 days\n this.ctx.version,\n 'indexedDB'\n )\n this.i18nDataDB = ctx.storage.createDatabase<Record<string, string>>(\n 'i18n-data',\n 1000 * 60 * 60 * 24 * 3, // 3 days\n this.ctx.version,\n 'indexedDB'\n )\n this.$ = this.manager.$.bind(this.manager)\n this.$raw = this.manager.$raw.bind(this.manager)\n this.$$ = this.manager.$$.bind(this.manager)\n this.$$raw = this.manager.$$raw.bind(this.manager)\n }\n\n protected async start(): Promise<void> {\n // pre-register\n this.ctx.preferences.registerCustomConfig(\n 'language',\n Schema.object({\n language: Schema.union([\n '@user',\n '@site',\n Schema.string().description('Custom language code'),\n ])\n .description('UI language')\n .default('@user'),\n }).description('UI language')\n )\n\n this.ctx.on('clear-cache', this.onClearCache.bind(this))\n\n const indexUrl = (this._indexUrl = (await this.ctx.preferences.get('i18n.index_url')) || '')\n if (!indexUrl) {\n this.logger.error('I18n index URL is not set')\n this.setupShortcuts()\n return\n }\n\n let index: I18nIndexV1 | null = null\n try {\n index = await this.getI18nIndex(indexUrl)\n } catch (e) {\n this.logger.error('Failed to fetch i18n index', e)\n this.setupShortcuts()\n return\n }\n this._indexCache = index\n Object.entries(index.languages).forEach(([code, meta]) => {\n if (meta.data && Object.keys(meta.data).length > 0) {\n this.manager.setLanguageData(code, meta.data)\n }\n })\n\n const prefer = await this.ctx.preferences.get('language')\n const normalized = this.normalizeLanguageCode(prefer)\n\n this.logger.debug('Settings', { prefer, normalized })\n\n try {\n await this.switchLanguage(normalized)\n this.logger.info(`Initialized for language: ${this.language}`)\n } catch (e) {\n this.logger.error('Failed to fetch i18n index', e)\n this.manager.setLanguage('en')\n }\n\n // rewrite-schema\n this.ctx.preferences.registerCustomConfig(\n 'language',\n Schema.object({\n language: Schema.union([\n Schema.const('@user').description(this.$`Same as your personal language`),\n Schema.const('@site').description(this.$`Same as the site language`),\n ...this.getAvailableLanguageCodes().map(({ code, endonym, iso_name }) =>\n Schema.const(code).description(endonym || iso_name || code)\n ),\n ]).default('@user'),\n }).description(this.$`InPageEdit UI language`)\n )\n\n this.setupShortcuts()\n\n // 当偏好设置中的 language 发生变化时,自动热切换\n this.ctx.on('preferences/changed', async ({ changes }) => {\n if (!('language' in changes)) return\n const next = this.normalizeLanguageCode(await this.ctx.preferences.get('language'))\n if (next && next !== this.language) {\n await this.switchLanguage(next)\n }\n })\n }\n\n private setupShortcuts() {\n if (!this.manager) throw new Error('I18nManager is not initialized')\n this.ctx.set('$', this.manager.$.bind(this.manager))\n this.ctx.set('$raw', this.manager.$raw.bind(this.manager))\n this.ctx.set('$$', this.manager.$$.bind(this.manager))\n this.ctx.set('$$raw', this.manager.$$raw.bind(this.manager))\n }\n\n private normalizeLanguageCode(code: any) {\n if (!code || typeof code !== 'string') return 'en'\n if (code === '@user') code = this.ctx.wiki.userInfo.options.language || 'en'\n if (code === '@site') code = this.ctx.wiki.siteInfo.general.lang || 'en'\n return paramCase(String(code)).toLowerCase()\n }\n\n get language() {\n return this.manager.getLanguage()\n }\n\n /**\n * 主动设置偏好值(会触发 preferences/changed,从而热切换)\n */\n async setLanguagePreference(value: '@user' | '@site' | string) {\n await this.ctx.preferences.set('language', value as any)\n }\n\n /**\n * 直接切换到具体语言(不修改偏好值)\n */\n async switchLanguage(language: string) {\n const lang = this.normalizeLanguageCode(language)\n await this.ensureLanguageLoaded(lang)\n this.manager.setLanguage(lang)\n this.ctx.emit('i18n/changed', { ctx: this.ctx, language: lang })\n }\n\n /**\n * 为指定语言注册(或合并)消息。\n * - 推荐加命名空间避免冲突:{ myPlugin: { key: 'value' } }\n * - 若 language 为当前语言,将立即可用;必要时你可以手动触发 UI 刷新或监听 i18n/changed。\n */\n async registerMessages(\n language: string,\n data: Record<string, any>,\n options?: { namespace?: string }\n ) {\n const payload = options?.namespace ? { [options.namespace]: data } : data\n this.manager.setLanguageData(language, payload)\n if (language === this.language) {\n // 不更改语言,仅提示有新消息注入;由调用方决定是否刷新 UI\n this.ctx.emit('i18n/changed', { ctx: this.ctx, language: this.language })\n }\n }\n\n /**\n * 列出可用语言与文件(来源于 index.json)\n */\n getAvailableLanguageCodes(): (I18nIndexLanguage & { code: string })[] {\n if (!this._indexCache) throw new Error('I18n index is not loaded')\n return Object.entries(this._indexCache.languages)\n .filter(([_, meta]) => !meta.fallback)\n .reduce(\n (acc, [code, meta]) => {\n acc.push({ code, ...meta })\n return acc\n },\n [] as (I18nIndexLanguage & { code: string })[]\n )\n }\n\n private findLanguageMeta(\n index: I18nIndexV1,\n language: string\n ): (I18nIndexLanguage & { code: string }) | undefined {\n const normalized = paramCase(String(language)).toLowerCase()\n const found = index.languages[normalized]\n if (found) {\n return {\n code: normalized,\n ...found,\n }\n } else {\n const en = index.languages['en']\n if (en) {\n return {\n code: 'en',\n ...en,\n }\n }\n }\n }\n\n public async getI18nIndex(url: string, noCache = false): Promise<I18nIndexV1> {\n if (!noCache) {\n const cached = await this.i18nIndexDB.get(url)\n if (cached) {\n try {\n return I18nIndexV1Schema(cached)\n } catch (e) {\n this.logger.error('Failed to parse cached i18n index', e)\n this.i18nIndexDB.delete(url)\n }\n }\n }\n const index = await this.fetchI18nIndex(url)\n this.i18nIndexDB.set(url, index)\n return index\n }\n private async fetchI18nIndex(url: string): Promise<I18nIndexV1> {\n const index = (await fetch(url).then((res) => res.json())) as I18nIndexV1\n return I18nIndexV1Schema(index)\n }\n\n private async ensureLanguageLoaded(language: string) {\n if (!this.manager || !this._indexCache) throw new Error('I18nManager is not initialized')\n if (this.manager.hasLanguage(language)) {\n return this.logger.debug('Language already loaded', language)\n }\n const data = await this.getLanguageData(language)\n this.manager.setLanguageData(language, data)\n this.logger.debug('Language data ensured', language, data)\n }\n\n public async getLanguageData(language: string, noCache = false): Promise<Record<string, string>> {\n if (!this._indexCache) throw new Error('I18n index is not loaded')\n const meta = this.findLanguageMeta(this._indexCache, language)\n if (!meta) return {}\n\n const key = `${this._indexUrl}#${meta.file}`\n if (!noCache) {\n const cached = await this.i18nDataDB.get(key)\n if (cached && Object.keys(cached).length > 0) {\n this.logger.debug('Using cached language data', language, cached)\n return cached\n }\n }\n\n const data =\n meta.data ||\n (await fetch(new URL(meta.file, this._indexUrl).toString()).then((res) => res.json()))\n\n this.i18nDataDB.set(key, data)\n this.logger.debug('Language data fetched', language, meta.file, data)\n\n return data\n }\n\n /**\n * 获取缺失键报告,形如:\n * { foo: ['zh', 'zh-hans', 'en'] }\n */\n getMissingReport() {\n return this.manager.getMissingReport()\n }\n\n /**\n * 清空缺失键记录\n */\n clearMissingReport() {\n this.manager.clearMissingReport()\n }\n\n private async onClearCache() {\n await this.i18nIndexDB.clear()\n await this.i18nDataDB.clear()\n }\n}\n","export type InputLike = string | ArrayBuffer | ArrayBufferView\n\nconst te = new TextEncoder()\n\nfunction toBytes(input: InputLike): Uint8Array {\n if (typeof input === 'string') return te.encode(input)\n if (input instanceof ArrayBuffer) return new Uint8Array(input)\n if (ArrayBuffer.isView(input))\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength)\n throw new TypeError('Unsupported input type')\n}\n\nexport function toHex(bytes: Uint8Array): string {\n let out = ''\n for (let i = 0; i < bytes.length; i++) {\n const h = bytes[i].toString(16).padStart(2, '0')\n out += h\n }\n return out\n}\n\nexport function toBase64(bytes: Uint8Array): string {\n let bin = ''\n for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i])\n return btoa(bin)\n}\n\nasync function getSubtle(): Promise<SubtleCrypto> {\n if (typeof globalThis.crypto?.subtle !== 'undefined') {\n return globalThis.crypto.subtle\n }\n throw new Error('WebCrypto Subtle API is not available in this environment.')\n}\n\nexport async function sha1(input: InputLike): Promise<Uint8Array> {\n const subtle = await getSubtle()\n const digest = await subtle.digest(\n 'SHA-1',\n toBytes(input) as unknown as BufferSource\n )\n return new Uint8Array(digest)\n}\n\nexport async function hmacSHA1(\n message: InputLike,\n key: InputLike\n): Promise<Uint8Array> {\n const subtle = await getSubtle()\n const keyData = toBytes(key)\n const cryptoKey = await subtle.importKey(\n 'raw',\n keyData as unknown as BufferSource,\n { name: 'HMAC', hash: 'SHA-1' },\n false,\n ['sign']\n )\n const signature = await subtle.sign(\n 'HMAC',\n cryptoKey,\n toBytes(message) as unknown as BufferSource\n )\n return new Uint8Array(signature)\n}\n\nfunction rotl(x: number, n: number): number {\n return (x << n) | (x >>> (32 - n))\n}\n\nconst S: number[] = [\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15,\n 21,\n]\n\nconst K: number[] = new Array(64)\n .fill(0)\n .map((_, i) => Math.floor(Math.abs(Math.sin(i + 1)) * 2 ** 32) >>> 0)\n\nexport function md5(input: InputLike): Uint8Array {\n const bytes = toBytes(input)\n\n // 计算 padding 后长度\n const padLen = (56 - ((bytes.length + 1) % 64) + 64) % 64\n const totalLen = bytes.length + 1 + padLen + 8\n\n const buf = new Uint8Array(totalLen)\n buf.set(bytes, 0)\n buf[bytes.length] = 0x80\n\n // 64-bit 长度(单位:bit),用两个 32 位数表示(小端)\n const lenBytes = bytes.length\n const bitLenLo = (lenBytes << 3) >>> 0\n const bitLenHi = (lenBytes >>> 29) >>> 0\n\n const view = new DataView(buf.buffer)\n view.setUint32(totalLen - 8, bitLenLo, true)\n view.setUint32(totalLen - 4, bitLenHi, true)\n\n // 初始化寄存器\n let a = 0x67452301,\n b = 0xefcdab89,\n c = 0x98badcfe,\n d = 0x10325476\n\n const M = new Uint32Array(16)\n for (let offset = 0; offset < buf.length; offset += 64) {\n for (let i = 0; i < 16; i++) M[i] = view.getUint32(offset + i * 4, true)\n\n let A = a,\n B = b,\n C = c,\n D = d\n for (let i = 0; i < 64; i++) {\n let F: number, g: number\n if (i < 16) {\n F = (B & C) | (~B & D)\n g = i\n } else if (i < 32) {\n F = (D & B) | (~D & C)\n g = (5 * i + 1) % 16\n } else if (i < 48) {\n F = B ^ C ^ D\n g = (3 * i + 5) % 16\n } else {\n F = C ^ (B | ~D)\n g = (7 * i) % 16\n }\n\n const tmp = D\n const sum = (A + F + K[i] + M[g]) >>> 0\n D = C\n C = B\n B = (B + rotl(sum, S[i])) >>> 0\n A = tmp\n }\n a = (a + A) >>> 0\n b = (b + B) >>> 0\n c = (c + C) >>> 0\n d = (d + D) >>> 0\n }\n\n const out = new Uint8Array(16)\n const dv = new DataView(out.buffer)\n dv.setUint32(0, a, true)\n dv.setUint32(4, b, true)\n dv.setUint32(8, c, true)\n dv.setUint32(12, d, true)\n return out\n}\n","import { Inject, InPageEdit, Service } from '@/InPageEdit.js'\nimport { IWikiTitle, WatchlistAction } from '@/models/index.js'\nimport { WikiFileRepo } from '@/types/WikiMetadata.js'\n\ndeclare module '@/InPageEdit.js' {\n interface InPageEdit {\n wikiFile: WikiFileService\n }\n}\n\n/**\n * @see https://www.mediawiki.org/wiki/API:Upload\n */\nexport interface UploadFileParams {\n file: File\n filekey: string\n url: string\n filename: string\n comment: string\n text: string\n tags: string[] | string\n watchlist: WatchlistAction\n ignorewarnings: boolean\n filesize: number\n offset: number\n chunk: File\n stash: boolean\n checkstatus: boolean\n}\n\nexport type UploadFileResult =\n | {\n result: 'Success'\n filename: string\n imageinfo: WikiImageInfo\n }\n | {\n result: 'Failure' | 'Warning' | 'Continue' | 'Poll'\n filekey: string\n sessionkey?: string\n warnings?: {\n /** file with this filekey already exists */\n exists?: string\n /** uploaded file is the same as stored file with this timestamp */\n nochange?: { timestamp: string }\n /** uploaded file is duplicated with these files */\n duplicate?: string[]\n }\n imageinfo: never\n }\n\nexport interface WikiImageInfo {\n timestamp: string\n user: string\n userid: number\n size: number\n width: number\n height: number\n duration: number\n parsedcomment: string\n comment: string\n html: string\n canonicaltitle: string\n url: string\n descriptionurl: string\n sha1: string\n metadata: { name: string; value: any }[]\n commonmetadata: unknown[]\n extmetadata: unknown\n mime: string\n mediatype: string\n bitdepth: number\n}\n\n@Inject(['wiki', 'wikiTitle', 'wikiPage', 'apiService'])\nexport class WikiFileService extends Service {\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wikiFile', true)\n }\n\n get fileRepos() {\n return this.ctx.wiki.fileRepos || []\n }\n get defaultFileRepo(): WikiFileRepo | undefined {\n return this.fileRepos[0]\n }\n get localFileRepo(): WikiFileRepo | undefined {\n return this.fileRepos.find((repo) => repo.local)\n }\n get writableFileRepo(): WikiFileRepo | undefined {\n return this.fileRepos.find((repo) => repo.canUpload)\n }\n\n getFileName(title: string | IWikiTitle) {\n title = this.ctx.wikiTitle.newTitle(title, 6)\n // NS_FILE, NS_MEDIA\n if (![6, -2].includes(title.getNamespaceId())) {\n throw new Error('Not a file title')\n }\n return title.getMainDBKey().split('/').pop() || ''\n }\n getHashPath(title: string | IWikiTitle, hashLevel = 2) {\n const fileName = this.getFileName(title)\n const fileNameHash = toHex(md5(fileName))\n let path = []\n for (let i = 1; i <= hashLevel; i++) {\n path.push(fileNameHash.slice(0, i))\n }\n path.push(fileName)\n return path.join('/')\n }\n getFileUrl(title: string | IWikiTitle, repo?: WikiFileRepo) {\n repo = repo || this.defaultFileRepo\n if (!repo) {\n throw new Error('No file repository found')\n }\n const hashPath = this.getHashPath(title)\n const url = new URL(`${repo.rootUrl}/${hashPath}`, location.origin)\n return url.toString()\n }\n\n async upload(params: Partial<UploadFileParams>, repo?: WikiFileRepo) {\n repo = repo || this.writableFileRepo\n if (!repo?.canUpload) {\n throw new Error('No writable file repository found')\n }\n\n if (!params.file && !params.url && !params.chunk && !params.filekey) {\n throw new Error('At least one of \"file\", \"url\", \"chunk\", or \"filekey\" is required')\n }\n\n const api = this.ctx.apiService.getClientByFileRepo(repo)\n return api.postWithToken<{ upload: UploadFileResult }>(\n 'csrf',\n {\n action: 'upload',\n ...params,\n },\n { fexiosOptions: { timeout: 0 } }\n )\n }\n}\n","import { Context, Inject } from '@cordisjs/core'\nimport Schema from 'schemastery'\nimport { LoggerLevel, createLogger, type Logger } from '@inpageedit/logger'\nimport { deepMerge, FexiosConfigs } from 'wiki-saikou'\nimport { ApiService } from '@/services/ApiService.js'\nimport { CurrentPageService } from '@/services/CurrentPageService'\nimport { ResourceLoaderService } from '@/services/ResourceLoaderService.js'\nimport { ModalService } from '@/services/ModalService.js'\nimport { WikiMetadataService } from '@/services/WikiMetadataService.js'\nimport { StorageService } from '@/services/storage/index.js'\nimport { ThemeService } from '@/services/ThemeService.js'\nimport { WikiPageService } from '@/services/WikiPageService.js'\nimport { WikiTitleService } from '@/services/WikiTitleService.js'\nimport '@/styles/index.scss'\nimport { PreferencesService } from './services/PreferencesService'\n\nexport interface InPageEditCoreConfig {\n apiConfigs: Partial<FexiosConfigs>\n legacyPreferences: Record<string, any>\n logLevel: number\n storageNamespace: string\n autoloadStyles: boolean\n autoInstallCorePlugins: boolean\n}\n\n/**\n * ✏️ InPageEdit NEXT\n *\n * 🚀 Modular, Extensible Supercharged Plugin for MediaWiki\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n * @see https://github.com/inpageedit/inpageedit-next\n * @see https://www.ipe.wiki/\n */\nexport class InPageEdit extends Context {\n readonly version: string = import.meta.env.__VERSION__ || '0.0.0'\n\n public config: InPageEditCoreConfig\n static DEFAULT_CONFIG: InPageEditCoreConfig = {\n apiConfigs: {},\n legacyPreferences: {},\n logLevel: import.meta.env.DEV ? LoggerLevel.debug : LoggerLevel.info,\n storageNamespace: 'InPageEdit',\n autoloadStyles: true,\n autoInstallCorePlugins: true,\n }\n Endpoints = Endpoints\n readonly schema = Schema\n readonly logger: Logger\n\n constructor(config?: Partial<InPageEditCoreConfig>) {\n super({\n name: 'InPageEdit',\n })\n this.config = deepMerge(InPageEdit.DEFAULT_CONFIG, config)\n this.logger = createLogger({\n name: 'IPE',\n color: '#33aaff',\n level: this.config.logLevel,\n })\n this.#init()\n }\n\n async #init() {\n await this.#initCoreServices()\n if (this.config.autoInstallCorePlugins) {\n this.#initCorePlugins()\n }\n this.#initCoreAssets()\n }\n\n async #initCoreServices() {\n this.plugin(I18nService)\n this.plugin(ApiService, this.config.apiConfigs)\n this.plugin(CurrentPageService)\n this.plugin(ResourceLoaderService)\n this.plugin(ModalService)\n this.plugin(PreferencesService)\n this.plugin(StorageService, { dbName: this.config.storageNamespace })\n this.plugin(ThemeService)\n this.plugin(WikiFileService)\n this.plugin(WikiMetadataService)\n this.plugin(WikiPageService)\n this.plugin(WikiTitleService)\n\n // 标记内置服务,所以用户即使忘记 inject 也能使用\n this.#markServiceAsBuiltIn([\n 'i18n',\n '$',\n '$$',\n 'api',\n 'currentPage',\n 'resourceLoader',\n 'modal',\n 'preferences',\n 'storage',\n 'theme',\n 'wikiPage',\n 'wikiTitle',\n // WikiMetadataService\n 'wiki',\n 'getUrl',\n 'getSciprtUrl',\n 'getMainpageUrl',\n ])\n }\n\n #markServiceAsBuiltIn(services: string[]) {\n if (!Array.isArray(services) || services.length === 0) return this\n for (const name of services) {\n const internal = this[InPageEdit.internal][name]\n if (internal?.type === 'service') {\n internal.builtin = true\n }\n }\n return this\n }\n\n // TODO: 这里不应该硬编码,暂时先这样\n async #initCorePlugins() {\n const plugins = [\n import('@/plugins/analytics/index.js').then(({ PluginAnalytics }) => PluginAnalytics),\n import('@/plugins/in-article-links/index.js').then(\n ({ PluginInArticleLinks }) => PluginInArticleLinks\n ),\n import('@/plugins/plugin-store/index.js').then(({ PluginPluginStore }) => PluginPluginStore),\n import('@/plugins/preferences-ui/index.js').then(\n ({ PluginPreferencesUI }) => PluginPreferencesUI\n ),\n import('@/plugins/quick-edit/index.js').then(({ PluginQuickEdit }) => PluginQuickEdit),\n import('@/plugins/quick-move/index.js').then(({ PluginQuickMove }) => PluginQuickMove),\n import('@/plugins/quick-preview/index.js').then(\n ({ PluginQuickPreview }) => PluginQuickPreview\n ),\n import('@/plugins/quick-diff/index.js').then(({ PluginQuickDiff }) => PluginQuickDiff),\n import('@/plugins/quick-redirect/index.js').then(\n ({ PluginQuickRedirect }) => PluginQuickRedirect\n ),\n import('@/plugins/quick-upload/index.js').then(({ PluginQuickUpload }) => PluginQuickUpload),\n import('@/plugins/quick-usage/index.js').then(({ PluginQuickUsage }) => PluginQuickUsage),\n import('@/plugins/toolbox/index.js').then(({ PluginToolbox }) => PluginToolbox),\n ]\n plugins.forEach(async (plugin) => {\n this.plugin(await plugin)\n })\n\n if (import.meta.env.DEV) {\n this.plugin((await import('@/plugins/_debug/index.js')).default)\n }\n }\n\n // TODO: 应该抽象到 PluginTheme 中去,暂时先硬编码\n async #initCoreAssets() {\n this.inject(['resourceLoader'], (ctx) => {\n if (\n import.meta.env.PROD &&\n import.meta.env.VITE_BUILD_FORMAT === 'import' &&\n this.config.autoloadStyles\n ) {\n ctx.resourceLoader.loadStyle(import.meta.resolve('./style.css'))\n }\n })\n }\n\n async withInject(inject: Inject) {\n const { promise, resolve } = promiseWithResolvers<this>()\n this.inject(inject, (ctx) => {\n resolve(ctx)\n })\n return promise\n }\n}\n\n// 导出依赖包以便用户使用\nexport { default as Schema } from 'schemastery'\nexport * from '@inpageedit/logger'\nexport interface PreferencesMap {}\n\n// 类型体操\nexport {\n Inject,\n EffectScope,\n ForkScope,\n MainScope,\n ScopeStatus,\n symbols as CordisSymbols,\n Service,\n CordisError,\n Lifecycle,\n} from '@cordisjs/core'\nimport {\n Events as CordisEvents,\n Plugin as CordisPlugin,\n Registry as CordisRegistry,\n} from '@cordisjs/core'\nimport { I18nService } from './services/i18n/index.js'\nimport { WikiFileService } from './services/WikiFileService.js'\nexport interface Events<C extends InPageEdit = InPageEdit> extends CordisEvents<C> {}\nexport type IPEPlugin<C = any> = CordisPlugin<InPageEdit, C>\nexport type IPERegistry = CordisRegistry<InPageEdit>\nexport interface InPageEdit {\n [InPageEdit.events]: Events<this>\n}\n"],"names":["__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","ScopeStatus","ScopeStatus2","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","resolve","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","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","v","y","O","p","S","MediaWikiApi","WikiSaikouCore","username","password","params","res","WikiSaikouError","WikiSaikouErrorCode","MediaWikiForeignApi","configOrBaseURL","defaultOptions","defaultParams","resolveLegacyCtor","ApiService","api","MwApi","repo","endpointUrl","endpointHref","isSameOrigin","initConfig","client","ForeignApi","qs","selector","qsa","_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","reject","script","link","el","path","j","U","B","I","Y","W","G","A","Z","q","V","J","Q","tt","et","F","T","st","it","nt","ot","M","at","rt","L","K","lt","ct","z","k","H","ht","X","dt","ft","ut","N","D","mt","CustomIPEModal","IPEModal","activeInputs","jsx","ProgressBar","ModalService","IPEModalEvent","makeSearchParams","sp","objKey","objValue","makeURL","hash","existingParams","newParams","_WikiMetadataService_decorators","WikiMetadataService","jsxs","kind","noCache","map","ns","alias","server","titleOrPageId","searchParams","right","rights","names","group","_memoryStorage","sym","useMemoryStorage","LocalStorageManager","dbName","storeName","ttl","version","engine","raw","rec","fullKey","setter","expired","newValue","keyOrRecord","maybeValue","now","recordObj","results","toRemove","IDBStorageManager","IDBPlus","toDelete","entry","isExpired","newData","record","recordObject","toSet","StorageService","canUseIDB","RegisterPreferences","_ThemeService_decorators","ThemeService","changes","pref","theme","body","root","WikiPageService","createWikiPageModel","payload","converttitles","rvsection","pageid","revid","init","WikiTitleService","createWikiTitleModel","namespace","linkInfo","pageId","revId","id","promise","promiseWithResolvers","wikiPage","page","input","titleText","section","action","sub","talkPage","titleParam","curid","oldid","isFunction","computeFallback","computeFallbackSync","_PreferencesService_decorators","PreferencesService","defaultValue","defaults","configs","out","defaultValues","val","category","InPageEdit","tab","legacyDB","count","Endpoints","ESCAPE_ARG_L","ESCAPE_ARG_R","REG_ESCAPE_ARG_L","REG_ESCAPE_ARG_R","REG_RESTORE_ARG_L","REG_RESTORE_ARG_R","createInterpolate","globals","baseInterpolate","named","numrics","_m","exprRaw","expr","safeEval","createEvaluator","globalNames","fn","proxiedCtx","joinTemplateStrings","strings","values","I18nManager","lang","arg1","flat","language","nextKey","nested","nk","nv","langs","lg","missing","msg","capturedArgs","cur","_I18nService_decorators","I18nIndexV1Schema","I18nService","indexUrl","prefer","normalized","endonym","iso_name","acc","found","en","te","toBytes","rotl","md5","padLen","totalLen","buf","lenBytes","bitLenLo","bitLenHi","view","tmp","sum","dv","_WikiFileService_decorators","WikiFileService","hashLevel","fileName","fileNameHash","hashPath","deepMerge","createLogger","LoggerLevel","#initCoreServices","#initCorePlugins","#initCoreAssets","#markServiceAsBuiltIn","services","PluginAnalytics","PluginInArticleLinks","PluginPluginStore","PluginPreferencesUI","PluginQuickEdit","PluginQuickMove","PluginQuickPreview","PluginQuickDiff","PluginQuickRedirect","PluginQuickUpload","PluginQuickUsage","PluginToolbox"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,14]}