From ebf6447507a2350d724ba32fb352a09dbd6a5614 Mon Sep 17 00:00:00 2001
From: EduarteXD <54500106+EduarteXD@users.noreply.github.com>
Date: Thu, 8 May 2025 19:56:41 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BAchrome=E6=8B=93=E5=B1=95?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=8B=E5=8A=A8=E8=B0=83=E7=94=A8=E7=BF=BB?=
=?UTF-8?q?=E8=AF=91=E7=9A=84=E5=8A=9F=E8=83=BD=20(#3)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat: 为chrome拓展添加手动调用翻译的功能
* feat: add SC-BOX-TRANSLATE-API-AVAILABLE message
* refactor: move content script logic to core.js
* feat: add context menu for translating pages
* chore: 🤖 使用extension.js
* chore: update package metadata
* chore: ensure context menu creation on extension install
* feat: add toggle translation functionality
* feat: add support for dynamic localization based on tab URL
* feat: add Chinese translation for Star Citizen browser extension
* docs: update README with new API usage instructions
* refactor: update translation logic to append original values
* typescript support
* feat: add manual URL handling for localization
* feat: add postMessage for toggling SC-BOX translate
* feat: add translation toggle event to postMessage
* feat: add translation status and message handling
* refactor: optimize localization version logging
---
.gitignore | 29 +
.vscode/settings.json | 11 +
README.md | 92 +-
StarCitizenBoxBrowserEx/core.js | 194 -
StarCitizenBoxBrowserEx/rsi_hangar_fix.js | 93 -
StarCitizenBoxBrowserEx_Firefox/background.js | 153 -
StarCitizenBoxBrowserEx_Firefox/core.js | 194 -
StarCitizenBoxBrowserEx_Firefox/popup.html | 100 -
.../thirdparty/jquery.min.js | 2 -
.../thirdparty/timeago.full.min.js | 1 -
.../background.js => background.ts | 108 +-
core.ts | 297 +
dist/chrome/action/default_popup.html | 93 +
dist/chrome/background/service_worker.js | 1 +
dist/chrome/content_scripts/content-0.js | 1 +
dist/chrome/content_scripts/content-1.js | 1 +
dist/chrome/content_scripts/content-2.js | 1 +
.../chrome/icons}/icon.png | Bin
dist/chrome/manifest.json | 60 +
dist/firefox/action/default_popup.html | 93 +
dist/firefox/background/scripts.js | 1 +
dist/firefox/content_scripts/content-0.js | 1 +
dist/firefox/content_scripts/content-1.js | 1 +
dist/firefox/content_scripts/content-2.js | 1 +
.../firefox/icons}/icon.png | Bin
.../firefox}/manifest.json | 43 +-
icon.png | Bin 0 -> 12495 bytes
.../manifest.json => manifest.json | 24 +-
package.json | 33 +
pnpm-lock.yaml | 5310 +++++++++++++++++
.../popup.html => popup.html | 0
.../rsi_hangar_fix.js => rsi_hangar_fix.ts | 6 +-
.../thirdparty => thirdparty}/jquery.min.js | 0
.../timeago.full.min.js | 0
tsconfig.json | 25 +
35 files changed, 6174 insertions(+), 795 deletions(-)
create mode 100644 .vscode/settings.json
delete mode 100644 StarCitizenBoxBrowserEx/core.js
delete mode 100644 StarCitizenBoxBrowserEx/rsi_hangar_fix.js
delete mode 100644 StarCitizenBoxBrowserEx_Firefox/background.js
delete mode 100644 StarCitizenBoxBrowserEx_Firefox/core.js
delete mode 100644 StarCitizenBoxBrowserEx_Firefox/popup.html
delete mode 100644 StarCitizenBoxBrowserEx_Firefox/thirdparty/jquery.min.js
delete mode 100644 StarCitizenBoxBrowserEx_Firefox/thirdparty/timeago.full.min.js
rename StarCitizenBoxBrowserEx/background.js => background.ts (56%)
create mode 100644 core.ts
create mode 100644 dist/chrome/action/default_popup.html
create mode 100644 dist/chrome/background/service_worker.js
create mode 100644 dist/chrome/content_scripts/content-0.js
create mode 100644 dist/chrome/content_scripts/content-1.js
create mode 100644 dist/chrome/content_scripts/content-2.js
rename {StarCitizenBoxBrowserEx => dist/chrome/icons}/icon.png (100%)
create mode 100644 dist/chrome/manifest.json
create mode 100644 dist/firefox/action/default_popup.html
create mode 100644 dist/firefox/background/scripts.js
create mode 100644 dist/firefox/content_scripts/content-0.js
create mode 100644 dist/firefox/content_scripts/content-1.js
create mode 100644 dist/firefox/content_scripts/content-2.js
rename {StarCitizenBoxBrowserEx_Firefox => dist/firefox/icons}/icon.png (100%)
rename {StarCitizenBoxBrowserEx_Firefox => dist/firefox}/manifest.json (55%)
create mode 100644 icon.png
rename StarCitizenBoxBrowserEx/manifest.json => manifest.json (69%)
create mode 100644 package.json
create mode 100644 pnpm-lock.yaml
rename StarCitizenBoxBrowserEx/popup.html => popup.html (100%)
rename StarCitizenBoxBrowserEx_Firefox/rsi_hangar_fix.js => rsi_hangar_fix.ts (94%)
rename {StarCitizenBoxBrowserEx/thirdparty => thirdparty}/jquery.min.js (100%)
rename {StarCitizenBoxBrowserEx/thirdparty => thirdparty}/timeago.full.min.js (100%)
create mode 100644 tsconfig.json
diff --git a/.gitignore b/.gitignore
index a403a60..6dc2b88 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,31 @@
.DS_Store
/.idea/
+
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+node_modules
+
+# testing
+coverage
+
+# dist/
+
+# misc
+.DS_Store
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# debug files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# extension.js
+extension-env.d.ts
+
+.vscode/
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..83c64da
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,11 @@
+{
+ "cSpell.words": [
+ "clazz",
+ "erkul",
+ "robertsspaceindustries",
+ "SWTT",
+ "timeago",
+ "uexcorp",
+ "WARBOND"
+ ]
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index ebaca31..d437b2c 100644
--- a/README.md
+++ b/README.md
@@ -3,12 +3,11 @@
为您将星际公民官网及常用工具网站翻译为中文的浏览器拓展,所有翻译内容来自 星际公民中文社区汉化组。
本插件也内置于 [星际公民盒子](https://github.com/xkeyC/StarCitizenToolBox) 。
-SC网站翻译项目:https://github.com/CxJuice/ScWeb_Chinese_Translate
+SC网站翻译项目:[CxJuice/ScWeb_Chinese_Translate](https://github.com/CxJuice/ScWeb_Chinese_Translate)
-## 本插件仅供大致浏览使用,不对任何有关本插件产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!
-
-
+## **本插件仅供大致浏览使用,不对任何有关本插件产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!**
+
## 安装
@@ -19,4 +18,87 @@ SC网站翻译项目:https://github.com/CxJuice/ScWeb_Chinese_Translate
[Firefox ADD-ONS](https://addons.mozilla.org/zh-CN/firefox/addon/%E6%98%9F%E9%99%85%E5%85%AC%E6%B0%91%E7%9B%92%E5%AD%90%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8B%93%E5%B1%95/)
## 手动安装
-下载 zip 后使用插件的开发者功能手动安装 StarCitizenBoxBrowserEx 文件夹 Firefox 安装 StarCitizenBoxBrowserEx_Firefox 文件夹。
+
+下载 zip 后使用插件的开发者功能手动安装 dist/chrome 文件夹 Firefox 安装 dist/firefox 文件夹。
+
+### 开发者
+
+#### 调用翻译Hook
+
+```tsx
+ enum SCBoxTranslateStatus {
+ Available,
+ Translated,
+ NotAvailable,
+ }
+
+ const [translateApiAvailable, setTranslateApiAvailable] = useState(SCBoxTranslateStatus.NotAvailable);
+
+ useEffect(() => {
+ function handleMessage(event: MessageEvent) {
+ if (event.source !== window) return;
+ // 在插件加载后会向页面发送消息
+ if (event.data?.type === 'SC-BOX-TRANSLATE-API-AVAILABLE') {
+ setTranslateApiAvailable(SCBoxTranslateStatus.Available);
+ }
+ // 在翻译状态改变时插件也会向页面发送消息
+ if (event.data?.type === 'TOGGLED-SC-BOX-TRANSLATE') {
+ switch (event.data.action) {
+ case 'on':
+ setTranslateApiAvailable(SCBoxTranslateStatus.Translated);
+ return;
+ case 'off':
+ setTranslateApiAvailable(SCBoxTranslateStatus.Available);
+ return;
+ }
+ }
+ }
+
+ window.addEventListener('message', handleMessage);
+ return () => window.removeEventListener('message', handleMessage);
+ }, []);
+```
+
+```ts
+ // 触发翻译
+ window.postMessage({
+ type: 'SC_TRANSLATE_REQUEST',
+ action: 'translate',
+ requestId: Math.random().toString(36)
+ }, '*');
+
+ // 撤销翻译
+ window.postMessage({
+ type: 'SC_TRANSLATE_REQUEST',
+ action: 'undoTranslate',
+ requestId: Math.random().toString(36)
+ }, '*');
+```
+
+#### 开发/调试
+
+##### 安装依赖
+
+```bash
+pnpm install
+```
+
+##### 开发模式
+
+此命令在开发模式下运行您的扩展程序。它将启动一个新的浏览器实例,加载您的扩展程序。每当您对代码进行更改时,页面将自动重新加载,从而提供流畅的开发体验。
+
+```bash
+pnpm dev
+# firefox
+pnpm dev:firefox
+```
+
+##### 编译
+
+此命令用于为生产环境构建您的扩展程序。它会优化和打包您的扩展程序,准备好部署到目标浏览器的商店。
+
+```bash
+pnpm build
+# firefox
+pnpm build:firefox
+```
diff --git a/StarCitizenBoxBrowserEx/core.js b/StarCitizenBoxBrowserEx/core.js
deleted file mode 100644
index ad31063..0000000
--- a/StarCitizenBoxBrowserEx/core.js
+++ /dev/null
@@ -1,194 +0,0 @@
-let SCLocalizationReplaceLocalesMap = {};
-let SCLocalizationEnableSplitMode = false;
-
-function InitWebLocalization() {
- // init script
- LocalizationWatchUpdate();
- // load Data
- _loadLocalizationData();
-}
-
-function LocalizationWatchUpdate() {
- const m = window.MutationObserver || window.WebKitMutationObserver;
- const observer = new m(function (mutations, observer) {
- for (let mutationRecord of mutations) {
- for (let node of mutationRecord.addedNodes) {
- traverseElement(node);
- }
- }
- });
-
- observer.observe(document.body, {
- subtree: true,
- characterData: true,
- childList: true,
- });
-
- if (window.location.href.includes("robertsspaceindustries.com")) {
- console.log("SCLocalizationEnableSplitMode = true");
- SCLocalizationEnableSplitMode = true;
- }
-
- if (window.location.hostname.includes("www.erkul.games")) {
- document.body.addEventListener("click", function (event) {
- setTimeout(function () {
- allTranslate().then(_ => {
- });
- }, 200);
- });
- }
-}
-
-function WebLocalizationUpdateReplaceWords(w) {
- let replaceWords = w.sort(function (a, b) {
- return b.word.length - a.word.length;
- });
- replaceWords.forEach(({word, replacement}) => {
- SCLocalizationReplaceLocalesMap[word] = replacement;
- });
- if (window.location.hostname.startsWith("issue-council.robertsspaceindustries.com")) {
- SCLocalizationReplaceLocalesMap["save"] = "保存";
- }
- allTranslate().then(_ => {
- });
- // console.log("WebLocalizationUpdateReplaceWords ==" + w)
-}
-
-async function allTranslate() {
- async function replaceTextNode(node1) {
- if (node1.nodeType === Node.TEXT_NODE) {
- node1.nodeValue = GetSCLocalizationTranslateString(node1.nodeValue);
- } else {
- for (let i = 0; i < node1.childNodes.length; i++) {
- await replaceTextNode(node1.childNodes[i]);
- }
- }
- }
-
- await replaceTextNode(document.body);
-}
-
-function traverseElement(el) {
- if (!shouldTranslateEl(el)) {
- return
- }
-
- for (const child of el.childNodes) {
- if (["RELATIVE-TIME", "TIME-AGO"].includes(el.tagName)) {
- translateRelativeTimeEl(el);
- return;
- }
-
- if (child.nodeType === Node.TEXT_NODE) {
- translateElement(child);
- } else if (child.nodeType === Node.ELEMENT_NODE) {
- if (child.tagName === "INPUT") {
- translateElement(child);
- } else {
- traverseElement(child);
- }
- } else {
- // pass
- }
- }
-}
-
-function translateElement(el) {
- // Get the text field name
- let k;
- if (el.tagName === "INPUT") {
- if (el.type === 'button' || el.type === 'submit') {
- k = 'value';
- } else {
- k = 'placeholder';
- }
- } else {
- k = 'data';
- }
- el[k] = GetSCLocalizationTranslateString(el[k]);
-}
-
-function translateRelativeTimeEl(el) {
- const lang = (navigator.language || navigator.userLanguage);
- const datetime = $(el).attr('datetime');
- $(el).text(timeago.format(datetime, lang.replace('-', '_')));
-}
-
-function shouldTranslateEl(el) {
- const blockIds = [];
- const blockClass = [
- "css-truncate" // 过滤文件目录
- ];
- const blockTags = ["IMG", "svg", "mat-icon"];
- if (blockTags.includes(el.tagName)) {
- return false;
- }
- if (el.id && blockIds.includes(el.id)) {
- return false;
- }
- if (el.classList) {
- for (let clazz of blockClass) {
- if (el.classList.contains(clazz)) {
- return false;
- }
- }
- }
- return true;
-}
-
-function GetSCLocalizationTranslateString(txtSrc) {
- const key = txtSrc.toLowerCase().replace(/\xa0/g, ' ').replace(/\s{2,}/g, ' ').trim();
- const sourceKey = txtSrc.replace(/\xa0/g, ' ').replace(/\s{2,}/g, ' ').trim();
- let noTheKey = key.replace("the ", "");
- let noHorizontalKey = key.replace("- ", "");
-
- if (SCLocalizationReplaceLocalesMap[key]) {
- txtSrc = SCLocalizationReplaceLocalesMap[key]
- } else if (SCLocalizationEnableSplitMode) {
- if (sourceKey.includes(" - ")) {
- let nodeValue = txtSrc
- let splitKey = sourceKey.split(" - ");
- if (splitKey[0].toLowerCase() === "upgrade" && key.includes("to") && key.endsWith("edition")) {
- // 升级包规则
- let noVersionStr = key.replace("STANDARD EDITION".toLowerCase(), "").replace("upgrade", "").replace("WARBOND EDITION".toLowerCase(), "")
- let shipNames = noVersionStr.split(" to ")
- let finalString = "升级包 " + GetSCLocalizationTranslateString(shipNames[0]) + " 到 " + GetSCLocalizationTranslateString(shipNames[1]);
- if (key.endsWith("WARBOND EDITION".toLowerCase())) {
- finalString = finalString + " 战争债券版"
- } else {
- finalString = finalString + " 标准版"
- }
- txtSrc = finalString
- } else {
- // 机库通用规则
- splitKey.forEach(function (splitKey) {
- if (SCLocalizationReplaceLocalesMap[splitKey.toLowerCase()]) {
- nodeValue = nodeValue.replace(splitKey, SCLocalizationReplaceLocalesMap[splitKey.toLowerCase()])
- } else {
- nodeValue = nodeValue.replace(splitKey, GetSCLocalizationTranslateString(splitKey))
- }
- });
- txtSrc = nodeValue
- }
- } else if (key.endsWith("starter pack") || key.endsWith("starter package")) {
- let shipName = key.replace("starter package", "").replace("starter pack", "").trim()
- if (SCLocalizationReplaceLocalesMap[shipName.toLowerCase()]) {
- shipName = SCLocalizationReplaceLocalesMap[shipName.toLowerCase()];
- }
- txtSrc = shipName + " 新手包";
- } else if (key.startsWith("the ") && SCLocalizationReplaceLocalesMap[noTheKey]) {
- txtSrc = SCLocalizationReplaceLocalesMap[noTheKey];
- } else if (key.startsWith("- ") && SCLocalizationReplaceLocalesMap[noHorizontalKey]) {
- txtSrc = "- " + SCLocalizationReplaceLocalesMap[noHorizontalKey];
- }
- }
- return txtSrc
-}
-
-InitWebLocalization();
-
-function _loadLocalizationData() {
- chrome.runtime.sendMessage({action: "_loadLocalizationData", url: window.location.href}, function (response) {
- WebLocalizationUpdateReplaceWords(response.result);
- });
-}
\ No newline at end of file
diff --git a/StarCitizenBoxBrowserEx/rsi_hangar_fix.js b/StarCitizenBoxBrowserEx/rsi_hangar_fix.js
deleted file mode 100644
index a8e66ce..0000000
--- a/StarCitizenBoxBrowserEx/rsi_hangar_fix.js
+++ /dev/null
@@ -1,93 +0,0 @@
-// from https://github.com/cfdxkk/RSI-Hangar-Button
-// LICENSE GLWT(Good Luck With That) Public License
-(function () {
- /**
- * 寻找元素直到元素被加载
- * @param dom 查找的根元素
- * @param selector 元素的查找
- * @param callback 查找到的回调
- * @param interval 查找的间隔,默认 100 毫秒
- */
- function waitForElement(dom, selector, callback, interval = 100) {
- const checkExist = setInterval(() => {
- const element = dom.querySelector(selector)
- if (element) {
- clearInterval(checkExist) // 停止轮询
- callback(element)
- }
- }, interval)
- }
-
- /**
- * 开始监听抽屉,如果监听到点击事件,则添加按钮
- * @param element
- */
- function startObserve(element) {
- // 创建一个 MutationObserver 实例,监听元素的子元素变化
- const observer = new MutationObserver((mutationsList) => {
- for (const mutation of mutationsList) {
- if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
- mutation.addedNodes.forEach(node => {
- if (node.nodeType === 1) { // 只处理元素节点 (忽略文本节点)
- waitForElement(node, "a[data-cy-id=\"button\"][href=\"/account/settings\"]", (button) => {
- copyAndAddButton(button)
- })
- }
- })
- }
- }
- })
-
- // 监听子节点变化,并对子树内的变化也进行监听
- observer.observe(element, { childList: true, subtree: true })
- }
-
- /**
- * 复制原有按钮,将其修改为机库按钮并插入到原按钮的上方
- * 在插入前先检查是否已经存在对应的按钮
- * @param {HTMLElement} button 原始按钮
- */
- function copyAndAddButton(button) {
- if (!button) return
-
- // 如果已经存在 href 为 /account/pledges 的按钮,则不再添加
- if (button.parentNode.querySelector('a[data-cy-id="button"][href="/account/pledges"]')) {
- return
- }
- // 复制元素
- const hangarButton = button.cloneNode(true)
-
- // 修改 href
- hangarButton.href = "/account/pledges"
-
- // 查找按钮中的文本部分
- const hangarButtonText = hangarButton.querySelector('span[data-cy-id="button__text"]')
-
- // 修改文本
- if (hangarButtonText) {
- hangarButtonText.innerText = "My Hangar"
- }
-
- // 查找按钮中的图标部分
- const hangarButtonIcon = hangarButton.querySelector('i[data-cy-id="button__icon"]')
-
- // 修改图标
- if (hangarButtonIcon) {
- hangarButtonIcon.className = "a-button__icon a-icon -gridView"
- }
-
- // 插入到目标元素的前方
- button.parentNode.insertBefore(hangarButton, button)
- }
-
- // 开始查找抽屉,如果找到执行监听回调
- waitForElement(document, "#sidePanel", (risSidePanel) => {
- startObserve(risSidePanel)
-
- // 初始检查:防止首次打开抽屉时按钮已经存在,MutationObserver 不触发
- const button = sidePanel.querySelector('a[data-cy-id="button"][href="/account/settings"]')
- if (button) {
- copyAndAddButton(button)
- }
- })
-})()
\ No newline at end of file
diff --git a/StarCitizenBoxBrowserEx_Firefox/background.js b/StarCitizenBoxBrowserEx_Firefox/background.js
deleted file mode 100644
index e065f51..0000000
--- a/StarCitizenBoxBrowserEx_Firefox/background.js
+++ /dev/null
@@ -1,153 +0,0 @@
-let dataVersion = null
-
-chrome.runtime.onInstalled.addListener(function () {
- _checkVersion().then(_ => {
- });
- console.log("SWTT init");
-});
-
-chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
- if (request.action === "_loadLocalizationData") {
- _initLocalization(request.url).then(data => {
- sendResponse({result: data});
- });
- return true;
- }
-});
-
-async function _checkVersion() {
- dataVersion = await _getJsonData("versions.json");
- console.log("Localization Version ===");
- console.log(dataVersion);
-}
-
-async function _initLocalization(url) {
- console.log("url ===" + url);
- if (dataVersion == null) {
- await _checkVersion();
- return _initLocalization(url);
- }
- let v = dataVersion
- // TODO check version
- let data = {};
-
- if (url.includes("robertsspaceindustries.com")) {
- data["zh-CN"] = await _getJsonData("zh-CN-rsi.json", {cacheKey: "zh-CN", version: v.rsi});
- data["concierge"] = await _getJsonData("concierge.json", {cacheKey: "concierge", version: v.concierge});
- data["orgs"] = await _getJsonData("orgs.json", v.orgs);
- data["address"] = await _getJsonData("addresses.json", {cacheKey: "orgs", version: v.addresses});
- data["hangar"] = await _getJsonData("hangar.json", {cacheKey: "hangar", version: v.hangar});
- } else if (url.includes("uexcorp.space")) {
- data["UEX"] = await _getJsonData("zh-CN-uex.json", {cacheKey: "uex", version: v.uex});
- } else if (url.includes("erkul.games")) {
- data["DPS"] = await _getJsonData("zh-CN-dps.json", {cacheKey: "dps", version: v.dps});
- }
- // update data
- let replaceWords = [];
-
- function addLocalizationResource(key) {
- replaceWords.push(...getLocalizationResource(data, key));
- }
-
- if (url.includes("robertsspaceindustries.com")) {
- const org = "https://robertsspaceindustries.com/orgs";
- const citizens = "https://robertsspaceindustries.com/citizens";
- const organization = "https://robertsspaceindustries.com/account/organization";
- const concierge = "https://robertsspaceindustries.com/account/concierge";
- const referral = "https://robertsspaceindustries.com/account/referral-program";
- const address = "https://robertsspaceindustries.com/account/addresses";
- const hangar = "https://robertsspaceindustries.com/account/pledges";
- const spectrum = "https://robertsspaceindustries.com/spectrum/community/";
- if (url.startsWith(spectrum)) {
- return;
- }
- addLocalizationResource("zh-CN");
- if (url.startsWith(org) || url.startsWith(citizens) || url.startsWith(organization)) {
- replaceWords.push({"word": 'members', "replacement": '名成员'});
- addLocalizationResource("orgs");
- }
- if (url.startsWith(address)) {
- addLocalizationResource("address");
- }
-
- if (url.startsWith(referral)) {
- replaceWords.push(
- {"word": 'Total recruits: ', "replacement": '总邀请数:'},
- {"word": 'Prospects ', "replacement": '未完成的邀请'},
- {"word": 'Recruits', "replacement": '已完成的邀请'}
- );
- }
-
- if (url.startsWith(concierge)) {
- replaceWords = [];
- addLocalizationResource("concierge");
- }
-
- if (url.startsWith(hangar)) {
- addLocalizationResource("hangar");
- }
- } else if (url.includes("uexcorp.space")) {
- addLocalizationResource("UEX");
- } else if (url.includes("erkul.games")) {
- addLocalizationResource("DPS");
- }
- return replaceWords;
-}
-
-
-function getLocalizationResource(localizationResource, key) {
- const localizations = [];
- const dict = localizationResource[key];
- if (typeof dict === "object") {
- for (const [k, v] of Object.entries(dict)) {
- const trimmedKey = k
- .toString()
- .trim()
- .toLowerCase()
- .replace(/\xa0/g, ' ')
- .replace(/\s{2,}/g, ' ');
- localizations.push({"word": trimmedKey, "replacement": v.toString()});
- }
- }
- return localizations;
-}
-
-async function _getJsonData(fileName, {cacheKey = "", version = null} = {}) {
- url = "https://git.scbox.xkeyc.cn/SCToolBox/ScWeb_Chinese_Translate/raw/branch/main/json/locales/" + fileName;
- if (cacheKey && cacheKey !== "") {
- const localVersion = await getLocalData(`${cacheKey}_version`);
- const data = await getLocalData(cacheKey);
- if (data && typeof data === 'object' && Object.keys(data).length > 0 && localVersion === version) {
- return data;
- }
- }
- const startTime = new Date();
- const response = await fetch(url, {method: 'GET', mode: 'cors'});
- const endTime = new Date();
- const data = await response.json();
- if (cacheKey && cacheKey !== "") {
- console.log(`update ${cacheKey} v == ${version} time == ${(endTime - startTime) / 1000}s`);
- await setLocalData(cacheKey, data);
- await setLocalData(`${cacheKey}_version`, version);
- }
- return data;
-}
-
-function getLocalData(key) {
- return new Promise((resolve) => {
- chrome.storage.local.get([key], (result) => {
- const data = result[key];
- resolve(data || null);
- });
- });
-}
-
-function setLocalData(key, data) {
- return new Promise((resolve) => {
- const newData = {};
- newData[key] = data;
- chrome.storage.local.set(newData, () => {
- resolve();
- });
- });
-}
diff --git a/StarCitizenBoxBrowserEx_Firefox/core.js b/StarCitizenBoxBrowserEx_Firefox/core.js
deleted file mode 100644
index ad31063..0000000
--- a/StarCitizenBoxBrowserEx_Firefox/core.js
+++ /dev/null
@@ -1,194 +0,0 @@
-let SCLocalizationReplaceLocalesMap = {};
-let SCLocalizationEnableSplitMode = false;
-
-function InitWebLocalization() {
- // init script
- LocalizationWatchUpdate();
- // load Data
- _loadLocalizationData();
-}
-
-function LocalizationWatchUpdate() {
- const m = window.MutationObserver || window.WebKitMutationObserver;
- const observer = new m(function (mutations, observer) {
- for (let mutationRecord of mutations) {
- for (let node of mutationRecord.addedNodes) {
- traverseElement(node);
- }
- }
- });
-
- observer.observe(document.body, {
- subtree: true,
- characterData: true,
- childList: true,
- });
-
- if (window.location.href.includes("robertsspaceindustries.com")) {
- console.log("SCLocalizationEnableSplitMode = true");
- SCLocalizationEnableSplitMode = true;
- }
-
- if (window.location.hostname.includes("www.erkul.games")) {
- document.body.addEventListener("click", function (event) {
- setTimeout(function () {
- allTranslate().then(_ => {
- });
- }, 200);
- });
- }
-}
-
-function WebLocalizationUpdateReplaceWords(w) {
- let replaceWords = w.sort(function (a, b) {
- return b.word.length - a.word.length;
- });
- replaceWords.forEach(({word, replacement}) => {
- SCLocalizationReplaceLocalesMap[word] = replacement;
- });
- if (window.location.hostname.startsWith("issue-council.robertsspaceindustries.com")) {
- SCLocalizationReplaceLocalesMap["save"] = "保存";
- }
- allTranslate().then(_ => {
- });
- // console.log("WebLocalizationUpdateReplaceWords ==" + w)
-}
-
-async function allTranslate() {
- async function replaceTextNode(node1) {
- if (node1.nodeType === Node.TEXT_NODE) {
- node1.nodeValue = GetSCLocalizationTranslateString(node1.nodeValue);
- } else {
- for (let i = 0; i < node1.childNodes.length; i++) {
- await replaceTextNode(node1.childNodes[i]);
- }
- }
- }
-
- await replaceTextNode(document.body);
-}
-
-function traverseElement(el) {
- if (!shouldTranslateEl(el)) {
- return
- }
-
- for (const child of el.childNodes) {
- if (["RELATIVE-TIME", "TIME-AGO"].includes(el.tagName)) {
- translateRelativeTimeEl(el);
- return;
- }
-
- if (child.nodeType === Node.TEXT_NODE) {
- translateElement(child);
- } else if (child.nodeType === Node.ELEMENT_NODE) {
- if (child.tagName === "INPUT") {
- translateElement(child);
- } else {
- traverseElement(child);
- }
- } else {
- // pass
- }
- }
-}
-
-function translateElement(el) {
- // Get the text field name
- let k;
- if (el.tagName === "INPUT") {
- if (el.type === 'button' || el.type === 'submit') {
- k = 'value';
- } else {
- k = 'placeholder';
- }
- } else {
- k = 'data';
- }
- el[k] = GetSCLocalizationTranslateString(el[k]);
-}
-
-function translateRelativeTimeEl(el) {
- const lang = (navigator.language || navigator.userLanguage);
- const datetime = $(el).attr('datetime');
- $(el).text(timeago.format(datetime, lang.replace('-', '_')));
-}
-
-function shouldTranslateEl(el) {
- const blockIds = [];
- const blockClass = [
- "css-truncate" // 过滤文件目录
- ];
- const blockTags = ["IMG", "svg", "mat-icon"];
- if (blockTags.includes(el.tagName)) {
- return false;
- }
- if (el.id && blockIds.includes(el.id)) {
- return false;
- }
- if (el.classList) {
- for (let clazz of blockClass) {
- if (el.classList.contains(clazz)) {
- return false;
- }
- }
- }
- return true;
-}
-
-function GetSCLocalizationTranslateString(txtSrc) {
- const key = txtSrc.toLowerCase().replace(/\xa0/g, ' ').replace(/\s{2,}/g, ' ').trim();
- const sourceKey = txtSrc.replace(/\xa0/g, ' ').replace(/\s{2,}/g, ' ').trim();
- let noTheKey = key.replace("the ", "");
- let noHorizontalKey = key.replace("- ", "");
-
- if (SCLocalizationReplaceLocalesMap[key]) {
- txtSrc = SCLocalizationReplaceLocalesMap[key]
- } else if (SCLocalizationEnableSplitMode) {
- if (sourceKey.includes(" - ")) {
- let nodeValue = txtSrc
- let splitKey = sourceKey.split(" - ");
- if (splitKey[0].toLowerCase() === "upgrade" && key.includes("to") && key.endsWith("edition")) {
- // 升级包规则
- let noVersionStr = key.replace("STANDARD EDITION".toLowerCase(), "").replace("upgrade", "").replace("WARBOND EDITION".toLowerCase(), "")
- let shipNames = noVersionStr.split(" to ")
- let finalString = "升级包 " + GetSCLocalizationTranslateString(shipNames[0]) + " 到 " + GetSCLocalizationTranslateString(shipNames[1]);
- if (key.endsWith("WARBOND EDITION".toLowerCase())) {
- finalString = finalString + " 战争债券版"
- } else {
- finalString = finalString + " 标准版"
- }
- txtSrc = finalString
- } else {
- // 机库通用规则
- splitKey.forEach(function (splitKey) {
- if (SCLocalizationReplaceLocalesMap[splitKey.toLowerCase()]) {
- nodeValue = nodeValue.replace(splitKey, SCLocalizationReplaceLocalesMap[splitKey.toLowerCase()])
- } else {
- nodeValue = nodeValue.replace(splitKey, GetSCLocalizationTranslateString(splitKey))
- }
- });
- txtSrc = nodeValue
- }
- } else if (key.endsWith("starter pack") || key.endsWith("starter package")) {
- let shipName = key.replace("starter package", "").replace("starter pack", "").trim()
- if (SCLocalizationReplaceLocalesMap[shipName.toLowerCase()]) {
- shipName = SCLocalizationReplaceLocalesMap[shipName.toLowerCase()];
- }
- txtSrc = shipName + " 新手包";
- } else if (key.startsWith("the ") && SCLocalizationReplaceLocalesMap[noTheKey]) {
- txtSrc = SCLocalizationReplaceLocalesMap[noTheKey];
- } else if (key.startsWith("- ") && SCLocalizationReplaceLocalesMap[noHorizontalKey]) {
- txtSrc = "- " + SCLocalizationReplaceLocalesMap[noHorizontalKey];
- }
- }
- return txtSrc
-}
-
-InitWebLocalization();
-
-function _loadLocalizationData() {
- chrome.runtime.sendMessage({action: "_loadLocalizationData", url: window.location.href}, function (response) {
- WebLocalizationUpdateReplaceWords(response.result);
- });
-}
\ No newline at end of file
diff --git a/StarCitizenBoxBrowserEx_Firefox/popup.html b/StarCitizenBoxBrowserEx_Firefox/popup.html
deleted file mode 100644
index 4b32c06..0000000
--- a/StarCitizenBoxBrowserEx_Firefox/popup.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
- 星际公民盒子浏览器拓展
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/StarCitizenBoxBrowserEx_Firefox/thirdparty/jquery.min.js b/StarCitizenBoxBrowserEx_Firefox/thirdparty/jquery.min.js
deleted file mode 100644
index b061403..0000000
--- a/StarCitizenBoxBrowserEx_Firefox/thirdparty/jquery.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0=m[t]&&t=m[e]&&e {
@@ -15,13 +31,12 @@ chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
}
});
-async function _checkVersion() {
- dataVersion = await _getJsonData("versions.json");
- console.log("Localization Version ===");
- console.log(dataVersion);
+async function _checkVersion(): Promise {
+ dataVersion = await _getJsonData("versions.json") as VersionData;
+ console.log("Localization Version ===", dataVersion);
}
-async function _initLocalization(url) {
+async function _initLocalization(url: string): Promise {
console.log("url ===" + url);
if (dataVersion == null) {
await _checkVersion();
@@ -29,23 +44,31 @@ async function _initLocalization(url) {
}
let v = dataVersion
// TODO check version
- let data = {};
+ let data: Record = {};
if (url.includes("robertsspaceindustries.com")) {
data["zh-CN"] = await _getJsonData("zh-CN-rsi.json", {cacheKey: "zh-CN", version: v.rsi});
data["concierge"] = await _getJsonData("concierge.json", {cacheKey: "concierge", version: v.concierge});
- data["orgs"] = await _getJsonData("orgs.json", v.orgs);
+ data["orgs"] = await _getJsonData("orgs.json", {cacheKey: "orgs", version: v.orgs});
data["address"] = await _getJsonData("addresses.json", {cacheKey: "orgs", version: v.addresses});
data["hangar"] = await _getJsonData("hangar.json", {cacheKey: "hangar", version: v.hangar});
} else if (url.includes("uexcorp.space")) {
data["UEX"] = await _getJsonData("zh-CN-uex.json", {cacheKey: "uex", version: v.uex});
} else if (url.includes("erkul.games")) {
data["DPS"] = await _getJsonData("zh-CN-dps.json", {cacheKey: "dps", version: v.dps});
+ } else if (url.includes("manual")) {
+ data["zh-CN"] = await _getJsonData("zh-CN-rsi.json", {cacheKey: "zh-CN", version: v.rsi});
+ data["concierge"] = await _getJsonData("concierge.json", {cacheKey: "concierge", version: v.concierge});
+ data["orgs"] = await _getJsonData("orgs.json", {cacheKey: "orgs", version: v.orgs});
+ data["address"] = await _getJsonData("addresses.json", {cacheKey: "orgs", version: v.addresses});
+ data["hangar"] = await _getJsonData("hangar.json", {cacheKey: "hangar", version: v.hangar});
+ data["UEX"] = await _getJsonData("zh-CN-uex.json", {cacheKey: "uex", version: v.uex});
+ data["DPS"] = await _getJsonData("zh-CN-dps.json", {cacheKey: "dps", version: v.dps});
}
// update data
- let replaceWords = [];
+ let replaceWords: ReplaceWord[] = [];
- function addLocalizationResource(key) {
+ function addLocalizationResource(key: string): void {
replaceWords.push(...getLocalizationResource(data, key));
}
@@ -59,7 +82,7 @@ async function _initLocalization(url) {
const hangar = "https://robertsspaceindustries.com/account/pledges";
const spectrum = "https://robertsspaceindustries.com/spectrum/community/";
if (url.startsWith(spectrum)) {
- return;
+ return [];
}
addLocalizationResource("zh-CN");
if (url.startsWith(org) || url.startsWith(citizens) || url.startsWith(organization)) {
@@ -90,13 +113,27 @@ async function _initLocalization(url) {
addLocalizationResource("UEX");
} else if (url.includes("erkul.games")) {
addLocalizationResource("DPS");
+ } else if (url.includes("manual")) {
+ addLocalizationResource("zh-CN");
+ replaceWords.push({"word": 'members', "replacement": '名成员'});
+ addLocalizationResource("orgs");
+ addLocalizationResource("address");
+ replaceWords.push(
+ {"word": 'Total recruits: ', "replacement": '总邀请数:'},
+ {"word": 'Prospects ', "replacement": '未完成的邀请'},
+ {"word": 'Recruits', "replacement": '已完成的邀请'}
+ );
+ addLocalizationResource("concierge");
+ addLocalizationResource("hangar");
+ addLocalizationResource("UEX");
+ addLocalizationResource("DPS");
}
return replaceWords;
}
-function getLocalizationResource(localizationResource, key) {
- const localizations = [];
+function getLocalizationResource(localizationResource: Record, key: string): ReplaceWord[] {
+ const localizations: ReplaceWord[] = [];
const dict = localizationResource[key];
if (typeof dict === "object") {
for (const [k, v] of Object.entries(dict)) {
@@ -106,14 +143,20 @@ function getLocalizationResource(localizationResource, key) {
.toLowerCase()
.replace(/\xa0/g, ' ')
.replace(/\s{2,}/g, ' ');
- localizations.push({"word": trimmedKey, "replacement": v.toString()});
+ localizations.push({"word": trimmedKey, "replacement": String(v)});
}
}
return localizations;
}
-async function _getJsonData(fileName, {cacheKey = "", version = null} = {}) {
- url = "https://git.scbox.xkeyc.cn/SCToolBox/ScWeb_Chinese_Translate/raw/branch/main/json/locales/" + fileName;
+interface JsonDataOptions {
+ cacheKey?: string;
+ version?: string | null;
+}
+
+async function _getJsonData(fileName: string, options: JsonDataOptions = {}): Promise {
+ const { cacheKey = "", version = null } = options;
+ const url = "https://git.scbox.xkeyc.cn/SCToolBox/ScWeb_Chinese_Translate/raw/branch/main/json/locales/" + fileName;
if (cacheKey && cacheKey !== "") {
const localVersion = await getLocalData(`${cacheKey}_version`);
const data = await getLocalData(cacheKey);
@@ -126,14 +169,15 @@ async function _getJsonData(fileName, {cacheKey = "", version = null} = {}) {
const endTime = new Date();
const data = await response.json();
if (cacheKey && cacheKey !== "") {
- console.log(`update ${cacheKey} v == ${version} time == ${(endTime - startTime) / 1000}s`);
+ const timeDiff = endTime.getTime() - startTime.getTime();
+ console.log(`update ${cacheKey} v == ${version} time == ${timeDiff / 1000}s`);
await setLocalData(cacheKey, data);
await setLocalData(`${cacheKey}_version`, version);
}
return data;
}
-function getLocalData(key) {
+function getLocalData(key: string): Promise {
return new Promise((resolve) => {
chrome.storage.local.get([key], (result) => {
const data = result[key];
@@ -142,12 +186,34 @@ function getLocalData(key) {
});
}
-function setLocalData(key, data) {
- return new Promise((resolve) => {
- const newData = {};
+function setLocalData(key: string, data: any): Promise {
+ return new Promise((resolve) => {
+ const newData: Record = {};
newData[key] = data;
chrome.storage.local.set(newData, () => {
resolve();
});
});
}
+
+chrome.runtime.onInstalled.addListener(function () {
+ chrome.contextMenus.create({
+ id: "translate",
+ title: "切换翻译",
+ contexts: ["all"]
+ });
+});
+
+chrome.contextMenus.onClicked.addListener((info, tab) => {
+ console.log("contextMenus", info, tab);
+ let passedUrl = "manual";
+ const supportedSites = ["robertsspaceindustries.com", "erkul.games", "uexcorp.space"];
+ if (tab && tab.url && supportedSites.find(site => tab.url!.includes(site))) {
+ passedUrl = tab.url;
+ }
+ _initLocalization(passedUrl).then(data => {
+ if (tab && tab.id !== undefined) {
+ chrome.tabs.sendMessage(tab.id, {action: "_toggleTranslation", data});
+ }
+ });
+});
diff --git a/core.ts b/core.ts
new file mode 100644
index 0000000..98216fd
--- /dev/null
+++ b/core.ts
@@ -0,0 +1,297 @@
+declare const $: any;
+declare const timeago: any;
+
+let SCLocalizationReplaceLocalesMap: Record = {};
+let SCLocalizationEnableSplitMode = false;
+let SCLocalizationTranslating = false;
+
+function InitWebLocalization() {
+ // init script
+ LocalizationWatchUpdate();
+ // load Data
+ _loadLocalizationData();
+}
+
+function LocalizationWatchUpdate() {
+ const m = window.MutationObserver || (window as any).WebKitMutationObserver;
+ const observer = new m(function (mutations: MutationRecord[], observer: MutationObserver) {
+ for (let mutationRecord of mutations) {
+ for (let node of mutationRecord.addedNodes) {
+ traverseElement(node as Element);
+ }
+ }
+ });
+
+ observer.observe(document.body, {
+ subtree: true,
+ characterData: true,
+ childList: true,
+ });
+
+ if (window.location.href.includes("robertsspaceindustries.com")) {
+ SCLocalizationEnableSplitMode = true;
+ }
+
+ if (window.location.hostname.includes("www.erkul.games")) {
+ document.body.addEventListener("click", function (event) {
+ setTimeout(function () {
+ allTranslate().then(_ => {
+ });
+ }, 200);
+ });
+ }
+}
+
+function WebLocalizationUpdateReplaceWords(w: { word: string, replacement: string }[]) {
+ let replaceWords = w.sort(function (a, b) {
+ return b.word.length - a.word.length;
+ });
+ replaceWords.forEach(({ word, replacement }) => {
+ SCLocalizationReplaceLocalesMap[word] = replacement;
+ });
+ if (window.location.hostname.startsWith("issue-council.robertsspaceindustries.com")) {
+ SCLocalizationReplaceLocalesMap["save"] = "保存";
+ }
+ allTranslate().then(_ => {
+ });
+}
+
+async function allTranslate() {
+ async function replaceTextNode(node: Node, parentNode?: Element) {
+ if (node.nodeType === Node.TEXT_NODE) {
+ // 保存原始文本内容
+ const originalText = node.nodeValue || '';
+ const translatedText = GetSCLocalizationTranslateString(originalText);
+
+ // 只有当文本发生变化时才保存原始文本
+ if (originalText !== translatedText && parentNode) {
+ const originalValue = parentNode.getAttribute('data-original-value') || "";
+ parentNode.setAttribute('data-original-value', originalValue + originalText);
+ node.nodeValue = translatedText;
+ }
+ } else {
+ for (let i = 0; i < node.childNodes.length; i++) {
+ await replaceTextNode(node.childNodes[i], node as Element);
+ }
+ }
+ }
+
+ await replaceTextNode(document.body, document.body);
+}
+
+async function undoTranslate(): Promise<{success: boolean}> {
+ SCLocalizationTranslating = false;
+
+ document.querySelectorAll('*[data-original-value]').forEach((element: Element) => {
+ (element as HTMLElement).innerText = element.getAttribute('data-original-value') || '';
+ element.removeAttribute('data-original-value');
+ });
+
+ // 处理输入元素
+ const inputElements = document.querySelectorAll('input[type="button"], input[type="submit"], input[type="text"], input[type="password"]');
+ inputElements.forEach((el: Element) => {
+ // 尝试从 data-original-value 属性恢复原始值
+ if (el.hasAttribute('data-original-value')) {
+ if ((el as HTMLInputElement).type === 'button' || (el as HTMLInputElement).type === 'submit') {
+ (el as HTMLInputElement).value = el.getAttribute('data-original-value') || '';
+ } else {
+ (el as HTMLInputElement).placeholder = el.getAttribute('data-original-value') || '';
+ }
+ el.removeAttribute('data-original-value');
+ }
+ });
+
+ window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'off' }, '*');
+
+ return Promise.resolve({ success: true });
+}
+
+function traverseElement(el: Element) {
+ if (!SCLocalizationTranslating) {
+ return;
+ }
+
+ if (!shouldTranslateEl(el)) {
+ return
+ }
+
+ for (const child of el.childNodes) {
+ if (["RELATIVE-TIME", "TIME-AGO"].includes(el.tagName)) {
+ translateRelativeTimeEl(el);
+ return;
+ }
+
+ if (child.nodeType === Node.TEXT_NODE) {
+ translateElement(child, el);
+ } else if (child.nodeType === Node.ELEMENT_NODE) {
+ if ((child as Element).tagName === "INPUT") {
+ translateElement(child, el);
+ } else {
+ traverseElement(child as Element);
+ }
+ } else {
+ // pass
+ }
+ }
+}
+
+function translateElement(el: any, parentNode: any) {
+ // Get the text field name
+ let k;
+ let translatedText;
+ if (el.tagName === "INPUT") {
+ if (el.type === 'button' || el.type === 'submit') {
+ k = 'value';
+ } else {
+ k = 'placeholder';
+ }
+
+ translatedText = GetSCLocalizationTranslateString(el[k]);
+ if (el[k] === translatedText) return;
+
+ const originalValue = parentNode.getAttribute('data-original-value') || "";
+ el.setAttribute('data-original-value', originalValue + el[k]);
+ } else {
+ k = 'data';
+
+ translatedText = GetSCLocalizationTranslateString(el[k]);
+ if (el[k] === translatedText) return;
+
+ const originalValue = parentNode.getAttribute('data-original-value') || "";
+ parentNode.setAttribute('data-original-value', originalValue + el[k]);
+ }
+ el[k] = translatedText;
+}
+
+function translateRelativeTimeEl(el: Element) {
+ const lang = (navigator.language || navigator.language);
+ const datetime = ($ as any)(el).attr('datetime');
+ ($ as any)(el).text((timeago as any).format(datetime, lang.replace('-', '_')));
+}
+
+function shouldTranslateEl(el: Element) {
+ const blockIds: string[] = [];
+ const blockClass = [
+ "css-truncate" // 过滤文件目录
+ ];
+ const blockTags = ["IMG", "svg", "mat-icon"];
+ if (blockTags.includes(el.tagName)) {
+ return false;
+ }
+ if (el.id && blockIds.includes(el.id)) {
+ return false;
+ }
+ if (el.classList) {
+ for (let clazz of blockClass) {
+ if (el.classList.contains(clazz)) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+function GetSCLocalizationTranslateString(txtSrc: string) {
+ const key = txtSrc.toLowerCase().replace(/\xa0/g, ' ').replace(/\s{2,}/g, ' ').trim();
+ const sourceKey = txtSrc.replace(/\xa0/g, ' ').replace(/\s{2,}/g, ' ').trim();
+ let noTheKey = key.replace("the ", "");
+ let noHorizontalKey = key.replace("- ", "");
+
+ if (SCLocalizationReplaceLocalesMap[key]) {
+ txtSrc = SCLocalizationReplaceLocalesMap[key]
+ } else if (SCLocalizationEnableSplitMode) {
+ if (sourceKey.includes(" - ")) {
+ let nodeValue = txtSrc
+ let splitKey = sourceKey.split(" - ");
+ if (splitKey[0].toLowerCase() === "upgrade" && key.includes("to") && key.endsWith("edition")) {
+ // 升级包规则
+ let noVersionStr = key.replace("STANDARD EDITION".toLowerCase(), "").replace("upgrade", "").replace("WARBOND EDITION".toLowerCase(), "")
+ let shipNames = noVersionStr.split(" to ")
+ let finalString = "升级包 " + GetSCLocalizationTranslateString(shipNames[0]) + " 到 " + GetSCLocalizationTranslateString(shipNames[1]);
+ if (key.endsWith("WARBOND EDITION".toLowerCase())) {
+ finalString = finalString + " 战争债券版"
+ } else {
+ finalString = finalString + " 标准版"
+ }
+ txtSrc = finalString
+ } else {
+ // 机库通用规则
+ splitKey.forEach(function (splitKey) {
+ if (SCLocalizationReplaceLocalesMap[splitKey.toLowerCase()]) {
+ nodeValue = nodeValue.replace(splitKey, SCLocalizationReplaceLocalesMap[splitKey.toLowerCase()])
+ } else {
+ nodeValue = nodeValue.replace(splitKey, GetSCLocalizationTranslateString(splitKey))
+ }
+ });
+ txtSrc = nodeValue
+ }
+ } else if (key.endsWith("starter pack") || key.endsWith("starter package")) {
+ let shipName = key.replace("starter package", "").replace("starter pack", "").trim()
+ if (SCLocalizationReplaceLocalesMap[shipName.toLowerCase()]) {
+ shipName = SCLocalizationReplaceLocalesMap[shipName.toLowerCase()];
+ }
+ txtSrc = shipName + " 新手包";
+ } else if (key.startsWith("the ") && SCLocalizationReplaceLocalesMap[noTheKey]) {
+ txtSrc = SCLocalizationReplaceLocalesMap[noTheKey];
+ } else if (key.startsWith("- ") && SCLocalizationReplaceLocalesMap[noHorizontalKey]) {
+ txtSrc = "- " + SCLocalizationReplaceLocalesMap[noHorizontalKey];
+ }
+ }
+ return txtSrc
+}
+
+InitWebLocalization();
+
+function _loadLocalizationData() {
+ chrome.runtime.sendMessage({ action: "_loadLocalizationData", url: window.location.href }, function (response) {
+ // console.log("response ===" + JSON.stringify(response));
+ if (response.result.length > 0) {
+ SCLocalizationTranslating = true;
+ WebLocalizationUpdateReplaceWords(response.result);
+ }
+ });
+}
+
+chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
+ if (request.action === "_toggleTranslation") {
+ if (SCLocalizationTranslating) {
+ SCLocalizationTranslating = false;
+ undoTranslate();
+ return;
+ }
+ SCLocalizationTranslating = true;
+ SCLocalizationEnableSplitMode = true;
+ window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'on' }, '*');
+ WebLocalizationUpdateReplaceWords(request.data);
+ }
+});
+
+window.addEventListener('message', async (event) => {
+ if (event.source !== window || !event.data || event.data.type !== 'SC_TRANSLATE_REQUEST') return;
+
+ const { action } = event.data;
+
+ let response: {success: boolean, error?: string} = { success: false };
+
+ if (action === 'translate') {
+ try {
+ SCLocalizationEnableSplitMode = true;
+ chrome.runtime.sendMessage({ action: "_loadLocalizationData", url: "manual" }, function (response) {
+ SCLocalizationTranslating = true;
+ window.postMessage({ type: 'TOGGLED-SC-BOX-TRANSLATE', action: 'on' }, '*');
+ WebLocalizationUpdateReplaceWords(response.result);
+ });
+ response = { success: true };
+ } catch (error: any) {
+ response = { success: false, error: error.message };
+ }
+ } else if (action === 'undoTranslate') {
+ try {
+ response = await undoTranslate();
+ } catch (error: any) {
+ response = { success: false, error: error.message };
+ }
+ }
+});
+
+window.postMessage({ type: 'SC-BOX-TRANSLATE-API-AVAILABLE' }, '*');
diff --git a/dist/chrome/action/default_popup.html b/dist/chrome/action/default_popup.html
new file mode 100644
index 0000000..8017a43
--- /dev/null
+++ b/dist/chrome/action/default_popup.html
@@ -0,0 +1,93 @@
+
+
+ 星际公民盒子浏览器拓展
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dist/chrome/background/service_worker.js b/dist/chrome/background/service_worker.js
new file mode 100644
index 0000000..aaf00e9
--- /dev/null
+++ b/dist/chrome/background/service_worker.js
@@ -0,0 +1 @@
+(()=>{var e={},s={};function r(t){var n=s[t];if(void 0!==n)return n.exports;var a=s[t]={exports:{}};return e[t](a,a.exports,r),a.exports}r.rv=()=>"1.3.8",r.ruid="bundler=rspack@1.3.8";let t=null;async function n(){console.log("Localization Version ===",t=await o("versions.json"))}async function a(e){if(console.log("url ==="+e),null==t)return await n(),a(e);let s=t,r={};e.includes("robertsspaceindustries.com")?(r["zh-CN"]=await o("zh-CN-rsi.json",{cacheKey:"zh-CN",version:s.rsi}),r.concierge=await o("concierge.json",{cacheKey:"concierge",version:s.concierge}),r.orgs=await o("orgs.json",{cacheKey:"orgs",version:s.orgs}),r.address=await o("addresses.json",{cacheKey:"orgs",version:s.addresses}),r.hangar=await o("hangar.json",{cacheKey:"hangar",version:s.hangar})):e.includes("uexcorp.space")?r.UEX=await o("zh-CN-uex.json",{cacheKey:"uex",version:s.uex}):e.includes("erkul.games")?r.DPS=await o("zh-CN-dps.json",{cacheKey:"dps",version:s.dps}):e.includes("manual")&&(r["zh-CN"]=await o("zh-CN-rsi.json",{cacheKey:"zh-CN",version:s.rsi}),r.concierge=await o("concierge.json",{cacheKey:"concierge",version:s.concierge}),r.orgs=await o("orgs.json",{cacheKey:"orgs",version:s.orgs}),r.address=await o("addresses.json",{cacheKey:"orgs",version:s.addresses}),r.hangar=await o("hangar.json",{cacheKey:"hangar",version:s.hangar}),r.UEX=await o("zh-CN-uex.json",{cacheKey:"uex",version:s.uex}),r.DPS=await o("zh-CN-dps.json",{cacheKey:"dps",version:s.dps}));let c=[];function i(e){c.push(...function(e,s){let r=[],t=e[s];if("object"==typeof t)for(let[e,s]of Object.entries(t)){let t=e.toString().trim().toLowerCase().replace(/\xa0/g," ").replace(/\s{2,}/g," ");r.push({word:t,replacement:String(s)})}return r}(r,e))}if(e.includes("robertsspaceindustries.com")){if(e.startsWith("https://robertsspaceindustries.com/spectrum/community/"))return[];i("zh-CN"),(e.startsWith("https://robertsspaceindustries.com/orgs")||e.startsWith("https://robertsspaceindustries.com/citizens")||e.startsWith("https://robertsspaceindustries.com/account/organization"))&&(c.push({word:"members",replacement:"名成员"}),i("orgs")),e.startsWith("https://robertsspaceindustries.com/account/addresses")&&i("address"),e.startsWith("https://robertsspaceindustries.com/account/referral-program")&&c.push({word:"Total recruits: ",replacement:"总邀请数:"},{word:"Prospects ",replacement:"未完成的邀请"},{word:"Recruits",replacement:"已完成的邀请"}),e.startsWith("https://robertsspaceindustries.com/account/concierge")&&(c=[],i("concierge")),e.startsWith("https://robertsspaceindustries.com/account/pledges")&&i("hangar")}else e.includes("uexcorp.space")?i("UEX"):e.includes("erkul.games")?i("DPS"):e.includes("manual")&&(i("zh-CN"),c.push({word:"members",replacement:"名成员"}),i("orgs"),i("address"),c.push({word:"Total recruits: ",replacement:"总邀请数:"},{word:"Prospects ",replacement:"未完成的邀请"},{word:"Recruits",replacement:"已完成的邀请"}),i("concierge"),i("hangar"),i("UEX"),i("DPS"));return c}async function o(e,s={}){let{cacheKey:r="",version:t=null}=s;if(r&&""!==r){let e=await c(`${r}_version`),s=await c(r);if(s&&"object"==typeof s&&Object.keys(s).length>0&&e===t)return s}let n=new Date,a=await fetch("https://git.scbox.xkeyc.cn/SCToolBox/ScWeb_Chinese_Translate/raw/branch/main/json/locales/"+e,{method:"GET",mode:"cors"}),u=new Date,l=await a.json();if(r&&""!==r){let e=u.getTime()-n.getTime();console.log(`update ${r} v == ${t} time == ${e/1e3}s`),await i(r,l),await i(`${r}_version`,t)}return l}function c(e){return new Promise(s=>{chrome.storage.local.get([e],r=>{s(r[e]||null)})})}function i(e,s){return new Promise(r=>{let t={};t[e]=s,chrome.storage.local.set(t,()=>{r()})})}chrome.runtime.onInstalled.addListener(function(){n().then(e=>{}),console.log("SWTT init")}),chrome.runtime.onMessage.addListener(function(e,s,r){if("_loadLocalizationData"===e.action)return a(e.url).then(e=>{r({result:e})}),!0}),chrome.runtime.onInstalled.addListener(function(){chrome.contextMenus.create({id:"translate",title:"切换翻译",contexts:["all"]})}),chrome.contextMenus.onClicked.addListener((e,s)=>{console.log("contextMenus",e,s);let r="manual";s&&s.url&&["robertsspaceindustries.com","erkul.games","uexcorp.space"].find(e=>s.url.includes(e))&&(r=s.url),a(r).then(e=>{s&&void 0!==s.id&&chrome.tabs.sendMessage(s.id,{action:"_toggleTranslation",data:e})})})})();
\ No newline at end of file
diff --git a/dist/chrome/content_scripts/content-0.js b/dist/chrome/content_scripts/content-0.js
new file mode 100644
index 0000000..aa4f31b
--- /dev/null
+++ b/dist/chrome/content_scripts/content-0.js
@@ -0,0 +1 @@
+(()=>{var s={242:function(){let s={},e=!1,n=!1;function a(e){e.sort(function(s,e){return e.word.length-s.word.length}).forEach(({word:e,replacement:n})=>{s[e]=n}),window.location.hostname.startsWith("issue-council.robertsspaceindustries.com")&&(s.save="保存"),t().then(s=>{})}async function t(){async function s(e,n){if(e.nodeType===Node.TEXT_NODE){let s=e.nodeValue||"",a=u(s);if(s!==a&&n){let t=n.getAttribute("data-original-value")||"";n.setAttribute("data-original-value",t+s),e.nodeValue=a}}else for(let n=0;n{s.innerText=s.getAttribute("data-original-value")||"",s.removeAttribute("data-original-value")}),document.querySelectorAll('input[type="button"], input[type="submit"], input[type="text"], input[type="password"]').forEach(s=>{s.hasAttribute("data-original-value")&&("button"===s.type||"submit"===s.type?s.value=s.getAttribute("data-original-value")||"":s.placeholder=s.getAttribute("data-original-value")||"",s.removeAttribute("data-original-value"))}),window.postMessage({type:"TOGGLED-SC-BOX-TRANSLATE",action:"off"},"*"),Promise.resolve({success:!0})}function r(s,e){let n,a;if("INPUT"===s.tagName){if(n="button"===s.type||"submit"===s.type?"value":"placeholder",a=u(s[n]),s[n]===a)return;let t=e.getAttribute("data-original-value")||"";s.setAttribute("data-original-value",t+s[n])}else{if(a=u(s[n="data"]),s[n]===a)return;let t=e.getAttribute("data-original-value")||"";e.setAttribute("data-original-value",t+s[n])}s[n]=a}function u(n){let a=n.toLowerCase().replace(/\xa0/g," ").replace(/\s{2,}/g," ").trim(),t=n.replace(/\xa0/g," ").replace(/\s{2,}/g," ").trim(),i=a.replace("the ",""),r=a.replace("- ","");if(s[a])n=s[a];else if(e)if(t.includes(" - ")){let e=n,i=t.split(" - ");if("upgrade"===i[0].toLowerCase()&&a.includes("to")&&a.endsWith("edition")){let s=a.replace("standard edition","").replace("upgrade","").replace("warbond edition","").split(" to "),e="升级包 "+u(s[0])+" 到 "+u(s[1]);a.endsWith("warbond edition")?e+=" 战争债券版":e+=" 标准版",n=e}else i.forEach(function(n){e=s[n.toLowerCase()]?e.replace(n,s[n.toLowerCase()]):e.replace(n,u(n))}),n=e}else if(a.endsWith("starter pack")||a.endsWith("starter package")){let e=a.replace("starter package","").replace("starter pack","").trim();s[e.toLowerCase()]&&(e=s[e.toLowerCase()]),n=e+" 新手包"}else a.startsWith("the ")&&s[i]?n=s[i]:a.startsWith("- ")&&s[r]&&(n="- "+s[r]);return n}new(window.MutationObserver||window.WebKitMutationObserver)(function(s,e){for(let e of s)for(let s of e.addedNodes)!function s(e){if(n&&function(s){if(["IMG","svg","mat-icon"].includes(s.tagName)||s.id&&[].includes(s.id))return!1;if(s.classList){for(let e of["css-truncate"])if(s.classList.contains(e))return!1}return!0}(e))for(let n of e.childNodes){if(["RELATIVE-TIME","TIME-AGO"].includes(e.tagName))return void function(s){let e=navigator.language||navigator.language,n=$(s).attr("datetime");$(s).text(timeago.format(n,e.replace("-","_")))}(e);n.nodeType===Node.TEXT_NODE?r(n,e):n.nodeType===Node.ELEMENT_NODE&&("INPUT"===n.tagName?r(n,e):s(n))}}(s)}).observe(document.body,{subtree:!0,characterData:!0,childList:!0}),window.location.href.includes("robertsspaceindustries.com")&&(e=!0),window.location.hostname.includes("www.erkul.games")&&document.body.addEventListener("click",function(s){setTimeout(function(){t().then(s=>{})},200)}),chrome.runtime.sendMessage({action:"_loadLocalizationData",url:window.location.href},function(s){s.result.length>0&&(n=!0,a(s.result))}),chrome.runtime.onMessage.addListener((s,t,r)=>{if("_toggleTranslation"===s.action){if(n){n=!1,i();return}n=!0,e=!0,window.postMessage({type:"TOGGLED-SC-BOX-TRANSLATE",action:"on"},"*"),a(s.data)}}),window.addEventListener("message",async s=>{if(s.source!==window||!s.data||"SC_TRANSLATE_REQUEST"!==s.data.type)return;let{action:t}=s.data;if("translate"===t)try{e=!0,chrome.runtime.sendMessage({action:"_loadLocalizationData",url:"manual"},function(s){n=!0,window.postMessage({type:"TOGGLED-SC-BOX-TRANSLATE",action:"on"},"*"),a(s.result)})}catch(s){s.message}else if("undoTranslate"===t)try{await i()}catch(s){s.message}}),window.postMessage({type:"SC-BOX-TRANSLATE-API-AVAILABLE"},"*")},148:function(s,e){(function(s){"use strict";var e=["second","minute","hour","day","week","month","year"];function n(s,n){if(0===n)return["just now","right now"];var a=e[Math.floor(n/2)];return 1=u[t]&&t=u[n]&&n"1.3.8",n.ruid="bundler=rspack@1.3.8",n(242),n(148)})();
\ No newline at end of file
diff --git a/dist/chrome/content_scripts/content-1.js b/dist/chrome/content_scripts/content-1.js
new file mode 100644
index 0000000..adeefb1
--- /dev/null
+++ b/dist/chrome/content_scripts/content-1.js
@@ -0,0 +1 @@
+(()=>{var e={317:function(e){!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=Object.getPrototypeOf,i=n.slice,o=n.flat?function(e){return n.flat.call(e)}:function(e){return n.concat.apply([],e)},a=n.push,s=n.indexOf,u={},l=u.toString,c=u.hasOwnProperty,f=c.toString,p=f.call(Object),d={},h=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},g=function(e){return null!=e&&e===e.window},v=e.document,y={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||v).createElement("script");if(o.text=e,t)for(r in y)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?u[l.call(e)]||"object":typeof e}var b="3.5.1",w=function(e,t){return new w.fn.init(e,t)};function T(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!h(e)&&!g(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=RegExp(M+"|>"),X=new RegExp(F),V=RegExp("^"+I+"$"),G={ID:RegExp("^#("+I+")"),CLASS:RegExp("^\\.("+I+")"),TAG:RegExp("^("+I+"|[*])"),ATTR:RegExp("^"+W),PSEUDO:RegExp("^"+F),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,et=RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),en=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},er=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ei=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},eo=function(){p()},ea=em(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(j=O.call(w.childNodes),w.childNodes),j[w.childNodes.length].nodeType}catch(e){H={apply:j.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function es(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+" "]&&(!v||!v.test(e))&&(1!==w||"object"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&eg(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute("id"))?c=c.replace(er,ei):t.setAttribute("id",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?"#"+c:":scope")+" "+ey(h[s]);y=h.join(",")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace($,"$1"),t,r,i)}function eu(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function el(e){return e[b]=!0,e}function ec(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ef(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function ep(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n){for(;n=n.nextSibling;)if(n===t)return -1}return e?1:-1}function ed(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||!e!==t.isDisabled&&ea(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function eh(e){return el(function(t){return t*=1,el(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function eg(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=es.support={},o=es.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},p=es.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement&&(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",eo,!1):i.attachEvent&&i.attachEvent("onunload",eo)),n.scope=ec(function(e){return h.appendChild(e).appendChild(d.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),n.attributes=ec(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ec(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ec(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(et,en);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(et,en);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ec(function(e){var t;h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+b+"-]").length||v.push("~="),(t=d.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ec(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ec(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),y.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),y=y.length&&new RegExp(y.join("|")),x=(t=K.test(h.compareDocumentPosition))||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t){for(;t=t.parentNode;)if(t===e)return!0}return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return ep(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?ep(a[r],s[r]):a[r]==w?-1:+(s[r]==w)}),d},es.matches=function(e,t){return es(e,null,null,t)},es.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+" "]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,en),e[3]=(e[3]||e[4]||e[5]||"").replace(et,en),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||es.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&es.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(et,en).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=es.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,t,n){return h(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return -1)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),N.test(r[1])&&w.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,j=w(v);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,eh=/^$|^module$|\/(?:java|ecma)script/i;ec=v.createDocumentFragment().appendChild(v.createElement("div")),(ef=v.createElement("input")).setAttribute("type","radio"),ef.setAttribute("checked","checked"),ef.setAttribute("name","t"),ec.appendChild(ef),d.checkClone=ec.cloneNode(!0).cloneNode(!0).lastChild.checked,ec.innerHTML="",d.noCloneChecked=!!ec.cloneNode(!0).lastChild.defaultValue,ec.innerHTML="",d.option=!!ec.lastChild;var eg={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ev(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?w.merge([e],n):n}function ey(e,t){for(var n=0,r=e.length;n",""]);var em=/<|?\w+;/;function ex(e,t,n,r,i){for(var o,a,s,u,l,c=t.createDocumentFragment(),f=[],p=0,d=e.length;p\s*$/g;function eq(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&w(e).children("tbody")[0]||e}function eL(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function eH(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function eO(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;nw.inArray(this,e)&&(w.cleanData(ev(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,s=0;s<=o;s++)n=s===o?this:this.clone(!0),w(i[s])[t](n),a.apply(r,n.get());return this.pushStack(r)}});var eM=RegExp("^("+ee+")(?!px)[a-z%]+$","i"),eI=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},eW=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},eF=RegExp(en.join("|"),"i");function eB(e,t,n){var r,i,o,a,s=e.style;return(n=n||eI(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ei(e)||(a=w.style(e,t)),!d.pixelBoxStyles()&&eM.test(a)&&eF.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function e$(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",er.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);r="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",a=36===n(t.right),i=36===n(t.width),c.style.position="absolute",o=12===n(c.offsetWidth/3),er.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var r,i,o,a,s,u,l=v.createElement("div"),c=v.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",d.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(d,{boxSizingReliable:function(){return t(),i},pixelBoxStyles:function(){return t(),a},pixelPosition:function(){return t(),r},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),o},reliableTrDimensions:function(){var t,n,r;return null==s&&(t=v.createElement("table"),n=v.createElement("tr"),r=v.createElement("div"),t.style.cssText="position:absolute;left:-11111px",n.style.height="1px",r.style.height="9px",er.appendChild(t).appendChild(n).appendChild(r),s=3r.indexOf(" "+o+" ")&&(r+=o+" ");i!==(s=to(r))&&n.setAttribute("class",s)}}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each(function(t){w(this).removeClass(e.call(this,t,ta(this)))});if(!arguments.length)return this.attr("class","");if((t=ts(e)).length){for(;n=this[u++];)if(i=ta(n),r=1===n.nodeType&&" "+to(i)+" "){for(a=0;o=t[a++];)for(;-1m.indexOf(":")&&"on"+m,(t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,tl.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=1").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),v.head.appendChild(t[0])},abort:function(){n&&n()}}});var tH,tO=[],tP=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=tO.pop()||w.expando+"_"+tp.guid++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(tP.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&tP.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=h(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(tP,"$1"+i):!1!==t.jsonp&&(t.url+=(td.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,tO.push(i)),a&&h(o)&&o(a[0]),a=o=void 0}),"script"}),(tH=v.implementation.createHTMLDocument("").body).innerHTML="",d.createHTMLDocument=2===tH.childNodes.length,w.parseHTML=function(e,t,n){var r,i,o;return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(d.createHTMLDocument?((r=(t=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,t.head.appendChild(r)):t=v),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=ex([e],t,o),o&&o.length&&w(o).remove(),w.merge([],i.childNodes)))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return -1").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=w.css(e,"position"),c=w(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=w.css(e,"top"),u=w.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),h(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];return r?r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===w.css(e,"position");)e=e.offsetParent;return e||er})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return $(this,function(e,r,i){var o;if(g(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=e$(d.pixelPosition,function(e,n){if(n)return n=eB(e,t),eM.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return $(this,function(t,n,i){var o;return g(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1==arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return 0"1.3.8",n.ruid="bundler=rspack@1.3.8",n(317)})();
\ No newline at end of file
diff --git a/dist/chrome/content_scripts/content-2.js b/dist/chrome/content_scripts/content-2.js
new file mode 100644
index 0000000..a7ac07b
--- /dev/null
+++ b/dist/chrome/content_scripts/content-2.js
@@ -0,0 +1 @@
+(()=>{var e={},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.rv=()=>"1.3.8",r.ruid="bundler=rspack@1.3.8",function(){function e(t,r,n,o=100){let a=setInterval(()=>{let e=t.querySelector(r);e&&(clearInterval(a),n(e))},o)}function t(e){if(!e||e.parentNode.querySelector('a[data-cy-id="button"][href="/account/pledges"]'))return;let t=e.cloneNode(!0);t.href="/account/pledges";let r=t.querySelector('span[data-cy-id="button__text"]');r&&(r.innerText="My Hangar");let n=t.querySelector('i[data-cy-id="button__icon"]');n&&(n.className="a-button__icon a-icon -gridView"),e.parentNode.insertBefore(t,e)}e(document,"#sidePanel",r=>{new MutationObserver(r=>{for(let n of r)"childList"===n.type&&n.addedNodes.length>0&&n.addedNodes.forEach(r=>{1===r.nodeType&&e(r,'a[data-cy-id="button"][href="/account/settings"]',e=>{t(e)})})}).observe(r,{childList:!0,subtree:!0});let n=r.querySelector('a[data-cy-id="button"][href="/account/settings"]');n&&t(n)})}()})();
\ No newline at end of file
diff --git a/StarCitizenBoxBrowserEx/icon.png b/dist/chrome/icons/icon.png
similarity index 100%
rename from StarCitizenBoxBrowserEx/icon.png
rename to dist/chrome/icons/icon.png
diff --git a/dist/chrome/manifest.json b/dist/chrome/manifest.json
new file mode 100644
index 0000000..6fd26e3
--- /dev/null
+++ b/dist/chrome/manifest.json
@@ -0,0 +1,60 @@
+{
+ "manifest_version": 3,
+ "name": "星际公民盒子浏览器拓展",
+ "version": "0.0.11",
+ "description": "为星际公民网站及工具站提供汉化",
+ "author": "xkeyC",
+ "icons": {
+ "16": "icons/icon.png",
+ "48": "icons/icon.png",
+ "192": "icons/icon.png"
+ },
+ "host_permissions": [
+ "https://git.scbox.xkeyc.cn/*"
+ ],
+ "permissions": [
+ "storage",
+ "contextMenus"
+ ],
+ "action": {
+ "default_popup": "action/default_popup.html"
+ },
+ "background": {
+ "service_worker": "background/service_worker.js"
+ },
+ "content_scripts": [
+ {
+ "matches": [
+ "*://*/*"
+ ],
+ "exclude_matches": [
+ "https://robertsspaceindustries.com/spectrum/*"
+ ],
+ "js": [
+ "content_scripts/content-0.js"
+ ],
+ "run_at": "document_end",
+ "css": []
+ },
+ {
+ "matches": [
+ "https://www.erkul.games/*"
+ ],
+ "js": [
+ "content_scripts/content-1.js"
+ ],
+ "run_at": "document_end",
+ "css": []
+ },
+ {
+ "matches": [
+ "https://robertsspaceindustries.com/*"
+ ],
+ "js": [
+ "content_scripts/content-2.js"
+ ],
+ "run_at": "document_idle",
+ "css": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dist/firefox/action/default_popup.html b/dist/firefox/action/default_popup.html
new file mode 100644
index 0000000..8017a43
--- /dev/null
+++ b/dist/firefox/action/default_popup.html
@@ -0,0 +1,93 @@
+
+
+ 星际公民盒子浏览器拓展
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dist/firefox/background/scripts.js b/dist/firefox/background/scripts.js
new file mode 100644
index 0000000..aaf00e9
--- /dev/null
+++ b/dist/firefox/background/scripts.js
@@ -0,0 +1 @@
+(()=>{var e={},s={};function r(t){var n=s[t];if(void 0!==n)return n.exports;var a=s[t]={exports:{}};return e[t](a,a.exports,r),a.exports}r.rv=()=>"1.3.8",r.ruid="bundler=rspack@1.3.8";let t=null;async function n(){console.log("Localization Version ===",t=await o("versions.json"))}async function a(e){if(console.log("url ==="+e),null==t)return await n(),a(e);let s=t,r={};e.includes("robertsspaceindustries.com")?(r["zh-CN"]=await o("zh-CN-rsi.json",{cacheKey:"zh-CN",version:s.rsi}),r.concierge=await o("concierge.json",{cacheKey:"concierge",version:s.concierge}),r.orgs=await o("orgs.json",{cacheKey:"orgs",version:s.orgs}),r.address=await o("addresses.json",{cacheKey:"orgs",version:s.addresses}),r.hangar=await o("hangar.json",{cacheKey:"hangar",version:s.hangar})):e.includes("uexcorp.space")?r.UEX=await o("zh-CN-uex.json",{cacheKey:"uex",version:s.uex}):e.includes("erkul.games")?r.DPS=await o("zh-CN-dps.json",{cacheKey:"dps",version:s.dps}):e.includes("manual")&&(r["zh-CN"]=await o("zh-CN-rsi.json",{cacheKey:"zh-CN",version:s.rsi}),r.concierge=await o("concierge.json",{cacheKey:"concierge",version:s.concierge}),r.orgs=await o("orgs.json",{cacheKey:"orgs",version:s.orgs}),r.address=await o("addresses.json",{cacheKey:"orgs",version:s.addresses}),r.hangar=await o("hangar.json",{cacheKey:"hangar",version:s.hangar}),r.UEX=await o("zh-CN-uex.json",{cacheKey:"uex",version:s.uex}),r.DPS=await o("zh-CN-dps.json",{cacheKey:"dps",version:s.dps}));let c=[];function i(e){c.push(...function(e,s){let r=[],t=e[s];if("object"==typeof t)for(let[e,s]of Object.entries(t)){let t=e.toString().trim().toLowerCase().replace(/\xa0/g," ").replace(/\s{2,}/g," ");r.push({word:t,replacement:String(s)})}return r}(r,e))}if(e.includes("robertsspaceindustries.com")){if(e.startsWith("https://robertsspaceindustries.com/spectrum/community/"))return[];i("zh-CN"),(e.startsWith("https://robertsspaceindustries.com/orgs")||e.startsWith("https://robertsspaceindustries.com/citizens")||e.startsWith("https://robertsspaceindustries.com/account/organization"))&&(c.push({word:"members",replacement:"名成员"}),i("orgs")),e.startsWith("https://robertsspaceindustries.com/account/addresses")&&i("address"),e.startsWith("https://robertsspaceindustries.com/account/referral-program")&&c.push({word:"Total recruits: ",replacement:"总邀请数:"},{word:"Prospects ",replacement:"未完成的邀请"},{word:"Recruits",replacement:"已完成的邀请"}),e.startsWith("https://robertsspaceindustries.com/account/concierge")&&(c=[],i("concierge")),e.startsWith("https://robertsspaceindustries.com/account/pledges")&&i("hangar")}else e.includes("uexcorp.space")?i("UEX"):e.includes("erkul.games")?i("DPS"):e.includes("manual")&&(i("zh-CN"),c.push({word:"members",replacement:"名成员"}),i("orgs"),i("address"),c.push({word:"Total recruits: ",replacement:"总邀请数:"},{word:"Prospects ",replacement:"未完成的邀请"},{word:"Recruits",replacement:"已完成的邀请"}),i("concierge"),i("hangar"),i("UEX"),i("DPS"));return c}async function o(e,s={}){let{cacheKey:r="",version:t=null}=s;if(r&&""!==r){let e=await c(`${r}_version`),s=await c(r);if(s&&"object"==typeof s&&Object.keys(s).length>0&&e===t)return s}let n=new Date,a=await fetch("https://git.scbox.xkeyc.cn/SCToolBox/ScWeb_Chinese_Translate/raw/branch/main/json/locales/"+e,{method:"GET",mode:"cors"}),u=new Date,l=await a.json();if(r&&""!==r){let e=u.getTime()-n.getTime();console.log(`update ${r} v == ${t} time == ${e/1e3}s`),await i(r,l),await i(`${r}_version`,t)}return l}function c(e){return new Promise(s=>{chrome.storage.local.get([e],r=>{s(r[e]||null)})})}function i(e,s){return new Promise(r=>{let t={};t[e]=s,chrome.storage.local.set(t,()=>{r()})})}chrome.runtime.onInstalled.addListener(function(){n().then(e=>{}),console.log("SWTT init")}),chrome.runtime.onMessage.addListener(function(e,s,r){if("_loadLocalizationData"===e.action)return a(e.url).then(e=>{r({result:e})}),!0}),chrome.runtime.onInstalled.addListener(function(){chrome.contextMenus.create({id:"translate",title:"切换翻译",contexts:["all"]})}),chrome.contextMenus.onClicked.addListener((e,s)=>{console.log("contextMenus",e,s);let r="manual";s&&s.url&&["robertsspaceindustries.com","erkul.games","uexcorp.space"].find(e=>s.url.includes(e))&&(r=s.url),a(r).then(e=>{s&&void 0!==s.id&&chrome.tabs.sendMessage(s.id,{action:"_toggleTranslation",data:e})})})})();
\ No newline at end of file
diff --git a/dist/firefox/content_scripts/content-0.js b/dist/firefox/content_scripts/content-0.js
new file mode 100644
index 0000000..aa4f31b
--- /dev/null
+++ b/dist/firefox/content_scripts/content-0.js
@@ -0,0 +1 @@
+(()=>{var s={242:function(){let s={},e=!1,n=!1;function a(e){e.sort(function(s,e){return e.word.length-s.word.length}).forEach(({word:e,replacement:n})=>{s[e]=n}),window.location.hostname.startsWith("issue-council.robertsspaceindustries.com")&&(s.save="保存"),t().then(s=>{})}async function t(){async function s(e,n){if(e.nodeType===Node.TEXT_NODE){let s=e.nodeValue||"",a=u(s);if(s!==a&&n){let t=n.getAttribute("data-original-value")||"";n.setAttribute("data-original-value",t+s),e.nodeValue=a}}else for(let n=0;n{s.innerText=s.getAttribute("data-original-value")||"",s.removeAttribute("data-original-value")}),document.querySelectorAll('input[type="button"], input[type="submit"], input[type="text"], input[type="password"]').forEach(s=>{s.hasAttribute("data-original-value")&&("button"===s.type||"submit"===s.type?s.value=s.getAttribute("data-original-value")||"":s.placeholder=s.getAttribute("data-original-value")||"",s.removeAttribute("data-original-value"))}),window.postMessage({type:"TOGGLED-SC-BOX-TRANSLATE",action:"off"},"*"),Promise.resolve({success:!0})}function r(s,e){let n,a;if("INPUT"===s.tagName){if(n="button"===s.type||"submit"===s.type?"value":"placeholder",a=u(s[n]),s[n]===a)return;let t=e.getAttribute("data-original-value")||"";s.setAttribute("data-original-value",t+s[n])}else{if(a=u(s[n="data"]),s[n]===a)return;let t=e.getAttribute("data-original-value")||"";e.setAttribute("data-original-value",t+s[n])}s[n]=a}function u(n){let a=n.toLowerCase().replace(/\xa0/g," ").replace(/\s{2,}/g," ").trim(),t=n.replace(/\xa0/g," ").replace(/\s{2,}/g," ").trim(),i=a.replace("the ",""),r=a.replace("- ","");if(s[a])n=s[a];else if(e)if(t.includes(" - ")){let e=n,i=t.split(" - ");if("upgrade"===i[0].toLowerCase()&&a.includes("to")&&a.endsWith("edition")){let s=a.replace("standard edition","").replace("upgrade","").replace("warbond edition","").split(" to "),e="升级包 "+u(s[0])+" 到 "+u(s[1]);a.endsWith("warbond edition")?e+=" 战争债券版":e+=" 标准版",n=e}else i.forEach(function(n){e=s[n.toLowerCase()]?e.replace(n,s[n.toLowerCase()]):e.replace(n,u(n))}),n=e}else if(a.endsWith("starter pack")||a.endsWith("starter package")){let e=a.replace("starter package","").replace("starter pack","").trim();s[e.toLowerCase()]&&(e=s[e.toLowerCase()]),n=e+" 新手包"}else a.startsWith("the ")&&s[i]?n=s[i]:a.startsWith("- ")&&s[r]&&(n="- "+s[r]);return n}new(window.MutationObserver||window.WebKitMutationObserver)(function(s,e){for(let e of s)for(let s of e.addedNodes)!function s(e){if(n&&function(s){if(["IMG","svg","mat-icon"].includes(s.tagName)||s.id&&[].includes(s.id))return!1;if(s.classList){for(let e of["css-truncate"])if(s.classList.contains(e))return!1}return!0}(e))for(let n of e.childNodes){if(["RELATIVE-TIME","TIME-AGO"].includes(e.tagName))return void function(s){let e=navigator.language||navigator.language,n=$(s).attr("datetime");$(s).text(timeago.format(n,e.replace("-","_")))}(e);n.nodeType===Node.TEXT_NODE?r(n,e):n.nodeType===Node.ELEMENT_NODE&&("INPUT"===n.tagName?r(n,e):s(n))}}(s)}).observe(document.body,{subtree:!0,characterData:!0,childList:!0}),window.location.href.includes("robertsspaceindustries.com")&&(e=!0),window.location.hostname.includes("www.erkul.games")&&document.body.addEventListener("click",function(s){setTimeout(function(){t().then(s=>{})},200)}),chrome.runtime.sendMessage({action:"_loadLocalizationData",url:window.location.href},function(s){s.result.length>0&&(n=!0,a(s.result))}),chrome.runtime.onMessage.addListener((s,t,r)=>{if("_toggleTranslation"===s.action){if(n){n=!1,i();return}n=!0,e=!0,window.postMessage({type:"TOGGLED-SC-BOX-TRANSLATE",action:"on"},"*"),a(s.data)}}),window.addEventListener("message",async s=>{if(s.source!==window||!s.data||"SC_TRANSLATE_REQUEST"!==s.data.type)return;let{action:t}=s.data;if("translate"===t)try{e=!0,chrome.runtime.sendMessage({action:"_loadLocalizationData",url:"manual"},function(s){n=!0,window.postMessage({type:"TOGGLED-SC-BOX-TRANSLATE",action:"on"},"*"),a(s.result)})}catch(s){s.message}else if("undoTranslate"===t)try{await i()}catch(s){s.message}}),window.postMessage({type:"SC-BOX-TRANSLATE-API-AVAILABLE"},"*")},148:function(s,e){(function(s){"use strict";var e=["second","minute","hour","day","week","month","year"];function n(s,n){if(0===n)return["just now","right now"];var a=e[Math.floor(n/2)];return 1=u[t]&&t=u[n]&&n"1.3.8",n.ruid="bundler=rspack@1.3.8",n(242),n(148)})();
\ No newline at end of file
diff --git a/dist/firefox/content_scripts/content-1.js b/dist/firefox/content_scripts/content-1.js
new file mode 100644
index 0000000..adeefb1
--- /dev/null
+++ b/dist/firefox/content_scripts/content-1.js
@@ -0,0 +1 @@
+(()=>{var e={317:function(e){!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=Object.getPrototypeOf,i=n.slice,o=n.flat?function(e){return n.flat.call(e)}:function(e){return n.concat.apply([],e)},a=n.push,s=n.indexOf,u={},l=u.toString,c=u.hasOwnProperty,f=c.toString,p=f.call(Object),d={},h=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},g=function(e){return null!=e&&e===e.window},v=e.document,y={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||v).createElement("script");if(o.text=e,t)for(r in y)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?u[l.call(e)]||"object":typeof e}var b="3.5.1",w=function(e,t){return new w.fn.init(e,t)};function T(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!h(e)&&!g(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=RegExp(M+"|>"),X=new RegExp(F),V=RegExp("^"+I+"$"),G={ID:RegExp("^#("+I+")"),CLASS:RegExp("^\\.("+I+")"),TAG:RegExp("^("+I+"|[*])"),ATTR:RegExp("^"+W),PSEUDO:RegExp("^"+F),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,et=RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),en=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},er=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ei=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},eo=function(){p()},ea=em(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(j=O.call(w.childNodes),w.childNodes),j[w.childNodes.length].nodeType}catch(e){H={apply:j.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function es(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+" "]&&(!v||!v.test(e))&&(1!==w||"object"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&eg(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute("id"))?c=c.replace(er,ei):t.setAttribute("id",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?"#"+c:":scope")+" "+ey(h[s]);y=h.join(",")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace($,"$1"),t,r,i)}function eu(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function el(e){return e[b]=!0,e}function ec(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ef(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function ep(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n){for(;n=n.nextSibling;)if(n===t)return -1}return e?1:-1}function ed(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||!e!==t.isDisabled&&ea(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function eh(e){return el(function(t){return t*=1,el(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function eg(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=es.support={},o=es.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},p=es.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement&&(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",eo,!1):i.attachEvent&&i.attachEvent("onunload",eo)),n.scope=ec(function(e){return h.appendChild(e).appendChild(d.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),n.attributes=ec(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ec(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ec(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(et,en);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(et,en);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ec(function(e){var t;h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+b+"-]").length||v.push("~="),(t=d.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ec(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ec(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),y.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),y=y.length&&new RegExp(y.join("|")),x=(t=K.test(h.compareDocumentPosition))||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t){for(;t=t.parentNode;)if(t===e)return!0}return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return ep(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?ep(a[r],s[r]):a[r]==w?-1:+(s[r]==w)}),d},es.matches=function(e,t){return es(e,null,null,t)},es.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+" "]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,en),e[3]=(e[3]||e[4]||e[5]||"").replace(et,en),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||es.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&es.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(et,en).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=es.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,t,n){return h(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return -1)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),N.test(r[1])&&w.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,j=w(v);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,eh=/^$|^module$|\/(?:java|ecma)script/i;ec=v.createDocumentFragment().appendChild(v.createElement("div")),(ef=v.createElement("input")).setAttribute("type","radio"),ef.setAttribute("checked","checked"),ef.setAttribute("name","t"),ec.appendChild(ef),d.checkClone=ec.cloneNode(!0).cloneNode(!0).lastChild.checked,ec.innerHTML="",d.noCloneChecked=!!ec.cloneNode(!0).lastChild.defaultValue,ec.innerHTML="",d.option=!!ec.lastChild;var eg={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ev(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?w.merge([e],n):n}function ey(e,t){for(var n=0,r=e.length;n",""]);var em=/<|?\w+;/;function ex(e,t,n,r,i){for(var o,a,s,u,l,c=t.createDocumentFragment(),f=[],p=0,d=e.length;p\s*$/g;function eq(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&w(e).children("tbody")[0]||e}function eL(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function eH(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function eO(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;nw.inArray(this,e)&&(w.cleanData(ev(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,s=0;s<=o;s++)n=s===o?this:this.clone(!0),w(i[s])[t](n),a.apply(r,n.get());return this.pushStack(r)}});var eM=RegExp("^("+ee+")(?!px)[a-z%]+$","i"),eI=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},eW=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},eF=RegExp(en.join("|"),"i");function eB(e,t,n){var r,i,o,a,s=e.style;return(n=n||eI(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ei(e)||(a=w.style(e,t)),!d.pixelBoxStyles()&&eM.test(a)&&eF.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function e$(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",er.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);r="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",a=36===n(t.right),i=36===n(t.width),c.style.position="absolute",o=12===n(c.offsetWidth/3),er.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var r,i,o,a,s,u,l=v.createElement("div"),c=v.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",d.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(d,{boxSizingReliable:function(){return t(),i},pixelBoxStyles:function(){return t(),a},pixelPosition:function(){return t(),r},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),o},reliableTrDimensions:function(){var t,n,r;return null==s&&(t=v.createElement("table"),n=v.createElement("tr"),r=v.createElement("div"),t.style.cssText="position:absolute;left:-11111px",n.style.height="1px",r.style.height="9px",er.appendChild(t).appendChild(n).appendChild(r),s=3r.indexOf(" "+o+" ")&&(r+=o+" ");i!==(s=to(r))&&n.setAttribute("class",s)}}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each(function(t){w(this).removeClass(e.call(this,t,ta(this)))});if(!arguments.length)return this.attr("class","");if((t=ts(e)).length){for(;n=this[u++];)if(i=ta(n),r=1===n.nodeType&&" "+to(i)+" "){for(a=0;o=t[a++];)for(;-1m.indexOf(":")&&"on"+m,(t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,tl.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=1").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),v.head.appendChild(t[0])},abort:function(){n&&n()}}});var tH,tO=[],tP=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=tO.pop()||w.expando+"_"+tp.guid++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(tP.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&tP.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=h(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(tP,"$1"+i):!1!==t.jsonp&&(t.url+=(td.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,tO.push(i)),a&&h(o)&&o(a[0]),a=o=void 0}),"script"}),(tH=v.implementation.createHTMLDocument("").body).innerHTML="",d.createHTMLDocument=2===tH.childNodes.length,w.parseHTML=function(e,t,n){var r,i,o;return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(d.createHTMLDocument?((r=(t=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,t.head.appendChild(r)):t=v),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=ex([e],t,o),o&&o.length&&w(o).remove(),w.merge([],i.childNodes)))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return -1").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=w.css(e,"position"),c=w(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=w.css(e,"top"),u=w.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),h(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];return r?r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===w.css(e,"position");)e=e.offsetParent;return e||er})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return $(this,function(e,r,i){var o;if(g(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=e$(d.pixelPosition,function(e,n){if(n)return n=eB(e,t),eM.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return $(this,function(t,n,i){var o;return g(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1==arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return 0"1.3.8",n.ruid="bundler=rspack@1.3.8",n(317)})();
\ No newline at end of file
diff --git a/dist/firefox/content_scripts/content-2.js b/dist/firefox/content_scripts/content-2.js
new file mode 100644
index 0000000..a7ac07b
--- /dev/null
+++ b/dist/firefox/content_scripts/content-2.js
@@ -0,0 +1 @@
+(()=>{var e={},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.rv=()=>"1.3.8",r.ruid="bundler=rspack@1.3.8",function(){function e(t,r,n,o=100){let a=setInterval(()=>{let e=t.querySelector(r);e&&(clearInterval(a),n(e))},o)}function t(e){if(!e||e.parentNode.querySelector('a[data-cy-id="button"][href="/account/pledges"]'))return;let t=e.cloneNode(!0);t.href="/account/pledges";let r=t.querySelector('span[data-cy-id="button__text"]');r&&(r.innerText="My Hangar");let n=t.querySelector('i[data-cy-id="button__icon"]');n&&(n.className="a-button__icon a-icon -gridView"),e.parentNode.insertBefore(t,e)}e(document,"#sidePanel",r=>{new MutationObserver(r=>{for(let n of r)"childList"===n.type&&n.addedNodes.length>0&&n.addedNodes.forEach(r=>{1===r.nodeType&&e(r,'a[data-cy-id="button"][href="/account/settings"]',e=>{t(e)})})}).observe(r,{childList:!0,subtree:!0});let n=r.querySelector('a[data-cy-id="button"][href="/account/settings"]');n&&t(n)})}()})();
\ No newline at end of file
diff --git a/StarCitizenBoxBrowserEx_Firefox/icon.png b/dist/firefox/icons/icon.png
similarity index 100%
rename from StarCitizenBoxBrowserEx_Firefox/icon.png
rename to dist/firefox/icons/icon.png
diff --git a/StarCitizenBoxBrowserEx_Firefox/manifest.json b/dist/firefox/manifest.json
similarity index 55%
rename from StarCitizenBoxBrowserEx_Firefox/manifest.json
rename to dist/firefox/manifest.json
index 20d29f1..86df0b0 100644
--- a/StarCitizenBoxBrowserEx_Firefox/manifest.json
+++ b/dist/firefox/manifest.json
@@ -1,57 +1,62 @@
{
- "manifest_version": 2,
+ "manifest_version": 3,
"name": "星际公民盒子浏览器拓展",
"version": "0.0.11",
"description": "为星际公民网站及工具站提供汉化",
"author": "xkeyC",
"icons": {
- "192": "icon.png"
+ "16": "icons/icon.png",
+ "48": "icons/icon.png",
+ "192": "icons/icon.png"
},
- "permissions": [
- "storage",
+ "host_permissions": [
"https://git.scbox.xkeyc.cn/*"
],
- "browser_action": {
- "default_icon": "icon.png",
- "default_popup": "popup.html"
+ "permissions": [
+ "storage",
+ "contextMenus"
+ ],
+ "action": {
+ "default_popup": "action/default_popup.html"
},
"background": {
"scripts": [
- "background.js"
+ "background/scripts.js"
]
},
"content_scripts": [
{
"matches": [
- "https://robertsspaceindustries.com/*",
- "https://*.robertsspaceindustries.com/*",
- "https://www.erkul.games/*",
- "https://uexcorp.space/*"
+ "*://*/*"
],
"exclude_matches": [
"https://robertsspaceindustries.com/spectrum/*"
],
"js": [
- "core.js",
- "thirdparty/timeago.full.min.js"
- ]
+ "content_scripts/content-0.js"
+ ],
+ "run_at": "document_end",
+ "css": []
},
{
"matches": [
"https://www.erkul.games/*"
],
"js": [
- "thirdparty/jquery.min.js"
- ]
+ "content_scripts/content-1.js"
+ ],
+ "run_at": "document_end",
+ "css": []
},
{
"matches": [
"https://robertsspaceindustries.com/*"
],
"js": [
- "rsi_hangar_fix.js"
+ "content_scripts/content-2.js"
],
- "run_at": "document_idle"
+ "run_at": "document_idle",
+ "css": []
}
]
}
\ No newline at end of file
diff --git a/icon.png b/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ceb859b5da506dd8a03c4dcac03502a7c3e90a3
GIT binary patch
literal 12495
zcmbWebx>SE(>J=fySrPEMS=zo?g<{;A-KCQ?!kjB65J)YYj9aS1b259zdX^XsY|()$48`c+mE
zP(4Y0_&$NRl2Dca0O}IZo=p(m=O|8cx~>2KX8(UW%&=prIRLdSV93b+nMo%G*5_^t1M%07$jy$gmD-F8|+
zLPTeTqBn6N+F>IjV8f#12lajT{9RGIlFjIMuBq*=?YTIRGu`l4>`+;|v;3?&_qF@1
z{4Ced$@%}XiBgKX4Q*rt<_Cuey{YCou>MoXfMwizbfKX;$6
z^FXM|y}-k0iapyHgQj%@_OY`O{(6~YBovh4M(f^4Q@auBT1Eh6c6Q-?yVr~3Cu+jD
z3;i=)j|D-_{Q&~uVUu>%6E2KYpF*EhVlR>0Iyp8EPCn9ryTK}8)%xp2ze(q`QlB`p
z6yVSCTv*`0<}S_oxsUfA2}rLn*P;_uGV8QyYL4KG`1shKm-Pp}|ExFF4Jd9J-x0LB
z9)1c4>*J0ArmF$QMGnn#Aw8kwswCDN{f_3RT{<7zEbOc|8pPgK()k-;3xBwO?;k69
zkR<9bU$b@WEbMBvIlHE;*;mh)`Uyo*T~+pUhTSF*^Urh8GOpQtu?K&}%`6Wcs`;sv(kHM78XixO8>l06|o|sAqT*mEAy8#ih2{;QfYHT$pCA?D(Pn_}51sGeRs-$M{f1S$Y
z^k%slT-~*O`|rzR8yyKSwXBdtd;ok#qcx|vCJ=H$~Y;m
z5fA@ozwI#67Q@H}k@AIS9`anv}KUps^J0zFUk>=AR_{&94H(Cwc6|e?t`C5;ym*}k<&0y75
z4_nCpH`ln9++U5Twu!Ku3tQp%$on41b7P@!T>p53%VKh?J2=I-0+%9bBpwQ4l330&;LuWB;|FrOheJeT1>!NDg~EqlgD$gpVo!6h;(Wo`
zmODZKJ65S3852Nh;03Kc?G!PkItfkc-_ai%K-SP9X~m@pHoO+<>w0{}J&r;t#Tl!*
zjPN8{9Tm^aF=X9mSW;r`@eCA;8
z`K&)Y;lmm-a=WA4SrBTC^`7d(G5$JYfdp^9LCKae<}Y(BsQ7y2?I(YK;dU$4Hs!j<
zbi59D_Q%~?kJSPBcrM9K%?9Q(sMBGL4eG3w`Vcc$rnqN^F3aLIsyPayszC1E-z_I)
zvIb`vYumgrpPu_HQkakMY3x{UlX=NXYZHnve_0?+PgG%Jrpp61}dsQ(Q2RkR$V088J|;q1nX91<{`_t=hml5iMUpgdJ)p8>HadH9@R8i^
z5x3;iN-R*Oy=lG0y6An4r?iFimiHgQJi>AjdR>SJ$!GA8wYQ8#5kZl(gi-5W+Wu
zC(~=zfIb`;GN805>h9|>e+SQb$@w`k5@V3
z(|$^pSO-OMgXAJ_=mv45e*g5jqGF2XU0k-v^|^kvFBbq#ceN$H|Bs-*{fQ!$mR6lZ
zg7&Q&ofaQ(tjYYJMGAejx>B(}wvQwe*%lF$^+Uej3Oe83Z0Fa$qcM%=aMdVwYH|p|
zY?H(aw&;A)=)46;`dLm@6*xDMlVH@bWgL_`aclqIEvpy0DJ$K!J~^Ezh9Y#SA^Swg
zQsYL+HS8%rEBwf%9fD!ciVca4&CR1NJT^0T8)j*_dX8!K?g@RJ({rpKvC{HMq4`GI
z2b8&7Bg-BZ&N8K0eP^$t(0?*hgsi-xTzBQrZlwdIo9fzQSMnKM6uiD4`sdQY$1bxf
zOGF)HDXd37QKO@gU37foN!9H^$f)DOv&;D7eNg;`58&Bn
zUk)czd9B1PEe(3~M!WXgS)7Iq5|iC=;#4vC^N(kNTeI@(!
z7fWdkkk{URi$=)u^z4?R>plwGa*&N@qJn0S16T^Y;C$X4shzT!R*av?Wdx#1JOoAWt1rs^ZT
zn
upHcttl)=wxeYj3
zso(%%RSRMq*|PS;SRvK7{X`XTf6&jE(Z|X%TrWfjj`xYk!qVRp;+^NkPRV5{h)akG
zSOKD+Qv3uA)4jTC=K$V(#!@-Su$X)Ez!c`p$Z2dDFco!n*9-rq$3l9PqQsDMae<%6
z%#$yc4%FfNMcOLzw7#(Pm;;=xqDOh@UMFky9|}xMr}lJD3A(NunNS(X@IFnWoG_
zIa71$?fCRx*C4+h8b!-ToCL>jTzqqw9}oPq#yP1rWo#@Pm-{$tvQDOwaaz8|=W^z!
zR*YFHJA$&ryjfE65;f-*HT%*X+hF|`T)M^qlx)uki2Lr6EqQ)9d_lhWkDMHq2vA^#R6)u4bL
zM*%Xzaz~J{CIc#~DYsC4GIEJ(6-*5iVj*223dVetSt#OP7i*I7%7A4Z3S58UMY3>f
zVhsNR3?(QVap{CGvD@}Ka(~JQ+|jL#eKds7&8))Y;fL;OQbw{$Mj^v5izCG$9?#`D
z%Zu3KlC;buXC$}Vqxm9#x?EN#7@{pTAH+8Ns{POtVqbZlVy*<68)H$KEue%+M~pw*
zw$y`HsFZgperV6LzJjn&TU)-PamGHjzbZq7)E82=`C)21GiOdp^sv10E|^i>bbO
zv3z=}X3FdnmfNvUw(`+@$i*s|nHmGC&wEU7@G!z=jN2CE*z0$p>!u1>Q%&Y>QsEKC
zwJ+43<|>mlusME@t>?qN+y7cZi(S(dqtyUPdbQXg7Bn7FX+v*&L3vRfdM;$}m*;Rx
z^yR@0Gyz*kZ?85BgYrXofqn=9mpwde_ImY=T{CA6#D}7zvzb3s0Kfhr2)WODgKvB~
z6I!>XVuQDbP0o+?jIHyGj!C~PMj=j=3gOb;#b?xYCL=Zch=)eGldWx)L8m=l>|glU
zCqx<8j;|LNB;{>hhu~}wdPYjXo#ay_VngQn!_UT*l9UB3;;m<~eC?3H@xhe9MO
zDiW0@<+Ps%&U4q0BQUA<1$n2ceBnIKPiv>_b-{875UA#|m;AA)xa(Lp*sS5#W`|-i
zXn3fH2w5C^n4@5K8a9;$kUb<
z^s+NB2svlLob5PS@et|GZHkdQW%(u8?F{bM^F+14(}~PfMl+nJ!Z(R+TyTB)2W#Cn
z{0;_DA64OYS7kHU6VrO}yev1;R1^U5VArb=
zwXN%h3K@KOx0`o6#!<^gaUlU@@s-uUa;edlMXn38-;E>Wg;>6
zz#R_kWEfq_e7-?FCf9xKXIj~RdHOGP@vAv{sF7kLikaDB@
zvTHF^0@9Gl7-hEr<*KLPoUkQ^itX^ff6T#7bP}DIFO-UR@R&Oneopz1pmb~`rNe=~Q7Lx$x@U8T8by>vVO2=|6zk!X=V2gds
z?cDGm<0(S>tE!xw7FCwI{mD-JU0F~5-Z3_wt-|Cy-Aha*^>YfbiPZh1k){cF-K;46
zr7mnyFLT7-r}D|S3Q0KOveL}P&N}E=)D^?;Ma*HJ(n_7*mJ#YS&ONt?#RlsKgkIuUfZWK#c
zpW)yp{t>O%4w@HnPNngr??xGGaC0%Q@b3lNFIv0S;rnmt}}x_IqGOhFmYU{ga(>
zl{hH=H7?E#Q7!$`luQ4GxY)^3EhV4ut*?MbWG+;rDl4}C$0VVc#M+OmlN^LuQ~;NX
zYdtSNuY|HY?~`sp`KnEEK2!aqu@TVD`wV!ozzT$z^{v_lS9J*ts2Y8fX9h)`pocT*
z6P32MMqyCe9GOmEPEsyGhs8Fi+p~NH^qmw&6)iwzt6yaf1f@w#T23uMTE9|f
z3``u;INVFz36S+Rp%voYue(#mBU@n?tw2AL*Sjsn)nok?z5B~ya8-iDHH&7nCjm2@
zf}g04&)%}y-^!N)_qVmq7QJ1-28(>e*RP?1cCOYs@2aq3;aQYy>EC0Dg)p!tU}8xQ
zJW8?~7Tqr;k==K6(TsH?3Eam1ZiyhL0En)(PQ4u7tLf^(c)o5pwA=>rl;LI~n$I9rCIl8bl+`7#1oki@x!(M3Ed10Qhfoi_a}
zC`xqm^Qf0Pokeaa1;<5_lTqABZa@q%PUTz`7KkZ`hdy;})vlFJ)Bd43$3~!}UYN5?
zKc!NR>8LT49*~T#F3EUisK36nh^%ffN`$ysSJ;O5AxID;``|g#Vy@0(FSc$RqLX?-Q6B<#x`gLO@SY=#C~RxZLW}s
zqTh=^?Y-`$D_Z#d4~8GA936IBNBTh|aQa@o4;h^5hK86{*O-5PDM^bLDk
zF)7yqgVk-1+@+NY&)@Ieyzav)HrhS?Q9fK${@@cxJ6L+h(UdS5rHHIgpMVxG)&%FG
zZ^8?XS`+*5gav(YSkBH=kQv>}BUSN?^HlLA7n&
zZOalJtpOEb8sHXr5-20ilEIbU83k7sbij7KftwpxManKVvHY<`FS-;{#y*tpX4pVT
zHw$8>c3S7CFV(S?5NFBZKZQ!8?f3iNufZu2vhU>XOjAE(89iyYY__Qq&1Y@b_abq0
z2bFv+d0T?Ms%Y0G?h)tJz7;FkfPjIA*B8?-_kGXauHF@2BSJRXru=Xzy)U$#HruD*
z9HX?q`Ix-!h9aO@NvOMCiJ3F;EJ6C!@yLe3Fn$aSP75Rz8}W|*aJd0jTrEe1+Vy&G
z+a_zPf=>IM4xvm`fyAQDx0-frTuJ#oB~~%BCgyqI5=OpwGB__0!;H06^mK!IM2Dv#
z?ac?P+z{WhE;J7BbKfC$KUQ|0;(nsHOGfm{;mzK+2ZYs&W!3&NrkWt^mw6ZIzb>ZU
zA(OC&oP0{a{h!cZe&_xp@+DP+@>*cTqW#-L3eoHRiQus7{r=ga7?Z&(y!`z9T#DbQ
zgMa=YpR8SDcHBLZ)w=F;EVcS#kqa*&4kz5#-g{amA6LHtG_w$I8
z+*AHYl{5*-vq2PR+Xdtm+Ddy1{;iwW)Kt@!b+ofJu3^uN_J2rABVkkaltg2>)5uR>
zy2C>6d3{03>)gh6bEgRZoRi}O{qyDE>@2*um*(K`G)(0N%eYgc_3ZJtH_Ct9N2smX
zt!Azw<}siDg@S>`hZ$uMK&}%lWzRn7LWj6p3J6tv#zu#y*}&RRDJlaSgysJu!6ceu
z_q-%^JqrKw1Q!e_cGjC#P#kkQ3ay*r^c`zBdWy95E8V$5c-2A{8l6ea
zkwzox*^)*xIs7qbxAM^)wdMY>_a7wHdjR@=NrtPe(mv15xc5ayyptTOcP>r07ndbT(-JnMpfaf|{(+sHfu
z?Gjrn?~!EV@8A7&38FB~ewRiYC)aCm{HxCh&}*Kl-UDlocBLwT+Roz$vG5pRCppL4
z^zeqS=PU9;cRfycgxYg-)9%34K<>XokqtuTu?^=V+JVb^7`dA%(Kr5RI_DT@o2s{@P^?+_an
z;pEE7%EqwRgJ3b9Yh^px8FbAc<14VFHccn8HnyKdZSYACA{e_$^(6r$DEo%B{0SB06)O>(y=ysO#a7zL`8>
z-agqK%tw}cXPb7v{kz`os-bDPKJ|Bk{9Xs$HF2EDQ#eLp{oE^gWo?fV_sOqb3B}|T
zg1#LdT5+0L0@`H*{Y`SJx{^w6QXYuQ?x|smIISl;!9{~70h!Yu17V;I
zH_gq_VIQa5qeTv|eVzY}3Gg;N%r6?-rBEV$nc7A#eDxvndlC!46l>qd@qm1wILIC1
zQSC-w^m}G?nhF#d&+VH4iQAAU8QFCh2Gl2B*^YcC%_8&_p7j58lT;|Xd0z9#oPrp-
z3iqzWguaTJ&Pmrvb1!SP_MJ$N+TY1h54Y@}O!5K~MUr$44a3!a+}k2@4iA!!3uS#b
z=Czyq3$euD)*tQy`@wHFxHot4=S;D#>%UPYdGWT-9EBVsR31#vI~bU%1}S!zy0OHc
zZ_dv9y(^|R1%p^c{Rr&*c{;6(uau|i=$hW&!qB|R8OlcyjgBhx?%&rTA;@0D@^LF!
z{XUuDbmbe@V_9Rf_ZAPeQWC|iuwhYK#G?Xz`K*~9jBvy~k!3AfPzpw*NU-;Q!BDbB
z$H3^FG-yw~CAW}|lqnEMBMHgf_CH|;+h3+@YW1EZuMfH=C!p{kQv13-d1QZ|?sr+?
zc{ysEtm~6ld?w0q=Q#eZtTl@cuxhZqr_7zD%y5lLn4$_AWPY8!8o69@6@Cx0NkM|k
z2N6e|{{C#ry~gaG1q84@OZJz7`^rC&)^L-CsJ)iIk#h_9U@Hk<{zY1Lj1lvFnK+5~
zs8VtdtpkM`H-$R=WIu>h{YQE9gje-67ibPV+=l4n)(#1bW*X^QkK>V1ge^@|PdR&;
zoY&FupLzR#_6Wq&XM?%u{M3bzZqOF~vJ$g)y6yI!SL0Ql;B?$2IYFoPGJ~-4)!FJc
zOi7_`S>oN5iGKsv#}|o!=J5_i5$gni=cJS;-E|Ew;+WO21Tgler_h%{C!wxS6?iB>
zOc$#hH&n_8?W}E-z_dH2?9wx`4k+Y;pnyvc5C!b%~uko=v%&k_*zkh{bSudgUX
z=Bq+KjQ@v;{$r_#uYuQw+>GycmWBpJv>@92E(=EZ1~(RN9YahAA$#yHkr6D~lt7lz
zF3k)*_p>=3dlft@Ju?AXq>(IcbA7x9N3HjO5UmLxV3H7z18|T@-A4Y6ZEhpU=We8A
zE9p@wqsfb9?xU(1j0CVm86G3!a97jqm!se%y^hD`pwq1HIucJByVZ5F{#Wit<1zu`
zF!&-X&h*&Aaop5s^vD
zqk=(fW_ARlTKs1LarR5dCt3d%s}8Tm7;!H*c-l>_J92CTnh*K+Nv8gRoPQ9Tw|C>>
z?kdEE4ieN0diP`WWC=OIKh-K1_mYl{g;wXI)Y~HQz^eub1w#U>;o*q+sfKPv%&x!c
z&NaE?7xh9UfuUDFg-Ua0;dzxION|B9xwnUh!>q**+`qky|KbwFG!0kLHDP@D9|4L~
zQmUVra01(uS~%1M$VdMAiZHQZ;)~%ZZvVb6<9>$+RQ8enu6R#AOgj*^fBSW9!*}td
z{)nKT;e0ID7uW2^%9l`%X|ON^UydA59ZPD!%q7tLG%{_pNwNX>e^C^du-fDJ+$mRLH3QjbCNp_kO%XTcltpluwHK0
zvpAC_=%$Wjl0eMerqI7t@DYy%DTx252-#_b`^339q%=1aR$VcnKa8X~o?hRABCOV)
zQko*9gX__?YGzd)xC@9J5>DQB+~3D(iwEWo&zFo}KnhD-9GqEdp)|O?U4ag7hR&lf
zYDZ+gcuZ%vgKUzE56Vb^yO}}15*1@U|J*7OvktgBWa?1{x1qo8x@!0FQu$)B{S^CL
z(No9HngmUhI>Qg0cv$WGz^7}6bU=(`nxd)M6KCr~6t
zcFg<67bG3dEi|O8-M)oo^^4`TnB}+AQ`KV63a?d9fj5uw$lmqZ0c&DLQR47nf(4GICtx)X(1jA}P=>
z&-j2PirJ7n5Xp=9&~_2kkab!!Ku-O6H~(wPH5oWK6GFyY0?+Hac4BE=SreSjM+#(<
zV+`0M)-9v;f>1_rl)@Lj0T}+t#MfomC
zY!+Y4dGKj6WUnkLP|t7Xh(N}ZITMPra657ZE{v1?1|!~h=5rkO!`h7jb1HY6BORY6
zAL+vf>ba#qh&?M`)((z{`xdFc?5wzPV~aVTmG9K3|FZw|R=Hbj@#l}>W2RXLSZFWA
znZoqj9=jk+x)aS=7fFl#f-K&0z4P`#PC!br@%4Zy*NMkq$HzEOzk0#UMNxr6@ifuN
zV6_yjLMTjWP1R280QsjitkBOl*d~@xxPX&>2wqNy{oL=%rylKZ|%e$`mO%n
zUqlE+g@F;@3fjua*W73Q(o}|Q9lPLU6D-!o&@{Cq0Ab3q9=P=jHN&E!x7S~G=sg&H
zPyvLTP7_dN;Z7EdY|c7AWjGq@b=~oCRqv5+fB;
z$ig8Wt(C0%Yi#$36;Zn-vrDlD*TwEKd2$)F%x{crXzUN}<&l=F$njM{=Wqk+XmCeX@`YMDJbY>Qvj^`W?FMmLvxnPfX=C-=16X;xH=%6KSEa+L`2b^me#H
z$1Bq~xow}^8f7=H={i-3#7MyDutD|_Zu7E4foBEA!dpxM*8}UuY)VKA&=cEJ5YYm}
zo*v`)>c9aga;l4rN&zqtx~g-KBt$QQOA402&tI75B#Cyoe^ogUTER+9B~bX};s@~P
zfaFIlSY}j#&H*QdCV1
zfAWL?FYFSI9%x*iM2;9fHxlyk_mrOA&%?%m_RsFWHPzJBVPNphRM)XP+U(zvI#;SD
zY`Cvt1u+kC)I}BtWAw>K(e-MYyzpaAFU0tBwQ+A-gU2ln^x%E+j
zZukYmhrNR*KPLTyR{a}1HY*T&*)f!Pa)%Xkv81R_IjLVa;MVn@s_~c=+|tu(=hY_q
zx+fl4l-0Bh^HDO9im_X8IOzj!zI=nnO*3P7u5k}-tj4A(UbgznXpcSqNBo&Dp#an5
zIzCPU{DlDbQW4pMH}o8UtBQiyOFTBzI+|o1asBYM
zR|Aa)W8yt2F99PSvJet`dGezKbE>kxOq^T~}+ZH2zv-$DhT5g}l
z+EJwEit%O{zn3PJ1dK}<@!N0ohJ+Z9+7`*{d@YVGS@IG5y^m?E28!|^3NZPrMH{nK
zGS-ilUejY!Wva{&J&tW_iuDI7yU*;O0%)Bp<~vd;ND$bDFAQ*_DKtL7EXRVhB}KLv
z=_}AnL@CC61h%(r4O=8ScT-Z2Qw6=F$FUv|y$t!ha5dfg&lv}4a%nDttUQnRrg>x4
zs7WZ7F#y_`?Jrbfv4x#%uYO1{1u3e8gH&W>VSl(zu4QRki2_MQD*C`Ma<%%@Zm9!I
znF8PIE13FZwKe37`5N>ee?34`;%hg1C5S~=iwcyGA
zWBZEC@VXhYVkMEpQ{ekJkho!73x!EvETp)X&p&g`WI=9(1iG`|)k#7=(;115)jyq&
z*@WkI`D2qf`*GU^tiMymIEvA4q35S`u%yy9+CR%C$87CIfzI5-w#M;1U5p@Jmj1r7
z6QJOR%-(Q)Nu{tjmwTep0-q!2G8)Y61{i28q>a|(o+x?PbqM_@s~!V>pck8D0?80k
zkcH;o@kPeRADH6P4vmJ(Ns~+rUl+T487dApp<%T;wg~rLz?8oc7zAhj0;j&=1bv2jjg%ig^BSON9Od=A!YY9!!e$e^(bi>NA3i{(#
zw^`;@T1bI3+~R5-m^k%aqlYnE)d=y$jH7>;qGQ~eiRTOB?(IXiRMP-eTrE}O^vrtv
z7j@N4%LQ)Kbd{z7)%Ro4@q>6tOkO9Y?lIQKyaj%F%70H-^DB?b4KjK|des&`^HiY@
zljny1$D*j6hLjQhdZjTZZe83!J9Ci8Z1xGk-lK4_^mmdlMW#$B`|>Y*A%NTEG@NyP
zt*H`clwV8TYRxB&F8XPLg5Xf3rBFBYJB***GXG7k@B<6w>xh#uF3ki*ApHTO89Qgy
zTv%Z4#&_K&|Aewn(&LK)uut20Ngd3$pZ;6Mlq7r45VR)5H#dVwCmV09H~wj=L+NSu
zJx?Q3X39mt7l?b=pqMRtSqh$HRZ@zX`;V9${}r=w%v7ddcNA)@4x1i&_-
z3?cO&K@@+1=F_8~2wzr{`g15a=e&^9BW!?{-Pf#us-#+Ufmxzu!Iw>^NDy<9OxP
zWBgTv^`rXHU?(L&tum)5u@=~nmZ4Git*o26suU6aVqo*RbUdX7FhXth@M9c-c00Mb7V0-
zvYq!(M4WR~jrh_^CAL@$kfGZ2YD`)MV_oq+XW|dzz*tTR<2qP8bzjhS>jd(FNT~
zeKz)H8>mT7X@a1CJEwQ
zv2IP8_xtZ=y08S0pu(dD(HxO(CUJgvp}}k_7WfxlAkj!wQkjrYU?uyE<5M8;X_{1N
z{l_lrSP2vb$t^fGts&*oB;`LwlN)b|2
zm<_fMCgiI!wFzRc)hf737{vOzlq<{?Q@_LfYsFgm`vW3gC;Meh|qit^82
zxrwCe^f;qsNAsKDIDOy~GERUbdtODlpf=Z;S5c39K9^sLz7!8Fh|Mgf57G4u0exnj
znaM#RNa7!H1&2r-{D}Y3zn39t41l#Mwnh&|XAU+wwyRxmuzT-jzla5%@8tiz6&@KW
zhDL4n1{VsKWsE4%zy*;;Y?t>=eB=4ubi|(auAc3I^B-KxgkqG>5qEapnQO>NxUJ{_
z+Y0Hmo%5xq$?d)(qW{P*a;e^T(Jl~U7Xx;o3x%7yYius@L!BHZ5qBt*gQOI_-Bf_9
zht(I>ZxsF`p3$>QR7~=pFsRwg!N!^Lalin#WsG7qocM2-9#ED3GSxVtP^IiZH%u&2YXGitAmvxQI6(Tk!X|PEP0=
zC-=bnVcE_NbfB&WfFG@LYdanWc%}>}$}4kEZ@tFUo>wg3P94!}
z&7W=cSMKUm4OxWw5Xo}=l*V?VNXE3pE&4TbUHLw}K7I`N&1bL^Ta2KX=dj0?+dy|J
zfuRmr0#DLw&Tw(Xc7|8?SNZavcx^6M9Tc_y*b)&pr&X0{J{$B6UXmb+OG||inc=tq
z5~BdrbTeq1F&{ILu~CV+xoWI!tN)&C2}==k&J-jC$&YVIYrA2jD`CPWF?M5jbJk^d
zzy~42(pcjF=v{Q7=3C>`N0AQ$E|L1p%Y&Jb)Y!64+|K4i64X+_m~~QssbN!xevCY_
zHu>N#HMVJUv=MwzDeIm)obeUy05E=)-k8Q(5Kt*WJ-P$HzTW2r{Mi8{hKe%;*a9LS
zqW(kE`xh?2+yy(5uA433;Q-tWpaw;T<%RV~V-MhUmjd^QS|m8VvA38sV6cJ6=HOCb
z449ptO0vK`5rrms1ooYi7;v$RKlhB5_H#0xZp)S&hZK8^0iU282x_CSBLVCiG8iXyJy3a0&k=`J#D;h@K7IS(_6UiN|_fn|L4AqRW9jVB)
zV#)FP9%(=+NR<%;j7XItQ_zD_VKAJYi
z8Zx`CnMJEe_fDpAZ1@(kfEblExwb50;ZW_5c6?
literal 0
HcmV?d00001
diff --git a/StarCitizenBoxBrowserEx/manifest.json b/manifest.json
similarity index 69%
rename from StarCitizenBoxBrowserEx/manifest.json
rename to manifest.json
index 07140ee..2258ab5 100644
--- a/StarCitizenBoxBrowserEx/manifest.json
+++ b/manifest.json
@@ -1,39 +1,42 @@
{
+ "$schema": "https://json.schemastore.org/chrome-manifest.json",
"manifest_version": 3,
"name": "星际公民盒子浏览器拓展",
"version": "0.0.11",
"description": "为星际公民网站及工具站提供汉化",
"author": "xkeyC",
"icons": {
+ "16": "icon.png",
+ "48": "icon.png",
"192": "icon.png"
},
"host_permissions": [
"https://git.scbox.xkeyc.cn/*"
],
"permissions": [
- "storage"
+ "storage",
+ "contextMenus"
],
"action": {
"default_popup": "popup.html"
},
"background": {
- "service_worker": "background.js"
+ "chromium:service_worker": "background.ts",
+ "firefox:scripts": ["background.ts"]
},
"content_scripts": [
{
"matches": [
- "https://robertsspaceindustries.com/*",
- "https://*.robertsspaceindustries.com/*",
- "https://www.erkul.games/*",
- "https://uexcorp.space/*"
+ "*://*/*"
],
"exclude_matches": [
"https://robertsspaceindustries.com/spectrum/*"
],
"js": [
- "core.js",
+ "core.ts",
"thirdparty/timeago.full.min.js"
- ]
+ ],
+ "run_at": "document_end"
},
{
"matches": [
@@ -41,14 +44,15 @@
],
"js": [
"thirdparty/jquery.min.js"
- ]
+ ],
+ "run_at": "document_end"
},
{
"matches": [
"https://robertsspaceindustries.com/*"
],
"js": [
- "rsi_hangar_fix.js"
+ "rsi_hangar_fix.ts"
],
"run_at": "document_idle"
}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..c5ada99
--- /dev/null
+++ b/package.json
@@ -0,0 +1,33 @@
+{
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/StarCitizenToolBox/StarCitizenBoxBrowserEx"
+ },
+ "name": "star-citizen-box-browser-ex",
+ "description": "为星际公民网站及工具站提供汉化",
+ "version": "0.0.11",
+ "keywords": [
+ "extension",
+ "browser-extension",
+ "web-extension",
+ "template"
+ ],
+ "scripts": {
+ "dev": "extension dev --polyfill",
+ "dev:firefox": "extension dev --browser firefox",
+ "build": "extension build --polyfill",
+ "build:firefox": "extension build --browser firefox --polyfill"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "extension": "^2.0.0-rc.23",
+ "@types/node": "^22.10.5",
+ "typescript": "5.3.3"
+ },
+ "private": true,
+ "author": {
+ "name": "xkeyC"
+ },
+ "packageManager": "pnpm@9.11.0+sha512.0a203ffaed5a3f63242cd064c8fb5892366c103e328079318f78062f24ea8c9d50bc6a47aa3567cabefd824d170e78fa2745ed1f16b132e16436146b7688f19b"
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..aa17f3e
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,5310 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ devDependencies:
+ '@types/node':
+ specifier: ^22.10.5
+ version: 22.15.3
+ extension:
+ specifier: ^2.0.0-rc.23
+ version: 2.0.0-rc.23(@babel/core@7.27.1)(@prefresh/babel-plugin@0.5.1)(@types/express@4.17.21)(less@4.3.0)(svelte@5.28.2)(typescript@5.3.3)(webpack@5.99.7)
+ typescript:
+ specifier: 5.3.3
+ version: 5.3.3
+
+packages:
+
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@babel/code-frame@7.27.1':
+ resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.27.1':
+ resolution: {integrity: sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.27.1':
+ resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.27.1':
+ resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.27.1':
+ resolution: {integrity: sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.27.1':
+ resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.27.1':
+ resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.27.1':
+ resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.27.1':
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.27.1':
+ resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.27.1':
+ resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/template@7.27.1':
+ resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.27.1':
+ resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.27.1':
+ resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@colors/colors@1.6.0':
+ resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
+ engines: {node: '>=0.1.90'}
+
+ '@csstools/cascade-layer-name-parser@2.0.4':
+ resolution: {integrity: sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^3.0.4
+ '@csstools/css-tokenizer': ^3.0.3
+
+ '@csstools/color-helpers@5.0.2':
+ resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==}
+ engines: {node: '>=18'}
+
+ '@csstools/css-calc@2.1.3':
+ resolution: {integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^3.0.4
+ '@csstools/css-tokenizer': ^3.0.3
+
+ '@csstools/css-color-parser@3.0.9':
+ resolution: {integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^3.0.4
+ '@csstools/css-tokenizer': ^3.0.3
+
+ '@csstools/css-parser-algorithms@3.0.4':
+ resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-tokenizer': ^3.0.3
+
+ '@csstools/css-tokenizer@3.0.3':
+ resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==}
+ engines: {node: '>=18'}
+
+ '@csstools/media-query-list-parser@4.0.2':
+ resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^3.0.4
+ '@csstools/css-tokenizer': ^3.0.3
+
+ '@csstools/postcss-cascade-layers@5.0.1':
+ resolution: {integrity: sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-color-function@4.0.9':
+ resolution: {integrity: sha512-2UeQCGMO5+EeQsPQK2DqXp0dad+P6nIz6G2dI06APpBuYBKxZEq7CTH+UiztFQ8cB1f89dnO9+D/Kfr+JfI2hw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-color-mix-function@3.0.9':
+ resolution: {integrity: sha512-Enj7ZIIkLD7zkGCN31SZFx4H1gKiCs2Y4taBo/v/cqaHN7p1qGrf5UTMNSjQFZ7MgClGufHx4pddwFTGL+ipug==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-content-alt-text@2.0.5':
+ resolution: {integrity: sha512-9BOS535v6YmyOYk32jAHXeddRV+iyd4vRcbrEekpwxmueAXX5J8WgbceFnE4E4Pmw/ysnB9v+n/vSWoFmcLMcA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-exponential-functions@2.0.8':
+ resolution: {integrity: sha512-vHgDXtGIBPpFQnFNDftMQg4MOuXcWnK91L/7REjBNYzQ/p2Fa/6RcnehTqCRrNtQ46PNIolbRsiDdDuxiHolwQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-font-format-keywords@4.0.0':
+ resolution: {integrity: sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-gamut-mapping@2.0.9':
+ resolution: {integrity: sha512-quksIsFm3DGsf8Qbr9KiSGBF2w3RwxSfOfma5wbORDB1AFF15r4EVW7sUuWw3s5IAEGMqzel/dE2rQsI7Yb8mA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-gradients-interpolation-method@5.0.9':
+ resolution: {integrity: sha512-duqTeUHF4ambUybAmhX9KonkicLM/WNp2JjMUbegRD4O8A/tb6fdZ7jUNdp/UUiO1FIdDkMwmNw6856bT0XF8Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-hwb-function@4.0.9':
+ resolution: {integrity: sha512-sDpdPsoGAhYl/PMSYfu5Ez82wXb2bVkg1Cb8vsRLhpXhAk4OSlsJN+GodAql6tqc1B2G/WToxsFU6G74vkhPvA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-ic-unit@4.0.1':
+ resolution: {integrity: sha512-lECc38i1w3qU9nhrUhP6F8y4BfcQJkR1cb8N6tZNf2llM6zPkxnqt04jRCwsUgNcB3UGKDy+zLenhOYGHqCV+Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-initial@2.0.1':
+ resolution: {integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-is-pseudo-class@5.0.1':
+ resolution: {integrity: sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-light-dark-function@2.0.8':
+ resolution: {integrity: sha512-v8VU5WtrZIyEtk88WB4fkG22TGd8HyAfSFfZZQ1uNN0+arMJdZc++H3KYTfbYDpJRGy8GwADYH8ySXiILn+OyA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-logical-float-and-clear@3.0.0':
+ resolution: {integrity: sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-logical-overflow@2.0.0':
+ resolution: {integrity: sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-logical-overscroll-behavior@2.0.0':
+ resolution: {integrity: sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-logical-resize@3.0.0':
+ resolution: {integrity: sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-logical-viewport-units@3.0.3':
+ resolution: {integrity: sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-media-minmax@2.0.8':
+ resolution: {integrity: sha512-Skum5wIXw2+NyCQWUyfstN3c1mfSh39DRAo+Uh2zzXOglBG8xB9hnArhYFScuMZkzeM+THVa//mrByKAfumc7w==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4':
+ resolution: {integrity: sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-nested-calc@4.0.0':
+ resolution: {integrity: sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-normalize-display-values@4.0.0':
+ resolution: {integrity: sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-oklab-function@4.0.9':
+ resolution: {integrity: sha512-UHrnujimwtdDw8BYDcWJtBXuJ13uc/BjAddPdfMc/RsWxhg8gG8UbvTF0tnMtHrZ4i7lwy85fPEzK1AiykMyRA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-progressive-custom-properties@4.0.1':
+ resolution: {integrity: sha512-Ofz81HaY8mmbP8/Qr3PZlUzjsyV5WuxWmvtYn+jhYGvvjFazTmN9R2io5W5znY1tyk2CA9uM0IPWyY4ygDytCw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-random-function@2.0.0':
+ resolution: {integrity: sha512-MYZKxSr4AKfjECL8vg49BbfNNzK+t3p2OWX+Xf7rXgMaTP44oy/e8VGWu4MLnJ3NUd9tFVkisLO/sg+5wMTNsg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-relative-color-syntax@3.0.9':
+ resolution: {integrity: sha512-+AGOcLF5PmMnTRPnOdCvY7AwvD5veIOhTWbJV6vC3hB1tt0ii/k6QOwhWfsGGg1ZPQ0JY15u+wqLR4ZTtB0luA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-scope-pseudo-class@4.0.1':
+ resolution: {integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-sign-functions@1.1.3':
+ resolution: {integrity: sha512-4F4GRhj8xNkBtLZ+3ycIhReaDfKJByXI+cQGIps3AzCO8/CJOeoDPxpMnL5vqZrWKOceSATHEQJUO/Q/r2y7OQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-stepped-value-functions@4.0.8':
+ resolution: {integrity: sha512-6Y4yhL4fNhgzbZ/wUMQ4EjFUfoNNMpEXZnDw1JrlcEBHUT15gplchtFsZGk7FNi8PhLHJfCUwVKrEHzhfhKK+g==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-text-decoration-shorthand@4.0.2':
+ resolution: {integrity: sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-trigonometric-functions@4.0.8':
+ resolution: {integrity: sha512-YcDvYTRu7f78/91B6bX+mE1WoAO91Su7/8KSRpuWbIGUB8hmaNSRu9wziaWSLJ1lOB1aQe+bvo9BIaLKqPOo/g==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/postcss-unset-value@4.0.0':
+ resolution: {integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@csstools/selector-resolve-nested@3.0.0':
+ resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss-selector-parser: ^7.0.0
+
+ '@csstools/selector-specificity@5.0.0':
+ resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss-selector-parser: ^7.0.0
+
+ '@csstools/utilities@2.0.0':
+ resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ '@jridgewell/gen-mapping@0.3.8':
+ resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.6':
+ resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+ '@jsonjoy.com/base64@1.1.2':
+ resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ tslib: '2'
+
+ '@jsonjoy.com/json-pack@1.2.0':
+ resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ tslib: '2'
+
+ '@jsonjoy.com/util@1.5.0':
+ resolution: {integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ tslib: '2'
+
+ '@leichtgewicht/ip-codec@2.0.5':
+ resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==}
+
+ '@module-federation/error-codes@0.13.0':
+ resolution: {integrity: sha512-4soAMLr7qcVWuvCsyRmBbiBfuhxmnDeyl+qzjMx8VurQgL+XQDQJapM9RXngNGT4g8FoCq9o7rM5YWNgFFNUiw==}
+
+ '@module-federation/runtime-core@0.13.0':
+ resolution: {integrity: sha512-Oj/1p0mfxZ+8EbU7ND4gMvRmikFpIvPCbblOgat9N8ZIVAKYpTimCgMhzg4yRqAwzlGCVwnnW7XZ8UlA+Zqrvg==}
+
+ '@module-federation/runtime-tools@0.13.0':
+ resolution: {integrity: sha512-6ECWX18yGrQKcmkrQoNPd5VEpxZP1SMaB/Bp55xlpEhsrpn4zHnriQluxDw6xldjSOLl1qbokfxwCwjS2OaEbg==}
+
+ '@module-federation/runtime@0.13.0':
+ resolution: {integrity: sha512-Ne/3AEVWz6LL6G/i41O5MC6YYlg0SatNNqG/0XbuMAfyGM+llRmB6VKt0o2+JR4isxWuPNp97TbUkkfORit6Eg==}
+
+ '@module-federation/sdk@0.13.0':
+ resolution: {integrity: sha512-JdMZaPD+EQvMJYS+/8/8QjaAHQ3qljogvioXBsAuedcStu/msn5e1Fswc0G34kXY9ixs2hUPZU2cAllfSKWIBQ==}
+
+ '@module-federation/webpack-bundler-runtime@0.13.0':
+ resolution: {integrity: sha512-ycgAsFeCTo+3GR8JxkhCyg2UZm6Au98ISdLTdVXYphO4UDcO/KjqyJen1LXEslkpCEohDj68Prei2fUHRruK6g==}
+
+ '@prefresh/babel-plugin@0.5.1':
+ resolution: {integrity: sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==}
+
+ '@prefresh/core@1.5.3':
+ resolution: {integrity: sha512-nDzxj0tA1/M6APNAWqaxkZ+3sTdPHESa+gol4+Bw7rMc2btWdkLoNH7j9rGhUb8SThC0Vz0VoXtq+U+9azGLHg==}
+ peerDependencies:
+ preact: ^10.0.0
+
+ '@prefresh/utils@1.2.0':
+ resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==}
+
+ '@prefresh/webpack@4.0.2':
+ resolution: {integrity: sha512-mHVIYtXj3FfdX2V2NyMLnrtIJ3IZ/bwWQycTZpdRyUY6kYbPwFLTO8XbABDKUGwecXNj5jHFJJK+knwIjN2+ug==}
+ peerDependencies:
+ '@prefresh/babel-plugin': ^0.5.0
+ preact: ^10.4.0
+ webpack: ^4.0.0 || ^5.0.0
+
+ '@rspack/binding-darwin-arm64@1.3.8':
+ resolution: {integrity: sha512-FlfWZzwCxDfLwyiqGaCSINHt2Er1Wno9xZrf2QM7Ss00HyocPo4BUYGYBEi4dai/fPFoeYKeEAdsNdrVmFH4+g==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rspack/binding-darwin-x64@1.3.8':
+ resolution: {integrity: sha512-IGXDKHDHiL7WxE/OZMaeIuHzqOzDam3k8WrseHAdl5upKvCp/snwwGdulB/rqGxwkQIXIsv105vIFbGOAe2g0A==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rspack/binding-linux-arm64-gnu@1.3.8':
+ resolution: {integrity: sha512-PU9fv8knPvbxQb8NrDmTrLVpy8QY0vuhzk69/ZuLRW89c0P14HovYeHV+38cQHho4++avUQgVp6vnJI9vSQjtg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rspack/binding-linux-arm64-musl@1.3.8':
+ resolution: {integrity: sha512-UMZBuTw5iXeA6gmtZYQvAb7g56odfoIkU6YvfqV67AMU0EY2y52sc7ABFloDzURJ1xd2om01Nlru8y48S2lMPw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rspack/binding-linux-x64-gnu@1.3.8':
+ resolution: {integrity: sha512-48hfwVsD2/Caa0HgZiqE1T20H89cnomcaP92++x8t4IQ2uKA9xCeBW87RD/AaKXcb78aM987ctE+asKjN8OVjw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rspack/binding-linux-x64-musl@1.3.8':
+ resolution: {integrity: sha512-Jx+JlVnLzzVL/62NbEFaVcM2HU4QtNEF+wzo+yODNprx78ZLe3PJT/LdtwLMvE77K2PlGn5CZcmBay6Xwkd/2A==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rspack/binding-win32-arm64-msvc@1.3.8':
+ resolution: {integrity: sha512-84tifCsYhir/p5GH0knBOXtLpfRzIFDxF4nF4bHsuwaA1uqwyk0WlWGt4ZwRUtyzh0TN4cJdnqJl/f5209BdLw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rspack/binding-win32-ia32-msvc@1.3.8':
+ resolution: {integrity: sha512-Grrcfr95gRhJ7FbKtIxfhNAzSM+hvtD2jAMs9fmw/UrgiNsXeaWwJaYgImqHGirKIx8iygZ0t1q7ePIVM+SKMg==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rspack/binding-win32-x64-msvc@1.3.8':
+ resolution: {integrity: sha512-wW+Ig3kVqcRcY+3mxZnruN4AdeJYjbEBd2zvheEAOvx/DC+xEQ6czvDXbZEZQQ9rU/znhuKl0Z+898q8l3LwzA==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rspack/binding@1.3.8':
+ resolution: {integrity: sha512-0oGrPgnwDsrDN7Swk7OZGvee8y/AdvDXF3f1QewkueJ5uyDaGszDxipEpf644HWIcj11fgNJQEphGEhaAVjofw==}
+
+ '@rspack/core@1.3.8':
+ resolution: {integrity: sha512-1zefymDypUROYzGGNa553JR1Ah8En25npwSRIZCuZvfjo6nME6XvjkMxQwhjzMStoqRmFD9+nKUHSiN5jVWWyw==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ '@swc/helpers': '>=0.5.1'
+ peerDependenciesMeta:
+ '@swc/helpers':
+ optional: true
+
+ '@rspack/dev-server@1.1.1':
+ resolution: {integrity: sha512-9r7vOml2SrFA8cvbcJdSan9wHEo1TPXezF22+s5jvdyAAywg8w7HqDol6TPVv64NUonP1DOdyLxZ+6UW6WZiwg==}
+ engines: {node: '>= 18.12.0'}
+ peerDependencies:
+ '@rspack/core': '*'
+
+ '@rspack/lite-tapable@1.0.1':
+ resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==}
+ engines: {node: '>=16.0.0'}
+
+ '@rspack/plugin-preact-refresh@1.1.2':
+ resolution: {integrity: sha512-smTjBS8d0ItLiCt96VvlEHvtYt5rEc5vvB1SxUiv4CdUusb90GXe9+nXyr7EMO+wU3A+kocrGLGnRKLHsgGHUg==}
+ peerDependencies:
+ '@prefresh/core': ^1.5.0
+ '@prefresh/utils': ^1.2.0
+
+ '@rspack/plugin-react-refresh@1.4.1':
+ resolution: {integrity: sha512-bRALP4qEauvrB7RcMQ95rUHu1dw19V6c6uYukUTpA2OZDyMHTQ9cpEe28kaDwH/xsAuDNuYqnUZOW3NdLO/q3A==}
+ peerDependencies:
+ react-refresh: '>=0.10.0 <1.0.0'
+ webpack-hot-middleware: 2.x
+ peerDependenciesMeta:
+ webpack-hot-middleware:
+ optional: true
+
+ '@sveltejs/acorn-typescript@1.0.5':
+ resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==}
+ peerDependencies:
+ acorn: ^8.9.0
+
+ '@swc/helpers@0.5.17':
+ resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
+
+ '@types/body-parser@1.19.5':
+ resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
+
+ '@types/bonjour@3.5.13':
+ resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==}
+
+ '@types/chrome@0.0.287':
+ resolution: {integrity: sha512-wWhBNPNXZHwycHKNYnexUcpSbrihVZu++0rdp6GEk5ZgAglenLx+RwdEouh6FrHS0XQiOxSd62yaujM1OoQlZQ==}
+
+ '@types/connect-history-api-fallback@1.5.4':
+ resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==}
+
+ '@types/connect@3.4.38':
+ resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+
+ '@types/eslint-scope@3.7.7':
+ resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
+
+ '@types/eslint@9.6.1':
+ resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
+
+ '@types/estree@1.0.7':
+ resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
+
+ '@types/express-serve-static-core@4.19.6':
+ resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==}
+
+ '@types/express-serve-static-core@5.0.6':
+ resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==}
+
+ '@types/express@4.17.21':
+ resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
+
+ '@types/filesystem@0.0.36':
+ resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==}
+
+ '@types/filewriter@0.0.33':
+ resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==}
+
+ '@types/firefox-webext-browser@120.0.4':
+ resolution: {integrity: sha512-lBrpf08xhiZBigrtdQfUaqX1UauwZ+skbFiL8u2Tdra/rklkKadYmIzTwkNZSWtuZ7OKpFqbE2HHfDoFqvZf6w==}
+
+ '@types/har-format@1.2.16':
+ resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==}
+
+ '@types/http-errors@2.0.4':
+ resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
+
+ '@types/http-proxy@1.17.16':
+ resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/mime@1.3.5':
+ resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
+
+ '@types/node-forge@1.3.11':
+ resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
+
+ '@types/node@22.15.3':
+ resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==}
+
+ '@types/qs@6.9.18':
+ resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}
+
+ '@types/range-parser@1.2.7':
+ resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
+
+ '@types/react-dom@19.1.3':
+ resolution: {integrity: sha512-rJXC08OG0h3W6wDMFxQrZF00Kq6qQvw0djHRdzl3U5DnIERz0MRce3WVc7IS6JYBwtaP/DwYtRRjVlvivNveKg==}
+ peerDependencies:
+ '@types/react': ^19.0.0
+
+ '@types/react@19.1.2':
+ resolution: {integrity: sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==}
+
+ '@types/retry@0.12.2':
+ resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==}
+
+ '@types/send@0.17.4':
+ resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
+
+ '@types/serve-index@1.9.4':
+ resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==}
+
+ '@types/serve-static@1.15.7':
+ resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
+
+ '@types/sockjs@0.3.36':
+ resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==}
+
+ '@types/ws@8.18.1':
+ resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
+
+ '@vue/compiler-core@3.5.13':
+ resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
+
+ '@vue/compiler-dom@3.5.13':
+ resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
+
+ '@vue/compiler-sfc@3.5.13':
+ resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
+
+ '@vue/compiler-ssr@3.5.13':
+ resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
+
+ '@vue/shared@3.5.13':
+ resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
+
+ '@webassemblyjs/ast@1.14.1':
+ resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
+
+ '@webassemblyjs/floating-point-hex-parser@1.13.2':
+ resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==}
+
+ '@webassemblyjs/helper-api-error@1.13.2':
+ resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==}
+
+ '@webassemblyjs/helper-buffer@1.14.1':
+ resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==}
+
+ '@webassemblyjs/helper-numbers@1.13.2':
+ resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==}
+
+ '@webassemblyjs/helper-wasm-bytecode@1.13.2':
+ resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==}
+
+ '@webassemblyjs/helper-wasm-section@1.14.1':
+ resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==}
+
+ '@webassemblyjs/ieee754@1.13.2':
+ resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==}
+
+ '@webassemblyjs/leb128@1.13.2':
+ resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==}
+
+ '@webassemblyjs/utf8@1.13.2':
+ resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==}
+
+ '@webassemblyjs/wasm-edit@1.14.1':
+ resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==}
+
+ '@webassemblyjs/wasm-gen@1.14.1':
+ resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==}
+
+ '@webassemblyjs/wasm-opt@1.14.1':
+ resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==}
+
+ '@webassemblyjs/wasm-parser@1.14.1':
+ resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==}
+
+ '@webassemblyjs/wast-printer@1.14.1':
+ resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
+
+ '@xtuc/ieee754@1.2.0':
+ resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
+
+ '@xtuc/long@4.2.2':
+ resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
+
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
+ acorn@8.14.1:
+ resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ adm-zip@0.5.16:
+ resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==}
+ engines: {node: '>=12.0'}
+
+ ajv-formats@2.1.1:
+ resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv-keywords@5.1.0:
+ resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
+ peerDependencies:
+ ajv: ^8.8.2
+
+ ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
+ ansi-html-community@0.0.8:
+ resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
+ engines: {'0': node >= 0.8.0}
+ hasBin: true
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ aria-query@5.3.2:
+ resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
+ engines: {node: '>= 0.4'}
+
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ autoprefixer@10.4.21:
+ resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ axios@1.9.0:
+ resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==}
+
+ axobject-query@4.1.0:
+ resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
+ engines: {node: '>= 0.4'}
+
+ babel-loader@9.2.1:
+ resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==}
+ engines: {node: '>= 14.15.0'}
+ peerDependencies:
+ '@babel/core': ^7.12.0
+ webpack: '>=5'
+
+ batch@0.6.1:
+ resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
+
+ big.js@5.2.2:
+ resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ body-parser@1.20.3:
+ resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ bonjour-service@1.3.0:
+ resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.24.5:
+ resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ bundle-name@4.1.0:
+ resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
+ engines: {node: '>=18'}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ caniuse-lite@1.0.30001716:
+ resolution: {integrity: sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==}
+
+ case-sensitive-paths-webpack-plugin@2.4.0:
+ resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
+ engines: {node: '>=4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ chokidar@4.0.3:
+ resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+ engines: {node: '>= 14.16.0'}
+
+ chrome-location@1.2.1:
+ resolution: {integrity: sha512-NPuxEKQ43JlEPjHsgU6HWk4ViLCWf4mlo3dz5s5syPSsq2AaekXnK6qTRwMmXhpTYXAVi4g5ncVnAbD9naz5fw==}
+ hasBin: true
+
+ chrome-trace-event@1.0.4:
+ resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
+ engines: {node: '>=6.0'}
+
+ clone-deep@4.0.1:
+ resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
+ engines: {node: '>=6'}
+
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ colorette@2.0.20:
+ resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ commander@12.1.0:
+ resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
+ engines: {node: '>=18'}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ commander@2.9.0:
+ resolution: {integrity: sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==}
+ engines: {node: '>= 0.6.x'}
+
+ common-path-prefix@3.0.0:
+ resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
+
+ compressible@2.0.18:
+ resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
+ engines: {node: '>= 0.6'}
+
+ compression@1.8.0:
+ resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==}
+ engines: {node: '>= 0.8.0'}
+
+ concat-stream@1.6.2:
+ resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
+ engines: {'0': node >= 0.8}
+
+ connect-history-api-fallback@2.0.0:
+ resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==}
+ engines: {node: '>=0.8'}
+
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-security-policy-parser@0.6.0:
+ resolution: {integrity: sha512-wejtC/p+HLNQ7uaWgg1o3CKHhE8QXC9fJ2GCY0X82L5HUNtZSq1dmUvNSHHEb6R7LS02fpmRBq/vP8i4/+9KCg==}
+ engines: {node: '>=18.0.0'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cookie-signature@1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+
+ cookie@0.7.1:
+ resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
+ engines: {node: '>= 0.6'}
+
+ copy-anything@2.0.6:
+ resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ cosmiconfig@9.0.0:
+ resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ typescript: '>=4.9.5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ css-blank-pseudo@7.0.1:
+ resolution: {integrity: sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ css-has-pseudo@7.0.2:
+ resolution: {integrity: sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ css-prefers-color-scheme@10.0.0:
+ resolution: {integrity: sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ cssdb@8.2.5:
+ resolution: {integrity: sha512-leAt8/hdTCtzql9ZZi86uYAmCLzVKpJMMdjbvOGVnXFXz/BWFpBmM1MHEHU/RqtPyRYmabVmEW1DtX3YGLuuLA==}
+
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ csv-loader@3.0.5:
+ resolution: {integrity: sha512-vO01k3mtxlSeipH4bvLgzM3yuhlF3efNBnx3xXpvyG/yZT4cyNgk3jh3cuoilKPHpGC5uvGCvq4pYxoafa5jsQ==}
+
+ de-indent@1.0.2:
+ resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
+
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.4.0:
+ resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ deep-extend@0.6.0:
+ resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
+ engines: {node: '>=4.0.0'}
+
+ default-browser-id@5.0.0:
+ resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==}
+ engines: {node: '>=18'}
+
+ default-browser@5.2.1:
+ resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
+ engines: {node: '>=18'}
+
+ define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ depd@1.1.2:
+ resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
+ engines: {node: '>= 0.6'}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ detect-node@2.1.0:
+ resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
+
+ dns-packet@5.6.1:
+ resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
+ engines: {node: '>=6'}
+
+ dotenv-defaults@2.0.2:
+ resolution: {integrity: sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==}
+
+ dotenv-webpack@8.1.0:
+ resolution: {integrity: sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ webpack: ^4 || ^5
+
+ dotenv@16.5.0:
+ resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==}
+ engines: {node: '>=12'}
+
+ dotenv@8.6.0:
+ resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
+ engines: {node: '>=10'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ edge-location@1.0.0:
+ resolution: {integrity: sha512-0GpxuTszfSbJl9Lf6PYvtisoCgX8MOIw/ylj/mfs/K4YmWG2OQns4CJzcjVKw9b9+mmvZe8h1M3pgdkiDTC23Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ electron-to-chromium@1.5.149:
+ resolution: {integrity: sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==}
+
+ emojis-list@3.0.0:
+ resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
+ engines: {node: '>= 4'}
+
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ enhanced-resolve@5.18.1:
+ resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
+ engines: {node: '>=10.13.0'}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ entities@6.0.0:
+ resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==}
+ engines: {node: '>=0.12'}
+
+ env-paths@2.2.1:
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
+
+ errno@0.1.8:
+ resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
+ hasBin: true
+
+ error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+
+ error-stack-parser@2.1.4:
+ resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@1.7.0:
+ resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+
+ esm-env@1.2.2:
+ resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
+
+ esrap@1.4.6:
+ resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ eventemitter3@4.0.7:
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ express@4.21.2:
+ resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
+ engines: {node: '>= 0.10.0'}
+
+ extension-create@2.0.1:
+ resolution: {integrity: sha512-XA0/0NsVkK4ZB9u9JQ2igyAADwph0WVBzhhXvoG9170doAd4IYG4lKfhlb2m8B726hHtwgND1DOcQMKZW4GtUg==}
+ engines: {node: '>=18'}
+
+ extension-develop@2.0.0-rc.23:
+ resolution: {integrity: sha512-lEFDuqZkMOFdBs32OzNMQmbv4sakNagi0Ddxs1Q6XM3dc6KnZylnGzhMZpAnW78oPkBqjOnX8B1twHJkAq8PJg==}
+ engines: {node: '>=18'}
+
+ extension@2.0.0-rc.23:
+ resolution: {integrity: sha512-Iwxcx99xwSBKAOId2JtXEfu6CNhgx6ftZWE2S75hFZrA+X7bAX6Vgq0uH6X+MiQX2dfk1K9ppznl6Rh7eSgQlw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-uri@3.0.6:
+ resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
+
+ faye-websocket@0.11.4:
+ resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==}
+ engines: {node: '>=0.8.0'}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ finalhandler@1.3.1:
+ resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
+ engines: {node: '>= 0.8'}
+
+ find-cache-dir@4.0.0:
+ resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==}
+ engines: {node: '>=14.16'}
+
+ find-up@6.3.0:
+ resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ firefox-profile@4.7.0:
+ resolution: {integrity: sha512-aGApEu5bfCNbA4PGUZiRJAIU6jKmghV2UVdklXAofnNtiDjqYw0czLS46W7IfFqVKgKhFB8Ao2YoNGHY4BoIMQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ flat@5.0.2:
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
+ hasBin: true
+
+ follow-redirects@1.15.9:
+ resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ form-data@4.0.2:
+ resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
+ engines: {node: '>= 6'}
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fs-extra@11.3.0:
+ resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==}
+ engines: {node: '>=14.14'}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ fx-runner@1.4.0:
+ resolution: {integrity: sha512-rci1g6U0rdTg6bAaBboP7XdRu01dzTAaKXxFf+PUqGuCv6Xu7o8NZdY1D5MvKGIjb6EdS1g3VlXOgksir1uGkg==}
+ hasBin: true
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ globalyzer@0.1.0:
+ resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
+
+ globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+
+ go-git-it@2.0.4:
+ resolution: {integrity: sha512-i9h+VZO8bXnX+Io5Z0L8QRivb3nb1iTzV1/0DLFuouvOh9e2YMKQC/lizI6cvuKoSjTel41eHiRCyVwxZFmEEw==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ graceful-readlink@1.0.1:
+ resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==}
+
+ handle-thing@2.0.1:
+ resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hash-sum@1.0.2:
+ resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==}
+
+ hash-sum@2.0.0:
+ resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ hpack.js@2.1.6:
+ resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==}
+
+ html-entities@2.6.0:
+ resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==}
+
+ http-deceiver@1.2.7:
+ resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==}
+
+ http-errors@1.6.3:
+ resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==}
+ engines: {node: '>= 0.6'}
+
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
+ http-parser-js@0.5.10:
+ resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==}
+
+ http-proxy-middleware@2.0.9:
+ resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ '@types/express': ^4.17.13
+ peerDependenciesMeta:
+ '@types/express':
+ optional: true
+
+ http-proxy@1.18.1:
+ resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
+ engines: {node: '>=8.0.0'}
+
+ hyperdyperid@1.2.0:
+ resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==}
+ engines: {node: '>=10.18'}
+
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ ignore@6.0.2:
+ resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==}
+ engines: {node: '>= 4'}
+
+ image-size@0.5.5:
+ resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
+ import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+
+ inherits@2.0.3:
+ resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
+ ini@4.1.3:
+ resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ ipaddr.js@2.2.0:
+ resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
+ engines: {node: '>= 10'}
+
+ is-absolute@0.1.7:
+ resolution: {integrity: sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==}
+ engines: {node: '>=0.10.0'}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
+ is-network-error@1.1.0:
+ resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==}
+ engines: {node: '>=16'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-plain-obj@3.0.0:
+ resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==}
+ engines: {node: '>=10'}
+
+ is-plain-object@2.0.4:
+ resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+ engines: {node: '>=0.10.0'}
+
+ is-reference@3.0.3:
+ resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
+
+ is-relative@0.1.3:
+ resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==}
+ engines: {node: '>=0.10.0'}
+
+ is-what@3.14.1:
+ resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
+
+ is-wsl@3.1.0:
+ resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
+ engines: {node: '>=16'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isexe@1.1.2:
+ resolution: {integrity: sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ isexe@3.1.1:
+ resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==}
+ engines: {node: '>=16'}
+
+ isobject@3.0.1:
+ resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+ engines: {node: '>=0.10.0'}
+
+ jest-worker@27.5.1:
+ resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
+ engines: {node: '>= 10.13.0'}
+
+ jiti@1.21.7:
+ resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+
+ kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+
+ launch-editor@2.10.0:
+ resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==}
+
+ less-loader@12.3.0:
+ resolution: {integrity: sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==}
+ engines: {node: '>= 18.12.0'}
+ peerDependencies:
+ '@rspack/core': 0.x || 1.x
+ less: ^3.5.0 || ^4.0.0
+ webpack: ^5.0.0
+ peerDependenciesMeta:
+ '@rspack/core':
+ optional: true
+ webpack:
+ optional: true
+
+ less@4.3.0:
+ resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ loader-runner@4.3.0:
+ resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
+ engines: {node: '>=6.11.5'}
+
+ loader-utils@1.4.2:
+ resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==}
+ engines: {node: '>=4.0.0'}
+
+ loader-utils@2.0.4:
+ resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
+ engines: {node: '>=8.9.0'}
+
+ loader-utils@3.3.1:
+ resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
+ engines: {node: '>= 12.13.0'}
+
+ locate-character@3.0.0:
+ resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+
+ locate-path@7.2.0:
+ resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ magic-string@0.30.17:
+ resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+
+ make-dir@2.1.0:
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ memfs@4.17.1:
+ resolution: {integrity: sha512-thuTRd7F4m4dReCIy7vv4eNYnU6XI/tHMLSMMHLiortw/Y0QxqKtinG523U2aerzwYWGi606oBP4oMPy4+edag==}
+ engines: {node: '>= 4.0.0'}
+
+ merge-descriptors@1.0.3:
+ resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ minimalistic-assert@1.0.1:
+ resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ multicast-dns@7.2.5:
+ resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==}
+ hasBin: true
+
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ needle@3.3.1:
+ resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
+ engines: {node: '>= 4.4.x'}
+ hasBin: true
+
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ negotiator@0.6.4:
+ resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
+ engines: {node: '>= 0.6'}
+
+ neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+
+ node-forge@1.3.1:
+ resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
+ engines: {node: '>= 6.13.0'}
+
+ node-releases@2.0.19:
+ resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
+ obuf@1.1.2:
+ resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ on-headers@1.0.2:
+ resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
+ engines: {node: '>= 0.8'}
+
+ open@10.1.2:
+ resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==}
+ engines: {node: '>=18'}
+
+ os-shim@0.1.3:
+ resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==}
+ engines: {node: '>= 0.4.0'}
+
+ p-limit@4.0.0:
+ resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-locate@6.0.0:
+ resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-retry@6.2.1:
+ resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==}
+ engines: {node: '>=16.17'}
+
+ package-manager-detector@0.2.11:
+ resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==}
+
+ papaparse@5.5.2:
+ resolution: {integrity: sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA==}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+
+ parse-node-version@1.0.1:
+ resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
+ engines: {node: '>= 0.10'}
+
+ parse5-utils@2.0.0:
+ resolution: {integrity: sha512-FkmkatHahuLI+q1unkoCSRj89E6TqSJWNZfUGQ1mKKS2xtVeYZKdWPJhw3dWQPANdNyX+7fIoCT/qthCFeHzOQ==}
+
+ parse5@2.2.3:
+ resolution: {integrity: sha512-yJQdbcT+hCt6HD+BuuUvjHUdNwerQIKSJSm7tXjtp6oIH5Mxbzlt/VIIeWxblsgcDt1+E7kxPeilD5McWswStA==}
+
+ parse5@7.3.0:
+ resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ path-exists@5.0.0:
+ resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-to-regexp@0.1.12:
+ resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ pify@4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+
+ pkg-dir@7.0.0:
+ resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==}
+ engines: {node: '>=14.16'}
+
+ postcss-attribute-case-insensitive@7.0.1:
+ resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-clamp@4.1.0:
+ resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==}
+ engines: {node: '>=7.6.0'}
+ peerDependencies:
+ postcss: ^8.4.6
+
+ postcss-color-functional-notation@7.0.9:
+ resolution: {integrity: sha512-WScwD3pSsIz+QP97sPkGCeJm7xUH0J18k6zV5o8O2a4cQJyv15vLUx/WFQajuJVgZhmJL5awDu8zHnqzAzm4lw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-color-hex-alpha@10.0.0:
+ resolution: {integrity: sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-color-rebeccapurple@10.0.0:
+ resolution: {integrity: sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-custom-media@11.0.5:
+ resolution: {integrity: sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-custom-properties@14.0.4:
+ resolution: {integrity: sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-custom-selectors@8.0.4:
+ resolution: {integrity: sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-dir-pseudo-class@9.0.1:
+ resolution: {integrity: sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-double-position-gradients@6.0.1:
+ resolution: {integrity: sha512-ZitCwmvOR4JzXmKw6sZblTgwV1dcfLvClcyjADuqZ5hU0Uk4SVNpvSN9w8NcJ7XuxhRYxVA8m8AB3gy+HNBQOA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-focus-visible@10.0.1:
+ resolution: {integrity: sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-focus-within@9.0.1:
+ resolution: {integrity: sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-font-variant@5.0.0:
+ resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-gap-properties@6.0.0:
+ resolution: {integrity: sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-image-set-function@7.0.0:
+ resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-lab-function@7.0.9:
+ resolution: {integrity: sha512-IGbsIXbqMDusymJAKYX+f9oakPo89wL9Pzd/qRBQOVf3EIQWT9hgvqC4Me6Dkzxp3KPuIBf6LPkjrLHe/6ZMIQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-loader@8.1.1:
+ resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==}
+ engines: {node: '>= 18.12.0'}
+ peerDependencies:
+ '@rspack/core': 0.x || 1.x
+ postcss: ^7.0.0 || ^8.0.1
+ webpack: ^5.0.0
+ peerDependenciesMeta:
+ '@rspack/core':
+ optional: true
+ webpack:
+ optional: true
+
+ postcss-logical@8.1.0:
+ resolution: {integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-nesting@13.0.1:
+ resolution: {integrity: sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-opacity-percentage@3.0.0:
+ resolution: {integrity: sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-overflow-shorthand@6.0.0:
+ resolution: {integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-page-break@3.0.4:
+ resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==}
+ peerDependencies:
+ postcss: ^8
+
+ postcss-place@10.0.0:
+ resolution: {integrity: sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-preset-env@10.1.6:
+ resolution: {integrity: sha512-1jRD7vttKLJ7o0mcmmYWKRLm7W14rI8K1I7Y41OeXUPEVc/CAzfTssNUeJ0zKbR+zMk4boqct/gwS/poIFF5Lg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-pseudo-class-any-link@10.0.1:
+ resolution: {integrity: sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-replace-overflow-wrap@4.0.0:
+ resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==}
+ peerDependencies:
+ postcss: ^8.0.3
+
+ postcss-selector-not@8.0.1:
+ resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4
+
+ postcss-selector-parser@7.1.0:
+ resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==}
+ engines: {node: '>=4'}
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.5.3:
+ resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ preact@10.26.5:
+ resolution: {integrity: sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ progress@2.0.3:
+ resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
+ engines: {node: '>=0.4.0'}
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
+ proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+
+ prr@1.0.1:
+ resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
+
+ qs@6.13.0:
+ resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
+ engines: {node: '>=0.6'}
+
+ quansync@0.2.10:
+ resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
+
+ randombytes@2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.2:
+ resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
+ engines: {node: '>= 0.8'}
+
+ rc@1.2.8:
+ resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
+ hasBin: true
+
+ react-refresh@0.14.2:
+ resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
+ engines: {node: '>=0.10.0'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ readdirp@4.1.2:
+ resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+ engines: {node: '>= 14.18.0'}
+
+ registry-auth-token@3.3.2:
+ resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==}
+
+ registry-url@3.1.0:
+ resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==}
+ engines: {node: '>=0.10.0'}
+
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ retry@0.13.1:
+ resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
+ engines: {node: '>= 4'}
+
+ run-applescript@7.0.0:
+ resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
+ engines: {node: '>=18'}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ sass-loader@16.0.5:
+ resolution: {integrity: sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==}
+ engines: {node: '>= 18.12.0'}
+ peerDependencies:
+ '@rspack/core': 0.x || 1.x
+ node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
+ sass: ^1.3.0
+ sass-embedded: '*'
+ webpack: ^5.0.0
+ peerDependenciesMeta:
+ '@rspack/core':
+ optional: true
+ node-sass:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ webpack:
+ optional: true
+
+ sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
+
+ schema-utils@4.3.2:
+ resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==}
+ engines: {node: '>= 10.13.0'}
+
+ select-hose@2.0.0:
+ resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==}
+
+ selfsigned@2.4.1:
+ resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==}
+ engines: {node: '>=10'}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.7.1:
+ resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@0.19.0:
+ resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
+ engines: {node: '>= 0.8.0'}
+
+ serialize-javascript@6.0.2:
+ resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
+
+ serve-index@1.9.1:
+ resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==}
+ engines: {node: '>= 0.8.0'}
+
+ serve-static@1.16.2:
+ resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
+ engines: {node: '>= 0.8.0'}
+
+ setprototypeof@1.1.0:
+ resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ shallow-clone@3.0.1:
+ resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
+ engines: {node: '>=8'}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shell-quote@1.7.3:
+ resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==}
+
+ shell-quote@1.8.2:
+ resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
+ slugify@1.6.6:
+ resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==}
+ engines: {node: '>=8.0.0'}
+
+ sockjs@0.3.24:
+ resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ spawn-sync@1.0.15:
+ resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==}
+
+ spdy-transport@3.0.0:
+ resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
+
+ spdy@4.0.2:
+ resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
+ engines: {node: '>=6.0.0'}
+
+ stackframe@1.3.4:
+ resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
+
+ statuses@1.5.0:
+ resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
+ engines: {node: '>= 0.6'}
+
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ strip-json-comments@2.0.1:
+ resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+ engines: {node: '>=0.10.0'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ svelte-dev-helper@1.1.9:
+ resolution: {integrity: sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==}
+
+ svelte-hmr@0.14.12:
+ resolution: {integrity: sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==}
+ engines: {node: ^12.20 || ^14.13.1 || >= 16}
+ peerDependencies:
+ svelte: '>=3.19.0'
+
+ svelte-loader@3.2.4:
+ resolution: {integrity: sha512-e0HdDnkYH/MDx4/IfTSka5AOFg9yYJcPuoZJB5x0l60fkHjVjNvrrxr+rJegDG9J7ZymmdHt00/hdLw+QF299w==}
+ peerDependencies:
+ svelte: ^3.0.0 || ^4.0.0-next.0 || ^5.0.0-next.1
+
+ svelte-preprocess@6.0.3:
+ resolution: {integrity: sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==}
+ engines: {node: '>= 18.0.0'}
+ peerDependencies:
+ '@babel/core': ^7.10.2
+ coffeescript: ^2.5.1
+ less: ^3.11.3 || ^4.0.0
+ postcss: ^7 || ^8
+ postcss-load-config: '>=3'
+ pug: ^3.0.0
+ sass: ^1.26.8
+ stylus: '>=0.55'
+ sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0
+ svelte: ^4.0.0 || ^5.0.0-next.100 || ^5.0.0
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ coffeescript:
+ optional: true
+ less:
+ optional: true
+ postcss:
+ optional: true
+ postcss-load-config:
+ optional: true
+ pug:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ typescript:
+ optional: true
+
+ svelte@5.28.2:
+ resolution: {integrity: sha512-FbWBxgWOpQfhKvoGJv/TFwzqb4EhJbwCD17dB0tEpQiw1XyUEKZJtgm4nA4xq3LLsMo7hu5UY/BOFmroAxKTMg==}
+ engines: {node: '>=18'}
+
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
+ terser-webpack-plugin@5.3.14:
+ resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ '@swc/core': '*'
+ esbuild: '*'
+ uglify-js: '*'
+ webpack: ^5.1.0
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ esbuild:
+ optional: true
+ uglify-js:
+ optional: true
+
+ terser@5.39.0:
+ resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ thingies@1.21.0:
+ resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==}
+ engines: {node: '>=10.18'}
+ peerDependencies:
+ tslib: ^2
+
+ thunky@1.1.0:
+ resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==}
+
+ tiny-glob@0.2.9:
+ resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ tree-dump@1.0.2:
+ resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ tslib: '2'
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
+ typedarray@0.0.6:
+ resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
+
+ typescript@5.3.3:
+ resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ update-browserslist-db@1.1.3:
+ resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ update-check@1.5.4:
+ resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==}
+
+ userhome@1.0.1:
+ resolution: {integrity: sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA==}
+ engines: {node: '>= 0.8.0'}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ vue-loader@17.4.2:
+ resolution: {integrity: sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==}
+ peerDependencies:
+ '@vue/compiler-sfc': '*'
+ vue: '*'
+ webpack: ^4.1.0 || ^5.0.0-0
+ peerDependenciesMeta:
+ '@vue/compiler-sfc':
+ optional: true
+ vue:
+ optional: true
+
+ vue-style-loader@4.1.3:
+ resolution: {integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==}
+
+ vue-template-compiler@2.7.16:
+ resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==}
+
+ watchpack@2.4.2:
+ resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==}
+ engines: {node: '>=10.13.0'}
+
+ wbuf@1.7.3:
+ resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==}
+
+ webextension-polyfill@0.12.0:
+ resolution: {integrity: sha512-97TBmpoWJEE+3nFBQ4VocyCdLKfw54rFaJ6EVQYLBCXqCIpLSZkwGgASpv4oPt9gdKCJ80RJlcmNzNn008Ag6Q==}
+
+ webpack-dev-middleware@7.4.2:
+ resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==}
+ engines: {node: '>= 18.12.0'}
+ peerDependencies:
+ webpack: ^5.0.0
+ peerDependenciesMeta:
+ webpack:
+ optional: true
+
+ webpack-dev-server@5.2.0:
+ resolution: {integrity: sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==}
+ engines: {node: '>= 18.12.0'}
+ hasBin: true
+ peerDependencies:
+ webpack: ^5.0.0
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack:
+ optional: true
+ webpack-cli:
+ optional: true
+
+ webpack-merge@6.0.1:
+ resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==}
+ engines: {node: '>=18.0.0'}
+
+ webpack-sources@3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+
+ webpack-target-webextension@2.1.3:
+ resolution: {integrity: sha512-rDNTgo0hdE1p6ayBy92qSRXdfivAqlaFbBOIirqfq/DSVdJvMbZ1yaDlftfzGDkkLlEeAblzl0zcQzTgp1UaKA==}
+ engines: {node: '>=18.20.5'}
+ peerDependencies:
+ webpack: ^5.0.0
+
+ webpack@5.99.7:
+ resolution: {integrity: sha512-CNqKBRMQjwcmKR0idID5va1qlhrqVUKpovi+Ec79ksW8ux7iS1+A6VqzfZXgVYCFRKl7XL5ap3ZoMpwBJxcg0w==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ peerDependencies:
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+
+ websocket-driver@0.7.4:
+ resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==}
+ engines: {node: '>=0.8.0'}
+
+ websocket-extensions@0.1.4:
+ resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==}
+ engines: {node: '>=0.8.0'}
+
+ when@3.7.7:
+ resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==}
+
+ which@1.2.4:
+ resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==}
+ hasBin: true
+
+ which@1.3.1:
+ resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+ hasBin: true
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ which@5.0.0:
+ resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==}
+ engines: {node: ^18.17.0 || >=20.5.0}
+ hasBin: true
+
+ wildcard@2.0.1:
+ resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==}
+
+ winreg@0.0.12:
+ resolution: {integrity: sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==}
+
+ ws@8.18.2:
+ resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ xml2js@0.6.2:
+ resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}
+ engines: {node: '>=4.0.0'}
+
+ xmlbuilder@11.0.1:
+ resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
+ engines: {node: '>=4.0'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yocto-queue@1.2.1:
+ resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
+ engines: {node: '>=12.20'}
+
+ zimmerframe@1.1.2:
+ resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==}
+
+snapshots:
+
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+ optional: true
+
+ '@babel/code-frame@7.27.1':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.27.1
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+ optional: true
+
+ '@babel/compat-data@7.27.1':
+ optional: true
+
+ '@babel/core@7.27.1':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.27.1
+ '@babel/helper-compilation-targets': 7.27.1
+ '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
+ '@babel/helpers': 7.27.1
+ '@babel/parser': 7.27.1
+ '@babel/template': 7.27.1
+ '@babel/traverse': 7.27.1
+ '@babel/types': 7.27.1
+ convert-source-map: 2.0.0
+ debug: 4.4.0
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@babel/generator@7.27.1':
+ dependencies:
+ '@babel/parser': 7.27.1
+ '@babel/types': 7.27.1
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.1.0
+ optional: true
+
+ '@babel/helper-compilation-targets@7.27.1':
+ dependencies:
+ '@babel/compat-data': 7.27.1
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.24.5
+ lru-cache: 5.1.1
+ semver: 6.3.1
+ optional: true
+
+ '@babel/helper-module-imports@7.27.1':
+ dependencies:
+ '@babel/traverse': 7.27.1
+ '@babel/types': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)':
+ dependencies:
+ '@babel/core': 7.27.1
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
+ '@babel/traverse': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@babel/helper-string-parser@7.27.1': {}
+
+ '@babel/helper-validator-identifier@7.27.1': {}
+
+ '@babel/helper-validator-option@7.27.1':
+ optional: true
+
+ '@babel/helpers@7.27.1':
+ dependencies:
+ '@babel/template': 7.27.1
+ '@babel/types': 7.27.1
+ optional: true
+
+ '@babel/parser@7.27.1':
+ dependencies:
+ '@babel/types': 7.27.1
+
+ '@babel/template@7.27.1':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/parser': 7.27.1
+ '@babel/types': 7.27.1
+ optional: true
+
+ '@babel/traverse@7.27.1':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.27.1
+ '@babel/parser': 7.27.1
+ '@babel/template': 7.27.1
+ '@babel/types': 7.27.1
+ debug: 4.4.0
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
+ '@babel/types@7.27.1':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
+
+ '@colors/colors@1.6.0': {}
+
+ '@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ optional: true
+
+ '@csstools/color-helpers@5.0.2':
+ optional: true
+
+ '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ optional: true
+
+ '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/color-helpers': 5.0.2
+ '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ optional: true
+
+ '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/css-tokenizer': 3.0.3
+ optional: true
+
+ '@csstools/css-tokenizer@3.0.3':
+ optional: true
+
+ '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ optional: true
+
+ '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)':
+ dependencies:
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ '@csstools/postcss-color-function@4.0.9(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-color-mix-function@3.0.9(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-content-alt-text@2.0.5(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-exponential-functions@2.0.8(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.3)':
+ dependencies:
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ '@csstools/postcss-gamut-mapping@2.0.9(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-gradients-interpolation-method@5.0.9(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-hwb-function@4.0.9(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-ic-unit@4.0.1(postcss@8.5.3)':
+ dependencies:
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ '@csstools/postcss-initial@2.0.1(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.3)':
+ dependencies:
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ '@csstools/postcss-light-dark-function@2.0.8(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-media-minmax@2.0.8(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.3)':
+ dependencies:
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ '@csstools/postcss-oklab-function@4.0.9(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-progressive-custom-properties@4.0.1(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ '@csstools/postcss-random-function@2.0.0(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-relative-color-syntax@3.0.9(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ '@csstools/postcss-sign-functions@1.1.3(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-stepped-value-functions@4.0.8(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.3)':
+ dependencies:
+ '@csstools/color-helpers': 5.0.2
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ '@csstools/postcss-trigonometric-functions@4.0.8(postcss@8.5.3)':
+ dependencies:
+ '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/postcss-unset-value@4.0.0(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.1.0)':
+ dependencies:
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)':
+ dependencies:
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ '@csstools/utilities@2.0.0(postcss@8.5.3)':
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ '@jridgewell/gen-mapping@0.3.8':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/source-map@0.3.6':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)':
+ dependencies:
+ tslib: 2.8.1
+
+ '@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)':
+ dependencies:
+ '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1)
+ '@jsonjoy.com/util': 1.5.0(tslib@2.8.1)
+ hyperdyperid: 1.2.0
+ thingies: 1.21.0(tslib@2.8.1)
+ tslib: 2.8.1
+
+ '@jsonjoy.com/util@1.5.0(tslib@2.8.1)':
+ dependencies:
+ tslib: 2.8.1
+
+ '@leichtgewicht/ip-codec@2.0.5': {}
+
+ '@module-federation/error-codes@0.13.0': {}
+
+ '@module-federation/runtime-core@0.13.0':
+ dependencies:
+ '@module-federation/error-codes': 0.13.0
+ '@module-federation/sdk': 0.13.0
+
+ '@module-federation/runtime-tools@0.13.0':
+ dependencies:
+ '@module-federation/runtime': 0.13.0
+ '@module-federation/webpack-bundler-runtime': 0.13.0
+
+ '@module-federation/runtime@0.13.0':
+ dependencies:
+ '@module-federation/error-codes': 0.13.0
+ '@module-federation/runtime-core': 0.13.0
+ '@module-federation/sdk': 0.13.0
+
+ '@module-federation/sdk@0.13.0': {}
+
+ '@module-federation/webpack-bundler-runtime@0.13.0':
+ dependencies:
+ '@module-federation/runtime': 0.13.0
+ '@module-federation/sdk': 0.13.0
+
+ '@prefresh/babel-plugin@0.5.1':
+ optional: true
+
+ '@prefresh/core@1.5.3(preact@10.26.5)':
+ dependencies:
+ preact: 10.26.5
+ optional: true
+
+ '@prefresh/utils@1.2.0':
+ optional: true
+
+ '@prefresh/webpack@4.0.2(@prefresh/babel-plugin@0.5.1)(preact@10.26.5)(webpack@5.99.7)':
+ dependencies:
+ '@prefresh/babel-plugin': 0.5.1
+ '@prefresh/core': 1.5.3(preact@10.26.5)
+ '@prefresh/utils': 1.2.0
+ preact: 10.26.5
+ webpack: 5.99.7
+ optional: true
+
+ '@rspack/binding-darwin-arm64@1.3.8':
+ optional: true
+
+ '@rspack/binding-darwin-x64@1.3.8':
+ optional: true
+
+ '@rspack/binding-linux-arm64-gnu@1.3.8':
+ optional: true
+
+ '@rspack/binding-linux-arm64-musl@1.3.8':
+ optional: true
+
+ '@rspack/binding-linux-x64-gnu@1.3.8':
+ optional: true
+
+ '@rspack/binding-linux-x64-musl@1.3.8':
+ optional: true
+
+ '@rspack/binding-win32-arm64-msvc@1.3.8':
+ optional: true
+
+ '@rspack/binding-win32-ia32-msvc@1.3.8':
+ optional: true
+
+ '@rspack/binding-win32-x64-msvc@1.3.8':
+ optional: true
+
+ '@rspack/binding@1.3.8':
+ optionalDependencies:
+ '@rspack/binding-darwin-arm64': 1.3.8
+ '@rspack/binding-darwin-x64': 1.3.8
+ '@rspack/binding-linux-arm64-gnu': 1.3.8
+ '@rspack/binding-linux-arm64-musl': 1.3.8
+ '@rspack/binding-linux-x64-gnu': 1.3.8
+ '@rspack/binding-linux-x64-musl': 1.3.8
+ '@rspack/binding-win32-arm64-msvc': 1.3.8
+ '@rspack/binding-win32-ia32-msvc': 1.3.8
+ '@rspack/binding-win32-x64-msvc': 1.3.8
+
+ '@rspack/core@1.3.8(@swc/helpers@0.5.17)':
+ dependencies:
+ '@module-federation/runtime-tools': 0.13.0
+ '@rspack/binding': 1.3.8
+ '@rspack/lite-tapable': 1.0.1
+ caniuse-lite: 1.0.30001716
+ optionalDependencies:
+ '@swc/helpers': 0.5.17
+
+ '@rspack/dev-server@1.1.1(@rspack/core@1.3.8(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.99.7)':
+ dependencies:
+ '@rspack/core': 1.3.8(@swc/helpers@0.5.17)
+ chokidar: 3.6.0
+ express: 4.21.2
+ http-proxy-middleware: 2.0.9(@types/express@4.17.21)
+ mime-types: 2.1.35
+ p-retry: 6.2.1
+ webpack-dev-middleware: 7.4.2(webpack@5.99.7)
+ webpack-dev-server: 5.2.0(webpack@5.99.7)
+ ws: 8.18.2
+ transitivePeerDependencies:
+ - '@types/express'
+ - bufferutil
+ - debug
+ - supports-color
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+
+ '@rspack/lite-tapable@1.0.1': {}
+
+ '@rspack/plugin-preact-refresh@1.1.2(@prefresh/core@1.5.3(preact@10.26.5))(@prefresh/utils@1.2.0)':
+ dependencies:
+ '@prefresh/core': 1.5.3(preact@10.26.5)
+ '@prefresh/utils': 1.2.0
+ optional: true
+
+ '@rspack/plugin-react-refresh@1.4.1(react-refresh@0.14.2)':
+ dependencies:
+ error-stack-parser: 2.1.4
+ html-entities: 2.6.0
+ react-refresh: 0.14.2
+ optional: true
+
+ '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)':
+ dependencies:
+ acorn: 8.14.1
+ optional: true
+
+ '@swc/helpers@0.5.17':
+ dependencies:
+ tslib: 2.8.1
+
+ '@types/body-parser@1.19.5':
+ dependencies:
+ '@types/connect': 3.4.38
+ '@types/node': 22.15.3
+
+ '@types/bonjour@3.5.13':
+ dependencies:
+ '@types/node': 22.15.3
+
+ '@types/chrome@0.0.287':
+ dependencies:
+ '@types/filesystem': 0.0.36
+ '@types/har-format': 1.2.16
+
+ '@types/connect-history-api-fallback@1.5.4':
+ dependencies:
+ '@types/express-serve-static-core': 5.0.6
+ '@types/node': 22.15.3
+
+ '@types/connect@3.4.38':
+ dependencies:
+ '@types/node': 22.15.3
+
+ '@types/eslint-scope@3.7.7':
+ dependencies:
+ '@types/eslint': 9.6.1
+ '@types/estree': 1.0.7
+
+ '@types/eslint@9.6.1':
+ dependencies:
+ '@types/estree': 1.0.7
+ '@types/json-schema': 7.0.15
+
+ '@types/estree@1.0.7': {}
+
+ '@types/express-serve-static-core@4.19.6':
+ dependencies:
+ '@types/node': 22.15.3
+ '@types/qs': 6.9.18
+ '@types/range-parser': 1.2.7
+ '@types/send': 0.17.4
+
+ '@types/express-serve-static-core@5.0.6':
+ dependencies:
+ '@types/node': 22.15.3
+ '@types/qs': 6.9.18
+ '@types/range-parser': 1.2.7
+ '@types/send': 0.17.4
+
+ '@types/express@4.17.21':
+ dependencies:
+ '@types/body-parser': 1.19.5
+ '@types/express-serve-static-core': 4.19.6
+ '@types/qs': 6.9.18
+ '@types/serve-static': 1.15.7
+
+ '@types/filesystem@0.0.36':
+ dependencies:
+ '@types/filewriter': 0.0.33
+
+ '@types/filewriter@0.0.33': {}
+
+ '@types/firefox-webext-browser@120.0.4': {}
+
+ '@types/har-format@1.2.16': {}
+
+ '@types/http-errors@2.0.4': {}
+
+ '@types/http-proxy@1.17.16':
+ dependencies:
+ '@types/node': 22.15.3
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/mime@1.3.5': {}
+
+ '@types/node-forge@1.3.11':
+ dependencies:
+ '@types/node': 22.15.3
+
+ '@types/node@22.15.3':
+ dependencies:
+ undici-types: 6.21.0
+
+ '@types/qs@6.9.18': {}
+
+ '@types/range-parser@1.2.7': {}
+
+ '@types/react-dom@19.1.3(@types/react@19.1.2)':
+ dependencies:
+ '@types/react': 19.1.2
+
+ '@types/react@19.1.2':
+ dependencies:
+ csstype: 3.1.3
+
+ '@types/retry@0.12.2': {}
+
+ '@types/send@0.17.4':
+ dependencies:
+ '@types/mime': 1.3.5
+ '@types/node': 22.15.3
+
+ '@types/serve-index@1.9.4':
+ dependencies:
+ '@types/express': 4.17.21
+
+ '@types/serve-static@1.15.7':
+ dependencies:
+ '@types/http-errors': 2.0.4
+ '@types/node': 22.15.3
+ '@types/send': 0.17.4
+
+ '@types/sockjs@0.3.36':
+ dependencies:
+ '@types/node': 22.15.3
+
+ '@types/ws@8.18.1':
+ dependencies:
+ '@types/node': 22.15.3
+
+ '@vue/compiler-core@3.5.13':
+ dependencies:
+ '@babel/parser': 7.27.1
+ '@vue/shared': 3.5.13
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
+ '@vue/compiler-dom@3.5.13':
+ dependencies:
+ '@vue/compiler-core': 3.5.13
+ '@vue/shared': 3.5.13
+
+ '@vue/compiler-sfc@3.5.13':
+ dependencies:
+ '@babel/parser': 7.27.1
+ '@vue/compiler-core': 3.5.13
+ '@vue/compiler-dom': 3.5.13
+ '@vue/compiler-ssr': 3.5.13
+ '@vue/shared': 3.5.13
+ estree-walker: 2.0.2
+ magic-string: 0.30.17
+ postcss: 8.5.3
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.13':
+ dependencies:
+ '@vue/compiler-dom': 3.5.13
+ '@vue/shared': 3.5.13
+
+ '@vue/shared@3.5.13': {}
+
+ '@webassemblyjs/ast@1.14.1':
+ dependencies:
+ '@webassemblyjs/helper-numbers': 1.13.2
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+
+ '@webassemblyjs/floating-point-hex-parser@1.13.2': {}
+
+ '@webassemblyjs/helper-api-error@1.13.2': {}
+
+ '@webassemblyjs/helper-buffer@1.14.1': {}
+
+ '@webassemblyjs/helper-numbers@1.13.2':
+ dependencies:
+ '@webassemblyjs/floating-point-hex-parser': 1.13.2
+ '@webassemblyjs/helper-api-error': 1.13.2
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/helper-wasm-bytecode@1.13.2': {}
+
+ '@webassemblyjs/helper-wasm-section@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/wasm-gen': 1.14.1
+
+ '@webassemblyjs/ieee754@1.13.2':
+ dependencies:
+ '@xtuc/ieee754': 1.2.0
+
+ '@webassemblyjs/leb128@1.13.2':
+ dependencies:
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/utf8@1.13.2': {}
+
+ '@webassemblyjs/wasm-edit@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/helper-wasm-section': 1.14.1
+ '@webassemblyjs/wasm-gen': 1.14.1
+ '@webassemblyjs/wasm-opt': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ '@webassemblyjs/wast-printer': 1.14.1
+
+ '@webassemblyjs/wasm-gen@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/ieee754': 1.13.2
+ '@webassemblyjs/leb128': 1.13.2
+ '@webassemblyjs/utf8': 1.13.2
+
+ '@webassemblyjs/wasm-opt@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/wasm-gen': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+
+ '@webassemblyjs/wasm-parser@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-api-error': 1.13.2
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/ieee754': 1.13.2
+ '@webassemblyjs/leb128': 1.13.2
+ '@webassemblyjs/utf8': 1.13.2
+
+ '@webassemblyjs/wast-printer@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@xtuc/long': 4.2.2
+
+ '@xtuc/ieee754@1.2.0': {}
+
+ '@xtuc/long@4.2.2': {}
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ acorn@8.14.1: {}
+
+ adm-zip@0.5.16: {}
+
+ ajv-formats@2.1.1(ajv@8.17.1):
+ optionalDependencies:
+ ajv: 8.17.1
+
+ ajv-keywords@5.1.0(ajv@8.17.1):
+ dependencies:
+ ajv: 8.17.1
+ fast-deep-equal: 3.1.3
+
+ ajv@8.17.1:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.0.6
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
+ ansi-html-community@0.0.8: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+ optional: true
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ argparse@2.0.1:
+ optional: true
+
+ aria-query@5.3.2:
+ optional: true
+
+ array-flatten@1.1.1: {}
+
+ asynckit@0.4.0: {}
+
+ autoprefixer@10.4.21(postcss@8.5.3):
+ dependencies:
+ browserslist: 4.24.5
+ caniuse-lite: 1.0.30001716
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.1.1
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ axios@1.9.0:
+ dependencies:
+ follow-redirects: 1.15.9
+ form-data: 4.0.2
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
+ axobject-query@4.1.0:
+ optional: true
+
+ babel-loader@9.2.1(@babel/core@7.27.1)(webpack@5.99.7):
+ dependencies:
+ '@babel/core': 7.27.1
+ find-cache-dir: 4.0.0
+ schema-utils: 4.3.2
+ webpack: 5.99.7
+ optional: true
+
+ batch@0.6.1: {}
+
+ big.js@5.2.2: {}
+
+ binary-extensions@2.3.0: {}
+
+ body-parser@1.20.3:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.13.0
+ raw-body: 2.5.2
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ bonjour-service@1.3.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ multicast-dns: 7.2.5
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.24.5:
+ dependencies:
+ caniuse-lite: 1.0.30001716
+ electron-to-chromium: 1.5.149
+ node-releases: 2.0.19
+ update-browserslist-db: 1.1.3(browserslist@4.24.5)
+
+ buffer-from@1.1.2: {}
+
+ bundle-name@4.1.0:
+ dependencies:
+ run-applescript: 7.0.0
+
+ bytes@3.1.2: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ callsites@3.1.0:
+ optional: true
+
+ caniuse-lite@1.0.30001716: {}
+
+ case-sensitive-paths-webpack-plugin@2.4.0: {}
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ optional: true
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.2
+
+ chrome-location@1.2.1:
+ dependencies:
+ userhome: 1.0.1
+ which: 1.3.1
+
+ chrome-trace-event@1.0.4: {}
+
+ clone-deep@4.0.1:
+ dependencies:
+ is-plain-object: 2.0.4
+ kind-of: 6.0.3
+ shallow-clone: 3.0.1
+
+ clsx@2.1.1:
+ optional: true
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+ optional: true
+
+ color-name@1.1.4:
+ optional: true
+
+ colorette@2.0.20: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ commander@12.1.0: {}
+
+ commander@2.20.3: {}
+
+ commander@2.9.0:
+ dependencies:
+ graceful-readlink: 1.0.1
+
+ common-path-prefix@3.0.0:
+ optional: true
+
+ compressible@2.0.18:
+ dependencies:
+ mime-db: 1.54.0
+
+ compression@1.8.0:
+ dependencies:
+ bytes: 3.1.2
+ compressible: 2.0.18
+ debug: 2.6.9
+ negotiator: 0.6.4
+ on-headers: 1.0.2
+ safe-buffer: 5.2.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ concat-stream@1.6.2:
+ dependencies:
+ buffer-from: 1.1.2
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ typedarray: 0.0.6
+
+ connect-history-api-fallback@2.0.0: {}
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-security-policy-parser@0.6.0: {}
+
+ content-type@1.0.5: {}
+
+ convert-source-map@2.0.0:
+ optional: true
+
+ cookie-signature@1.0.6: {}
+
+ cookie@0.7.1: {}
+
+ copy-anything@2.0.6:
+ dependencies:
+ is-what: 3.14.1
+ optional: true
+
+ core-util-is@1.0.3: {}
+
+ cosmiconfig@9.0.0(typescript@5.3.3):
+ dependencies:
+ env-paths: 2.2.1
+ import-fresh: 3.3.1
+ js-yaml: 4.1.0
+ parse-json: 5.2.0
+ optionalDependencies:
+ typescript: 5.3.3
+ optional: true
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ css-blank-pseudo@7.0.1(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ css-has-pseudo@7.0.2(postcss@8.5.3):
+ dependencies:
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ css-prefers-color-scheme@10.0.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ cssdb@8.2.5:
+ optional: true
+
+ cssesc@3.0.0:
+ optional: true
+
+ csstype@3.1.3: {}
+
+ csv-loader@3.0.5:
+ dependencies:
+ loader-utils: 2.0.4
+ papaparse: 5.5.2
+
+ de-indent@1.0.2:
+ optional: true
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@4.4.0:
+ dependencies:
+ ms: 2.1.3
+
+ deep-extend@0.6.0: {}
+
+ default-browser-id@5.0.0: {}
+
+ default-browser@5.2.1:
+ dependencies:
+ bundle-name: 4.1.0
+ default-browser-id: 5.0.0
+
+ define-lazy-prop@3.0.0: {}
+
+ delayed-stream@1.0.0: {}
+
+ depd@1.1.2: {}
+
+ depd@2.0.0: {}
+
+ destroy@1.2.0: {}
+
+ detect-node@2.1.0: {}
+
+ dns-packet@5.6.1:
+ dependencies:
+ '@leichtgewicht/ip-codec': 2.0.5
+
+ dotenv-defaults@2.0.2:
+ dependencies:
+ dotenv: 8.6.0
+
+ dotenv-webpack@8.1.0(webpack@5.99.7):
+ dependencies:
+ dotenv-defaults: 2.0.2
+ webpack: 5.99.7
+
+ dotenv@16.5.0: {}
+
+ dotenv@8.6.0: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ edge-location@1.0.0:
+ dependencies:
+ userhome: 1.0.1
+ which: 2.0.2
+
+ ee-first@1.1.1: {}
+
+ electron-to-chromium@1.5.149: {}
+
+ emojis-list@3.0.0: {}
+
+ encodeurl@1.0.2: {}
+
+ encodeurl@2.0.0: {}
+
+ enhanced-resolve@5.18.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
+ entities@4.5.0: {}
+
+ entities@6.0.0: {}
+
+ env-paths@2.2.1:
+ optional: true
+
+ errno@0.1.8:
+ dependencies:
+ prr: 1.0.1
+ optional: true
+
+ error-ex@1.3.2:
+ dependencies:
+ is-arrayish: 0.2.1
+ optional: true
+
+ error-stack-parser@2.1.4:
+ dependencies:
+ stackframe: 1.3.4
+ optional: true
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-module-lexer@1.7.0: {}
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ escalade@3.2.0: {}
+
+ escape-html@1.0.3: {}
+
+ eslint-scope@5.1.1:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
+ esm-env@1.2.2:
+ optional: true
+
+ esrap@1.4.6:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+ optional: true
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@4.3.0: {}
+
+ estraverse@5.3.0: {}
+
+ estree-walker@2.0.2: {}
+
+ etag@1.8.1: {}
+
+ eventemitter3@4.0.7: {}
+
+ events@3.3.0: {}
+
+ express@4.21.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.3
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.12
+ proxy-addr: 2.0.7
+ qs: 6.13.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.0
+ serve-static: 1.16.2
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ extension-create@2.0.1:
+ dependencies:
+ '@colors/colors': 1.6.0
+ '@types/firefox-webext-browser': 120.0.4
+ cross-spawn: 7.0.6
+ go-git-it: 2.0.4
+ package-manager-detector: 0.2.11
+
+ extension-develop@2.0.0-rc.23(@babel/core@7.27.1)(@prefresh/babel-plugin@0.5.1)(@types/express@4.17.21)(less@4.3.0)(svelte@5.28.2)(typescript@5.3.3)(webpack@5.99.7):
+ dependencies:
+ '@colors/colors': 1.6.0
+ '@rspack/core': 1.3.8(@swc/helpers@0.5.17)
+ '@rspack/dev-server': 1.1.1(@rspack/core@1.3.8(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.99.7)
+ '@swc/helpers': 0.5.17
+ '@types/firefox-webext-browser': 120.0.4
+ '@vue/compiler-sfc': 3.5.13
+ adm-zip: 0.5.16
+ axios: 1.9.0
+ case-sensitive-paths-webpack-plugin: 2.4.0
+ chokidar: 4.0.3
+ chrome-location: 1.2.1
+ content-security-policy-parser: 0.6.0
+ cross-spawn: 7.0.6
+ csv-loader: 3.0.5
+ dotenv: 16.5.0
+ dotenv-webpack: 8.1.0(webpack@5.99.7)
+ edge-location: 1.0.0
+ firefox-profile: 4.7.0
+ fx-runner: 1.4.0
+ go-git-it: 2.0.4
+ ignore: 6.0.2
+ loader-utils: 3.3.1
+ micromatch: 4.0.8
+ package-manager-detector: 0.2.11
+ parse5: 7.3.0
+ parse5-utils: 2.0.0
+ postcss: 8.5.3
+ preact: 10.26.5
+ progress: 2.0.3
+ schema-utils: 4.3.2
+ slugify: 1.6.6
+ tiny-glob: 0.2.9
+ webextension-polyfill: 0.12.0
+ webpack-merge: 6.0.1
+ webpack-target-webextension: 2.1.3(webpack@5.99.7)
+ which: 5.0.0
+ ws: 8.18.2
+ optionalDependencies:
+ '@prefresh/core': 1.5.3(preact@10.26.5)
+ '@prefresh/utils': 1.2.0
+ '@prefresh/webpack': 4.0.2(@prefresh/babel-plugin@0.5.1)(preact@10.26.5)(webpack@5.99.7)
+ '@rspack/plugin-preact-refresh': 1.1.2(@prefresh/core@1.5.3(preact@10.26.5))(@prefresh/utils@1.2.0)
+ '@rspack/plugin-react-refresh': 1.4.1(react-refresh@0.14.2)
+ babel-loader: 9.2.1(@babel/core@7.27.1)(webpack@5.99.7)
+ less-loader: 12.3.0(@rspack/core@1.3.8(@swc/helpers@0.5.17))(less@4.3.0)(webpack@5.99.7)
+ postcss-loader: 8.1.1(@rspack/core@1.3.8(@swc/helpers@0.5.17))(postcss@8.5.3)(typescript@5.3.3)(webpack@5.99.7)
+ postcss-preset-env: 10.1.6(postcss@8.5.3)
+ react-refresh: 0.14.2
+ sass-loader: 16.0.5(@rspack/core@1.3.8(@swc/helpers@0.5.17))(webpack@5.99.7)
+ svelte-loader: 3.2.4(svelte@5.28.2)
+ svelte-preprocess: 6.0.3(@babel/core@7.27.1)(less@4.3.0)(postcss@8.5.3)(svelte@5.28.2)(typescript@5.3.3)
+ vue-loader: 17.4.2(@vue/compiler-sfc@3.5.13)(webpack@5.99.7)
+ vue-style-loader: 4.1.3
+ vue-template-compiler: 2.7.16
+ transitivePeerDependencies:
+ - '@babel/core'
+ - '@prefresh/babel-plugin'
+ - '@types/express'
+ - bufferutil
+ - coffeescript
+ - debug
+ - less
+ - node-sass
+ - postcss-load-config
+ - pug
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - svelte
+ - typescript
+ - utf-8-validate
+ - vue
+ - webpack
+ - webpack-cli
+ - webpack-hot-middleware
+
+ extension@2.0.0-rc.23(@babel/core@7.27.1)(@prefresh/babel-plugin@0.5.1)(@types/express@4.17.21)(less@4.3.0)(svelte@5.28.2)(typescript@5.3.3)(webpack@5.99.7):
+ dependencies:
+ '@colors/colors': 1.6.0
+ '@types/chrome': 0.0.287
+ '@types/firefox-webext-browser': 120.0.4
+ '@types/node': 22.15.3
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.3(@types/react@19.1.2)
+ commander: 12.1.0
+ extension-create: 2.0.1
+ extension-develop: 2.0.0-rc.23(@babel/core@7.27.1)(@prefresh/babel-plugin@0.5.1)(@types/express@4.17.21)(less@4.3.0)(svelte@5.28.2)(typescript@5.3.3)(webpack@5.99.7)
+ semver: 7.7.1
+ update-check: 1.5.4
+ webextension-polyfill: 0.12.0
+ transitivePeerDependencies:
+ - '@babel/core'
+ - '@prefresh/babel-plugin'
+ - '@types/express'
+ - bufferutil
+ - coffeescript
+ - debug
+ - less
+ - node-sass
+ - postcss-load-config
+ - pug
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - svelte
+ - typescript
+ - utf-8-validate
+ - vue
+ - webpack
+ - webpack-cli
+ - webpack-hot-middleware
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-uri@3.0.6: {}
+
+ faye-websocket@0.11.4:
+ dependencies:
+ websocket-driver: 0.7.4
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.3.1:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ find-cache-dir@4.0.0:
+ dependencies:
+ common-path-prefix: 3.0.0
+ pkg-dir: 7.0.0
+ optional: true
+
+ find-up@6.3.0:
+ dependencies:
+ locate-path: 7.2.0
+ path-exists: 5.0.0
+ optional: true
+
+ firefox-profile@4.7.0:
+ dependencies:
+ adm-zip: 0.5.16
+ fs-extra: 11.3.0
+ ini: 4.1.3
+ minimist: 1.2.8
+ xml2js: 0.6.2
+
+ flat@5.0.2: {}
+
+ follow-redirects@1.15.9: {}
+
+ form-data@4.0.2:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ mime-types: 2.1.35
+
+ forwarded@0.2.0: {}
+
+ fraction.js@4.3.7:
+ optional: true
+
+ fresh@0.5.2: {}
+
+ fs-extra@11.3.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ fx-runner@1.4.0:
+ dependencies:
+ commander: 2.9.0
+ shell-quote: 1.7.3
+ spawn-sync: 1.0.15
+ when: 3.7.7
+ which: 1.2.4
+ winreg: 0.0.12
+
+ gensync@1.0.0-beta.2:
+ optional: true
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-to-regexp@0.4.1: {}
+
+ globals@11.12.0:
+ optional: true
+
+ globalyzer@0.1.0: {}
+
+ globrex@0.1.2: {}
+
+ go-git-it@2.0.4:
+ dependencies:
+ '@colors/colors': 1.6.0
+ progress: 2.0.3
+
+ gopd@1.2.0: {}
+
+ graceful-fs@4.2.11: {}
+
+ graceful-readlink@1.0.1: {}
+
+ handle-thing@2.0.1: {}
+
+ has-flag@4.0.0: {}
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hash-sum@1.0.2:
+ optional: true
+
+ hash-sum@2.0.0:
+ optional: true
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ he@1.2.0:
+ optional: true
+
+ hpack.js@2.1.6:
+ dependencies:
+ inherits: 2.0.4
+ obuf: 1.1.2
+ readable-stream: 2.3.8
+ wbuf: 1.7.3
+
+ html-entities@2.6.0:
+ optional: true
+
+ http-deceiver@1.2.7: {}
+
+ http-errors@1.6.3:
+ dependencies:
+ depd: 1.1.2
+ inherits: 2.0.3
+ setprototypeof: 1.1.0
+ statuses: 1.5.0
+
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ http-parser-js@0.5.10: {}
+
+ http-proxy-middleware@2.0.9(@types/express@4.17.21):
+ dependencies:
+ '@types/http-proxy': 1.17.16
+ http-proxy: 1.18.1
+ is-glob: 4.0.3
+ is-plain-obj: 3.0.0
+ micromatch: 4.0.8
+ optionalDependencies:
+ '@types/express': 4.17.21
+ transitivePeerDependencies:
+ - debug
+
+ http-proxy@1.18.1:
+ dependencies:
+ eventemitter3: 4.0.7
+ follow-redirects: 1.15.9
+ requires-port: 1.0.0
+ transitivePeerDependencies:
+ - debug
+
+ hyperdyperid@1.2.0: {}
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+ optional: true
+
+ ignore@6.0.2: {}
+
+ image-size@0.5.5:
+ optional: true
+
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+ optional: true
+
+ inherits@2.0.3: {}
+
+ inherits@2.0.4: {}
+
+ ini@1.3.8: {}
+
+ ini@4.1.3: {}
+
+ ipaddr.js@1.9.1: {}
+
+ ipaddr.js@2.2.0: {}
+
+ is-absolute@0.1.7:
+ dependencies:
+ is-relative: 0.1.3
+
+ is-arrayish@0.2.1:
+ optional: true
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-docker@3.0.0: {}
+
+ is-extglob@2.1.1: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
+ is-network-error@1.1.0: {}
+
+ is-number@7.0.0: {}
+
+ is-plain-obj@3.0.0: {}
+
+ is-plain-object@2.0.4:
+ dependencies:
+ isobject: 3.0.1
+
+ is-reference@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.7
+ optional: true
+
+ is-relative@0.1.3: {}
+
+ is-what@3.14.1:
+ optional: true
+
+ is-wsl@3.1.0:
+ dependencies:
+ is-inside-container: 1.0.0
+
+ isarray@1.0.0: {}
+
+ isexe@1.1.2: {}
+
+ isexe@2.0.0: {}
+
+ isexe@3.1.1: {}
+
+ isobject@3.0.1: {}
+
+ jest-worker@27.5.1:
+ dependencies:
+ '@types/node': 22.15.3
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ jiti@1.21.7:
+ optional: true
+
+ js-tokens@4.0.0:
+ optional: true
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+ optional: true
+
+ jsesc@3.1.0:
+ optional: true
+
+ json-parse-even-better-errors@2.3.1: {}
+
+ json-schema-traverse@1.0.0: {}
+
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
+ optional: true
+
+ json5@2.2.3: {}
+
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ kind-of@6.0.3: {}
+
+ launch-editor@2.10.0:
+ dependencies:
+ picocolors: 1.1.1
+ shell-quote: 1.8.2
+
+ less-loader@12.3.0(@rspack/core@1.3.8(@swc/helpers@0.5.17))(less@4.3.0)(webpack@5.99.7):
+ dependencies:
+ less: 4.3.0
+ optionalDependencies:
+ '@rspack/core': 1.3.8(@swc/helpers@0.5.17)
+ webpack: 5.99.7
+ optional: true
+
+ less@4.3.0:
+ dependencies:
+ copy-anything: 2.0.6
+ parse-node-version: 1.0.1
+ tslib: 2.8.1
+ optionalDependencies:
+ errno: 0.1.8
+ graceful-fs: 4.2.11
+ image-size: 0.5.5
+ make-dir: 2.1.0
+ mime: 1.6.0
+ needle: 3.3.1
+ source-map: 0.6.1
+ optional: true
+
+ lines-and-columns@1.2.4:
+ optional: true
+
+ loader-runner@4.3.0: {}
+
+ loader-utils@1.4.2:
+ dependencies:
+ big.js: 5.2.2
+ emojis-list: 3.0.0
+ json5: 1.0.2
+ optional: true
+
+ loader-utils@2.0.4:
+ dependencies:
+ big.js: 5.2.2
+ emojis-list: 3.0.0
+ json5: 2.2.3
+
+ loader-utils@3.3.1: {}
+
+ locate-character@3.0.0:
+ optional: true
+
+ locate-path@7.2.0:
+ dependencies:
+ p-locate: 6.0.0
+ optional: true
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+ optional: true
+
+ magic-string@0.30.17:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ make-dir@2.1.0:
+ dependencies:
+ pify: 4.0.1
+ semver: 5.7.2
+ optional: true
+
+ math-intrinsics@1.1.0: {}
+
+ media-typer@0.3.0: {}
+
+ memfs@4.17.1:
+ dependencies:
+ '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1)
+ '@jsonjoy.com/util': 1.5.0(tslib@2.8.1)
+ tree-dump: 1.0.2(tslib@2.8.1)
+ tslib: 2.8.1
+
+ merge-descriptors@1.0.3: {}
+
+ merge-stream@2.0.0: {}
+
+ methods@1.1.2: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime-db@1.52.0: {}
+
+ mime-db@1.54.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime@1.6.0: {}
+
+ minimalistic-assert@1.0.1: {}
+
+ minimist@1.2.8: {}
+
+ ms@2.0.0: {}
+
+ ms@2.1.3: {}
+
+ multicast-dns@7.2.5:
+ dependencies:
+ dns-packet: 5.6.1
+ thunky: 1.1.0
+
+ nanoid@3.3.11: {}
+
+ needle@3.3.1:
+ dependencies:
+ iconv-lite: 0.6.3
+ sax: 1.4.1
+ optional: true
+
+ negotiator@0.6.3: {}
+
+ negotiator@0.6.4: {}
+
+ neo-async@2.6.2: {}
+
+ node-forge@1.3.1: {}
+
+ node-releases@2.0.19: {}
+
+ normalize-path@3.0.0: {}
+
+ normalize-range@0.1.2:
+ optional: true
+
+ object-inspect@1.13.4: {}
+
+ obuf@1.1.2: {}
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-headers@1.0.2: {}
+
+ open@10.1.2:
+ dependencies:
+ default-browser: 5.2.1
+ define-lazy-prop: 3.0.0
+ is-inside-container: 1.0.0
+ is-wsl: 3.1.0
+
+ os-shim@0.1.3: {}
+
+ p-limit@4.0.0:
+ dependencies:
+ yocto-queue: 1.2.1
+ optional: true
+
+ p-locate@6.0.0:
+ dependencies:
+ p-limit: 4.0.0
+ optional: true
+
+ p-retry@6.2.1:
+ dependencies:
+ '@types/retry': 0.12.2
+ is-network-error: 1.1.0
+ retry: 0.13.1
+
+ package-manager-detector@0.2.11:
+ dependencies:
+ quansync: 0.2.10
+
+ papaparse@5.5.2: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+ optional: true
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+ optional: true
+
+ parse-node-version@1.0.1:
+ optional: true
+
+ parse5-utils@2.0.0:
+ dependencies:
+ parse5: 2.2.3
+
+ parse5@2.2.3: {}
+
+ parse5@7.3.0:
+ dependencies:
+ entities: 6.0.0
+
+ parseurl@1.3.3: {}
+
+ path-exists@5.0.0:
+ optional: true
+
+ path-key@3.1.1: {}
+
+ path-to-regexp@0.1.12: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ pify@4.0.1:
+ optional: true
+
+ pkg-dir@7.0.0:
+ dependencies:
+ find-up: 6.3.0
+ optional: true
+
+ postcss-attribute-case-insensitive@7.0.1(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ postcss-clamp@4.1.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-color-functional-notation@7.0.9(postcss@8.5.3):
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ postcss-color-hex-alpha@10.0.0(postcss@8.5.3):
+ dependencies:
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-color-rebeccapurple@10.0.0(postcss@8.5.3):
+ dependencies:
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-custom-media@11.0.5(postcss@8.5.3):
+ dependencies:
+ '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ postcss: 8.5.3
+ optional: true
+
+ postcss-custom-properties@14.0.4(postcss@8.5.3):
+ dependencies:
+ '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-custom-selectors@8.0.4(postcss@8.5.3):
+ dependencies:
+ '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ postcss-dir-pseudo-class@9.0.1(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ postcss-double-position-gradients@6.0.1(postcss@8.5.3):
+ dependencies:
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-focus-visible@10.0.1(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ postcss-focus-within@9.0.1(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ postcss-font-variant@5.0.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ postcss-gap-properties@6.0.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ postcss-image-set-function@7.0.0(postcss@8.5.3):
+ dependencies:
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-lab-function@7.0.9(postcss@8.5.3):
+ dependencies:
+ '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/utilities': 2.0.0(postcss@8.5.3)
+ postcss: 8.5.3
+ optional: true
+
+ postcss-loader@8.1.1(@rspack/core@1.3.8(@swc/helpers@0.5.17))(postcss@8.5.3)(typescript@5.3.3)(webpack@5.99.7):
+ dependencies:
+ cosmiconfig: 9.0.0(typescript@5.3.3)
+ jiti: 1.21.7
+ postcss: 8.5.3
+ semver: 7.7.1
+ optionalDependencies:
+ '@rspack/core': 1.3.8(@swc/helpers@0.5.17)
+ webpack: 5.99.7
+ transitivePeerDependencies:
+ - typescript
+ optional: true
+
+ postcss-logical@8.1.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-nesting@13.0.1(postcss@8.5.3):
+ dependencies:
+ '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.1.0)
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ postcss-opacity-percentage@3.0.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ postcss-overflow-shorthand@6.0.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-page-break@3.0.4(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ postcss-place@10.0.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-value-parser: 4.2.0
+ optional: true
+
+ postcss-preset-env@10.1.6(postcss@8.5.3):
+ dependencies:
+ '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.3)
+ '@csstools/postcss-color-function': 4.0.9(postcss@8.5.3)
+ '@csstools/postcss-color-mix-function': 3.0.9(postcss@8.5.3)
+ '@csstools/postcss-content-alt-text': 2.0.5(postcss@8.5.3)
+ '@csstools/postcss-exponential-functions': 2.0.8(postcss@8.5.3)
+ '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.3)
+ '@csstools/postcss-gamut-mapping': 2.0.9(postcss@8.5.3)
+ '@csstools/postcss-gradients-interpolation-method': 5.0.9(postcss@8.5.3)
+ '@csstools/postcss-hwb-function': 4.0.9(postcss@8.5.3)
+ '@csstools/postcss-ic-unit': 4.0.1(postcss@8.5.3)
+ '@csstools/postcss-initial': 2.0.1(postcss@8.5.3)
+ '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.3)
+ '@csstools/postcss-light-dark-function': 2.0.8(postcss@8.5.3)
+ '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.3)
+ '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.3)
+ '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.3)
+ '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.3)
+ '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.3)
+ '@csstools/postcss-media-minmax': 2.0.8(postcss@8.5.3)
+ '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.3)
+ '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.3)
+ '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.3)
+ '@csstools/postcss-oklab-function': 4.0.9(postcss@8.5.3)
+ '@csstools/postcss-progressive-custom-properties': 4.0.1(postcss@8.5.3)
+ '@csstools/postcss-random-function': 2.0.0(postcss@8.5.3)
+ '@csstools/postcss-relative-color-syntax': 3.0.9(postcss@8.5.3)
+ '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.3)
+ '@csstools/postcss-sign-functions': 1.1.3(postcss@8.5.3)
+ '@csstools/postcss-stepped-value-functions': 4.0.8(postcss@8.5.3)
+ '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.3)
+ '@csstools/postcss-trigonometric-functions': 4.0.8(postcss@8.5.3)
+ '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.3)
+ autoprefixer: 10.4.21(postcss@8.5.3)
+ browserslist: 4.24.5
+ css-blank-pseudo: 7.0.1(postcss@8.5.3)
+ css-has-pseudo: 7.0.2(postcss@8.5.3)
+ css-prefers-color-scheme: 10.0.0(postcss@8.5.3)
+ cssdb: 8.2.5
+ postcss: 8.5.3
+ postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.3)
+ postcss-clamp: 4.1.0(postcss@8.5.3)
+ postcss-color-functional-notation: 7.0.9(postcss@8.5.3)
+ postcss-color-hex-alpha: 10.0.0(postcss@8.5.3)
+ postcss-color-rebeccapurple: 10.0.0(postcss@8.5.3)
+ postcss-custom-media: 11.0.5(postcss@8.5.3)
+ postcss-custom-properties: 14.0.4(postcss@8.5.3)
+ postcss-custom-selectors: 8.0.4(postcss@8.5.3)
+ postcss-dir-pseudo-class: 9.0.1(postcss@8.5.3)
+ postcss-double-position-gradients: 6.0.1(postcss@8.5.3)
+ postcss-focus-visible: 10.0.1(postcss@8.5.3)
+ postcss-focus-within: 9.0.1(postcss@8.5.3)
+ postcss-font-variant: 5.0.0(postcss@8.5.3)
+ postcss-gap-properties: 6.0.0(postcss@8.5.3)
+ postcss-image-set-function: 7.0.0(postcss@8.5.3)
+ postcss-lab-function: 7.0.9(postcss@8.5.3)
+ postcss-logical: 8.1.0(postcss@8.5.3)
+ postcss-nesting: 13.0.1(postcss@8.5.3)
+ postcss-opacity-percentage: 3.0.0(postcss@8.5.3)
+ postcss-overflow-shorthand: 6.0.0(postcss@8.5.3)
+ postcss-page-break: 3.0.4(postcss@8.5.3)
+ postcss-place: 10.0.0(postcss@8.5.3)
+ postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.3)
+ postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.3)
+ postcss-selector-not: 8.0.1(postcss@8.5.3)
+ optional: true
+
+ postcss-pseudo-class-any-link@10.0.1(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ optional: true
+
+ postcss-selector-not@8.0.1(postcss@8.5.3):
+ dependencies:
+ postcss: 8.5.3
+ postcss-selector-parser: 7.1.0
+ optional: true
+
+ postcss-selector-parser@7.1.0:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+ optional: true
+
+ postcss-value-parser@4.2.0:
+ optional: true
+
+ postcss@8.5.3:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ preact@10.26.5: {}
+
+ process-nextick-args@2.0.1: {}
+
+ progress@2.0.3: {}
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
+ proxy-from-env@1.1.0: {}
+
+ prr@1.0.1:
+ optional: true
+
+ qs@6.13.0:
+ dependencies:
+ side-channel: 1.1.0
+
+ quansync@0.2.10: {}
+
+ randombytes@2.1.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.2:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ rc@1.2.8:
+ dependencies:
+ deep-extend: 0.6.0
+ ini: 1.3.8
+ minimist: 1.2.8
+ strip-json-comments: 2.0.1
+
+ react-refresh@0.14.2:
+ optional: true
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ readdirp@4.1.2: {}
+
+ registry-auth-token@3.3.2:
+ dependencies:
+ rc: 1.2.8
+ safe-buffer: 5.2.1
+
+ registry-url@3.1.0:
+ dependencies:
+ rc: 1.2.8
+
+ require-from-string@2.0.2: {}
+
+ requires-port@1.0.0: {}
+
+ resolve-from@4.0.0:
+ optional: true
+
+ retry@0.13.1: {}
+
+ run-applescript@7.0.0: {}
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safer-buffer@2.1.2: {}
+
+ sass-loader@16.0.5(@rspack/core@1.3.8(@swc/helpers@0.5.17))(webpack@5.99.7):
+ dependencies:
+ neo-async: 2.6.2
+ optionalDependencies:
+ '@rspack/core': 1.3.8(@swc/helpers@0.5.17)
+ webpack: 5.99.7
+ optional: true
+
+ sax@1.4.1: {}
+
+ schema-utils@4.3.2:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ajv: 8.17.1
+ ajv-formats: 2.1.1(ajv@8.17.1)
+ ajv-keywords: 5.1.0(ajv@8.17.1)
+
+ select-hose@2.0.0: {}
+
+ selfsigned@2.4.1:
+ dependencies:
+ '@types/node-forge': 1.3.11
+ node-forge: 1.3.1
+
+ semver@5.7.2:
+ optional: true
+
+ semver@6.3.1:
+ optional: true
+
+ semver@7.7.1: {}
+
+ send@0.19.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serialize-javascript@6.0.2:
+ dependencies:
+ randombytes: 2.1.0
+
+ serve-index@1.9.1:
+ dependencies:
+ accepts: 1.3.8
+ batch: 0.6.1
+ debug: 2.6.9
+ escape-html: 1.0.3
+ http-errors: 1.6.3
+ mime-types: 2.1.35
+ parseurl: 1.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ serve-static@1.16.2:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+
+ setprototypeof@1.1.0: {}
+
+ setprototypeof@1.2.0: {}
+
+ shallow-clone@3.0.1:
+ dependencies:
+ kind-of: 6.0.3
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.7.3: {}
+
+ shell-quote@1.8.2: {}
+
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ slugify@1.6.6: {}
+
+ sockjs@0.3.24:
+ dependencies:
+ faye-websocket: 0.11.4
+ uuid: 8.3.2
+ websocket-driver: 0.7.4
+
+ source-map-js@1.2.1: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ spawn-sync@1.0.15:
+ dependencies:
+ concat-stream: 1.6.2
+ os-shim: 0.1.3
+
+ spdy-transport@3.0.0:
+ dependencies:
+ debug: 4.4.0
+ detect-node: 2.1.0
+ hpack.js: 2.1.6
+ obuf: 1.1.2
+ readable-stream: 3.6.2
+ wbuf: 1.7.3
+ transitivePeerDependencies:
+ - supports-color
+
+ spdy@4.0.2:
+ dependencies:
+ debug: 4.4.0
+ handle-thing: 2.0.1
+ http-deceiver: 1.2.7
+ select-hose: 2.0.0
+ spdy-transport: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ stackframe@1.3.4:
+ optional: true
+
+ statuses@1.5.0: {}
+
+ statuses@2.0.1: {}
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-json-comments@2.0.1: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+ optional: true
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ svelte-dev-helper@1.1.9:
+ optional: true
+
+ svelte-hmr@0.14.12(svelte@5.28.2):
+ dependencies:
+ svelte: 5.28.2
+ optional: true
+
+ svelte-loader@3.2.4(svelte@5.28.2):
+ dependencies:
+ loader-utils: 2.0.4
+ svelte: 5.28.2
+ svelte-dev-helper: 1.1.9
+ svelte-hmr: 0.14.12(svelte@5.28.2)
+ optional: true
+
+ svelte-preprocess@6.0.3(@babel/core@7.27.1)(less@4.3.0)(postcss@8.5.3)(svelte@5.28.2)(typescript@5.3.3):
+ dependencies:
+ svelte: 5.28.2
+ optionalDependencies:
+ '@babel/core': 7.27.1
+ less: 4.3.0
+ postcss: 8.5.3
+ typescript: 5.3.3
+ optional: true
+
+ svelte@5.28.2:
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1)
+ '@types/estree': 1.0.7
+ acorn: 8.14.1
+ aria-query: 5.3.2
+ axobject-query: 4.1.0
+ clsx: 2.1.1
+ esm-env: 1.2.2
+ esrap: 1.4.6
+ is-reference: 3.0.3
+ locate-character: 3.0.0
+ magic-string: 0.30.17
+ zimmerframe: 1.1.2
+ optional: true
+
+ tapable@2.2.1: {}
+
+ terser-webpack-plugin@5.3.14(webpack@5.99.7):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ jest-worker: 27.5.1
+ schema-utils: 4.3.2
+ serialize-javascript: 6.0.2
+ terser: 5.39.0
+ webpack: 5.99.7
+
+ terser@5.39.0:
+ dependencies:
+ '@jridgewell/source-map': 0.3.6
+ acorn: 8.14.1
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ thingies@1.21.0(tslib@2.8.1):
+ dependencies:
+ tslib: 2.8.1
+
+ thunky@1.1.0: {}
+
+ tiny-glob@0.2.9:
+ dependencies:
+ globalyzer: 0.1.0
+ globrex: 0.1.2
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ tree-dump@1.0.2(tslib@2.8.1):
+ dependencies:
+ tslib: 2.8.1
+
+ tslib@2.8.1: {}
+
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
+ typedarray@0.0.6: {}
+
+ typescript@5.3.3: {}
+
+ undici-types@6.21.0: {}
+
+ universalify@2.0.1: {}
+
+ unpipe@1.0.0: {}
+
+ update-browserslist-db@1.1.3(browserslist@4.24.5):
+ dependencies:
+ browserslist: 4.24.5
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ update-check@1.5.4:
+ dependencies:
+ registry-auth-token: 3.3.2
+ registry-url: 3.1.0
+
+ userhome@1.0.1: {}
+
+ util-deprecate@1.0.2: {}
+
+ utils-merge@1.0.1: {}
+
+ uuid@8.3.2: {}
+
+ vary@1.1.2: {}
+
+ vue-loader@17.4.2(@vue/compiler-sfc@3.5.13)(webpack@5.99.7):
+ dependencies:
+ chalk: 4.1.2
+ hash-sum: 2.0.0
+ watchpack: 2.4.2
+ webpack: 5.99.7
+ optionalDependencies:
+ '@vue/compiler-sfc': 3.5.13
+ optional: true
+
+ vue-style-loader@4.1.3:
+ dependencies:
+ hash-sum: 1.0.2
+ loader-utils: 1.4.2
+ optional: true
+
+ vue-template-compiler@2.7.16:
+ dependencies:
+ de-indent: 1.0.2
+ he: 1.2.0
+ optional: true
+
+ watchpack@2.4.2:
+ dependencies:
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+
+ wbuf@1.7.3:
+ dependencies:
+ minimalistic-assert: 1.0.1
+
+ webextension-polyfill@0.12.0: {}
+
+ webpack-dev-middleware@7.4.2(webpack@5.99.7):
+ dependencies:
+ colorette: 2.0.20
+ memfs: 4.17.1
+ mime-types: 2.1.35
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ schema-utils: 4.3.2
+ optionalDependencies:
+ webpack: 5.99.7
+
+ webpack-dev-server@5.2.0(webpack@5.99.7):
+ dependencies:
+ '@types/bonjour': 3.5.13
+ '@types/connect-history-api-fallback': 1.5.4
+ '@types/express': 4.17.21
+ '@types/serve-index': 1.9.4
+ '@types/serve-static': 1.15.7
+ '@types/sockjs': 0.3.36
+ '@types/ws': 8.18.1
+ ansi-html-community: 0.0.8
+ bonjour-service: 1.3.0
+ chokidar: 3.6.0
+ colorette: 2.0.20
+ compression: 1.8.0
+ connect-history-api-fallback: 2.0.0
+ express: 4.21.2
+ graceful-fs: 4.2.11
+ http-proxy-middleware: 2.0.9(@types/express@4.17.21)
+ ipaddr.js: 2.2.0
+ launch-editor: 2.10.0
+ open: 10.1.2
+ p-retry: 6.2.1
+ schema-utils: 4.3.2
+ selfsigned: 2.4.1
+ serve-index: 1.9.1
+ sockjs: 0.3.24
+ spdy: 4.0.2
+ webpack-dev-middleware: 7.4.2(webpack@5.99.7)
+ ws: 8.18.2
+ optionalDependencies:
+ webpack: 5.99.7
+ transitivePeerDependencies:
+ - bufferutil
+ - debug
+ - supports-color
+ - utf-8-validate
+
+ webpack-merge@6.0.1:
+ dependencies:
+ clone-deep: 4.0.1
+ flat: 5.0.2
+ wildcard: 2.0.1
+
+ webpack-sources@3.2.3: {}
+
+ webpack-target-webextension@2.1.3(webpack@5.99.7):
+ dependencies:
+ webpack: 5.99.7
+
+ webpack@5.99.7:
+ dependencies:
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.7
+ '@types/json-schema': 7.0.15
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/wasm-edit': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ acorn: 8.14.1
+ browserslist: 4.24.5
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.18.1
+ es-module-lexer: 1.7.0
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ json-parse-even-better-errors: 2.3.1
+ loader-runner: 4.3.0
+ mime-types: 2.1.35
+ neo-async: 2.6.2
+ schema-utils: 4.3.2
+ tapable: 2.2.1
+ terser-webpack-plugin: 5.3.14(webpack@5.99.7)
+ watchpack: 2.4.2
+ webpack-sources: 3.2.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+
+ websocket-driver@0.7.4:
+ dependencies:
+ http-parser-js: 0.5.10
+ safe-buffer: 5.2.1
+ websocket-extensions: 0.1.4
+
+ websocket-extensions@0.1.4: {}
+
+ when@3.7.7: {}
+
+ which@1.2.4:
+ dependencies:
+ is-absolute: 0.1.7
+ isexe: 1.1.2
+
+ which@1.3.1:
+ dependencies:
+ isexe: 2.0.0
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ which@5.0.0:
+ dependencies:
+ isexe: 3.1.1
+
+ wildcard@2.0.1: {}
+
+ winreg@0.0.12: {}
+
+ ws@8.18.2: {}
+
+ xml2js@0.6.2:
+ dependencies:
+ sax: 1.4.1
+ xmlbuilder: 11.0.1
+
+ xmlbuilder@11.0.1: {}
+
+ yallist@3.1.1:
+ optional: true
+
+ yocto-queue@1.2.1:
+ optional: true
+
+ zimmerframe@1.1.2:
+ optional: true
diff --git a/StarCitizenBoxBrowserEx/popup.html b/popup.html
similarity index 100%
rename from StarCitizenBoxBrowserEx/popup.html
rename to popup.html
diff --git a/StarCitizenBoxBrowserEx_Firefox/rsi_hangar_fix.js b/rsi_hangar_fix.ts
similarity index 94%
rename from StarCitizenBoxBrowserEx_Firefox/rsi_hangar_fix.js
rename to rsi_hangar_fix.ts
index a8e66ce..551bd97 100644
--- a/StarCitizenBoxBrowserEx_Firefox/rsi_hangar_fix.js
+++ b/rsi_hangar_fix.ts
@@ -81,11 +81,11 @@
}
// 开始查找抽屉,如果找到执行监听回调
- waitForElement(document, "#sidePanel", (risSidePanel) => {
- startObserve(risSidePanel)
+ waitForElement(document, "#sidePanel", (rsiSidePanel) => {
+ startObserve(rsiSidePanel)
// 初始检查:防止首次打开抽屉时按钮已经存在,MutationObserver 不触发
- const button = sidePanel.querySelector('a[data-cy-id="button"][href="/account/settings"]')
+ const button = rsiSidePanel.querySelector('a[data-cy-id="button"][href="/account/settings"]')
if (button) {
copyAndAddButton(button)
}
diff --git a/StarCitizenBoxBrowserEx/thirdparty/jquery.min.js b/thirdparty/jquery.min.js
similarity index 100%
rename from StarCitizenBoxBrowserEx/thirdparty/jquery.min.js
rename to thirdparty/jquery.min.js
diff --git a/StarCitizenBoxBrowserEx/thirdparty/timeago.full.min.js b/thirdparty/timeago.full.min.js
similarity index 100%
rename from StarCitizenBoxBrowserEx/thirdparty/timeago.full.min.js
rename to thirdparty/timeago.full.min.js
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..f7ab03c
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "allowJs": true,
+ "allowSyntheticDefaultImports": true,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "isolatedModules": true,
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "moduleResolution": "node",
+ "module": "esnext",
+ "noEmit": true,
+ "resolveJsonModule": true,
+ "strict": true,
+ "target": "esnext",
+ "verbatimModuleSyntax": true,
+ "useDefineForClassFields": true,
+ "skipLibCheck": true,
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./*"]
+ }
+ },
+ "include": ["./"],
+ "exclude": ["node_modules", "dist"],
+}