diff --git a/README.md b/README.md index 3e8ceaa..c260aab 100644 --- a/README.md +++ b/README.md @@ -8,17 +8,10 @@ | [e-hentai-infinite-scroll](/packages/e-hentai-infinite-scroll) | Exhentai infinite scroll scripts. Exhentai 无限滚动 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/e-hentai-infinite-scroll.user.js) \| [greasyfork](https://greasyfork.org/scripts/451741) | | [agefans-enhance](https://github.com/IronKinoko/agefans-enhance) | 增强 agefans 播放功能,实现自动换集、无缝换集、画中画、历史记录、断点续播、弹幕等功能 | [GitHub](https://github.com/IronKinoko/agefans-enhance/raw/gh-pages/index.user.js) \| [greasyfork](https://greasyfork.org/scripts/424023) | | [youtube-danmaku](https://github.com/IronKinoko/youtube-danmaku) | Youtube Live Chat 直播评论以弹幕方式显示 | [GitHub](https://github.com/IronKinoko/youtube-danmaku/raw/gh-pages/index.user.js) \| [greasyfork](https://greasyfork.org/scripts/409684) | -| [manhuagui](/packages/manhuagui) | 增强漫画柜观看体验 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/manhuagui.user.js) \| [greasyfork](https://greasyfork.org/scripts/451739) | -| [linovelib](/packages/linovelib) | 增强哔哩轻小说观看体验 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/linovelib.user.js) \| [greasyfork](https://greasyfork.org/scripts/451738) | | [esjzone](/packages/esjzone) | 增加 esjzone 阅读体验 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/esjzone.user.js) | -| [kakuyomu-translate](/packages/kakuyomu-translate) | 增加 kakuyomu 阅读体验 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/kakuyomu-translate.user.js) | -| [xxxxx520](/packages/xxxxx520) | 优化 xxxxx520 体验 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/xxxxx520.user.js) | -| [18comic](/packages/18comic) | 优化 18comic 体验 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/18comic.user.js) | -| [twitter](/packages/twitter) | 优化 twitter 体验,点赞的同时复制图片与分享链接 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/twitter.user.js) | -| [bilixs](/packages/bilixs) | 优化 bilixs 体验 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/bilixs.user.js) | -| [novel-speech-synthesis](/packages/novel-speech-synthesis) | 小说语音阅读功能 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/novel-speech-synthesis.user.js) | | [steam-multisell](/packages/steam-multisell) | Steam 批量出售 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/steam-multisell.user.js) | | [bili-live](/packages/bili-live) | bilibili 直播间优化 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/bili-live.user.js) | +| [miscellaneous](/packages/miscellaneous) | 杂项,很多乱七八糟的小功能都写这里面 | [GitHub](https://github.com/IronKinoko/userscripts/raw/dist/miscellaneous.user.js) | ### 其他在用的脚本 diff --git a/env.d.ts b/env.d.ts index c3bc539..09e6b2f 100644 --- a/env.d.ts +++ b/env.d.ts @@ -8,4 +8,147 @@ declare const unsafeWindow: Window declare function GM_getValue(key: string): T | undefined declare function GM_getValue(key: string, defaultValue: T): T declare function GM_setValue(key: string, value: any): void -declare function GM_xmlhttpRequest(params: any): any + +declare interface GMXMLHttpRequestDetails { + /** + * HTTP method + * @default "GET" + */ + method?: 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS' + + /** + * Request URL + */ + url: string + + /** + * Request headers + */ + headers?: Record + + /** + * Request body + */ + data?: string | Blob | ArrayBuffer | FormData + + /** + * Response type + */ + responseType?: '' | 'arraybuffer' | 'blob' | 'json' | 'text' + + /** + * Timeout in milliseconds + */ + timeout?: number + + /** + * Whether to send cookies + */ + anonymous?: boolean + + /** + * Include cookies for the request + */ + cookie?: string + + /** + * Redirect handling + */ + redirect?: 'follow' | 'error' | 'manual' + + /** + * Override MIME type + */ + overrideMimeType?: string + + /** + * User-Agent + */ + userAgent?: string + + /** + * Progress callback + */ + onprogress?: (response: GMXMLHttpRequestProgress) => void + + /** + * Ready state change callback + */ + onreadystatechange?: (response: GMXMLHttpRequestResponse) => void + + /** + * Request completed + */ + onload?: (response: GMXMLHttpRequestResponse) => void + + /** + * Request failed + */ + onerror?: (response: GMXMLHttpRequestResponse) => void + + /** + * Timeout callback + */ + ontimeout?: (response: GMXMLHttpRequestResponse) => void + + /** + * Abort callback + */ + onabort?: (response: GMXMLHttpRequestResponse) => void +} + +declare interface GMXMLHttpRequestResponse { + /** + * Final URL after redirects + */ + finalUrl: string + + /** + * XMLHttpRequest readyState + */ + readyState: number + + /** + * HTTP status code + */ + status: number + + /** + * HTTP status text + */ + statusText: string + + /** + * Response headers + */ + responseHeaders: string + + /** + * Response data + */ + response: T + + /** + * Response as text + */ + responseText: string + + /** + * XML document response + */ + responseXML: Document | null +} + +declare interface GMXMLHttpRequestProgress extends GMXMLHttpRequestResponse { + lengthComputable: boolean + loaded: number + total: number +} + +declare interface GMXMLHttpRequestAbortHandle { + abort(): void +} + +declare function GM_xmlhttpRequest( + details: GMXMLHttpRequestDetails +): GMXMLHttpRequestAbortHandle diff --git a/package.json b/package.json index c79b10f..a19b1a4 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@types/inquirer": "^9.0.6", "@types/jquery": "^3.5.25", "@types/lodash-es": "^4.17.10", - "bocchi": "^1.1.3", + "bocchi": "^2.1.0", "chalk": "^5.3.0", "fs-extra": "^11.1.1", "globby": "^13.2.2", diff --git a/packages/18comic/CHANGELOG.md b/packages/18comic/CHANGELOG.md deleted file mode 100644 index e2525c0..0000000 --- a/packages/18comic/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# 18comic - -## 1.0.1 - -### Patch Changes - -- 8914ab4: chore: release diff --git a/packages/18comic/README.md b/packages/18comic/README.md deleted file mode 100644 index f2f0f83..0000000 --- a/packages/18comic/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 18comic - -## Install/安装 - -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/18comic.user.js) diff --git a/packages/18comic/env.d.ts b/packages/18comic/env.d.ts deleted file mode 100644 index 838b896..0000000 --- a/packages/18comic/env.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -interface Window { - page_arr?: string[] -} diff --git a/packages/18comic/meta.template b/packages/18comic/meta.template deleted file mode 100644 index 0b141e8..0000000 --- a/packages/18comic/meta.template +++ /dev/null @@ -1,17 +0,0 @@ -// ==UserScript== -// @name 18comic -// @namespace https://github.com/IronKinoko/userscripts/tree/master/packages/18comic -// @version #version# -// @license MIT -// @description #description# -// @author IronKinoko -// @match https://18comic.vip/* -// @match https://18comic.org/* -// @match https://jmcomic.me/* -// @match https://jmcomic1.me/* -// @icon https://www.google.com/s2/favicons?sz=64&domain=18comic.vip -// @grant none -// @noframes -// @downloadURL https://github.com/IronKinoko/userscripts/raw/dist/18comic.user.js -// @updateURL https://github.com/IronKinoko/userscripts/raw/dist/18comic.user.js -// ==/UserScript== \ No newline at end of file diff --git a/packages/18comic/src/index.ts b/packages/18comic/src/index.ts deleted file mode 100644 index acebfc7..0000000 --- a/packages/18comic/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { router } from 'shared' -import photo from './photo' - -router([{ path: '/photo/', run: photo }]) diff --git a/packages/18comic/src/photo.ts b/packages/18comic/src/photo.ts deleted file mode 100644 index f4aaf48..0000000 --- a/packages/18comic/src/photo.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { wait } from 'shared' - -export default function main() { - fixImgError() - addRefreshButton() -} - -async function getImages() { - await wait(() => !!window.page_arr) - return window.page_arr!.map((id) => { - return document.querySelector(`[id="${id}"] img`) as HTMLImageElement - }) -} - -async function fixImgError() { - const imgs = await getImages() - imgs.forEach((img) => { - img.onerror = () => { - setTimeout(() => { - refreshImg(img) - }, 300) - } - }) -} - -function refreshImg(imgEl: HTMLImageElement) { - const url = new URL(imgEl.dataset.original!) - url.searchParams.set('_key', Math.random().toString()) - imgEl.src = url.toString() -} - -async function addRefreshButton() { - const $dom = $(`
  • 重连
  • `) - $dom.on('click', async () => { - const imgs = await getImages() - imgs.forEach((img) => { - if (!img.complete) { - refreshImg(img) - } - }) - }) - $('#pageselect').parent().before($dom) -} diff --git a/packages/18comic/tsconfig.json b/packages/18comic/tsconfig.json deleted file mode 100644 index 9acee5f..0000000 --- a/packages/18comic/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "../../env.d.ts", "env.d.ts"] -} diff --git a/packages/bilixs/CHANGELOG.md b/packages/bilixs/CHANGELOG.md deleted file mode 100644 index 0e96124..0000000 --- a/packages/bilixs/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# bilixs - -## 1.0.1 - -### Patch Changes - -- dea0c70: fix: remove jquery diff --git a/packages/bilixs/README.md b/packages/bilixs/README.md deleted file mode 100644 index f5493c3..0000000 --- a/packages/bilixs/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# bilixs - -## Install/安装 - -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/bilixs.user.js) - -## 特性 - -- 预加载下一页内容 diff --git a/packages/bilixs/meta.template b/packages/bilixs/meta.template deleted file mode 100644 index 3541fa7..0000000 --- a/packages/bilixs/meta.template +++ /dev/null @@ -1,15 +0,0 @@ -// ==UserScript== -// @name bilixs -// @namespace https://github.com/IronKinoko/userscripts/tree/master/packages/bilixs -// @version #version# -// @license MIT -// @description #description# -// @author IronKinoko -// @match https://hans.bilixs.com/* -// @match https://www.bilixs.com/* -// @icon https://www.google.com/s2/favicons?sz=64&domain=www.bilixs.com -// @grant none -// @noframes -// @downloadURL https://github.com/IronKinoko/userscripts/raw/dist/bilixs.user.js -// @updateURL https://github.com/IronKinoko/userscripts/raw/dist/bilixs.user.js -// ==/UserScript== \ No newline at end of file diff --git a/packages/bilixs/package.json b/packages/bilixs/package.json deleted file mode 100644 index ece7b4c..0000000 --- a/packages/bilixs/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "bilixs", - "version": "1.0.1", - "description": "", - "main": "index.js", - "scripts": { - "dev": "bocchi dev", - "build": "bocchi build" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/IronKinoko/userscripts.git" - }, - "keywords": [], - "author": "IronKinoko ", - "license": "MIT", - "bugs": { - "url": "https://github.com/IronKinoko/userscripts/issues" - }, - "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/bilixs#readme", - "devDependencies": { - "shared": "workspace:*" - } -} diff --git a/packages/bilixs/src/index.ts b/packages/bilixs/src/index.ts deleted file mode 100644 index 19f4a0e..0000000 --- a/packages/bilixs/src/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { keybind, router } from 'shared' - -router([ - { - path: /novel\/.*\/.*\.html/, - run: () => { - const href = $('.footer > a.f-right').attr('href') - $('head').append(``) - - keybind(['a', 'd', 'ArrowLeft', 'ArrowRight'], (e, key) => { - switch (key) { - case 'a': - case 'ArrowLeft': - $('.footer > a.f-left')[0].click() - break - case 'd': - case 'ArrowRight': - $('.footer > a.f-right')[0].click() - break - } - }) - }, - }, -]) diff --git a/packages/copymanga/CHANGELOG.md b/packages/copymanga/CHANGELOG.md index 6551d06..522051c 100644 --- a/packages/copymanga/CHANGELOG.md +++ b/packages/copymanga/CHANGELOG.md @@ -1,5 +1,23 @@ # copymanga +## 1.7.1 + +### Patch Changes + +- f8a8fe2: chore: 更新域名 + +## 1.7.0 + +### Minor Changes + +- 67ec7ed: feat: 增加磁吸滚动 + +## 1.6.0 + +### Minor Changes + +- 0016c14: feat: 增加加载中高度,防止意外加载内容 + ## 1.5.11 ### Patch Changes diff --git a/packages/copymanga/meta.template b/packages/copymanga/meta.template index ea9fd0a..336445c 100644 --- a/packages/copymanga/meta.template +++ b/packages/copymanga/meta.template @@ -7,6 +7,7 @@ // @author IronKinoko // @match https://www.mangacopy.com/* // @match https://www.2025copy.com/* +// @match https://www.2026copy.com/* // @icon https://www.google.com/s2/favicons?domain=www.mangacopy.com // @grant GM_xmlhttpRequest // @connect userscripts-proxy.vercel.app diff --git a/packages/copymanga/package.json b/packages/copymanga/package.json index befbe37..1e37910 100644 --- a/packages/copymanga/package.json +++ b/packages/copymanga/package.json @@ -1,6 +1,6 @@ { "name": "copymanga", - "version": "1.5.11", + "version": "1.7.1", "description": "处理图片资源加载失败时自动重新加载", "main": "index.js", "scripts": { diff --git a/packages/copymanga/src/h5.template.html b/packages/copymanga/src/h5.template.html index bd7ee0c..5074ce7 100644 --- a/packages/copymanga/src/h5.template.html +++ b/packages/copymanga/src/h5.template.html @@ -35,4 +35,17 @@ > +
    + + + +
    diff --git a/packages/copymanga/src/h5.ts b/packages/copymanga/src/h5.ts index ee07235..cc15352 100644 --- a/packages/copymanga/src/h5.ts +++ b/packages/copymanga/src/h5.ts @@ -20,7 +20,7 @@ function getCurrentPage() { for (let i = 0; i < list.length; i++) { const item = list[i] height += item.getBoundingClientRect().height - if (height > scrollHeight) { + if (height - 100 > scrollHeight) { return i } } @@ -131,6 +131,7 @@ async function createActionsUI() { intiNextPartEvent() initSplitEvent() initMergeEvent() + initMagneticEvent() } if (!/h5\/comicContent\/.*/.test(location.href)) { @@ -138,7 +139,7 @@ async function createActionsUI() { return } else { actionsDom.classList.remove('hide') - $('.k-icon').removeClass('active') + $('.k-icon').filter(':not(.k-magnetic)').removeClass('active') } } @@ -228,6 +229,16 @@ async function initMergeEvent() { }) } +const MAGNETIC_KEY = 'k-copymanga-magnetic' +async function initMagneticEvent() { + $('.k-magnetic') + .toggleClass('active', local.getItem(MAGNETIC_KEY, false)) + .on('click', (e) => { + const isActive = e.currentTarget.classList.toggle('active') + local.setItem(MAGNETIC_KEY, isActive) + }) +} + async function intiNextPartEvent() { let fixedNextBtn = document.querySelector('.k-next')! fixedNextBtn.onclick = async (e) => { @@ -399,8 +410,8 @@ async function injectImageData() { let html = '' info.manga.forEach(({ url }, idx) => { html += ` -
  • - +
  • +
  • ` }) @@ -436,10 +447,25 @@ async function injectImageData() { if (idx < 0 || idx >= map.length) return const v = map[idx] + + const isMagnetic = local.getItem(MAGNETIC_KEY, false) + + const movePage = (delta: number) => { + const list = document.querySelectorAll('li.comicContentPopupImageItem') + const current = getCurrentPage() + + const next = Math.min(Math.max(current + delta, 0), list.length - 1) + $(`[data-idx="${next}"]`) + .get(0) + ?.scrollIntoView({ behavior: 'smooth', block: 'start' }) + } + if (v === -1) { - window.scrollBy({ top: -h, behavior: 'smooth' }) + if (isMagnetic) movePage(-1) + else window.scrollBy({ top: -h, behavior: 'smooth' }) } else if (v === 1) { - window.scrollBy({ top: h, behavior: 'smooth' }) + if (isMagnetic) movePage(1) + else window.scrollBy({ top: h, behavior: 'smooth' }) } else { const li = $('.k-open-control-item').get(0) li?.dispatchEvent(fakeClickEvent()) diff --git a/packages/copymanga/src/index.scss b/packages/copymanga/src/index.scss index ffdbb73..58850f6 100644 --- a/packages/copymanga/src/index.scss +++ b/packages/copymanga/src/index.scss @@ -75,4 +75,35 @@ padding-right: 1em; } } + + .k-loading { + position: relative; + img { + position: absolute; + left: 0; + top: 0; + width: 100%; + z-index: 2; + } + &::before { + content: ''; + display: block; + width: 100%; + padding-top: calc(172 / 121 * 100%); + } + &::after { + content: attr(data-idx); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + z-index: 1; + color: #999; + font-size: 80px; + } + } } diff --git a/packages/e-hentai-infinite-scroll/CHANGELOG.md b/packages/e-hentai-infinite-scroll/CHANGELOG.md index c2a620f..cc2e72f 100644 --- a/packages/e-hentai-infinite-scroll/CHANGELOG.md +++ b/packages/e-hentai-infinite-scroll/CHANGELOG.md @@ -1,5 +1,30 @@ # e-hentai-infinite-scroll +## 1.5.1 + +### Patch Changes + +- 562093f: feat: 增强加载指示器样式和提示语 +- 475d07b: feat: 优化加载效果 + +## 1.5.0 + +### Minor Changes + +- 5fb9af2: feat: 优化加载方案 + +## 1.4.1 + +### Patch Changes + +- 0224f00: feat: 动态设置宽度 + +## 1.4.0 + +### Minor Changes + +- 512aa7a: feat: 增加加载占位图与重试机制 + ## 1.3.10 ### Patch Changes diff --git a/packages/e-hentai-infinite-scroll/meta.template b/packages/e-hentai-infinite-scroll/meta.template index 4732181..7345df3 100644 --- a/packages/e-hentai-infinite-scroll/meta.template +++ b/packages/e-hentai-infinite-scroll/meta.template @@ -6,8 +6,9 @@ // @author IronKinoko // @match https://e-hentai.org/* // @match https://exhentai.org/* +// @run-at document-end // @grant none // @require https://unpkg.com/jquery@3.6.1/dist/jquery.min.js // @downloadURL https://github.com/IronKinoko/userscripts/raw/dist/e-hentai-infinite-scroll.user.js // @updateURL https://github.com/IronKinoko/userscripts/raw/dist/e-hentai-infinite-scroll.user.js -// ==/UserScript== \ No newline at end of file +// ==/UserScript== diff --git a/packages/e-hentai-infinite-scroll/package.json b/packages/e-hentai-infinite-scroll/package.json index b231d62..78f055a 100644 --- a/packages/e-hentai-infinite-scroll/package.json +++ b/packages/e-hentai-infinite-scroll/package.json @@ -1,6 +1,6 @@ { "name": "e-hentai-infinite-scroll", - "version": "1.3.10", + "version": "1.5.1", "description": "Exhentai infinite scroll scripts.", "main": "index.user.js", "scripts": { diff --git a/packages/e-hentai-infinite-scroll/src/index.scss b/packages/e-hentai-infinite-scroll/src/index.scss index 247096b..6f7f8a6 100644 --- a/packages/e-hentai-infinite-scroll/src/index.scss +++ b/packages/e-hentai-infinite-scroll/src/index.scss @@ -65,6 +65,74 @@ } &.s { + #i1 { + max-width: 1280px !important; + width: 100% !important; + } + .auto-load-item { + position: relative; + width: 100%; + --auto-load-ratio: 320 / 450; + } + + .auto-load-placeholder { + margin: 10px; + width: calc(100% - 20px); + aspect-ratio: var(--auto-load-ratio); + min-height: 220px; + border-radius: 12px; + border: 1px solid rgba(255, 255, 255, 0.12); + background: linear-gradient( + 130deg, + rgba(30, 30, 30, 0.92), + rgba(46, 46, 46, 0.92) + ); + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 10px; + color: #d7d7d7; + font-size: 14px; + letter-spacing: 0.02em; + box-sizing: border-box; + text-align: center; + } + + .auto-load-spinner-wrap { + position: relative; + } + + .auto-load-spinner { + width: 32px; + height: 32px; + border-radius: 50%; + border: 3px solid rgba(255, 255, 255, 0.24); + border-top-color: #ffffff; + animation: ehi-auto-load-spin 0.9s linear infinite; + } + + .auto-load-indicator { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + } + + .auto-load-placeholder-text { + line-height: 1.4; + padding: 0 16px; + text-align: center; + } + + .auto-load-item.is-loaded .auto-load-placeholder { + display: none; + } + .auto-load-img { width: 100% !important; max-width: 100% !important; @@ -72,15 +140,28 @@ padding: 10px; display: block; box-sizing: border-box; + transition: opacity 0.24s ease; } - .auto-load-img-empty { - min-height: 1000px; - width: 100px !important; - margin: 0 auto !important; - } - #i3 a { + .auto-load-img.is-loading { + opacity: 0; pointer-events: none; + position: absolute; + left: 0; + top: 0; + } + + .auto-load-img.is-loaded { + opacity: 1; } } } + +@keyframes ehi-auto-load-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/packages/e-hentai-infinite-scroll/src/views/g.ts b/packages/e-hentai-infinite-scroll/src/views/g.ts index 063bd5a..d0c532d 100644 --- a/packages/e-hentai-infinite-scroll/src/views/g.ts +++ b/packages/e-hentai-infinite-scroll/src/views/g.ts @@ -227,9 +227,5 @@ export async function setup() { if (!info.unloadPageLinks.length) return - if (info.unloadPageLinks.length > 2) { - largeGallery() - } else { - tinyGallery() - } + largeGallery() } diff --git a/packages/e-hentai-infinite-scroll/src/views/s.ts b/packages/e-hentai-infinite-scroll/src/views/s.ts index fb1b987..ea7fb13 100644 --- a/packages/e-hentai-infinite-scroll/src/views/s.ts +++ b/packages/e-hentai-infinite-scroll/src/views/s.ts @@ -1,4 +1,4 @@ -import { debounce } from 'shared' +import { debounce, local, memoize, session, sleep, throttle } from 'shared' interface ApiRes { /** source */ @@ -13,21 +13,128 @@ interface ApiRes { i5: string i6: string } -type Info = { +type I3MatchGroup = { key: string src: string nl: string - source: string } -const store: Record = {} +enum GalleryImageState { + Idle = 'Idle', + Waiting = 'Waiting', + Loading = 'Loading', + Loaded = 'Loaded', + Rendered = 'Rendered', +} + +interface GalleryImage { + state: GalleryImageState + page: number + idx: number + galleryUrl: string + idxInPage: number + sourceUrl: string + imgUrl: string + container: HTMLDivElement +} function parseI3(i3: string) { - return i3.match(/'(?.*)'.*src="(?.*?")(.*nl\('(?.*)'\))?/)! - .groups! + return i3.match(/'(?.*)'.*src="(?.*?)"(.*nl\('(?.*)'\))?/)! + .groups! as I3MatchGroup } -function setupInfiniteScroll() { +async function setupInfiniteScroll() { + function createImgContainer(page: number) { + const container = document.createElement('div') + container.classList.add('k-img-item', 'auto-load-item', 'is-loading') + container.setAttribute('data-idx', page.toString()) + + const placeholder = document.createElement('div') + placeholder.classList.add('auto-load-placeholder') + + const spinnerWrap = document.createElement('div') + spinnerWrap.classList.add('auto-load-spinner-wrap') + + const spinner = document.createElement('div') + spinner.classList.add('auto-load-spinner') + + const indicator = document.createElement('span') + indicator.classList.add('auto-load-indicator') + indicator.textContent = page + 1 + '' + + const label = document.createElement('span') + label.classList.add('auto-load-placeholder-text') + label.textContent = `Wait for image to load...` + + const img = document.createElement('img') + img.classList.add('auto-load-img', 'is-loading') + + spinnerWrap.append(spinner) + spinnerWrap.append(indicator) + placeholder.append(spinnerWrap) + placeholder.append(label) + container.append(placeholder) + container.append(img) + + return container + } + + const setPlaceholderText = (galleryImage: GalleryImage, text: string) => { + const placeholderText = galleryImage.container.querySelector( + '.auto-load-placeholder-text' + ) + if (placeholderText) { + placeholderText.innerHTML = `[${galleryImage.state}]${text}` + } + } + + function bindImgLoadState(galleryImage: GalleryImage) { + const container = galleryImage.container + const img = container.querySelector('img.auto-load-img')! + img.src = galleryImage.imgUrl + const clearLoadingState = () => { + container.classList.remove('is-loading') + container.classList.add('is-loaded') + container.querySelector('.auto-load-placeholder')?.remove() + img.classList.remove('is-loading') + img.classList.add('is-loaded') + } + + const MaxRetryCount = 3 + let retryCount = 0 + let timer = 0 + const onDone = () => { + clearTimeout(timer) + + if (img.complete && img.naturalWidth > 0) { + clearLoadingState() + } else { + if (retryCount >= MaxRetryCount) { + galleryImage.state = GalleryImageState.Waiting + galleryImage.imgUrl = '' + setPlaceholderText(galleryImage, 'Failed to load image') + return + } + + const retryUrl = new URL(img.src) + retryUrl.searchParams.set('retry', retryCount.toString()) + img.src = retryUrl.toString() + retryCount++ + setPlaceholderText( + galleryImage, + `Load failed, retry ${retryCount}/${MaxRetryCount}...` + ) + + timer = window.setTimeout(onDone, retryCount * 10000) + img.decode().then(onDone).catch(onDone) + } + } + + setPlaceholderText(galleryImage, `Loading image...`) + timer = window.setTimeout(onDone, 10000) + img.decode().then(onDone).catch(onDone) + } + function api_call(page: number, nextImgKey: string) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest() @@ -51,164 +158,248 @@ function setupInfiniteScroll() { ) }) } - const maxPageSize = parseInt( - document.querySelector('#i2 > div.sn > div > span:nth-child(2)')! - .textContent! - ) - let nextImgKey = document - .querySelector('#i3 a[onclick]')! - .onclick!.toString() - .match(/'(?.*)'/)!.groups!.key - let page = window.startpage + 1 - - let isLoading = false - async function loadImgInfo() { - try { - if (maxPageSize < page) { - return - } - if (isLoading) return - isLoading = true - const res = await api_call(page, nextImgKey) - isLoading = false - const groups = parseI3(res.i3) - - const info: Info = { - key: res.k, - nl: groups.nl, - src: groups.src.slice(0, -1), - source: res.s[0] === '/' ? res.s : '/' + res.s, + async function getGalleryMeta() { + const total = parseInt( + document.querySelector('#i2 > div.sn > div > span:nth-child(2)')! + .textContent! + ) + const currentPage = window.startpage - 1 + const prevPageSize = local.getItem('e-hentai-infinite-scroll-page-size') + let defaultPage = 0 + + if (prevPageSize) { + defaultPage = Math.floor(currentPage / parseInt(prevPageSize)) + } + + const galleryUrl = document.querySelector('#i5 a')!.getAttribute('href')! + const { pages, pageSize, images } = await getGalleryPageMeta( + galleryUrl, + defaultPage + ) + + const galleryImages = Array.from({ length: total }).map( + (_, idx) => { + const page = Math.floor(idx / pageSize) + const indexInPage = idx % pageSize + const pageUrl = new URL(galleryUrl) + pageUrl.searchParams.set('p', page.toString()) + return { + state: GalleryImageState.Idle, + galleryUrl: `${pageUrl.toString()}`, + page, + idx, + idxInPage: indexInPage, + sourceUrl: '', + imgUrl: '', + container: createImgContainer(idx), + } } + ) - store[res.k] = { info, res } + images.forEach((image) => { + galleryImages[image.idx].sourceUrl = image.sourceUrl + }) - renderImg(page, info) + galleryImages[currentPage].state = GalleryImageState.Loaded + galleryImages[currentPage].sourceUrl = window.location.href + galleryImages[currentPage].imgUrl = $('#i3 img').attr('src')! - nextImgKey = groups.key - page++ - } catch (error) { - isLoading = false - console.error(error) - await loadImgInfo() - } + return { total, pages, pageSize, galleryImages } } - function renderImg(page: number, info: Info) { - const { key, source, src } = info - const img = document.createElement('img') - img.setAttribute('src', src) - img.dataset.imgKey = key - img.dataset.page = page + '' - img.dataset.source = source - img.classList.add('auto-load-img') + $('body').addClass('e-hentai-infinite-scroll s') + const meta = await getGalleryMeta() + $('#i3').empty() + meta.galleryImages.forEach((galleryImage) => { + const container = galleryImage.container + $('#i3').append(container) + }) - document.getElementById('i3')!.append(img) - } + await sleep() + $('.k-img-item') + .get(window.startpage - 1)! + .scrollIntoView({ block: 'start' }) - function detectShouldLoadNextPage() { - const dom = document.scrollingElement! + let observer: IntersectionObserver + function createObserver() { + const activeLineY = 200 - if (dom.scrollHeight <= dom.scrollTop + dom.clientHeight + 2000) { - loadImgInfo() - } - } + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + const idx = parseInt(entry.target.getAttribute('data-idx')!) - function resetDefaultImgDOM() { - const groups = parseI3(document.querySelector('#i3')!.innerHTML) - store[window.startkey] = { - info: { - key: window.startkey, - nl: groups.nl, - src: groups.src, - source: location.pathname, - }, - res: { - i: document.querySelector('#i4 > div')!.outerHTML, - i3: document.querySelector('#i3')!.innerHTML, - n: document.querySelector('#i4 > .sn')!.outerHTML, - i5: document.querySelector('#i5')!.innerHTML, - i6: document.querySelector('#i6')!.innerHTML, - k: window.startkey, - s: location.pathname, + updateBrowserHistory(idx) + detectBoxInView(idx) + } + }) }, + { + rootMargin: `${-activeLineY}px 0px -${ + document.body.clientHeight - activeLineY - 1 + }px 0px`, + } + ) + meta.galleryImages.forEach((galleryImage) => { + observer.observe(galleryImage.container) + }) + return observer + } + observer = createObserver() + + window.addEventListener( + 'resize', + debounce(() => { + observer.disconnect() + observer = createObserver() + }) + ) + + const updateBrowserHistory = throttle((idx: number) => { + if (meta.galleryImages[idx].sourceUrl) { + history.replaceState(null, '', meta.galleryImages[idx].sourceUrl) } + }, 100) - const $img = document.querySelector('#i3 a img')! - $img.removeAttribute('style') - $img.classList.add('auto-load-img') - $img.dataset.imgKey = window.startkey - $img.dataset.source = location.pathname + const detectBoxInView = debounce((idx: number) => { + for (let i = 0; i < meta.galleryImages.length; i++) { + const galleryImage = meta.galleryImages[i] + if (!galleryImage) continue - document.getElementById('i3')!.append($img) - document.querySelector('#i3 a')!.remove() - removeSnAnchor() - } + if (i >= idx - 1 && i < idx + 5) { + if (galleryImage.state === GalleryImageState.Idle) { + galleryImage.state = GalleryImageState.Waiting + } + } else { + if (galleryImage.state === GalleryImageState.Waiting) { + galleryImage.state = GalleryImageState.Idle + } + } + } + }, 100) - document.body.classList.add('e-hentai-infinite-scroll', 's') + while (true) { + const loadedList = meta.galleryImages.filter( + (galleryImage) => galleryImage.state === GalleryImageState.Loaded + ) - resetDefaultImgDOM() - detectShouldLoadNextPage() - document.addEventListener('scroll', () => { - detectShouldLoadNextPage() - updateCurrentInfo() - }) + loadedList.forEach((galleryImage) => { + galleryImage.state = GalleryImageState.Rendered + bindImgLoadState(galleryImage) + }) - const ob = new MutationObserver(() => { - detectShouldLoadNextPage() - }) + const loadingList = meta.galleryImages.filter( + (galleryImage) => galleryImage.state === GalleryImageState.Loading + ) - ob.observe(document.querySelector('#i3')!, { - childList: true, - subtree: true, - attributes: true, - }) -} + if (loadingList.length >= 3) { + await sleep(100) + continue + } -function removeSnAnchor() { - document.querySelectorAll('.sn a[onclick]').forEach((a) => { - a.removeAttribute('onclick') - }) -} -function getCurrentActiveImg() { - const imgs = document.querySelectorAll('#i3 img,#i3 img') - for (const img of imgs) { - const { top, bottom } = img.getBoundingClientRect() - const base = 200 - - if (top < base && bottom > base) { - return img + const waitingList = meta.galleryImages.filter( + (galleryImage) => galleryImage.state === GalleryImageState.Waiting + ) + if (waitingList.length === 0) { + await sleep(100) + continue } + + waitingList + .slice(0, 3 - loadingList.length) + .forEach(async (galleryImage) => { + galleryImage.state = GalleryImageState.Loading + try { + if (!galleryImage.sourceUrl) { + setPlaceholderText(galleryImage, 'Fetch page meta') + try { + const res = await getGalleryPageMeta( + galleryImage.galleryUrl, + galleryImage.page + ) + res.images.forEach((image) => { + meta.galleryImages[image.idx].sourceUrl = image.sourceUrl + }) + } catch (error) { + getGalleryPageMeta.cache.clear?.() + throw new Error('Failed to fetch page meta') + } + } + + if (!galleryImage.imgUrl) { + try { + setPlaceholderText(galleryImage, 'Fetch image url') + const nextKey = galleryImage.sourceUrl.split('/').slice(-2)[0] + const res = await api_call(galleryImage.idx + 1, nextKey) + + galleryImage.imgUrl = parseI3(res.i3).src + } catch (error) { + throw new Error('Failed to fetch image url') + } + } + + galleryImage.state = GalleryImageState.Loaded + } catch (error: any) { + galleryImage.state = GalleryImageState.Waiting + setPlaceholderText(galleryImage, error.message) + } + }) + + await sleep(100) } - return null } -function updateCurrentPathname($img: HTMLImageElement) { - const source = $img.dataset.source - history.replaceState(null, '', source) +interface PageMeta { + pages: number + pageSize: number + images: { + page: number + idx: number + idxInPage: number + sourceUrl: string + }[] } -function updateBottomInfo($img: HTMLImageElement) { - const key = $img.dataset.imgKey! - const { res } = store[key] +const getGalleryPageMeta = memoize(async function getGalleryPageMeta( + galleryUrl: string, + page: number +) { + const url = new URL(galleryUrl) + url.searchParams.set('p', page.toString()) - document.querySelector('#i2')!.innerHTML = res.n + res.i - document.querySelector('#i4')!.innerHTML = res.i + res.n - document.querySelector('#i5')!.innerHTML = res.i5 - document.querySelector('#i6')!.innerHTML = res.i6 - removeSnAnchor() -} + if (session.getItem(url.toString())) { + return session.getItem(url.toString()) as PageMeta + } + + const response = await fetch(url.toString()) + const text = await response.text() + const doc = new DOMParser().parseFromString(text, 'text/html') -const updateCurrentInfo = debounce(function () { - const $img = getCurrentActiveImg() - if (!$img) return + const pages = doc.querySelectorAll('.gtb .ptt td').length - 2 + const pageSize = doc.querySelector('#gdt')!.classList.contains('gt200') + ? 20 + : 40 + local.setItem('e-hentai-infinite-scroll-page-size', pageSize) - const source = $img.dataset.source - if (location.pathname === source) return + const images = Array.from(doc.querySelector('#gdt')!.children).map( + (element, index) => { + const url = $(element).attr('href')! + const idx = parseInt(url.match(/-(\d+)$/)![1]) + + return { + page, + idx: idx - 1, + idxInPage: index, + sourceUrl: url, + } + } + ) - updateCurrentPathname($img) - updateBottomInfo($img) -}, 30) + session.setItem(url.toString(), { pages, pageSize, images }) + return { pages, pageSize, images } +}) export function setup() { setupInfiniteScroll() diff --git a/packages/e-hentai-infinite-scroll/tsconfig.json b/packages/e-hentai-infinite-scroll/tsconfig.json index a19808a..c4c1f5b 100644 --- a/packages/e-hentai-infinite-scroll/tsconfig.json +++ b/packages/e-hentai-infinite-scroll/tsconfig.json @@ -1,4 +1,7 @@ { "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["jquery"] + }, "include": ["src", "../../env.d.ts"] } diff --git a/packages/kakuyomu-translate/CHANGELOG.md b/packages/kakuyomu-translate/CHANGELOG.md deleted file mode 100644 index d78d4f3..0000000 --- a/packages/kakuyomu-translate/CHANGELOG.md +++ /dev/null @@ -1,70 +0,0 @@ -# kakuyomu-translate - -## 2.1.8 - -### Patch Changes - -- Updated dependencies [545887c] - - shared@1.0.6 - -## 2.1.7 - -### Patch Changes - -- Updated dependencies [7b2fa9c] - - shared@1.0.5 - -## 2.1.6 - -### Patch Changes - -- Updated dependencies [77e5e46] - - shared@1.0.4 - -## 2.1.5 - -### Patch Changes - -- 7082d4c: fix: remove ruby selectable - -## 2.1.4 - -### Patch Changes - -- 9fcd6c6: fix: remove ruby selectable - -## 2.1.3 - -### Patch Changes - -- a5ce829: fix: remove ruby selectable - -## 2.1.2 - -### Patch Changes - -- 40001e2: fix: remove unused require - -## 2.1.1 - -### Patch Changes - -- 263713c: feat: support kakuyomu furigana - -## 2.1.0 - -### Minor Changes - -- cc2caa4: feat: auto scroll active episode into view - -## 2.0.1 - -### Patch Changes - -- 3bb2bda: refactor: use broadcastchannel - -## 2.0.0 - -### Major Changes - -- a1468a4: init diff --git a/packages/kakuyomu-translate/README.md b/packages/kakuyomu-translate/README.md deleted file mode 100644 index 6cf0286..0000000 --- a/packages/kakuyomu-translate/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# kakuyomu-translate - -## Install/安装 - -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/kakuyomu-translate.user.js) diff --git a/packages/kakuyomu-translate/meta.template b/packages/kakuyomu-translate/meta.template deleted file mode 100644 index d796bf1..0000000 --- a/packages/kakuyomu-translate/meta.template +++ /dev/null @@ -1,15 +0,0 @@ -// ==UserScript== -// @name kakuyomu-translate -// @namespace https://github.com/IronKinoko/userscripts/tree/master/packages/kakuyomu-translate -// @version #version# -// @license MIT -// @description #description# -// @author IronKinoko -// @match https://kakuyomu.jp/* -// @icon https://www.google.com/s2/favicons?sz=64&domain=kakuyomu.jp -// @grant none -// @noframes -// @require https://unpkg.com/jquery@3.6.1/dist/jquery.min.js -// @downloadURL https://github.com/IronKinoko/userscripts/raw/dist/kakuyomu-translate.user.js -// @updateURL https://github.com/IronKinoko/userscripts/raw/dist/kakuyomu-translate.user.js -// ==/UserScript== \ No newline at end of file diff --git a/packages/kakuyomu-translate/package.json b/packages/kakuyomu-translate/package.json deleted file mode 100644 index 18f7a8d..0000000 --- a/packages/kakuyomu-translate/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "kakuyomu-translate", - "version": "2.1.8", - "description": "", - "main": "index.js", - "scripts": { - "dev": "bocchi dev", - "build": "bocchi build" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/IronKinoko/userscripts.git" - }, - "keywords": [], - "author": "IronKinoko ", - "license": "MIT", - "bugs": { - "url": "https://github.com/IronKinoko/userscripts/issues" - }, - "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/kakuyomu-translate#readme", - "dependencies": { - "shared": "workspace:*" - } -} diff --git a/packages/kakuyomu-translate/src/episodes.ts b/packages/kakuyomu-translate/src/episodes.ts deleted file mode 100644 index 9ed3f67..0000000 --- a/packages/kakuyomu-translate/src/episodes.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { waitDOM } from 'shared' - -type Payload = - | { type: 'focus'; id: string; top: number } - | { type: 'blur'; id: string } - | { type: 'jump'; href: string } - -export default async function main() { - autoScrollIntoView() - broadcastHoverText() - autoFurigana() -} - -function broadcastHoverText() { - let channel = new BroadcastChannel('kakuyomu-translate') - - $('.widget-episodeBody') - .children() - .each((i, dom) => { - const id = dom.id - dom.addEventListener('mouseenter', () => { - const top = dom.getBoundingClientRect().top - - channel.postMessage({ type: 'focus', id, top }) - }) - dom.addEventListener('mouseleave', () => { - channel.postMessage({ type: 'blur', id }) - }) - }) - - $('#contentMain-nextEpisode a, #contentMain-previousEpisode a').on( - 'click', - (e) => { - channel.postMessage({ - type: 'jump', - href: e.currentTarget.getAttribute('href'), - }) - } - ) - - handleMessage(channel) -} - -async function handleMessage(channel: BroadcastChannel) { - channel.addEventListener('message', (e) => { - const data: Payload = e.data - - if (data.type === 'focus') { - const dom = document.getElementById(data.id)! - const rect = dom.getBoundingClientRect() - window.scrollBy({ top: rect.y - data.top, behavior: 'smooth' }) - } - - if (data.type === 'jump') { - window.location.href = data.href - } - }) -} - -async function autoScrollIntoView() { - const asideEl = await waitDOM('#contentAside') - - const detect = () => { - const activeEpisodeEl = asideEl.querySelector( - '.widget-toc-main .widget-toc-items .widget-toc-episode.isHighlighted' - ) - - if (!activeEpisodeEl) return - - activeEpisodeEl.scrollIntoView({ block: 'center' }) - ob.disconnect() - } - - const ob = new MutationObserver(detect) - ob.observe(asideEl, { childList: true }) -} - -async function autoFurigana() { - const article = await queryArticleFurigana() - - if (article) { - document.querySelector('#contentMain-inner')!.outerHTML = article - - document.body.addEventListener('dblclick', () => { - $('body').toggleClass('ruby-hidden') - }) - } -} - -async function queryArticleFurigana() { - const [, workId, episodeId] = window.location.pathname.match( - /works\/(.*)\/episodes\/(.*)/ - )! - - const url = `https://userscripts-proxy.vercel.app/api/kakuyomu/furigana?workId=${workId}&episodeId=${episodeId}` - - try { - const data = await fetch(url).then((r) => r.json()) - if (!data.ok) throw new Error(data.message) - return data.html as string - } catch (error: any) { - console.error(error) - alert(`接口调用失败 ${error.message}`) - return null - } -} diff --git a/packages/kakuyomu-translate/src/index.scss b/packages/kakuyomu-translate/src/index.scss deleted file mode 100644 index d73c695..0000000 --- a/packages/kakuyomu-translate/src/index.scss +++ /dev/null @@ -1,20 +0,0 @@ -html[lang='zh-CN'] { - .widget-episodeBody { - font { - font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', - Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', - sans-serif; - } - } -} - -ruby rt { - -webkit-user-select: none; - user-select: none; -} - -.ruby-hidden { - ruby rt { - display: none; - } -} diff --git a/packages/kakuyomu-translate/src/index.ts b/packages/kakuyomu-translate/src/index.ts deleted file mode 100644 index 6e60c9b..0000000 --- a/packages/kakuyomu-translate/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import './index.scss' - -import { router } from 'shared' -import episodes from './episodes' - -router([{ path: /works\/.*\/episodes\/.*/, run: episodes }]) diff --git a/packages/kakuyomu-translate/tsconfig.json b/packages/kakuyomu-translate/tsconfig.json deleted file mode 100644 index a19808a..0000000 --- a/packages/kakuyomu-translate/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "../../env.d.ts"] -} diff --git a/packages/linovelib/CHANGELOG.md b/packages/linovelib/CHANGELOG.md deleted file mode 100644 index c799fb1..0000000 --- a/packages/linovelib/CHANGELOG.md +++ /dev/null @@ -1,100 +0,0 @@ -# linovelib - -## 1.4.8 - -### Patch Changes - -- 105ebe2: fix: adblock - -## 1.4.7 - -### Patch Changes - -- 9a0899c: fix: support new domain - -## 1.4.6 - -### Patch Changes - -- 59190d9: chore: remove unused code - -## 1.4.5 - -### Patch Changes - -- Updated dependencies [545887c] - - shared@1.0.6 - -## 1.4.4 - -### Patch Changes - -- Updated dependencies [7b2fa9c] - - shared@1.0.5 - -## 1.4.3 - -### Patch Changes - -- Updated dependencies [77e5e46] - - shared@1.0.4 - -## 1.4.2 - -### Patch Changes - -- b3ceb34: fix: remove @require jquery - -## 1.4.1 - -### Patch Changes - -- 143b321: fix: remove epub download button in main page - -## 1.4.0 - -### Minor Changes - -- 2f14b36: feat: support download section epub - -## 1.3.0 - -### Minor Changes - -- 4d40fd0: feat: support shortcuts - -## 1.2.0 - -### Minor Changes - -- 7a76293: feat: support epub download - -## 1.1.1 - -### Patch Changes - -- a4be1e8: feat: support long press - -## 1.1.0 - -### Minor Changes - -- feat: support pc - -## 1.0.3 - -### Patch Changes - -- ab5c072: fix: disabled swipe when user scale view - -## 1.0.2 - -### Patch Changes - -- c6c27b2: feat: support ipad - -## 1.0.1 - -### Patch Changes - -- 3d354a4: fix: prevent y scroll diff --git a/packages/linovelib/README.md b/packages/linovelib/README.md deleted file mode 100644 index 38bbb68..0000000 --- a/packages/linovelib/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# linovelib - -## Install/安装 - -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/linovelib.user.js) - -## feat/功能 - -- 左右换页模式支持左右滑动手势切换页码 diff --git a/packages/linovelib/meta.template b/packages/linovelib/meta.template deleted file mode 100644 index 5fd9c3b..0000000 --- a/packages/linovelib/meta.template +++ /dev/null @@ -1,16 +0,0 @@ -// ==UserScript== -// @name linovelib -// @namespace https://github.com/IronKinoko/userscripts/tree/master/packages/linovelib -// @version #version# -// @license MIT -// @description #description# -// @author IronKinoko -// @match https://www.linovelib.com/* -// @match https://w.linovelib.com/* -// @match https://www.bilinovel.com/* -// @icon https://www.google.com/s2/favicons?domain=w.linovelib.com -// @grant none -// @noframes -// @downloadURL https://github.com/IronKinoko/userscripts/raw/dist/linovelib.user.js -// @updateURL https://github.com/IronKinoko/userscripts/raw/dist/linovelib.user.js -// ==/UserScript== \ No newline at end of file diff --git a/packages/linovelib/package.json b/packages/linovelib/package.json deleted file mode 100644 index e2d8c54..0000000 --- a/packages/linovelib/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "linovelib", - "version": "1.4.8", - "description": "优化 linovelib 阅读体验", - "main": "index.js", - "scripts": { - "dev": "bocchi dev", - "build": "bocchi build" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/IronKinoko/userscripts.git" - }, - "keywords": [], - "author": "IronKinoko ", - "license": "MIT", - "bugs": { - "url": "https://github.com/IronKinoko/userscripts/issues" - }, - "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/linovelib#readme", - "dependencies": { - "shared": "workspace:*" - } -} diff --git a/packages/linovelib/src/h5/index.ts b/packages/linovelib/src/h5/index.ts deleted file mode 100644 index 77d7232..0000000 --- a/packages/linovelib/src/h5/index.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { isMobile, keybind, router, waitDOM } from 'shared' - -export default async function main() { - if (!window.ReadTools) return - resetPageEvent() - - if (isMobile()) injectMovePageEvent() - else injectShortcuts() -} - -export async function fixADBlock() { - const res = await fetch(window.location.href) - const text = await res.text() - const html = new DOMParser().parseFromString(text, 'text/html') - const volumes = html.querySelector('#volumes') - if (!volumes) return - - document.querySelector('#volumes')?.replaceWith(volumes) - - try { - document.getElementById( - 'bookmarkX' - // @ts-ignore - )!.innerHTML = `
    阅读进度
    ${targetRecord.chaptername}` - } catch (error) {} -} - -function resetPageEvent() { - const $body = document.body - $body.onclick = (e) => { - const toolsId = ['#toptools', '#bottomtools', '#readset'] - if ( - toolsId.some((id) => - document.querySelector(id)?.contains(e.target as Node) - ) - ) { - return - } - window.ReadPages.PageClick() - } -} - -function injectMovePageEvent() { - let left: number, - startX: number, - startY: number, - diffX: number, - startTime: number, - isMoved: boolean, - direction: 'x' | 'y' | '' - const $page = document.getElementById('apage')! - - const isDisabled = (e: TouchEvent) => { - return ( - window.ReadTools.pagemid != 1 || - e.touches.length > 1 || - (window.visualViewport && window.visualViewport.scale !== 1) || - (window.getSelection() && window.getSelection()!.toString().length > 0) - ) - } - - window.addEventListener('touchstart', (e) => { - if (isDisabled(e)) return - - left = parseFloat($page.style.left.replace('px', '')) || 0 - startX = e.touches[0].clientX - startY = e.touches[0].clientY - startTime = Date.now() - isMoved = false - direction = '' - }) - window.addEventListener( - 'touchmove', - (e) => { - if (isDisabled(e)) return - - isMoved = true - diffX = e.touches[0].clientX - startX - let diffY = e.touches[0].clientY - startY - - if (direction === '') { - direction = Math.abs(diffX) > Math.abs(diffY) ? 'x' : 'y' - } - if (direction === 'x') { - e.preventDefault() - - $page.style.left = left + diffX + 'px' - $page.style.transition = 'initail' - } - }, - { passive: false } - ) - window.addEventListener('touchend', (e) => { - if (isDisabled(e)) return - - if (!isMoved || direction === 'y') return - - const diffTime = Date.now() - startTime - - const threshold = - diffTime < 300 ? 10 : document.documentElement.clientWidth * 0.3 - - $page.style.transition = '' - if (Math.abs(diffX) > threshold) { - const type = diffX > 0 ? 'previous' : 'next' - window.ReadPages.ShowPage(type) - - if ( - window.ReadPages.currentPage > window.ReadPages.totalPages || - window.ReadPages.currentPage < 1 - ) { - window.ReadPages.ShowPage() - } - } else { - window.ReadPages.ShowPage() - } - }) -} - -function injectShortcuts() { - keybind(['a', 's', 'w', 'd', 'space', 'shift+space'], (e, key) => { - if (window.ReadTools.pagemid != 1) return - - switch (key) { - case 'shift+space': - case 'a': - case 'w': - window.ReadPages.ShowPage('previous') - - break - - case 'space': - case 'd': - case 's': - window.ReadPages.ShowPage('next') - - break - - default: - break - } - }) -} diff --git a/packages/linovelib/src/index.scss b/packages/linovelib/src/index.scss deleted file mode 100644 index 29d7d7b..0000000 --- a/packages/linovelib/src/index.scss +++ /dev/null @@ -1,52 +0,0 @@ -.k-wrapper { - #catelogX .module-header-r { - min-width: 0; - .module-header-btn { - position: static; - padding: 0; - } - } - #volumes { - .chapter-bar { - display: flex; - justify-content: space-between; - align-items: center; - position: relative; - &::after { - content: none; - } - .download-btn { - border-radius: 4px; - background-color: rgba(255, 57, 84, 0.1); - padding: 4px 12px; - font-weight: 500; - color: #ff3955; - border: 0; - white-space: nowrap; - margin-left: 16px; - &::after { - content: '下载'; - } - &:disabled { - opacity: 0.5; - &::after { - content: '下载中...'; - } - } - } - .progress, - .progress > div { - position: absolute; - pointer-events: none; - left: 0; - right: 0; - bottom: 0; - top: 0; - } - .progress > div { - background-color: rgba(255, 57, 84, 0.1); - transition: all 0.2s linear; - } - } - } -} diff --git a/packages/linovelib/src/index.ts b/packages/linovelib/src/index.ts deleted file mode 100644 index 98085ef..0000000 --- a/packages/linovelib/src/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import h5, { fixADBlock } from './h5' -import pc from './pc' -import './index.scss' -import { router } from 'shared' - -document.body.classList.add('k-wrapper') - -router({ domain: ['//www.linovelib.com'], routes: [{ run: pc }] }) -router({ - domain: ['//w.linovelib.com', '//www.bilinovel.com'], - routes: [ - { run: h5 }, - { - pathname: /(\/novel\/.*\/catalog)|(\/download\/.*\.html)/, - run: fixADBlock, - }, - ], -}) diff --git a/packages/linovelib/src/pc/index.ts b/packages/linovelib/src/pc/index.ts deleted file mode 100644 index 6acac13..0000000 --- a/packages/linovelib/src/pc/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { keybind } from 'shared' - -export default function main() { - removeSelectEvent() - - if (document.body.id === 'readbg') { - injectEvent() - } -} - -function removeSelectEvent() { - const dom = document.createElement('style') - dom.innerHTML = `* { user-select: initial !important; }` - document.body.append(dom) - - document.body.removeAttribute('onselectstart') -} - -function injectEvent() { - const scripts = Array.from(document.scripts) - const script = scripts.find((script) => - script.innerHTML.includes('prevpage="') - ) - - if (!script) return - - const res = script.innerHTML.match( - /prevpage="(?
    .*?)";.*nextpage="(?.*?)";/
    -  )
    -
    -  if (!res?.groups) return
    -
    -  const { pre, next } = res.groups
    -
    -  keybind(
    -    ['w', 's', 'a', 'd'],
    -    (e, key) => {
    -      switch (key) {
    -        case 'w':
    -        case 's':
    -          const direction = key === 'w' ? -1 : 1
    -          if (e.repeat) scroll.start(direction * 15)
    -          else window.scrollBy({ behavior: 'smooth', top: direction * 200 })
    -          break
    -        case 'a':
    -        case 'd':
    -          window.location.pathname = key === 'a' ? pre : next
    -          break
    -      }
    -    },
    -    (e, key) => {
    -      switch (key) {
    -        case 'w':
    -        case 's':
    -          scroll.stop()
    -          break
    -      }
    -    }
    -  )
    -}
    -
    -const scroll = (() => {
    -  let handle: number | undefined
    -
    -  function stop() {
    -    if (!handle) return
    -    cancelAnimationFrame(handle)
    -    handle = undefined
    -  }
    -
    -  function start(step: number) {
    -    if (handle) return
    -
    -    function animate() {
    -      handle = requestAnimationFrame(animate)
    -
    -      window.scrollBy({ top: step })
    -    }
    -
    -    handle = requestAnimationFrame(animate)
    -  }
    -  return { start, stop }
    -})()
    diff --git a/packages/linovelib/tsconfig.json b/packages/linovelib/tsconfig.json
    deleted file mode 100644
    index a19808a..0000000
    --- a/packages/linovelib/tsconfig.json
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -{
    -  "extends": "../../tsconfig.json",
    -  "include": ["src", "../../env.d.ts"]
    -}
    diff --git a/packages/manhuagui/CHANGELOG.md b/packages/manhuagui/CHANGELOG.md
    deleted file mode 100644
    index 08a51bc..0000000
    --- a/packages/manhuagui/CHANGELOG.md
    +++ /dev/null
    @@ -1,46 +0,0 @@
    -# manhuagui
    -
    -## 1.0.7
    -
    -### Patch Changes
    -
    -- Updated dependencies [545887c]
    -  - shared@1.0.6
    -
    -## 1.0.6
    -
    -### Patch Changes
    -
    -- Updated dependencies [7b2fa9c]
    -  - shared@1.0.5
    -
    -## 1.0.5
    -
    -### Patch Changes
    -
    -- Updated dependencies [77e5e46]
    -  - shared@1.0.4
    -
    -## 1.0.4
    -
    -### Patch Changes
    -
    -- 7f5e2e2: fix: revert next btn
    -
    -## 1.0.3
    -
    -### Patch Changes
    -
    -- fix: top position fix
    -
    -## 1.0.2
    -
    -### Patch Changes
    -
    -- feat: add next btn
    -
    -## 1.0.1
    -
    -### Patch Changes
    -
    -- 6e9a663: feat: show big btn in h5
    diff --git a/packages/manhuagui/README.md b/packages/manhuagui/README.md
    deleted file mode 100644
    index b10bc6e..0000000
    --- a/packages/manhuagui/README.md
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -# manhuagui
    -
    -## Install/安装
    -
    -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/manhuagui.user.js)
    diff --git a/packages/manhuagui/meta.template b/packages/manhuagui/meta.template
    deleted file mode 100644
    index 19feae0..0000000
    --- a/packages/manhuagui/meta.template
    +++ /dev/null
    @@ -1,15 +0,0 @@
    -// ==UserScript==
    -// @name         manhuagui
    -// @namespace    https://github.com/IronKinoko/userscripts/tree/master/packages/manhuagui
    -// @version      #version#
    -// @license      MIT
    -// @description  #description#
    -// @author       IronKinoko
    -// @match        https://www.manhuagui.com/comic/*
    -// @icon         https://www.google.com/s2/favicons?domain=manhuagui.com
    -// @grant        none
    -// @noframes
    -// @require      https://unpkg.com/jquery@3.6.1/dist/jquery.min.js
    -// @downloadURL  https://github.com/IronKinoko/userscripts/raw/dist/manhuagui.user.js
    -// @updateURL    https://github.com/IronKinoko/userscripts/raw/dist/manhuagui.user.js
    -// ==/UserScript==
    \ No newline at end of file
    diff --git a/packages/manhuagui/package.json b/packages/manhuagui/package.json
    deleted file mode 100644
    index f2db87b..0000000
    --- a/packages/manhuagui/package.json
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -{
    -  "name": "manhuagui",
    -  "version": "1.0.7",
    -  "description": "enhance manhuagui",
    -  "main": "index.js",
    -  "scripts": {
    -    "dev": "bocchi dev",
    -    "build": "bocchi build"
    -  },
    -  "repository": {
    -    "type": "git",
    -    "url": "git+https://github.com/IronKinoko/userscripts.git"
    -  },
    -  "keywords": [],
    -  "author": "IronKinoko ",
    -  "license": "MIT",
    -  "bugs": {
    -    "url": "https://github.com/IronKinoko/userscripts/issues"
    -  },
    -  "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/manhuagui#readme",
    -  "dependencies": {
    -    "shared": "workspace:*"
    -  }
    -}
    diff --git a/packages/manhuagui/src/index.scss b/packages/manhuagui/src/index.scss
    deleted file mode 100644
    index 84ed0a9..0000000
    --- a/packages/manhuagui/src/index.scss
    +++ /dev/null
    @@ -1,54 +0,0 @@
    -.k-custom-btn.k-custom-btn {
    -  text-indent: 0;
    -  background: #b5b5b5;
    -  color: white;
    -  line-height: 40px;
    -  text-align: center;
    -  text-decoration: none;
    -  &:hover {
    -    background: #c00f20;
    -  }
    -}
    -.backToTop {
    -  height: auto !important;
    -}
    -.tbCenter {
    -  border: none !important;
    -  background: none !important;
    -}
    -[data-tag='mangaFile'] {
    -  width: 980px !important;
    -}
    -
    -.big-h5-btn {
    -  width: calc(100% - 72px);
    -  display: block;
    -  height: 100px;
    -  background-color: #c00f20;
    -  color: white;
    -  font-size: 36px;
    -  margin: 36px auto;
    -  outline: 0;
    -  border: #c00f20;
    -}
    -
    -.next-part-btn-fixed {
    -  position: fixed;
    -  right: 0;
    -  top: 25vh;
    -  font-size: 4.27vw;
    -  background: white;
    -  padding: 2.13vw;
    -  writing-mode: vertical-lr;
    -  box-shadow: rgba(0, 0, 0, 0.2) -0.27vw 0.27vw 2.67vw 0vw;
    -  transition: all 0.2s ease;
    -  transform: translateX(0);
    -  border-radius: 1.07vw 0 0 1.07vw;
    -  opacity: 1;
    -
    -  &.hide {
    -    opacity: 0;
    -    pointer-events: none;
    -    transform: translateX(100%);
    -  }
    -}
    diff --git a/packages/manhuagui/src/index.ts b/packages/manhuagui/src/index.ts
    deleted file mode 100644
    index 8d5992a..0000000
    --- a/packages/manhuagui/src/index.ts
    +++ /dev/null
    @@ -1,65 +0,0 @@
    -import { isMobile, waitDOM } from 'shared'
    -import './index.scss'
    -;(async () => {
    -  document.oncontextmenu = null
    -  createNextBtn()
    -  createFullScreen()
    -
    -  if (isMobile()) {
    -    createNextBtnInH5()
    -  }
    -})()
    -
    -async function createNextBtn() {
    -  const dom = await waitDOM('.backToTop')
    -  const a = document.createElement('a')
    -  a.innerHTML = 'NEXT'
    -  a.className = 'k-custom-btn'
    -  a.id = 'show-next'
    -  a.href = 'javascript:;'
    -  a.onclick = window.SMH.nextC
    -  dom.append(a)
    -}
    -
    -async function createFullScreen() {
    -  const dom = await waitDOM('.backToTop')
    -  const a = document.createElement('a')
    -  a.innerHTML = 'FULL'
    -  a.className = 'k-custom-btn'
    -  a.id = 'full-btn'
    -  a.href = 'javascript:;'
    -  a.onclick = () => {
    -    if (document.fullscreenElement) {
    -      document.exitFullscreen()
    -      a.innerHTML = 'FULL'
    -    } else {
    -      document.documentElement.requestFullscreen()
    -      a.innerHTML = 'EXIT'
    -    }
    -  }
    -  dom.append(a)
    -
    -  document.addEventListener('keypress', (e) => {
    -    if (
    -      document.activeElement &&
    -      /textarea|input|select/i.test(document.activeElement.tagName)
    -    ) {
    -      return
    -    }
    -    if (e.key === 'f') {
    -      a.click()
    -    }
    -  })
    -}
    -
    -async function createNextBtnInH5() {
    -  const $pagination = await waitDOM('#pagination')
    -  $pagination.innerHTML = ''
    -
    -  const btn = document.createElement('button')
    -  btn.className = 'big-h5-btn'
    -  btn.textContent = '下一章'
    -  btn.onclick = () => window.SMH.nextC()
    -
    -  $pagination.replaceWith(btn)
    -}
    diff --git a/packages/manhuagui/tsconfig.json b/packages/manhuagui/tsconfig.json
    deleted file mode 100644
    index a19808a..0000000
    --- a/packages/manhuagui/tsconfig.json
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -{
    -  "extends": "../../tsconfig.json",
    -  "include": ["src", "../../env.d.ts"]
    -}
    diff --git a/packages/mikanani/README.md b/packages/mikanani/README.md
    deleted file mode 100644
    index 7c32849..0000000
    --- a/packages/mikanani/README.md
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -# mikanani
    -
    -## Install/安装
    -
    -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/mikanani.user.js)
    diff --git a/packages/mikanani/meta.template b/packages/mikanani/meta.template
    deleted file mode 100644
    index 4a87ff7..0000000
    --- a/packages/mikanani/meta.template
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -// ==UserScript==
    -// @name         mikanani
    -// @namespace    https://github.com/IronKinoko/userscripts/tree/master/packages/mikanani
    -// @version      #version#
    -// @license      MIT
    -// @description  #description#
    -// @author       IronKinoko
    -// @match        https://mikanani.me/*
    -// @icon         https://www.google.com/s2/favicons?sz=64&domain=mikanani.me
    -// @grant        none
    -// @noframes
    -// @downloadURL  https://github.com/IronKinoko/userscripts/raw/dist/mikanani.user.js
    -// @updateURL    https://github.com/IronKinoko/userscripts/raw/dist/mikanani.user.js
    -// ==/UserScript==
    \ No newline at end of file
    diff --git a/packages/mikanani/package.json b/packages/mikanani/package.json
    deleted file mode 100644
    index c34b43c..0000000
    --- a/packages/mikanani/package.json
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -{
    -  "name": "mikanani",
    -  "version": "1.0.0",
    -  "description": "",
    -  "main": "index.js",
    -  "scripts": {
    -    "dev": "bocchi dev",
    -    "build": "bocchi build"
    -  },
    -  "repository": {
    -    "type": "git",
    -    "url": "git+https://github.com/IronKinoko/userscripts.git"
    -  },
    -  "keywords": [],
    -  "author": "IronKinoko ",
    -  "license": "MIT",
    -  "bugs": {
    -    "url": "https://github.com/IronKinoko/userscripts/issues"
    -  },
    -  "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/mikanani#readme",
    -  "devDependencies": {
    -    "shared": "workspace:*"
    -  }
    -}
    diff --git a/packages/mikanani/src/home.ts b/packages/mikanani/src/home.ts
    deleted file mode 100644
    index 2cf8ddc..0000000
    --- a/packages/mikanani/src/home.ts
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -import { copy } from 'shared'
    -
    -export function home() {
    -  addGlobalClickListener()
    -}
    -
    -function addGlobalClickListener() {
    -  document.addEventListener(
    -    'click',
    -    (e) => {
    -      const target = e.target as HTMLElement
    -      if (target.matches('.js-subscribe_bangumi')) {
    -        e.stopPropagation()
    -
    -        const bangumiId = target.getAttribute('data-bangumiid')
    -        const subtitlegroupId = target.getAttribute('data-subtitlegroupid')
    -
    -        const rss = `https://mikanani.me/RSS/Bangumi?bangumiId=${bangumiId}&subgroupid=${subtitlegroupId}`
    -        copy(rss)
    -
    -        target.innerHTML = 'OK'
    -        target.classList.add('active')
    -        setTimeout(() => {
    -          target.innerHTML = '订'
    -          target.classList.remove('active')
    -        }, 1000)
    -      }
    -    },
    -    { capture: true }
    -  )
    -}
    diff --git a/packages/mikanani/src/index.ts b/packages/mikanani/src/index.ts
    deleted file mode 100644
    index 6cdc671..0000000
    --- a/packages/mikanani/src/index.ts
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -import { router } from 'shared'
    -import { home } from './home'
    -
    -router([{ pathname: /^\/$/, run: home }])
    diff --git a/packages/mikanani/tsconfig.json b/packages/mikanani/tsconfig.json
    deleted file mode 100644
    index a19808a..0000000
    --- a/packages/mikanani/tsconfig.json
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -{
    -  "extends": "../../tsconfig.json",
    -  "include": ["src", "../../env.d.ts"]
    -}
    diff --git a/packages/miscellaneous/CHANGELOG.md b/packages/miscellaneous/CHANGELOG.md
    new file mode 100644
    index 0000000..b720460
    --- /dev/null
    +++ b/packages/miscellaneous/CHANGELOG.md
    @@ -0,0 +1,43 @@
    +# miscellaneous
    +
    +## 1.2.0
    +
    +### Minor Changes
    +
    +- 270cac1: feat: 增加 x gif 下载
    +
    +## 1.1.5
    +
    +### Patch Changes
    +
    +- 4e93cd1: fix: 修复解析
    +
    +## 1.1.4
    +
    +### Patch Changes
    +
    +- 3c769d3: fix: 修复 game520 适配
    +
    +## 1.1.3
    +
    +### Patch Changes
    +
    +- 8a352e7: feat: 更新游戏网站二维码解码规则
    +
    +## 1.1.2
    +
    +### Patch Changes
    +
    +- d5efa3e: fix: 修复百度网盘链接匹配逻辑
    +
    +## 1.1.1
    +
    +### Patch Changes
    +
    +- 40bbfdb: fix: 修复 acggw 适配
    +
    +## 1.1.0
    +
    +### Minor Changes
    +
    +- b36f78d: feat: 重构代码结构,增加 baidu 与 acggw 相关功能
    diff --git a/packages/twitter/README.md b/packages/miscellaneous/README.md
    similarity index 64%
    rename from packages/twitter/README.md
    rename to packages/miscellaneous/README.md
    index 94075a7..9786540 100644
    --- a/packages/twitter/README.md
    +++ b/packages/miscellaneous/README.md
    @@ -1,5 +1,5 @@
    -# twitter
    +# miscellaneous
     
     ## Install/安装
     
    -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/twitter.user.js)
    +[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/miscellaneous.user.js)
    diff --git a/packages/miscellaneous/meta.template b/packages/miscellaneous/meta.template
    new file mode 100644
    index 0000000..b01cc02
    --- /dev/null
    +++ b/packages/miscellaneous/meta.template
    @@ -0,0 +1,24 @@
    +// ==UserScript==
    +// @name         miscellaneous
    +// @namespace    https://github.com/IronKinoko/userscripts/tree/master/packages/miscellaneous
    +// @version      #version#
    +// @license      MIT
    +// @description  #description#
    +// @author       IronKinoko
    +// @match        https://c.pc.qq.com/*
    +// @match        https://pan.baidu.com/share/init*
    +// @match        https://www.acggw.me/*
    +// @match        https://acgxj.com/*
    +// @match        https://xj.steamzg.com/*
    +// @match        https://acfb.top/*
    +// @match        https://gamers520.com/*
    +// @match        https://x.com/*
    +// @icon         https://q.qlogo.cn/g?b=qq&nk=707819027&s=100
    +// @require      https://unpkg.com/jsqr@1.4.0/dist/jsQR.js
    +// @grant        GM_xmlhttpRequest
    +// @grant        GM_download
    +// @connect      convertico.com
    +// @noframes
    +// @downloadURL  https://github.com/IronKinoko/userscripts/raw/dist/miscellaneous.user.js
    +// @updateURL    https://github.com/IronKinoko/userscripts/raw/dist/miscellaneous.user.js
    +// ==/UserScript==
    diff --git a/packages/18comic/package.json b/packages/miscellaneous/package.json
    similarity index 66%
    rename from packages/18comic/package.json
    rename to packages/miscellaneous/package.json
    index 92b00e0..e895c18 100644
    --- a/packages/18comic/package.json
    +++ b/packages/miscellaneous/package.json
    @@ -1,7 +1,7 @@
     {
    -  "name": "18comic",
    -  "version": "1.0.1",
    -  "description": "",
    +  "name": "miscellaneous",
    +  "version": "1.2.0",
    +  "description": "杂项,所有无法归类的脚本都放在这里",
       "main": "index.js",
       "scripts": {
         "dev": "bocchi dev",
    @@ -17,7 +17,13 @@
       "bugs": {
         "url": "https://github.com/IronKinoko/userscripts/issues"
       },
    -  "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/18comic#readme",
    +  "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/miscellaneous#readme",
    +  "globals": {
    +    "jsqr": "jsQR"
    +  },
    +  "dependencies": {
    +    "jsqr": "^1.4.0"
    +  },
       "devDependencies": {
         "shared": "workspace:*"
       }
    diff --git a/packages/miscellaneous/src/index.ts b/packages/miscellaneous/src/index.ts
    new file mode 100644
    index 0000000..5814edd
    --- /dev/null
    +++ b/packages/miscellaneous/src/index.ts
    @@ -0,0 +1,6 @@
    +import './modules/acggw'
    +import './modules/baidu'
    +import './modules/qq'
    +import './modules/steamzg'
    +import './modules/gamers520'
    +import './modules/x'
    diff --git a/packages/miscellaneous/src/modules/acggw.ts b/packages/miscellaneous/src/modules/acggw.ts
    new file mode 100644
    index 0000000..006aab2
    --- /dev/null
    +++ b/packages/miscellaneous/src/modules/acggw.ts
    @@ -0,0 +1,51 @@
    +import { router, waitDOM } from 'shared'
    +
    +router({
    +  domain: 'acggw.me',
    +  routes: [{ path: /\d+\.html/, run: linkMergePassword }],
    +})
    +
    +async function linkMergePassword() {
    +  const lines = Array.from(document.querySelectorAll('.content .single > p'))
    +
    +  function makeLink(line: Element) {
    +    const urlMatch = line.textContent?.match(/(https?:\/\/\S+)/)
    +    if (urlMatch) {
    +      const url = urlMatch[0]
    +      const a = document.createElement('a')
    +      a.href = url
    +      a.textContent = url
    +      a.target = '_blank'
    +      a.style.textDecoration = 'underline'
    +      line.textContent = line.textContent.replace(url, '')
    +      line.appendChild(a)
    +    }
    +  }
    +
    +  // mega
    +  const mega = lines.filter((line) => line.textContent.includes('M盘'))
    +  if (mega.length === 2) {
    +    const [linkLine, pwdLine] = mega
    +    linkLine.textContent = `${linkLine.textContent}#${pwdLine.textContent
    +      .split(/:|:/)
    +      .pop()
    +      ?.trim()}`
    +
    +    makeLink(linkLine)
    +  }
    +
    +  // 百度网盘
    +  const baidu = lines.filter((line) =>
    +    line.textContent.match(/pan\.baidu\.com|提取码/)
    +  )
    +  if ([2, 3].includes(baidu.length)) {
    +    const linkLine = baidu[0]
    +    const pwdLine = baidu[baidu.length - 1]
    +    linkLine.textContent = `${linkLine.textContent}?pwd=${pwdLine.textContent
    +      .split(/:|:/)
    +      .pop()
    +      ?.trim()}`
    +
    +    makeLink(linkLine)
    +  }
    +}
    diff --git a/packages/xxxxx520/src/baidu.ts b/packages/miscellaneous/src/modules/baidu.ts
    similarity index 52%
    rename from packages/xxxxx520/src/baidu.ts
    rename to packages/miscellaneous/src/modules/baidu.ts
    index cb36f55..79d3d3d 100644
    --- a/packages/xxxxx520/src/baidu.ts
    +++ b/packages/miscellaneous/src/modules/baidu.ts
    @@ -1,6 +1,11 @@
    -import { waitDOM } from 'shared'
    +import { router, waitDOM } from 'shared'
     
    -export default async function main() {
    +router({
    +  domain: 'pan.baidu.com',
    +  routes: [{ path: '/share/init', run: autoSubmit }],
    +})
    +
    +async function autoSubmit() {
       const url = new URL(window.location.href)
       const pwd = url.searchParams.get('pwd')
       if (!pwd) return
    diff --git a/packages/miscellaneous/src/modules/gamers520.ts b/packages/miscellaneous/src/modules/gamers520.ts
    new file mode 100644
    index 0000000..33c60e6
    --- /dev/null
    +++ b/packages/miscellaneous/src/modules/gamers520.ts
    @@ -0,0 +1,66 @@
    +import jsQR from 'jsqr'
    +import { router } from 'shared'
    +
    +router({
    +  domain: ['gamers520.com'],
    +  routes: [{ run: main }],
    +})
    +
    +function main() {
    +  parseQRCode()
    +  parseQRCode2()
    +}
    +
    +function parseQRCode() {
    +  const imgList = document.querySelectorAll(
    +    '.bdp-qrcode-box img'
    +  )
    +  imgList.forEach((img) => {
    +    const sourceUrl = new URL(img.src)
    +    const url = sourceUrl.searchParams.get('data')
    +    if (!url) return
    +
    +    const node = img.parentElement?.nextSibling as HTMLElement
    +
    +    const btn = document.createElement('div')
    +    node.insertAdjacentElement('afterend', btn)
    +    btn.outerHTML = ``
    +
    +    node.remove()
    +    img.parentElement?.remove()
    +  })
    +}
    +
    +function parseQRCode2() {
    +  const imgList = document.querySelectorAll('.wpkqcg_qrcode')
    +  imgList.forEach((img) => {
    +    const canvas = document.createElement('canvas')
    +    const ctx = canvas.getContext('2d')!
    +    canvas.width = img.width
    +    canvas.height = img.height
    +    ctx.drawImage(img, 0, 0, img.width, img.height)
    +    const imageData = ctx.getImageData(0, 0, img.width, img.height)
    +
    +    const res = jsQR(imageData.data, imageData.width, imageData.height)
    +
    +    if (!res) return
    +
    +    if (res.data.includes('pan.baidu.com')) {
    +      const matched = document.body.innerText.match(/提取码[::]?\s*(\w{4})/)
    +      if (matched) {
    +        const url = new URL(res.data)
    +        url.searchParams.set('pwd', matched[1])
    +        res.data = url.toString()
    +      }
    +    }
    +
    +    const link = document.createElement('a')
    +    link.href = res.data
    +    link.target = '_blank'
    +    link.textContent = res.data
    +    const div = document.createElement('div')
    +    div.append(link)
    +    img.parentElement?.appendChild(div)
    +  })
    +}
    diff --git a/packages/miscellaneous/src/modules/qq.ts b/packages/miscellaneous/src/modules/qq.ts
    new file mode 100644
    index 0000000..6da05a2
    --- /dev/null
    +++ b/packages/miscellaneous/src/modules/qq.ts
    @@ -0,0 +1,20 @@
    +import { router } from 'shared'
    +
    +router({
    +  domain: 'c.pc.qq.com',
    +  routes: [{ run: qqRedirect }],
    +})
    +
    +function qqRedirect() {
    +  const url = new URL(window.location.href)
    +
    +  if (url.pathname === '/middlem.html') {
    +    const target = url.searchParams.get('pfurl')
    +    if (target) window.location.replace(target)
    +  }
    +
    +  if (url.pathname === '/ios.html') {
    +    const target = url.searchParams.get('url')
    +    if (target) window.location.replace(target)
    +  }
    +}
    diff --git a/packages/miscellaneous/src/modules/steamzg.ts b/packages/miscellaneous/src/modules/steamzg.ts
    new file mode 100644
    index 0000000..9aca608
    --- /dev/null
    +++ b/packages/miscellaneous/src/modules/steamzg.ts
    @@ -0,0 +1,81 @@
    +import jsQR from 'jsqr'
    +import { router } from 'shared'
    +
    +router({
    +  domain: ['acgxj.com', 'xj.steamzg.com', 'acfb.top'],
    +  routes: [{ run: parseQRCode }],
    +})
    +
    +function parseQRCode() {
    +  parseQRCodeV1()
    +  parseQRCodeV2()
    +}
    +
    +function parseQRCodeV1() {
    +  const canvasList = document.querySelectorAll(
    +    'canvas.su-qr-canvas'
    +  )
    +  canvasList.forEach((canvas) => {
    +    const ctx = canvas.getContext('2d')!
    +    const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)
    +
    +    const res = jsQR(imageData.data, imageData.width, imageData.height)
    +
    +    if (!res) return
    +
    +    if (res.data.includes('pan.baidu.com')) {
    +      const matched = document.body.innerText.match(/提取码[::]?\s*(\w{4})/)
    +      if (matched) {
    +        const url = new URL(res.data)
    +        url.searchParams.set('pwd', matched[1])
    +        res.data = url.toString()
    +      }
    +    }
    +
    +    const link = document.createElement('a')
    +    link.href = res.data
    +    link.target = '_blank'
    +    link.textContent = res.data
    +    const div = document.createElement('div')
    +    div.append(link)
    +    canvas.parentElement?.appendChild(div)
    +  })
    +}
    +
    +function parseQRCodeV2() {
    +  const items = document.querySelectorAll('.su-download-item')
    +
    +  items.forEach((item) => {
    +    const $info = item.querySelector('.su-download-info')
    +    const $text = item.querySelector('.su-download-text')
    +    const $btn = item.querySelector('.su-download-btn')
    +    if (!$btn || !$text || !$info) return
    +    const urlBase64 = $btn.getAttribute('data-qr-url')
    +    if (!urlBase64) return
    +    const url = atob(urlBase64)
    +
    +    const $wrap = document.createElement('div')
    +    $info.append($wrap)
    +    $wrap.append($text)
    +
    +    const a = document.createElement('a')
    +    a.href = url
    +    a.target = '_blank'
    +    a.textContent = url
    +    a.style.display = 'block'
    +    a.style.color = '#999999'
    +    a.style.lineHeight = '1.2'
    +    a.style.fontSize = '12px'
    +    $wrap.append(a)
    +
    +    $btn.addEventListener(
    +      'click',
    +      (e) => {
    +        e.preventDefault()
    +        e.stopPropagation()
    +        window.open(url, '_blank')
    +      },
    +      { capture: true }
    +    )
    +  })
    +}
    diff --git a/packages/miscellaneous/src/modules/x.ts b/packages/miscellaneous/src/modules/x.ts
    new file mode 100644
    index 0000000..8f0385e
    --- /dev/null
    +++ b/packages/miscellaneous/src/modules/x.ts
    @@ -0,0 +1,196 @@
    +import { router, sleep } from 'shared'
    +
    +router({
    +  domain: ['x.com'],
    +  routes: [{ run: main }],
    +})
    +
    +function main() {
    +  const run = () => {
    +    injectDownloadIcon()
    +
    +    requestAnimationFrame(run)
    +  }
    +  requestAnimationFrame(run)
    +}
    +
    +function injectDownloadIcon() {
    +  const downloadIconHTML = ``
    +
    +  const tweets = Array.from(
    +    document.querySelectorAll('article[data-testid="tweet"]')
    +  )
    +
    +  tweets.forEach(async (tweet) => {
    +    const injected = tweet.getAttribute('data-x-injected')
    +    if (injected) return
    +
    +    tweet.setAttribute('data-x-injected', 'true')
    +
    +    const actionsEl = tweet.querySelector(
    +      'div > div > div[role="group"]'
    +    )
    +
    +    if (!actionsEl) return
    +
    +    const originEl = actionsEl.children[
    +      actionsEl.children.length - 1
    +    ] as HTMLDivElement
    +
    +    const downloadEl = originEl.cloneNode(true) as HTMLDivElement
    +    originEl.insertAdjacentElement('afterend', downloadEl)
    +
    +    const oldSvg = downloadEl.querySelector('svg')
    +    if (!oldSvg) return
    +
    +    const svgCls = oldSvg.getAttribute('class')
    +    const template = document.createElement('template')
    +    template.innerHTML = downloadIconHTML.trim()
    +
    +    const newSvg = template.content.firstElementChild as SVGElement | null
    +    if (!newSvg) return
    +
    +    newSvg.setAttribute('class', svgCls || '')
    +    oldSvg.replaceWith(newSvg)
    +
    +    const btn = downloadEl.querySelector('button')
    +    if (!btn) return
    +
    +    btn.addEventListener('click', async () => {
    +      const hisUrls = btn.getAttribute('data-x-urls')
    +      if (hisUrls) {
    +        const urls = JSON.parse(hisUrls) as { filename: string; url: string }[]
    +        urls.forEach((url, idx) => downloadFile(url.url, url.filename))
    +        return
    +      }
    +
    +      const fetching = btn.getAttribute('data-x-fetching')
    +      if (fetching) return
    +
    +      btn.setAttribute('data-x-fetching', 'true')
    +      const videoEl = tweet.querySelector('video')
    +      if (!videoEl) return
    +
    +      const anchorEl = tweet.querySelector(
    +        'a[role="link"][href*="/status/"]'
    +      )
    +      if (!anchorEl) return
    +
    +      const statusUrl = anchorEl.href
    +
    +      const parts = statusUrl.split('/')
    +      const statusIdx = parts.findIndex((part) => part === 'status')
    +      const user = parts[statusIdx - 1]
    +      const tweetId = parts[statusIdx + 1]
    +
    +      const tipEl = document.createElement('div')
    +      tipEl.textContent = '下载中...'
    +      tipEl.style.cssText = `
    +          position: absolute;
    +          bottom: 100%;
    +          left: 50%;
    +          transform: translateX(-50%);
    +          background: rgba(0, 0, 0, 0.45);
    +          border: 1px solid rgba(255, 255, 255, 0.3);
    +          color: #fff;
    +          padding: 4px 8px;
    +          border-radius: 8px;
    +          white-space: nowrap;
    +          z-index: 9999;
    +        `
    +      downloadEl.appendChild(tipEl)
    +      try {
    +        const urls = await downloadGif(statusUrl)
    +        const files = urls.map((url, idx) => ({
    +          url,
    +          filename: `x-${user}-${tweetId}${idx > 0 ? `-${idx}` : ''}.gif`,
    +        }))
    +        files.forEach((file) => downloadFile(file.url, file.filename))
    +        btn.setAttribute('data-x-urls', JSON.stringify(files))
    +      } finally {
    +        tipEl.remove()
    +        btn.removeAttribute('data-x-fetching')
    +      }
    +    })
    +  })
    +}
    +
    +function downloadFile(url: string, filename: string) {
    +  const fallbackOpen = () => {
    +    window.open(url, '_blank', 'noopener,noreferrer')
    +  }
    +
    +  GM_xmlhttpRequest({
    +    url: url,
    +    method: 'GET',
    +    responseType: 'blob',
    +    onload: (response) => {
    +      const blob = response.response
    +      const blobUrl = URL.createObjectURL(blob)
    +      const a = document.createElement('a')
    +      a.href = blobUrl
    +      a.download = encodeURIComponent(filename)
    +      document.body.appendChild(a)
    +      a.click()
    +      document.body.removeChild(a)
    +      URL.revokeObjectURL(blobUrl)
    +    },
    +    onerror: () => {
    +      fallbackOpen()
    +    },
    +  })
    +}
    +
    +const cache: Record = {}
    +async function downloadGif(url: string) {
    +  if (cache[url]) {
    +    return cache[url]
    +  }
    +
    +  const client = async (params: any) => {
    +    const formData = new FormData()
    +
    +    Object.keys(params).forEach((key) => {
    +      formData.append(key, params[key])
    +    })
    +
    +    return new Promise((resolve, reject) => {
    +      GM_xmlhttpRequest({
    +        method: 'POST',
    +        url: 'https://convertico.com/twitter-gif-downloader/twitter-gif-downloader.php',
    +        responseType: 'json',
    +        data: formData,
    +        onload: (response) => {
    +          resolve(response.response)
    +        },
    +        onerror: (error) => {
    +          reject(error)
    +        },
    +      })
    +    })
    +  }
    +
    +  const meta = await client({ action: 'fetch', url })
    +
    +  const files = await Promise.all(
    +    meta.media.map(async (item: any, idx: number) => {
    +      const res = await client({
    +        action: 'convert_to_gif',
    +        video_url: item.url,
    +        filename: `x-gif-${Date.now()}-${idx}`,
    +        fps: 20,
    +        width: 480,
    +        lossy: 80,
    +      })
    +
    +      return 'https://convertico.com/twitter-gif-downloader/' + res.file_url
    +    })
    +  )
    +
    +  cache[url] = files
    +  return files
    +}
    diff --git a/packages/bilixs/tsconfig.json b/packages/miscellaneous/tsconfig.json
    similarity index 100%
    rename from packages/bilixs/tsconfig.json
    rename to packages/miscellaneous/tsconfig.json
    diff --git a/packages/novel-speech-synthesis/CHANGELOG.md b/packages/novel-speech-synthesis/CHANGELOG.md
    deleted file mode 100644
    index c982c2e..0000000
    --- a/packages/novel-speech-synthesis/CHANGELOG.md
    +++ /dev/null
    @@ -1,85 +0,0 @@
    -# novel-speech-synthesis
    -
    -## 1.0.14
    -
    -### Patch Changes
    -
    -- 0ef48b0: feat: implement deep parsing for paragraphs and remove drag functionality
    -
    -## 1.0.13
    -
    -### Patch Changes
    -
    -- 43a9343: fix: update drag position handling and improve event propagation
    -
    -## 1.0.12
    -
    -### Patch Changes
    -
    -- 46abd6f: feat: add support for piaotia.com
    -
    -## 1.0.11
    -
    -### Patch Changes
    -
    -- 73b9488: refactor: improve speech synthesis functionality and styles
    -
    -## 1.0.10
    -
    -### Patch Changes
    -
    -- b2131a4: refactor: update speech control styles
    -
    -## 1.0.9
    -
    -### Patch Changes
    -
    -- 4889e38: feat: support kakuyomu
    -
    -## 1.0.8
    -
    -### Patch Changes
    -
    -- 61e4d83: fix: refresh paragragh
    -
    -## 1.0.7
    -
    -### Patch Changes
    -
    -- adcaaa5: feat: support esjzone
    -
    -## 1.0.6
    -
    -### Patch Changes
    -
    -- d3c4dde: feat: support syosetu
    -
    -## 1.0.5
    -
    -### Patch Changes
    -
    -- e737fb4: feat: support bilinovel
    -
    -## 1.0.4
    -
    -### Patch Changes
    -
    -- 720e302: fix: safari error
    -
    -## 1.0.3
    -
    -### Patch Changes
    -
    -- 21be4f4: feat: support auto next
    -
    -## 1.0.2
    -
    -### Patch Changes
    -
    -- 1e22880: feat: support more speed
    -
    -## 1.0.1
    -
    -### Patch Changes
    -
    -- 4bd5686: fix: style error
    diff --git a/packages/novel-speech-synthesis/README.md b/packages/novel-speech-synthesis/README.md
    deleted file mode 100644
    index db2b6cf..0000000
    --- a/packages/novel-speech-synthesis/README.md
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -# novel-speech-synthesis
    -
    -## Install/安装
    -
    -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/novel-speech-synthesis.user.js)
    diff --git a/packages/novel-speech-synthesis/meta.template b/packages/novel-speech-synthesis/meta.template
    deleted file mode 100644
    index 35046fc..0000000
    --- a/packages/novel-speech-synthesis/meta.template
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -// ==UserScript==
    -// @name         novel-speech-synthesis
    -// @namespace    https://github.com/IronKinoko/userscripts/tree/master/packages/novel-speech-synthesis
    -// @version      #version#
    -// @license      MIT
    -// @description  #description#
    -// @author       IronKinoko
    -// @match        https://hans.bilixs.com/*
    -// @match        https://www.bilixs.com/*
    -// @match        https://www.bilinovel.com/*
    -// @match        https://www.linovelib.com/*
    -// @match        https://novel18.syosetu.com/*
    -// @match        https://kakuyomu.jp/*
    -// @match        https://www.esjzone.cc/*
    -// @match        https://www.piaotia.com/*
    -// @icon         https://www.google.com/s2/favicons?sz=64&domain=
    -// @grant        none
    -// @noframes
    -// @downloadURL  https://github.com/IronKinoko/userscripts/raw/dist/novel-speech-synthesis.user.js
    -// @updateURL    https://github.com/IronKinoko/userscripts/raw/dist/novel-speech-synthesis.user.js
    -// ==/UserScript==
    \ No newline at end of file
    diff --git a/packages/novel-speech-synthesis/package.json b/packages/novel-speech-synthesis/package.json
    deleted file mode 100644
    index 2605013..0000000
    --- a/packages/novel-speech-synthesis/package.json
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -{
    -  "name": "novel-speech-synthesis",
    -  "version": "1.0.14",
    -  "description": "",
    -  "main": "index.js",
    -  "scripts": {
    -    "dev": "bocchi dev",
    -    "build": "bocchi build"
    -  },
    -  "repository": {
    -    "type": "git",
    -    "url": "git+https://github.com/IronKinoko/userscripts.git"
    -  },
    -  "keywords": [],
    -  "author": "IronKinoko ",
    -  "license": "MIT",
    -  "bugs": {
    -    "url": "https://github.com/IronKinoko/userscripts/issues"
    -  },
    -  "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/novel-speech-synthesis#readme",
    -  "devDependencies": {
    -    "shared": "workspace:*"
    -  }
    -}
    diff --git a/packages/novel-speech-synthesis/src/adapter/index.ts b/packages/novel-speech-synthesis/src/adapter/index.ts
    deleted file mode 100644
    index ff3530d..0000000
    --- a/packages/novel-speech-synthesis/src/adapter/index.ts
    +++ /dev/null
    @@ -1,261 +0,0 @@
    -import { Route, RouterOptions } from 'shared'
    -import Speech, { SpeechOptions } from '../speech'
    -
    -type Adapter = Omit & {
    -  routes: (Partial & { speech?: SpeechOptions })[]
    -}
    -
    -function deepParseParagraph(content: Element) {
    -  content.querySelectorAll('br').forEach((el) => el.remove())
    -  const deep = (node: Node) => {
    -    const els = Array.from(node.childNodes)
    -    els.forEach((el) => {
    -      if (el.nodeType === Node.TEXT_NODE) {
    -        const p = document.createElement('p')
    -        p.textContent = el.textContent!.trim()
    -        p.style.textIndent = '2em'
    -        p.style.paddingBottom = '1em'
    -
    -        if (!p.textContent) el.remove()
    -        else el.replaceWith(p)
    -      } else if (el.nodeType === Node.ELEMENT_NODE) {
    -        deep(el)
    -      }
    -    })
    -  }
    -
    -  deep(content)
    -
    -  let checking = true
    -  while (checking) {
    -    checking = Array.from(content.querySelectorAll('p')).some((p) => {
    -      if (p.querySelector('p')) {
    -        const div = document.createElement('div')
    -        div.innerHTML = p.innerHTML
    -        p.replaceWith(div)
    -        return true
    -      }
    -      return false
    -    })
    -  }
    -}
    -
    -export const adapters: Adapter[] = [
    -  {
    -    domain: ['bilixs.com'],
    -    routes: [
    -      {
    -        path: /novel\/.*\/.*\.html/,
    -        speech: {
    -          container: 'body',
    -          lang: 'zh-CN',
    -          getParagraph: () => {
    -            const content = document.querySelector('.article-content')
    -            if (!content) throw new Error('content not found')
    -
    -            return Array.from(content.querySelectorAll('p'))
    -          },
    -          nextChapter() {
    -            const dom =
    -              document.querySelector('.footer .f-right')
    -            dom?.click()
    -          },
    -        },
    -      },
    -    ],
    -  },
    -  {
    -    domain: ['linovelib.com'],
    -    routes: [
    -      {
    -        path: /novel\/.*\/.*\.html/,
    -        speech: {
    -          container: 'body',
    -          lang: 'zh-CN',
    -          getParagraph: () => {
    -            const content = document.querySelector('.read-content')
    -            if (!content) throw new Error('content not found')
    -
    -            // 这个站点会插入一些脏数据防盗,需要过滤掉
    -            return Array.from(content.querySelectorAll('p')).filter(
    -              (o) => o.clientHeight
    -            )
    -          },
    -          nextChapter() {
    -            const dom =
    -              document.querySelectorAll('.mlfy_page a')
    -            Array.from(dom)
    -              .find((d) => d.innerText.match(/下一[章页]/))
    -              ?.click()
    -          },
    -        },
    -        run() {
    -          const speech = new Speech(this.speech!)
    -
    -          const ob = new MutationObserver(() => {
    -            if (
    -              speech.paragraphList.length !== speech.opts.getParagraph().length
    -            ) {
    -              speech.setupParagraph()
    -            }
    -          })
    -
    -          ob.observe(document.querySelector('.read-content')!, {
    -            childList: true,
    -          })
    -        },
    -      },
    -    ],
    -  },
    -  {
    -    domain: ['bilinovel.com'],
    -    routes: [
    -      {
    -        path: /novel\/.*\/.*\.html/,
    -        speech: {
    -          container: 'body',
    -          lang: 'zh-CN',
    -          getParagraph: () => {
    -            const content = document.querySelector('#acontentz')
    -            if (!content) throw new Error('content not found')
    -
    -            return Array.from(content.querySelectorAll('p'))
    -          },
    -          nextChapter() {
    -            document
    -              .querySelector('#footlink > a:last-child')
    -              ?.click()
    -          },
    -        },
    -        run() {
    -          const speech = new Speech(this.speech!)
    -
    -          const ob = new MutationObserver(() => {
    -            if (
    -              speech.paragraphList.length !== speech.opts.getParagraph().length
    -            ) {
    -              speech.setupParagraph()
    -            }
    -          })
    -
    -          ob.observe(document.querySelector('#acontentz')!, {
    -            childList: true,
    -          })
    -        },
    -      },
    -    ],
    -  },
    -  {
    -    domain: ['novel18.syosetu.com'],
    -    routes: [
    -      {
    -        pathname: /^\/([^/]+?)\/([^/]+?)\/?$/,
    -        speech: {
    -          container: 'body',
    -          lang: 'ja-JP',
    -          getParagraph: () => {
    -            const content = document.querySelector('#novel_honbun')
    -            if (!content) throw new Error('content not found')
    -
    -            return Array.from(content.querySelectorAll('p'))
    -          },
    -          nextChapter: () => {
    -            let dom = document.querySelector(
    -              '.novel_bn a[rel="next"]'
    -            )
    -            if (!dom) {
    -              dom = document.querySelector(
    -                '.novel_bn a:last-child'
    -              )
    -            }
    -            dom?.click()
    -          },
    -        },
    -      },
    -    ],
    -  },
    -  {
    -    domain: ['esjzone.cc'],
    -    routes: [
    -      {
    -        path: /forum\/[^/]+\/[^/]+\.html/,
    -        speech: {
    -          container: 'body',
    -          lang: 'zh-CN',
    -          getParagraph: () => {
    -            const content = document.querySelector('.forum-content')
    -            if (!content) throw new Error('content not found')
    -
    -            deepParseParagraph(content)
    -            return Array.from(content.querySelectorAll('p'))
    -          },
    -          nextChapter() {
    -            const dom = document.querySelector('.btn-next')
    -            dom?.click()
    -          },
    -        },
    -      },
    -    ],
    -  },
    -  {
    -    domain: ['kakuyomu.jp'],
    -    routes: [
    -      {
    -        pathname: /^\/works\/\d+\/episodes\/\d+$/,
    -        speech: {
    -          container: 'body',
    -          lang: 'ja-JP',
    -          getParagraph: () => {
    -            const content = document.querySelector('.widget-episodeBody')
    -            if (!content) throw new Error('content not found')
    -
    -            return Array.from(content.querySelectorAll('p'))
    -          },
    -          nextChapter() {
    -            const dom = document.querySelector(
    -              '#contentMain-readNextEpisode'
    -            )
    -            dom?.click()
    -          },
    -        },
    -      },
    -    ],
    -  },
    -  {
    -    domain: ['piaotia.com'],
    -    routes: [
    -      {
    -        path: /html\/[^/]+\/[^/]+\/[^/]+\.html/,
    -        speech: {
    -          container: 'body',
    -          lang: 'zh-CN',
    -          getParagraph: () => {
    -            const content = document.querySelector('#content')
    -            if (!content) throw new Error('content not found')
    -            content.querySelectorAll('br').forEach((o) => o.remove())
    -            return Array.from(content.childNodes)
    -              .filter(
    -                (o) => o.nodeType === Node.TEXT_NODE && o.textContent!.trim()
    -              )
    -              .map((o) => {
    -                const p = document.createElement('p')
    -                p.textContent = o.textContent!.trim()
    -                p.style.textIndent = '2em'
    -                p.style.paddingBottom = '1em'
    -
    -                o.replaceWith(p)
    -                return p
    -              })
    -          },
    -          nextChapter() {
    -            document
    -              .querySelector(
    -                '#content > div > a:nth-child(3)'
    -              )
    -              ?.click()
    -          },
    -        },
    -      },
    -    ],
    -  },
    -]
    diff --git a/packages/novel-speech-synthesis/src/index.ts b/packages/novel-speech-synthesis/src/index.ts
    deleted file mode 100644
    index 42cacf0..0000000
    --- a/packages/novel-speech-synthesis/src/index.ts
    +++ /dev/null
    @@ -1,19 +0,0 @@
    -import { router } from 'shared'
    -import { adapters } from './adapter'
    -import Speech from './speech'
    -
    -adapters.forEach((adapter) => {
    -  router({
    -    domain: adapter.domain,
    -    routes: adapter.routes.map((route) => {
    -      return {
    -        ...route,
    -        run: () => {
    -          if (route.run) {
    -            route.run()
    -          } else if (route.speech) new Speech(route.speech)
    -        },
    -      }
    -    }),
    -  })
    -})
    diff --git a/packages/novel-speech-synthesis/src/speech/index.scss b/packages/novel-speech-synthesis/src/speech/index.scss
    deleted file mode 100644
    index 1af4fd0..0000000
    --- a/packages/novel-speech-synthesis/src/speech/index.scss
    +++ /dev/null
    @@ -1,91 +0,0 @@
    -#speech {
    -  user-select: none;
    -  .speech-handler {
    -    position: absolute;
    -    right: 24px;
    -    bottom: 100%;
    -    padding: 4px 8px;
    -    background: #222;
    -    border-radius: 8px 8px 0 0;
    -    cursor: pointer;
    -    svg {
    -      transform: rotate(180deg);
    -      transition: trasnform 0.3s ease;
    -    }
    -  }
    -  .speech-controls {
    -    display: flex;
    -    justify-content: space-between;
    -    align-items: center;
    -    padding: 8px 16px;
    -    gap: 8px;
    -    transition: transform 0.3s ease;
    -    transform: translateY(100%);
    -    position: fixed;
    -    left: 0;
    -    bottom: 0;
    -    width: 100%;
    -    background: #222;
    -    color: #fff;
    -    z-index: 99999999;
    -    line-height: 1;
    -    svg {
    -      display: block;
    -    }
    -  }
    -
    -  .speech-controls-show {
    -    transform: translateY(0%);
    -    .speech-handler svg {
    -      transform: rotate(0);
    -    }
    -  }
    -
    -  .speech-controls-voice {
    -    flex: 1;
    -    min-width: 0;
    -  }
    -  .speech-checkbox {
    -    padding: 8px;
    -    margin: 0;
    -    background: #333;
    -    border-radius: 8px;
    -    cursor: pointer;
    -
    -    &:not(.speech-checkbox-icon-switch) input:checked ~ * {
    -      color: #349bdb;
    -    }
    -
    -    &.speech-checkbox-icon-switch {
    -      input:checked + * {
    -        display: none;
    -      }
    -      input:not(:checked) + * + * {
    -        display: none;
    -      }
    -    }
    -  }
    -
    -  .speech-select {
    -    text-align: center;
    -    appearance: none;
    -    border: none;
    -    background: transparent;
    -    outline: none;
    -    color: inherit;
    -    cursor: pointer;
    -
    -    padding: 8px;
    -    margin: 0;
    -    background: #333;
    -    border-radius: 8px;
    -  }
    -  .speech-select option {
    -    color: initial; // 使用默认颜色
    -  }
    -}
    -.speech-reading {
    -  text-decoration: underline !important;
    -  text-underline-offset: 0.4em !important;
    -  text-decoration-style: dashed !important;
    -}
    diff --git a/packages/novel-speech-synthesis/src/speech/index.ts b/packages/novel-speech-synthesis/src/speech/index.ts
    deleted file mode 100644
    index d020c4f..0000000
    --- a/packages/novel-speech-synthesis/src/speech/index.ts
    +++ /dev/null
    @@ -1,308 +0,0 @@
    -import { keybind, local, throttle } from 'shared'
    -import './index.scss'
    -import T from './ui.template.html'
    -
    -export type SpeechOptions = {
    -  container: string
    -  lang: string
    -  getParagraph: () => HTMLElement[]
    -  scrollElement?: string
    -  nextChapter: () => void
    -}
    -
    -export default class Speech {
    -  private elements: {
    -    root: HTMLDivElement
    -    play: HTMLInputElement
    -    voice: HTMLSelectElement
    -    rate: HTMLSelectElement
    -    continuous: HTMLInputElement
    -    disabled: HTMLInputElement
    -    handler: HTMLDivElement
    -  } | null = null
    -
    -  private utterance = {
    -    rate: 1.5,
    -    voiceURI: null as string | null,
    -    continuous: true,
    -    disabled: false,
    -    show: true,
    -  }
    -  private voices: SpeechSynthesisVoice[] = []
    -  private paragraphDisposeList: (() => void)[] = []
    -
    -  private speakDispose: (() => void) | null = null
    -  paragraphList: HTMLElement[] = []
    -
    -  constructor(public opts: SpeechOptions) {
    -    this.loadLocalConfig()
    -    this.setupParagraph()
    -    this.createUI()
    -  }
    -
    -  setupParagraph() {
    -    this.paragraphList = this.opts.getParagraph()
    -
    -    if (this.paragraphDisposeList.length) {
    -      this.paragraphDisposeList.forEach((fn) => fn())
    -      this.paragraphDisposeList = []
    -    }
    -
    -    this.paragraphDisposeList = this.paragraphList.map((p, idx) => {
    -      p.setAttribute('data-speech-idx', idx.toString())
    -
    -      const fn = (e: MouseEvent) => {
    -        e.stopPropagation()
    -        if (this.utterance.disabled) return
    -
    -        let current = idx
    -        let cancel = false
    -        this.speakDispose?.()
    -
    -        const speak = async () => {
    -          if (cancel) return
    -          await this.speakParagraph(current)
    -
    -          if (current < this.paragraphList.length) {
    -            current++
    -            speak()
    -          }
    -        }
    -        this.speakDispose = () => {
    -          cancel = true
    -        }
    -        speak()
    -      }
    -
    -      p.addEventListener('click', fn)
    -
    -      return () => {
    -        p.removeAttribute('data-speech-idx')
    -        p.removeEventListener('click', fn)
    -      }
    -    })
    -  }
    -
    -  private createUI() {
    -    const root = new DOMParser().parseFromString(T.speech, 'text/html').body
    -      .children[0] as HTMLDivElement
    -    const controls = root.querySelector('.speech-controls')!
    -    const container = document.querySelector(this.opts.container)
    -    if (!container) throw new Error('container not found')
    -    container.appendChild(root)
    -
    -    window.addEventListener('beforeunload', () => {
    -      this.cancel()
    -    })
    -
    -    this.elements = {
    -      root,
    -      play: root.querySelector('.speech-controls-play input')!,
    -      voice: root.querySelector('.speech-controls-voice')!,
    -      rate: root.querySelector('.speech-controls-rate')!,
    -      continuous: root.querySelector('.speech-controls-continuous input')!,
    -      disabled: root.querySelector('.speech-controls-disabled input')!,
    -      handler: root.querySelector('.speech-handler')!,
    -    }
    -
    -    this.elements.handler.addEventListener('click', () => {
    -      this.utterance.show = !this.utterance.show
    -      controls.classList.toggle('speech-controls-show', this.utterance.show)
    -      this.saveLocalConfig()
    -    })
    -    controls.classList.toggle('speech-controls-show', this.utterance.show)
    -
    -    this.elements.play.addEventListener('change', (e) => {
    -      const target = e.target as HTMLInputElement
    -      if (target.checked) {
    -        window.speechSynthesis.resume()
    -      } else {
    -        window.speechSynthesis.pause()
    -      }
    -    })
    -
    -    this.onVoices((voices) => {
    -      if (voices.length === 0) return
    -
    -      this.voices = voices.filter((voice) => voice.lang === this.opts.lang)
    -      this.elements!.voice.innerHTML = this.voices
    -        .map((v) => ``)
    -        .join('')
    -
    -      if (this.utterance.voiceURI) {
    -        this.elements!.voice.value = this.utterance.voiceURI
    -        this.refreshSpeech()
    -      }
    -
    -      if (
    -        this.utterance.continuous &&
    -        this.currentSpeakingParagraphIdx === null
    -      ) {
    -        this.paragraphList[0]?.click()
    -      }
    -    })
    -
    -    this.elements.voice.value = this.utterance.voiceURI || ''
    -    this.elements.voice.addEventListener('change', (e) => {
    -      const target = e.target as HTMLSelectElement
    -      const find = this.voices.find((voice) => voice.voiceURI === target.value)
    -      if (find) {
    -        this.utterance.voiceURI = find.voiceURI
    -        this.saveLocalConfig()
    -        this.refreshSpeech()
    -      }
    -    })
    -
    -    this.elements.rate.value = this.utterance.rate.toString()
    -    this.elements.rate.addEventListener('change', (e) => {
    -      const target = e.target as HTMLSelectElement
    -      this.utterance.rate = Number(target.value)
    -      this.saveLocalConfig()
    -      this.refreshSpeech()
    -    })
    -
    -    this.elements.continuous.checked = this.utterance.continuous
    -    this.elements.continuous.addEventListener('change', (e) => {
    -      const target = e.target as HTMLInputElement
    -      this.utterance.continuous = target.checked
    -      this.saveLocalConfig()
    -    })
    -
    -    this.elements.disabled.checked = this.utterance.disabled
    -    this.elements.disabled.addEventListener('change', (e) => {
    -      const target = e.target as HTMLInputElement
    -      this.utterance.disabled = target.checked
    -      window.speechSynthesis.cancel()
    -      this.saveLocalConfig()
    -    })
    -
    -    keybind(['space'], (e) => {
    -      e.preventDefault()
    -      this.elements!.play.click()
    -    })
    -    keybind(['w'], (e) => {
    -      e.preventDefault()
    -      if (this.currentSpeakingParagraphIdx !== null) {
    -        this.paragraphList[this.currentSpeakingParagraphIdx - 1].click()
    -      }
    -    })
    -    keybind(['s'], (e) => {
    -      e.preventDefault()
    -      if (this.currentSpeakingParagraphIdx !== null) {
    -        this.paragraphList[this.currentSpeakingParagraphIdx + 1].click()
    -      }
    -    })
    -    keybind(['d'], (e) => {
    -      e.preventDefault()
    -      this.opts.nextChapter()
    -    })
    -  }
    -
    -  private refreshSpeech() {
    -    const idx = this.currentSpeakingParagraphIdx
    -    if (idx === null) return
    -    const p = this.paragraphList[idx]
    -    p?.click()
    -  }
    -
    -  private saveLocalConfig() {
    -    localStorage.setItem('speech-utterance', JSON.stringify(this.utterance))
    -  }
    -  private loadLocalConfig() {
    -    const utterance = localStorage.getItem('speech-utterance')
    -    if (utterance) {
    -      this.utterance = JSON.parse(utterance)
    -    }
    -  }
    -
    -  private onVoices(callback: (voices: SpeechSynthesisVoice[]) => void) {
    -    callback(window.speechSynthesis.getVoices())
    -    window.speechSynthesis.onvoiceschanged = () => {
    -      callback(window.speechSynthesis.getVoices())
    -    }
    -  }
    -
    -  private speakParagraph(index: number) {
    -    return new Promise((resolve, reject) => {
    -      window.speechSynthesis.cancel()
    -      this.elements!.play.checked = true
    -      const scrollElement = this.opts.scrollElement
    -        ? document.querySelector(this.opts.scrollElement)
    -        : document.scrollingElement
    -
    -      document.querySelectorAll('.speech-reading').forEach((p) => {
    -        p.classList.remove('speech-reading')
    -      })
    -
    -      const p = this.paragraphList[index]
    -      if (p && p.textContent) {
    -        const utterance = new SpeechSynthesisUtterance(p.textContent)
    -        utterance.lang = this.opts.lang
    -        utterance.rate = this.utterance.rate
    -        utterance.voice =
    -          this.voices.find(
    -            (voice) => this.utterance.voiceURI === voice.voiceURI
    -          ) || null
    -
    -        utterance.addEventListener('start', (e) => {
    -          console.log('start', e)
    -          p.classList.add('speech-reading')
    -
    -          if (scrollElement) {
    -            const { y } = p.getBoundingClientRect()
    -
    -            if (top) {
    -              scrollElement.scrollBy({ top: y - 100, behavior: 'smooth' })
    -            }
    -          }
    -        })
    -        utterance.addEventListener('end', (e) => {
    -          console.log('end', e)
    -          p.classList.remove('speech-reading')
    -
    -          if (
    -            this.utterance.continuous &&
    -            index === this.paragraphList.length - 1
    -          ) {
    -            this.opts.nextChapter()
    -          }
    -          resolve()
    -        })
    -        utterance.addEventListener('error', (e) => {
    -          console.error('error', e)
    -          p.classList.remove('speech-reading')
    -          console.error(e)
    -          reject(e)
    -        })
    -
    -        console.log('utterance', utterance)
    -        window.speechSynthesis.speak(utterance)
    -      } else {
    -        resolve()
    -      }
    -    })
    -  }
    -
    -  resume() {
    -    window.speechSynthesis.resume()
    -  }
    -
    -  pause() {
    -    window.speechSynthesis.pause()
    -  }
    -
    -  cancel() {
    -    window.speechSynthesis.cancel()
    -  }
    -  get speaking() {
    -    return window.speechSynthesis.speaking
    -  }
    -  get pending() {
    -    return window.speechSynthesis.pending
    -  }
    -  get currentSpeakingParagraphIdx() {
    -    const dom = document.querySelector('.speech-reading')
    -    if (!dom) return null
    -    return Number(dom.getAttribute('data-speech-idx'))
    -  }
    -}
    diff --git a/packages/novel-speech-synthesis/src/speech/ui.template.html b/packages/novel-speech-synthesis/src/speech/ui.template.html
    deleted file mode 100644
    index 53dd612..0000000
    --- a/packages/novel-speech-synthesis/src/speech/ui.template.html
    +++ /dev/null
    @@ -1,89 +0,0 @@
    -
    -
    -
    - - - -
    - - - - - -
    -
    diff --git a/packages/novel-speech-synthesis/tsconfig.json b/packages/novel-speech-synthesis/tsconfig.json deleted file mode 100644 index a19808a..0000000 --- a/packages/novel-speech-synthesis/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "../../env.d.ts"] -} diff --git a/packages/steam-multisell/CHANGELOG.md b/packages/steam-multisell/CHANGELOG.md new file mode 100644 index 0000000..2b8a042 --- /dev/null +++ b/packages/steam-multisell/CHANGELOG.md @@ -0,0 +1,31 @@ +# steam-multisell + +## 1.1.4 + +### Patch Changes + +- 5c71056: fix: 修复按钮可能被覆盖的问题 + +## 1.1.3 + +### Patch Changes + +- af36b9b: fix: 修复新版本的页面 + +## 1.1.2 + +### Patch Changes + +- d0ef1f1: feat: 增加延迟,避免限流 + +## 1.1.1 + +### Patch Changes + +- 1435bff: feat: 优化 list 页面样式 + +## 1.1.0 + +### Minor Changes + +- cc92ad6: feat: 增加下架功能 diff --git a/packages/steam-multisell/package.json b/packages/steam-multisell/package.json index 594b000..a0588c5 100644 --- a/packages/steam-multisell/package.json +++ b/packages/steam-multisell/package.json @@ -1,6 +1,6 @@ { "name": "steam-multisell", - "version": "1.0.0", + "version": "1.1.4", "description": "修复批量出售 Steam 库存时出现“您的库存当前不可用”的问题,并且在货物详情页面增加批量出售按钮", "main": "index.js", "scripts": { diff --git a/packages/steam-multisell/src/index.scss b/packages/steam-multisell/src/index.scss new file mode 100644 index 0000000..588400d --- /dev/null +++ b/packages/steam-multisell/src/index.scss @@ -0,0 +1,7 @@ +.market_listing_table_header { + padding-right: 14px; +} +#tabContentsMyActiveMarketListingsRows { + overflow-y: scroll; + max-height: 400px; +} diff --git a/packages/steam-multisell/src/index.ts b/packages/steam-multisell/src/index.ts index 8b32b0b..45d5104 100644 --- a/packages/steam-multisell/src/index.ts +++ b/packages/steam-multisell/src/index.ts @@ -1,6 +1,7 @@ import { router } from 'shared' import * as listings from './market/listings' import * as multisell from './market/multisell' +import './index.scss' router([ { path: '/market/listings/', run: listings.run }, diff --git a/packages/steam-multisell/src/market/listings.ts b/packages/steam-multisell/src/market/listings.ts index bb875ad..327763d 100644 --- a/packages/steam-multisell/src/market/listings.ts +++ b/packages/steam-multisell/src/market/listings.ts @@ -1,24 +1,49 @@ +function queryElementByText(selector: string, text: string) { + const elements = Array.from(document.querySelectorAll(selector)) + return elements.find((el) => el.textContent?.trim() === text) +} + export function run() { - createMultisellButton() + setInterval(createMultisellButton, 16) } function createMultisellButton() { - const button = document.createElement('a') - button.className = 'btn_green_white_innerfade' - button.style.float = 'right' - button.textContent = '批量出售' - button.target = '_blank' - const [id, item] = extractLastSegment(window.location.pathname) + if (queryElementByText('button', '批量出售')) return + + const sellBtn = queryElementByText('button', '出售') + if (!sellBtn) return + + const warp = document.createElement('div') + warp.style.display = 'flex' + warp.style.gap = '8px' + + sellBtn.parentElement?.insertBefore(warp, sellBtn) + warp.appendChild(sellBtn) + + const anchor = document.createElement('a') + const batchSellBtn = sellBtn.cloneNode(true) as HTMLButtonElement + batchSellBtn.textContent = '批量出售' + anchor.appendChild(batchSellBtn) + warp.appendChild(anchor) + + const [id, item] = extractLastSegment() const steamUrl = `https://steamcommunity.com/market/multisell?appid=${id}&contextid=2&items[]=${item}` + anchor.href = steamUrl - button.href = steamUrl + function extractLastSegment() { + const parts = window.location.pathname.split('/').filter(Boolean) + const [appid, item] = parts.slice(-2) - document - .querySelector('#tabContentsMyActiveMarketListingsTable > h3')! - .appendChild(button) + const anchor = Array.from(document.querySelectorAll('a')).find((a) => { + const href = a.getAttribute('href') + return ( + !!href && + href.includes(window.location.pathname) && + a.hasAttribute('style') + ) + }) - function extractLastSegment(url: string) { - const parts = url.split('/').filter(Boolean) - return parts.slice(-2) + if (!anchor?.textContent) throw new Error('Cannot find item name') + return [appid, decodeURIComponent(anchor.textContent.trim())] as const } } diff --git a/packages/twitter/CHANGELOG.md b/packages/twitter/CHANGELOG.md deleted file mode 100644 index cabab9c..0000000 --- a/packages/twitter/CHANGELOG.md +++ /dev/null @@ -1,44 +0,0 @@ -# twitter - -## 1.0.7 - -### Patch Changes - -- 2554729: feat: retry until success - -## 1.0.6 - -### Patch Changes - -- 2f789dc: fix: support x.com - -## 1.0.5 - -### Patch Changes - -- 9034d7b: feat: support photo page - -## 1.0.4 - -### Patch Changes - -- 237efd8: feat: support mode switch - -## 1.0.3 - -### Patch Changes - -- 410fafc: feat: add copy toast - -## 1.0.2 - -### Patch Changes - -- 0b0546c: feat: add watermark to img -- dea0c70: feat: support big image - -## 1.0.1 - -### Patch Changes - -- 8e1de3f: feat: remove link diff --git a/packages/twitter/meta.template b/packages/twitter/meta.template deleted file mode 100644 index 5d91fab..0000000 --- a/packages/twitter/meta.template +++ /dev/null @@ -1,15 +0,0 @@ -// ==UserScript== -// @name twitter -// @namespace https://github.com/IronKinoko/userscripts/tree/master/packages/twitter -// @version #version# -// @license MIT -// @description #description# -// @author IronKinoko -// @match https://twitter.com/* -// @match https://x.com/* -// @icon https://www.google.com/s2/favicons?sz=64&domain=twitter.com -// @grant none -// @noframes -// @downloadURL https://github.com/IronKinoko/userscripts/raw/dist/twitter.user.js -// @updateURL https://github.com/IronKinoko/userscripts/raw/dist/twitter.user.js -// ==/UserScript== \ No newline at end of file diff --git a/packages/twitter/package.json b/packages/twitter/package.json deleted file mode 100644 index aac940b..0000000 --- a/packages/twitter/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "twitter", - "version": "1.0.7", - "description": "", - "main": "index.js", - "scripts": { - "dev": "bocchi dev", - "build": "bocchi build" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/IronKinoko/userscripts.git" - }, - "keywords": [], - "author": "IronKinoko ", - "license": "MIT", - "bugs": { - "url": "https://github.com/IronKinoko/userscripts/issues" - }, - "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/twitter#readme", - "devDependencies": { - "shared": "workspace:*" - } -} diff --git a/packages/twitter/src/index.ts b/packages/twitter/src/index.ts deleted file mode 100644 index 85abbfc..0000000 --- a/packages/twitter/src/index.ts +++ /dev/null @@ -1,196 +0,0 @@ -import { local, sleep, wait } from 'shared' - -const LocalKey = 'k-x-mode' - -window.addEventListener('click', handleClick, { capture: true }) -window.addEventListener('blur', () => (cache = [])) - -async function createUI() { - { - if (document.querySelector('#k-x-mode')) return - const doms = document.querySelectorAll('[role="navigation"] > div > span') - - for (const dom of doms) { - if (dom.textContent?.match(/x corp/i)) { - const switchDom = - dom.parentNode!.previousSibling!.previousSibling!.cloneNode( - true - ) as HTMLAnchorElement - - switchDom.id = 'k-x-mode' - - switchDom.addEventListener('click', () => { - const mode = local.getItem(LocalKey) - local.setItem(LocalKey, mode === 'watermark' ? 'normal' : 'watermark') - updateText() - }) - - const updateText = () => { - switchDom.children[0].textContent = `M: ${ - local.getItem(LocalKey) === 'watermark' ? 'PNG' : 'HTML' - }` - } - updateText() - - switchDom.removeAttribute('href') - - dom.parentNode!.parentNode!.append(switchDom) - break - } - } - } -} - -const ob = new MutationObserver(createUI) -ob.observe(document.body, { childList: true, subtree: true }) - -function handleClick(e: MouseEvent) { - handleLike(e) -} - -function queryParent( - dom: HTMLElement | null, - selector: string -) { - let target: HTMLElement | null = dom - while (target) { - if (target.matches(selector)) break - target = target.parentElement - } - return target as T | null -} - -let cache: { imgs: string[]; href: string }[] = [] -function handleLike(e: MouseEvent) { - const likeDom = queryParent(e.target as HTMLElement, '[data-testid="like"]') - if (!likeDom) return - - const tweet = queryParent( - likeDom, - '[role="dialog"]>div>div,[data-testid="tweet"]' - ) - if (!tweet) return - - const photos = Array.from( - tweet.querySelectorAll( - '[data-testid="tweetPhoto"],[data-testid="swipe-to-dismiss"]' - ) - ) - if (!photos.length) return - - const imgs = photos.map((photo) => { - const src = new URL(photo.querySelector('img')!.src) - src.searchParams.set('name', 'orig') - return src.toString() - }) - - let href = queryParent(photos[0], 'a')?.href - if (!href) href = window.location.href - href = href.replace(/\/photo\/.*$/, '').replace('twitter.com', 'x.com') - - cache.push({ href, imgs }) - - updateClipboard(likeDom) -} - -async function makeWaterMark() { - const lastItem = cache[cache.length - 1] - const lastImg = lastItem.imgs[lastItem.imgs.length - 1] - const blob = await fetch(lastImg).then((res) => res.blob()) - - const author = '@' + new URL(lastItem.href).pathname.split('/')[1] - - const img = await new Promise((resolve) => { - const img = new Image() - img.onload = () => resolve(img) - img.src = URL.createObjectURL(blob) - }) - - const canvas = document.createElement('canvas') - const ctx = canvas.getContext('2d')! - canvas.width = img.naturalWidth - canvas.height = img.naturalHeight - ctx.drawImage(img, 0, 0) - - const fontSize = Math.max(16, canvas.width / 40) - ctx.font = `${fontSize}px sans-serif` - - ctx.save() - ctx.fillStyle = 'rgba(255,255,255,0.3)' - ctx.shadowColor = 'black' - ctx.shadowBlur = 4 - ctx.fillText( - author, - canvas.width - ctx.measureText(author).width - 16, - canvas.height - 16 - ) - ctx.restore() - - ctx.save() - ctx.fillStyle = 'rgba(255,255,255,1)' - ctx.fillText( - author, - canvas.width - ctx.measureText(author).width - 16, - canvas.height - 16 - ) - ctx.restore() - - return new Promise((resolve) => { - canvas.toBlob((blob) => resolve(blob!)) - }) -} - -function toast(target: HTMLElement, text: string) { - const dom = document.createElement('div') - dom.textContent = text - dom.style.cssText = `position:absolute;left:50%;bottom:100%;z-index:100; - transform:translateX(-50%); - border-radius:2px;padding:4px; - background:rgba(0,0,0,0.60);width:max-content; - color:white;font-size:11px;line-height:12px;` - target.appendChild(dom) - target.style.position = 'relative' - - setTimeout(() => { - dom.remove() - }, 1000) -} - -async function retry(fn: () => Promise) { - while (true) { - try { - return await fn() - } catch (err: any) { - await sleep(300) - } - } -} - -async function updateClipboard(likeDom: HTMLElement) { - if (!cache.length) return - try { - if (local.getItem('k-x-mode') === 'watermark') { - const blob = await makeWaterMark() - - await retry(() => - navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })]) - ) - } else { - let html = cache - .map((item) => item.imgs.map((img) => ``).join('')) - .join('') - await retry(() => - navigator.clipboard.write([ - new ClipboardItem({ - 'text/html': new Blob([html], { type: 'text/html' }), - }), - ]) - ) - } - - toast(likeDom, '已复制') - } catch (err: any) { - console.error(err) - toast(likeDom, `复制失败:${err.message}`) - } -} diff --git a/packages/twitter/tsconfig.json b/packages/twitter/tsconfig.json deleted file mode 100644 index a19808a..0000000 --- a/packages/twitter/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "../../env.d.ts"] -} diff --git a/packages/xxxxx520/CHANGELOG.md b/packages/xxxxx520/CHANGELOG.md deleted file mode 100644 index 56602e8..0000000 --- a/packages/xxxxx520/CHANGELOG.md +++ /dev/null @@ -1,136 +0,0 @@ -# xxxxx520 - -## 1.2.8 - -### Patch Changes - -- 02e4ee4: fix: 调整运行环境,避免 jquery 冲突 - -## 1.2.7 - -### Patch Changes - -- 7697913: fix: update Baidu Pan match URL to restrict to specific page - -## 1.2.6 - -### Patch Changes - -- 5732b67: feat: support baidu pan auto submit password - -## 1.2.5 - -### Patch Changes - -- 9af7de3: feat: update domain match for espartasr.com - -## 1.2.4 - -### Patch Changes - -- b252ce9: feat: support new domain - -## 1.2.3 - -### Patch Changes - -- 2b61554: fix: support new domain - -## 1.2.2 - -### Patch Changes - -- 8fad158: feat: support new domain - -## 1.2.1 - -### Patch Changes - -- 82d90ed: feat: support new domain - -## 1.2.0 - -### Minor Changes - -- 6eeca49: feat: support new domain - -## 1.1.8 - -### Patch Changes - -- Updated dependencies [545887c] - - shared@1.0.6 - -## 1.1.7 - -### Patch Changes - -- 1f131d1: fix: support new domain - -## 1.1.6 - -### Patch Changes - -- efb3cf5: feat: support new domain - -## 1.1.5 - -### Patch Changes - -- Updated dependencies [7b2fa9c] - - shared@1.0.5 - -## 1.1.4 - -### Patch Changes - -- Updated dependencies [77e5e46] - - shared@1.0.4 - -## 1.1.3 - -### Patch Changes - -- 8914ab4: chore: release - -## 1.1.2 - -### Patch Changes - -- 1821070: feat: support new domain - -## 1.1.1 - -### Patch Changes - -- a40572c: feat: support new domain - -## 1.1.0 - -### Minor Changes - -- 7d0cd5e: feat: auto complete baiducloud link - -## 1.0.4 - -### Patch Changes - -- 254bd47: feat: support new domain - -## 1.0.3 - -### Patch Changes - -- a704eec: feat: add favicon - -## 1.0.2 - -### Patch Changes - -- 6bb9bb5: feat: skip notice - -## 1.0.1 - -### Patch Changes - -- de11d97: feat: move download btn to top area diff --git a/packages/xxxxx520/README.md b/packages/xxxxx520/README.md deleted file mode 100644 index e1a1f61..0000000 --- a/packages/xxxxx520/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# xxxxx520 - -## Install/安装 - -[Click here/点此](https://github.com/IronKinoko/userscripts/raw/dist/xxxxx520.user.js) diff --git a/packages/xxxxx520/meta.template b/packages/xxxxx520/meta.template deleted file mode 100644 index b63e648..0000000 --- a/packages/xxxxx520/meta.template +++ /dev/null @@ -1,24 +0,0 @@ -// ==UserScript== -// @name xxxxx520 -// @namespace https://github.com/IronKinoko/userscripts/tree/master/packages/xxxxx520 -// @version #version# -// @license MIT -// @description #description# -// @author IronKinoko -// @match https://*.xxxxx520.com/* -// @match https://*.xxxxx525.com/* -// @match https://*.xxxxx528.com/* -// @match https://*.xxxxx520.cam/* -// @match https://*.gamer520.com/* -// @match https://*.efemovies.com/* -// @match https://download.gamer520.com/* -// @match https://*.espartasr.com/* -// @match https://*.fourpetal.com/* -// @match https://pan.baidu.com/share/init* -// @icon https://www.google.com/s2/favicons?sz=64&domain=gamer520.com -// @require https://unpkg.com/jquery@3.6.1/dist/jquery.min.js -// @grant unsafeWindow -// @noframes -// @downloadURL https://github.com/IronKinoko/userscripts/raw/dist/xxxxx520.user.js -// @updateURL https://github.com/IronKinoko/userscripts/raw/dist/xxxxx520.user.js -// ==/UserScript== \ No newline at end of file diff --git a/packages/xxxxx520/package.json b/packages/xxxxx520/package.json deleted file mode 100644 index bcbce2b..0000000 --- a/packages/xxxxx520/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "xxxxx520", - "version": "1.2.8", - "description": "", - "main": "index.js", - "scripts": { - "dev": "bocchi dev", - "build": "bocchi build" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/IronKinoko/userscripts.git" - }, - "keywords": [], - "author": "IronKinoko ", - "license": "MIT", - "bugs": { - "url": "https://github.com/IronKinoko/userscripts/issues" - }, - "homepage": "https://github.com/IronKinoko/userscripts/tree/master/packages/xxxxx520#readme", - "dependencies": { - "shared": "workspace:*" - } -} diff --git a/packages/xxxxx520/src/index.ts b/packages/xxxxx520/src/index.ts deleted file mode 100644 index 9c4f24a..0000000 --- a/packages/xxxxx520/src/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { router } from 'shared' -import xxxxx520 from './xxxxx520' -import baidu from './baidu' - -router({ - domain: ['pan.baidu.com'], - routes: [{ path: '/share/init', run: baidu }], -}) - -router({ - domain: [ - /xxxxx520/, - /xxxxx525/, - /xxxxx528/, - /xxxxx520/, - /gamer520/, - /efemovies/, - /espartasr/, - /fourpetal/, - ], - routes: [{ run: xxxxx520 }], -}) diff --git a/packages/xxxxx520/src/xxxxx520.ts b/packages/xxxxx520/src/xxxxx520.ts deleted file mode 100644 index 5cdba02..0000000 --- a/packages/xxxxx520/src/xxxxx520.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { session } from 'shared' - -export default function main() { - autoCompletePassowrd() - moveDownloadToTop() - baiduCloudLinkAutoComplete() - modifyAnchorTarget() - enhanceDownloadLink() -} - -function autoCompletePassowrd() { - const $pwd = $('[name="post_password"]') - if (!$pwd.length || session.getItem('is-auto-complete')) return - const $submit = $('input[name=Submit]') - - const pwdSource = [$('.entry-title').text(), $('form>p').text()] - const re = /密码保护(?::|:)(\w+)/ - const pwd = pwdSource.map((s) => s.match(re)?.[1]).find((s) => s) - if (!pwd) return - - session.setItem('is-auto-complete', true) - $pwd.val(pwd) - $submit[0].click() -} - -function moveDownloadToTop() { - const $area = $('.sidebar-right .sidebar-column .widget-area') - const $down = $('#cao_widget_pay-4') - - $area.prepend($down) -} - -function baiduCloudLinkAutoComplete() { - function complete() { - const $root = $('article .entry-content') - - let panEl: HTMLParagraphElement | null = null - $root.find('p').each((i, el) => { - if (el.innerText.match(/pan\.baidu\.com/)) { - panEl = el - } - if (el.innerText.match('提取码') && panEl) { - const match = panEl.innerText.match(/https:\/\/pan.baidu.com\/s\/\S+/) - if (!match) return - - const link = match[0] - const url = new URL(link) - if (url.searchParams.has('pwd')) return - const pwd = el.innerText.match(/提取码[::]\s?(\w{4})/)?.[1] - if (!pwd) return - - url.searchParams.set('pwd', pwd) - panEl.innerHTML = panEl.innerHTML.replaceAll(link, url.toString()) - panEl = null - } - }) - } - - complete() - new MutationObserver(complete).observe(document.body, { - subtree: true, - childList: true, - }) -} - -function modifyAnchorTarget() { - $('article .entry-content a').each((i, el) => { - el.target = '_blank' - }) -} - -function enhanceDownloadLink() { - const $dom = $('.go-down') - const id = $dom.attr('data-id') - - $dom.attr('href', `/go/?post_id=${id}`) - $dom[0].addEventListener('click', (e) => e.stopPropagation(), { - capture: true, - }) -} diff --git a/packages/xxxxx520/tsconfig.json b/packages/xxxxx520/tsconfig.json deleted file mode 100644 index a19808a..0000000 --- a/packages/xxxxx520/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src", "../../env.d.ts"] -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a09c2d3..77b19f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -9,28 +9,28 @@ importers: devDependencies: '@changesets/cli': specifier: ^2.26.2 - version: 2.27.1 + version: 2.30.0(@types/node@25.3.3) '@types/fs-extra': specifier: ^11.0.3 version: 11.0.4 '@types/inquirer': specifier: ^9.0.6 - version: 9.0.7 + version: 9.0.10 '@types/jquery': specifier: ^3.5.25 - version: 3.5.29 + version: 3.5.34 '@types/lodash-es': specifier: ^4.17.10 version: 4.17.12 bocchi: - specifier: ^1.1.3 - version: 1.1.3 + specifier: ^2.1.0 + version: 2.1.0 chalk: specifier: ^5.3.0 - version: 5.3.0 + version: 5.6.2 fs-extra: specifier: ^11.1.1 - version: 11.2.0 + version: 11.3.4 globby: specifier: ^13.2.2 version: 13.2.2 @@ -39,25 +39,19 @@ importers: version: 8.0.3 inquirer: specifier: ^9.2.11 - version: 9.2.12 + version: 9.3.8(@types/node@25.3.3) prettier: specifier: ^2.7.1 - version: 2.7.1 + version: 2.8.8 pretty-quick: specifier: ^3.1.3 - version: 3.1.3(prettier@2.7.1) + version: 3.3.1(prettier@2.8.8) tsx: specifier: ^4.6.2 - version: 4.6.2 + version: 4.23.1 typescript: specifier: ^5.2.2 - version: 5.3.2 - - packages/18comic: - devDependencies: - shared: - specifier: workspace:* - version: link:../shared + version: 5.9.3 packages/bili-live: devDependencies: @@ -65,12 +59,6 @@ importers: specifier: workspace:* version: link:../shared - packages/bilixs: - devDependencies: - shared: - specifier: workspace:* - version: link:../shared - packages/copymanga: dependencies: shared: @@ -89,31 +77,11 @@ importers: specifier: workspace:* version: link:../shared - packages/kakuyomu-translate: - dependencies: - shared: - specifier: workspace:* - version: link:../shared - - packages/linovelib: - dependencies: - shared: - specifier: workspace:* - version: link:../shared - - packages/manhuagui: + packages/miscellaneous: dependencies: - shared: - specifier: workspace:* - version: link:../shared - - packages/mikanani: - devDependencies: - shared: - specifier: workspace:* - version: link:../shared - - packages/novel-speech-synthesis: + jsqr: + specifier: ^1.4.0 + version: 1.4.0 devDependencies: shared: specifier: workspace:* @@ -123,10 +91,10 @@ importers: dependencies: copy-to-clipboard: specifier: ^3.3.1 - version: 3.3.1 + version: 3.3.3 lodash-es: specifier: ^4.17.21 - version: 4.17.21 + version: 4.17.23 packages/steam-multisell: devDependencies: @@ -134,5341 +102,3327 @@ importers: specifier: workspace:* version: link:../shared - packages/twitter: - devDependencies: - shared: - specifier: workspace:* - version: link:../shared - - packages/xxxxx520: - dependencies: - shared: - specifier: workspace:* - version: link:../shared - packages: - /@babel/code-frame@7.18.6: + '@babel/runtime@7.28.6': resolution: { - integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==, + integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==, } engines: { node: '>=6.9.0' } - dependencies: - '@babel/highlight': 7.18.6 - dev: true - /@babel/helper-validator-identifier@7.18.6: + '@changesets/apply-release-plan@7.1.0': resolution: { - integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==, + integrity: sha512-yq8ML3YS7koKQ/9bk1PqO0HMzApIFNwjlwCnwFEXMzNe8NpzeeYYKCmnhWJGkN8g7E51MnWaSbqRcTcdIxUgnQ==, } - engines: { node: '>=6.9.0' } - dev: true - /@babel/highlight@7.18.6: + '@changesets/assemble-release-plan@6.0.9': resolution: { - integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==, + integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==, } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@babel/runtime@7.23.4: + '@changesets/changelog-git@0.2.1': resolution: { - integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==, + integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==, } - engines: { node: '>=6.9.0' } - dependencies: - regenerator-runtime: 0.14.0 - dev: true - /@changesets/apply-release-plan@7.0.0: + '@changesets/cli@2.30.0': resolution: { - integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==, + integrity: sha512-5D3Nk2JPqMI1wK25pEymeWRSlSMdo5QOGlyfrKg0AOufrUcjEE3RQgaCpHoBiM31CSNrtSgdJ0U6zL1rLDDfBA==, } - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/config': 3.0.0 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.7.1 - resolve-from: 5.0.0 - semver: 7.5.4 - dev: true + hasBin: true - /@changesets/assemble-release-plan@6.0.0: + '@changesets/config@3.1.3': resolution: { - integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==, + integrity: sha512-vnXjcey8YgBn2L1OPWd3ORs0bGC4LoYcK/ubpgvzNVr53JXV5GiTVj7fWdMRsoKUH7hhhMAQnsJUqLr21EncNw==, } - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 - dev: true - /@changesets/changelog-git@0.2.0: + '@changesets/errors@0.2.0': resolution: { - integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==, + integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==, } - dependencies: - '@changesets/types': 6.0.0 - dev: true - /@changesets/cli@2.27.1: + '@changesets/get-dependents-graph@2.1.3': resolution: { - integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==, + integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==, } - hasBin: true - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.0 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/get-release-plan': 4.0.0 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.0 - '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.6 - ansi-colors: 4.1.3 - chalk: 2.4.2 - ci-info: 3.9.0 - enquirer: 2.3.6 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 7.5.4 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.1.6 - dev: true - /@changesets/config@3.0.0: + '@changesets/get-release-plan@4.0.15': resolution: { - integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==, + integrity: sha512-Q04ZaRPuEVZtA+auOYgFaVQQSA98dXiVe/yFaZfY7hoSmQICHGvP0TF4u3EDNHWmmCS4ekA/XSpKlSM2PyTS2g==, } - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/logger': 0.1.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - dev: true - /@changesets/errors@0.2.0: + '@changesets/get-version-range-type@0.4.0': resolution: { - integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==, + integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==, } - dependencies: - extendable-error: 0.1.7 - dev: true - /@changesets/get-dependents-graph@2.0.0: + '@changesets/git@3.0.4': resolution: { - integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==, + integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==, } - dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.4 - dev: true - /@changesets/get-release-plan@4.0.0: + '@changesets/logger@0.1.1': resolution: { - integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==, + integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==, } - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/config': 3.0.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - dev: true - /@changesets/get-version-range-type@0.4.0: + '@changesets/parse@0.4.3': resolution: { - integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==, + integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==, } - dev: true - /@changesets/git@3.0.0: + '@changesets/pre@2.0.2': resolution: { - integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==, + integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==, } - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - dev: true - /@changesets/logger@0.1.0: + '@changesets/read@0.6.7': resolution: { - integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==, + integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==, } - dependencies: - chalk: 2.4.2 - dev: true - /@changesets/parse@0.4.0: + '@changesets/should-skip-package@0.1.2': resolution: { - integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==, + integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==, } - dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 - dev: true - /@changesets/pre@2.0.0: + '@changesets/types@4.1.0': resolution: { - integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==, + integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==, } - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - dev: true - /@changesets/read@0.6.0: + '@changesets/types@6.1.0': resolution: { - integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==, + integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==, } - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - dev: true - /@changesets/types@4.1.0: + '@changesets/write@0.4.0': resolution: { - integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==, + integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==, } - dev: true - /@changesets/types@6.0.0: + '@emnapi/core@1.11.2': resolution: { - integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==, + integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==, } - dev: true - /@changesets/write@0.3.0: + '@emnapi/runtime@1.11.2': resolution: { - integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==, + integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==, } - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.7.1 - dev: true - /@esbuild/android-arm64@0.18.20: + '@emnapi/wasi-threads@1.2.2': resolution: { - integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, + integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==, } - engines: { node: '>=12' } - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.15.15: + '@esbuild/aix-ppc64@0.28.1': resolution: { - integrity: sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==, + integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==, } - engines: { node: '>=12' } - cpu: [arm] + engines: { node: '>=18' } + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: + { + integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==, + } + engines: { node: '>=18' } + cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.18.20: + '@esbuild/android-arm@0.28.1': resolution: { - integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, + integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.18.20: + '@esbuild/android-x64@0.28.1': resolution: { - integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, + integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.18.20: + '@esbuild/darwin-arm64@0.28.1': resolution: { - integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, + integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.18.20: + '@esbuild/darwin-x64@0.28.1': resolution: { - integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, + integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: + '@esbuild/freebsd-arm64@0.28.1': resolution: { - integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, + integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.18.20: + '@esbuild/freebsd-x64@0.28.1': resolution: { - integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, + integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.18.20: + '@esbuild/linux-arm64@0.28.1': resolution: { - integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, + integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.18.20: + '@esbuild/linux-arm@0.28.1': resolution: { - integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, + integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.18.20: + '@esbuild/linux-ia32@0.28.1': resolution: { - integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, + integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [ia32] os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.15.15: - resolution: - { - integrity: sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==, - } - engines: { node: '>=12' } - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.18.20: + '@esbuild/linux-loong64@0.28.1': resolution: { - integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, + integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [loong64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.18.20: + '@esbuild/linux-mips64el@0.28.1': resolution: { - integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, + integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [mips64el] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.18.20: + '@esbuild/linux-ppc64@0.28.1': resolution: { - integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, + integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.18.20: + '@esbuild/linux-riscv64@0.28.1': resolution: { - integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, + integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.18.20: + '@esbuild/linux-s390x@0.28.1': resolution: { - integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, + integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.18.20: + '@esbuild/linux-x64@0.28.1': resolution: { - integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, + integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.18.20: + '@esbuild/netbsd-arm64@0.28.1': resolution: { - integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, + integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==, } - engines: { node: '>=12' } + engines: { node: '>=18' } + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: + { + integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==, + } + engines: { node: '>=18' } cpu: [x64] os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.18.20: + '@esbuild/openbsd-arm64@0.28.1': resolution: { - integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, + integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==, } - engines: { node: '>=12' } + engines: { node: '>=18' } + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: + { + integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==, + } + engines: { node: '>=18' } cpu: [x64] os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.18.20: + '@esbuild/openharmony-arm64@0.28.1': resolution: { - integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, + integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==, } - engines: { node: '>=12' } + engines: { node: '>=18' } + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: + { + integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==, + } + engines: { node: '>=18' } cpu: [x64] os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.18.20: + '@esbuild/win32-arm64@0.28.1': resolution: { - integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, + integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.18.20: + '@esbuild/win32-ia32@0.28.1': resolution: { - integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, + integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.18.20: + '@esbuild/win32-x64@0.28.1': resolution: { - integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, + integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==, } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@ironkinoko/rollup-plugin-styles@4.0.3(rollup@3.4.0): + '@inquirer/external-editor@1.0.3': resolution: { - integrity: sha512-FU7Hko5Z9bu3PW14XXRbKE91Hn0iWEpXQW4YzUIOMNyJ9VrIoO5sImyzIo5PRc9o9buTePhygGQ4OEe3bvOTdQ==, + integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>=18' } peerDependencies: - rollup: ^2.63.0 || 3.x - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.4.0) - cosmiconfig: 7.0.1 - cssnano: 5.1.14(postcss@8.4.14) - fs-extra: 10.1.0 - icss-utils: 5.1.0(postcss@8.4.14) - mime-types: 2.1.35 - p-queue: 6.6.2 - postcss: 8.4.14 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.14) - postcss-modules-local-by-default: 4.0.0(postcss@8.4.14) - postcss-modules-scope: 3.0.0(postcss@8.4.14) - postcss-modules-values: 4.0.0(postcss@8.4.14) - postcss-value-parser: 4.2.0 - query-string: 7.1.1 - resolve: 1.22.1 - resolve.exports: 1.1.0 - rollup: 3.4.0 - source-map-js: 1.0.2 - tslib: 2.4.0 - dev: true + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true - /@ljharb/through@2.3.11: + '@inquirer/figures@1.0.15': resolution: { - integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==, + integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==, } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.2 - dev: true + engines: { node: '>=18' } - /@manypkg/find-root@1.1.0: + '@manypkg/find-root@1.1.0': resolution: { integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==, } - dependencies: - '@babel/runtime': 7.23.4 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - dev: true - /@manypkg/get-packages@1.1.3: + '@manypkg/get-packages@1.1.3': resolution: { integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==, } - dependencies: - '@babel/runtime': 7.23.4 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - dev: true - /@nodelib/fs.scandir@2.1.5: + '@napi-rs/wasm-runtime@1.1.6': + resolution: + { + integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==, + } + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@nodelib/fs.scandir@2.1.5': resolution: { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, } engines: { node: '>= 8' } - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, } engines: { node: '>= 8' } - dev: true - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, } engines: { node: '>= 8' } - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 - dev: true - /@rollup/plugin-commonjs@23.0.2(rollup@3.4.0): + '@oxc-project/types@0.140.0': resolution: { - integrity: sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==, + integrity: sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==, } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.4.0) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.0.3 - is-reference: 1.2.1 - magic-string: 0.26.7 - rollup: 3.4.0 - dev: true - /@rollup/plugin-image@3.0.1(rollup@3.4.0): + '@parcel/watcher-android-arm64@2.5.6': resolution: { - integrity: sha512-F50Sko4Xcc576x7HG9f3MvJKKnBfSmqfVFWJkJgyIEkI8YxZxux28lDbuy0+GsAK6BFl9Gn+TRXOUgHHJbFh3w==, + integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==, } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.4.0) - mini-svg-data-uri: 1.4.4 - rollup: 3.4.0 - dev: true + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [android] - /@rollup/plugin-node-resolve@15.0.1(rollup@3.4.0): + '@parcel/watcher-darwin-arm64@2.5.6': resolution: { - integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==, + integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==, } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.78.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.4.0) - '@types/resolve': 1.20.2 - deepmerge: 4.2.2 - is-builtin-module: 3.2.0 - is-module: 1.0.0 - resolve: 1.22.1 - rollup: 3.4.0 - dev: true + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [darwin] - /@rollup/pluginutils@5.0.2(rollup@3.4.0): + '@parcel/watcher-darwin-x64@2.5.6': resolution: { - integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==, + integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==, } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.0 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.4.0 - dev: true + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [darwin] - /@trysound/sax@0.2.0: + '@parcel/watcher-freebsd-x64@2.5.6': resolution: { - integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==, + integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==, } - engines: { node: '>=10.13.0' } - dev: true + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [freebsd] - /@types/estree@1.0.0: + '@parcel/watcher-linux-arm-glibc@2.5.6': resolution: { - integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==, + integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==, } - dev: true + engines: { node: '>= 10.0.0' } + cpu: [arm] + os: [linux] + libc: [glibc] - /@types/fs-extra@11.0.4: + '@parcel/watcher-linux-arm-musl@2.5.6': resolution: { - integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==, + integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==, } - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 18.11.9 - dev: true + engines: { node: '>= 10.0.0' } + cpu: [arm] + os: [linux] + libc: [musl] - /@types/inquirer@9.0.7: + '@parcel/watcher-linux-arm64-glibc@2.5.6': resolution: { - integrity: sha512-Q0zyBupO6NxGRZut/JdmqYKOnN95Eg5V8Csg3PGKkP+FnvsUZx1jAyK7fztIszxxMuoBA6E3KXWvdZVXIpx60g==, + integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==, } - dependencies: - '@types/through': 0.0.30 - rxjs: 7.5.7 - dev: true + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [linux] + libc: [glibc] - /@types/jquery@3.5.29: + '@parcel/watcher-linux-arm64-musl@2.5.6': resolution: { - integrity: sha512-oXQQC9X9MOPRrMhPHHOsXqeQDnWeCDT3PelUIg/Oy8FAbzSZtFHRjc7IpbfFVmpLtJ+UOoywpRsuO5Jxjybyeg==, + integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==, } - dependencies: - '@types/sizzle': 2.3.3 - dev: true + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [linux] + libc: [musl] - /@types/jsonfile@6.1.4: + '@parcel/watcher-linux-x64-glibc@2.5.6': resolution: { - integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==, + integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==, } - dependencies: - '@types/node': 18.11.9 - dev: true + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [linux] + libc: [glibc] - /@types/lodash-es@4.17.12: + '@parcel/watcher-linux-x64-musl@2.5.6': resolution: { - integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==, + integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==, } - dependencies: - '@types/lodash': 4.14.182 - dev: true + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [linux] + libc: [musl] - /@types/lodash@4.14.182: + '@parcel/watcher-win32-arm64@2.5.6': resolution: { - integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==, + integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==, } - dev: true + engines: { node: '>= 10.0.0' } + cpu: [arm64] + os: [win32] - /@types/minimatch@3.0.5: + '@parcel/watcher-win32-ia32@2.5.6': resolution: { - integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==, + integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==, } - dev: true + engines: { node: '>= 10.0.0' } + cpu: [ia32] + os: [win32] - /@types/minimist@1.2.2: + '@parcel/watcher-win32-x64@2.5.6': resolution: { - integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==, + integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==, } - dev: true + engines: { node: '>= 10.0.0' } + cpu: [x64] + os: [win32] - /@types/node@12.20.55: + '@parcel/watcher@2.5.6': resolution: { - integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, + integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==, } - dev: true + engines: { node: '>= 10.0.0' } - /@types/node@18.11.9: + '@rolldown/binding-android-arm64@1.2.0': resolution: { - integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==, + integrity: sha512-9yB1l95IrJuNGDFdOYe79vdApdz6WWBCObE+rQ2LUliYUlcyFwSYIb2xb5/Ifw7dAtMy2ZqNyd8QTSOc7duAKw==, } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [android] - /@types/normalize-package-data@2.4.1: + '@rolldown/binding-darwin-arm64@1.2.0': resolution: { - integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==, + integrity: sha512-pexNaW9ACLUOaBITOpU6qVu4VrsOFIjTv6bzgu0YUATo4eUJx0V605PxwZfndpPOn0ilqGqvGQ0M8UW0IE24jg==, } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [darwin] - /@types/parse-json@4.0.0: + '@rolldown/binding-darwin-x64@1.2.0': resolution: { - integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==, + integrity: sha512-NqKYaq0355ZmNMG4QGpxtEDxsc7tGDhjhCm4PpE0cwnBW+5Il95LJyq414niEiaKLVjnVHBEjSo1wngKxJNiFw==, } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [darwin] - /@types/resolve@1.20.2: + '@rolldown/binding-freebsd-x64@1.2.0': resolution: { - integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, + integrity: sha512-3vPoHzh6eBTz9IbB0/qZdSr0Qeks2echn+I4cHu2joV74VriPDdldswksEDzrl1mBB+oPRi+67+3Ib59paxIPQ==, } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [freebsd] - /@types/semver@7.5.6: + '@rolldown/binding-linux-arm-gnueabihf@1.2.0': resolution: { - integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==, + integrity: sha512-E6NNefZ1bUVmKJq2tJkf45J4Zyczj7qm9rUT7NY+Xo2474Y13qWAwc2tvBt0BAVbmtXR1llkxXg0Ou1jbDf2SQ==, } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm] + os: [linux] - /@types/sizzle@2.3.3: + '@rolldown/binding-linux-arm64-gnu@1.2.0': resolution: { - integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==, + integrity: sha512-D+TgkdgM1vu+7/Fpf8+v0ARW+RXEP9Ccazgm8zQ4JFFd9Q7SrYQ2TakU5S5ihazQDgpKyAgZDOcIFsvoHmTZ8w==, } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [linux] + libc: [glibc] - /@types/through@0.0.30: + '@rolldown/binding-linux-arm64-musl@1.2.0': resolution: { - integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==, + integrity: sha512-wUqdwJBbAv0APN87GecstdMUtLjjNTs0hBALpxETD73mccFxdmt/XeizXDtN5RAlBwNKmI+Tg+blect2G+8IeQ==, } - dependencies: - '@types/node': 18.11.9 - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [linux] + libc: [musl] - /ansi-colors@4.1.3: + '@rolldown/binding-linux-ppc64-gnu@1.2.0': resolution: { - integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, + integrity: sha512-9DtF35qR9/NrfhM4oxLplCzVVjE+KKm8Pjemi0i/sdhAWkUasjmSo8WTTubNJClhSHCfyk2yeyoXDQEDPtDAAw==, } - engines: { node: '>=6' } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [ppc64] + os: [linux] + libc: [glibc] - /ansi-escapes@4.3.2: + '@rolldown/binding-linux-s390x-gnu@1.2.0': resolution: { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, + integrity: sha512-RzuHrBh8X8Hntd2N4VR02QGEciq/9JhcZoTpR/Cee6otRrlILGCf3cg2ygHuih+ZebUnWmMrDX6ITI85btO6rQ==, } - engines: { node: '>=8' } - dependencies: - type-fest: 0.21.3 - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [s390x] + os: [linux] + libc: [glibc] - /ansi-regex@5.0.1: + '@rolldown/binding-linux-x64-gnu@1.2.0': resolution: { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + integrity: sha512-MK7L0018jjh1jR3mh21G2j1zAVcpscJBlPo2z19pRjv2XOYGRhaV4LyiD8HO6nCDdZln9IFgCMIV5yt4E3klGQ==, } - engines: { node: '>=8' } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [linux] + libc: [glibc] - /ansi-styles@3.2.1: + '@rolldown/binding-linux-x64-musl@1.2.0': resolution: { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, + integrity: sha512-gyrxLQ9NfGb/9LoVnC4kb9miUghw1mghnkfYvNHSnVIXriabnfgGPUP4RLcJm87q3KgYz4FYUG8IDiWUT+CpSw==, } - engines: { node: '>=4' } - dependencies: - color-convert: 1.9.3 - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [linux] + libc: [musl] - /ansi-styles@4.3.0: + '@rolldown/binding-openharmony-arm64@1.2.0': resolution: { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + integrity: sha512-/6VFMQGRmrhP77KXDC+StIxGzcNp5JOIyYtw0CQ8gPlzhpiIRucYfoM5FaFamHd5BJYIdH86yfP46l1p3WdrFA==, } - engines: { node: '>=8' } - dependencies: - color-convert: 2.0.1 - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [openharmony] - /anymatch@3.1.2: + '@rolldown/binding-wasm32-wasi@1.2.0': resolution: { - integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==, + integrity: sha512-rwdbUL465kisF24WEJLvP3JrEG6E5GRuIHt5wpMwHGERtHe4Wm2CIvtf5gTBgr2tGOHKh5NdKEAFS2VkOPE91g==, } - engines: { node: '>= 8' } - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [wasm32] - /argparse@1.0.10: + '@rolldown/binding-win32-arm64-msvc@1.2.0': resolution: { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, + integrity: sha512-+5suHwRiKGmhwyUaNT8a5QbrBvLFh2DbO910TEmGRH1aSxwrCezodvGQnulv4uiWEIv1Kq4ypRsJ5+O+ry1DiA==, } - dependencies: - sprintf-js: 1.0.3 - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [win32] - /array-differ@3.0.0: + '@rolldown/binding-win32-x64-msvc@1.2.0': resolution: { - integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==, + integrity: sha512-WfFv6/qGufotqBSBzBYwgpCkJBk8Nj7697LL9vTz/XWc67e0r3oewu8iMRwQj3AUL45GVD7wVsPjCsAAtW66Wg==, } - engines: { node: '>=8' } - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [win32] - /array-union@2.1.0: + '@rolldown/pluginutils@1.0.1': resolution: { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==, } - engines: { node: '>=8' } - dev: true - /array.prototype.flat@1.3.0: + '@tybys/wasm-util@0.10.3': resolution: { - integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==, + integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==, } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.1 - es-shim-unscopables: 1.0.0 - dev: true - /arrify@1.0.1: + '@types/fs-extra@11.0.4': resolution: { - integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, + integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==, } - engines: { node: '>=0.10.0' } - dev: true - /arrify@2.0.1: + '@types/fs-extra@8.1.5': resolution: { - integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==, + integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==, } - engines: { node: '>=8' } - dev: true - /balanced-match@1.0.2: + '@types/glob@7.2.0': resolution: { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==, } - dev: true - /base64-js@1.5.1: + '@types/inquirer@9.0.10': resolution: { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + integrity: sha512-vFW2WbXwO9eZpRT5GJGFJ/shgyMNnYozmnjakt9jCQSS1lvqX8pZEQMjJ9RdDPct/YxwciQ8+V8OYn9euIrZDA==, } - dev: true - /better-path-resolve@1.0.0: + '@types/jquery@3.5.34': resolution: { - integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, + integrity: sha512-3m3939S3erqmTLJANS/uy0B6V7BorKx7RorcGZVjZ62dF5PAGbKEDZK1CuLtKombJkFA2T1jl8LAIIs7IV6gBQ==, } - engines: { node: '>=4' } - dependencies: - is-windows: 1.0.2 - dev: true - /binary-extensions@2.2.0: + '@types/jsonfile@6.1.4': resolution: { - integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, + integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==, } - engines: { node: '>=8' } - dev: true - /bl@4.1.0: + '@types/lodash-es@4.17.12': resolution: { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, + integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==, } - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.0 - dev: true - /bocchi@1.1.3: + '@types/lodash@4.17.24': resolution: { - integrity: sha512-YZKbxVqiniOxzkF0JrhcMyjOwRwW5264ZVnMWtYhp/sYwE6nipoeP/hwMbAkmAbueWcpXsLbQjcajrDgCODKZw==, + integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==, } - hasBin: true - dependencies: - '@ironkinoko/rollup-plugin-styles': 4.0.3(rollup@3.4.0) - '@rollup/plugin-commonjs': 23.0.2(rollup@3.4.0) - '@rollup/plugin-image': 3.0.1(rollup@3.4.0) - '@rollup/plugin-node-resolve': 15.0.1(rollup@3.4.0) - '@types/node': 18.11.9 - chalk: 5.3.0 - esbuild: 0.15.15 - fs-extra: 10.1.0 - node-html-parser: 6.1.4 - pretty-ms: 8.0.0 - rollup: 3.4.0 - rollup-plugin-esbuild: 5.0.0(esbuild@0.15.15)(rollup@3.4.0) - sass: 1.56.1 - slash: 5.1.0 - yargs: 17.6.2 - transitivePeerDependencies: - - supports-color - dev: true - /boolbase@1.0.0: + '@types/minimatch@6.0.0': resolution: { - integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, + integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==, } - dev: true + deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - /brace-expansion@1.1.11: + '@types/node@12.20.55': resolution: { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, } - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - /brace-expansion@2.0.1: + '@types/node@25.3.3': resolution: { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==, } - dependencies: - balanced-match: 1.0.2 - dev: true - /braces@3.0.2: + '@types/sizzle@2.3.10': resolution: { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, + integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==, } - engines: { node: '>=8' } - dependencies: - fill-range: 7.0.1 - dev: true - /breakword@1.0.5: + '@types/through@0.0.33': resolution: { - integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==, + integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==, } - dependencies: - wcwidth: 1.0.1 - dev: true - /browserslist@4.21.4: + ansi-colors@4.1.3: resolution: { - integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==, + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - dependencies: - caniuse-lite: 1.0.30001439 - electron-to-chromium: 1.4.284 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10(browserslist@4.21.4) - dev: true + engines: { node: '>=6' } - /buffer@5.7.1: + ansi-escapes@4.3.2: resolution: { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, } - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true + engines: { node: '>=8' } - /builtin-modules@3.3.0: + ansi-regex@5.0.1: resolution: { - integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, } - engines: { node: '>=6' } - dev: true + engines: { node: '>=8' } - /call-bind@1.0.2: + ansi-regex@6.2.2: resolution: { - integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, + integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, } - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.1.2 - dev: true + engines: { node: '>=12' } - /callsites@3.1.0: + ansi-styles@4.3.0: resolution: { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, } - engines: { node: '>=6' } - dev: true + engines: { node: '>=8' } - /camelcase-keys@6.2.2: + ansi-styles@6.2.3: resolution: { - integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==, + integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==, } - engines: { node: '>=8' } - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: true + engines: { node: '>=12' } - /camelcase@5.3.1: + argparse@1.0.10: resolution: { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, } - engines: { node: '>=6' } - dev: true - /caniuse-api@3.0.0: + argparse@2.0.1: resolution: { - integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, } - dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001439 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - dev: true - /caniuse-lite@1.0.30001439: + array-union@2.1.0: resolution: { - integrity: sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==, + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, } - dev: true + engines: { node: '>=8' } - /chalk@2.4.2: + balanced-match@1.0.2: resolution: { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } - engines: { node: '>=4' } - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - /chalk@3.0.0: + balanced-match@4.0.4: resolution: { - integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, + integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==, } - engines: { node: '>=8' } - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true + engines: { node: 18 || 20 || >=22 } - /chalk@4.1.2: + base64-js@1.5.1: resolution: { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, } - engines: { node: '>=10' } - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - /chalk@5.3.0: + better-path-resolve@1.0.0: resolution: { - integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, + integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - dev: true + engines: { node: '>=4' } - /chardet@0.7.0: + bl@4.1.0: resolution: { - integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, } - dev: true - /chokidar@3.5.3: + bocchi@2.1.0: resolution: { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + integrity: sha512-OLO4mnMg6nfwNn+Y3c2dKHaCpfNdwOiNVd0eDCFV1E2KsbA5klYSo7oIYYGDyXaSSwoJvpVpGOg6NfjsBBJ3Ww==, } - engines: { node: '>= 8.10.0' } - dependencies: - anymatch: 3.1.2 - braces: 3.0.2 - 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 - dev: true + hasBin: true - /ci-info@3.9.0: + boolbase@1.0.0: resolution: { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, } - engines: { node: '>=8' } - dev: true - /cli-cursor@3.1.0: + brace-expansion@1.1.16: resolution: { - integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==, } - engines: { node: '>=8' } - dependencies: - restore-cursor: 3.1.0 - dev: true - /cli-spinners@2.6.1: + brace-expansion@5.0.4: resolution: { - integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, + integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==, } - engines: { node: '>=6' } - dev: true + engines: { node: 18 || 20 || >=22 } - /cli-width@4.1.0: + braces@3.0.3: resolution: { - integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==, + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, } - engines: { node: '>= 12' } - dev: true + engines: { node: '>=8' } - /cliui@6.0.0: + buffer@5.7.1: resolution: { - integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, } - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - /cliui@8.0.1: + chalk@4.1.2: resolution: { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, } - engines: { node: '>=12' } - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true + engines: { node: '>=10' } - /clone@1.0.4: + chalk@5.6.2: resolution: { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==, } - engines: { node: '>=0.8' } - dev: true + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - /color-convert@1.9.3: + chardet@2.1.1: resolution: { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==, } - dependencies: - color-name: 1.1.3 - dev: true - /color-convert@2.0.1: + chokidar@4.0.3: resolution: { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, } - engines: { node: '>=7.0.0' } - dependencies: - color-name: 1.1.4 - dev: true + engines: { node: '>= 14.16.0' } - /color-name@1.1.3: + cli-cursor@3.1.0: resolution: { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, } - dev: true + engines: { node: '>=8' } - /color-name@1.1.4: + cli-spinners@2.9.2: resolution: { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, } - dev: true + engines: { node: '>=6' } - /colord@2.9.2: + cli-width@4.1.0: resolution: { - integrity: sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==, + integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==, } - dev: true + engines: { node: '>= 12' } - /commander@7.2.0: + cliui@9.0.1: resolution: { - integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, + integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==, } - engines: { node: '>= 10' } - dev: true + engines: { node: '>=20' } - /commondir@1.0.1: + clone@1.0.4: resolution: { - integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, } - dev: true + engines: { node: '>=0.8' } - /concat-map@0.0.1: + color-convert@2.0.1: resolution: { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, } - dev: true + engines: { node: '>=7.0.0' } - /copy-to-clipboard@3.3.1: + color-name@1.1.4: resolution: { - integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==, + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } - dependencies: - toggle-selection: 1.0.6 - dev: false - /cosmiconfig@7.0.1: + colorette@1.4.0: resolution: { - integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==, + integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==, } - engines: { node: '>=10' } - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: true - /cross-spawn@5.1.0: + concat-map@0.0.1: resolution: { - integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==, + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - /cross-spawn@7.0.3: + copy-to-clipboard@3.3.3: resolution: { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==, } - engines: { node: '>= 8' } - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - /css-declaration-sorter@6.3.1(postcss@8.4.14): + cross-spawn@7.0.6: resolution: { - integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==, + integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, } - engines: { node: ^10 || ^12 || >=14 } - peerDependencies: - postcss: ^8.0.9 - dependencies: - postcss: 8.4.14 - dev: true + engines: { node: '>= 8' } - /css-select@4.3.0: + css-select@5.2.2: resolution: { - integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==, + integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, } - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - dev: true - /css-select@5.1.0: + css-what@6.2.2: resolution: { - integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, + integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, } - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.0.1 - nth-check: 2.1.1 - dev: true + engines: { node: '>= 6' } - /css-tree@1.1.3: + defaults@1.0.4: resolution: { - integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, + integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, } - engines: { node: '>=8.0.0' } - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: true - /css-what@6.1.0: + detect-indent@6.1.0: resolution: { - integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, + integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, } - engines: { node: '>= 6' } - dev: true + engines: { node: '>=8' } - /cssesc@3.0.0: + detect-libc@2.1.2: resolution: { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, } - engines: { node: '>=4' } - hasBin: true - dev: true + engines: { node: '>=8' } - /cssnano-preset-default@5.2.13(postcss@8.4.14): + dir-glob@3.0.1: resolution: { - integrity: sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==, + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - dependencies: - css-declaration-sorter: 6.3.1(postcss@8.4.14) - cssnano-utils: 3.1.0(postcss@8.4.14) - postcss: 8.4.14 - postcss-calc: 8.2.4(postcss@8.4.14) - postcss-colormin: 5.3.0(postcss@8.4.14) - postcss-convert-values: 5.1.3(postcss@8.4.14) - postcss-discard-comments: 5.1.2(postcss@8.4.14) - postcss-discard-duplicates: 5.1.0(postcss@8.4.14) - postcss-discard-empty: 5.1.1(postcss@8.4.14) - postcss-discard-overridden: 5.1.0(postcss@8.4.14) - postcss-merge-longhand: 5.1.7(postcss@8.4.14) - postcss-merge-rules: 5.1.3(postcss@8.4.14) - postcss-minify-font-values: 5.1.0(postcss@8.4.14) - postcss-minify-gradients: 5.1.1(postcss@8.4.14) - postcss-minify-params: 5.1.4(postcss@8.4.14) - postcss-minify-selectors: 5.2.1(postcss@8.4.14) - postcss-normalize-charset: 5.1.0(postcss@8.4.14) - postcss-normalize-display-values: 5.1.0(postcss@8.4.14) - postcss-normalize-positions: 5.1.1(postcss@8.4.14) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.14) - postcss-normalize-string: 5.1.0(postcss@8.4.14) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.14) - postcss-normalize-unicode: 5.1.1(postcss@8.4.14) - postcss-normalize-url: 5.1.0(postcss@8.4.14) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.14) - postcss-ordered-values: 5.1.3(postcss@8.4.14) - postcss-reduce-initial: 5.1.1(postcss@8.4.14) - postcss-reduce-transforms: 5.1.0(postcss@8.4.14) - postcss-svgo: 5.1.0(postcss@8.4.14) - postcss-unique-selectors: 5.1.1(postcss@8.4.14) - dev: true - - /cssnano-utils@3.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - dependencies: - postcss: 8.4.14 - dev: true + engines: { node: '>=8' } - /cssnano@5.1.14(postcss@8.4.14): + dom-serializer@2.0.0: resolution: { - integrity: sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==, + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - dependencies: - cssnano-preset-default: 5.2.13(postcss@8.4.14) - lilconfig: 2.0.6 - postcss: 8.4.14 - yaml: 1.10.2 - dev: true - /csso@4.2.0: + domelementtype@2.3.0: resolution: { - integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==, + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, } - engines: { node: '>=8.0.0' } - dependencies: - css-tree: 1.1.3 - dev: true - /csv-generate@3.4.3: + domhandler@5.0.3: resolution: { - integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==, + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, } - dev: true + engines: { node: '>= 4' } - /csv-parse@4.16.3: + domutils@3.2.2: resolution: { - integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==, + integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, } - dev: true - /csv-stringify@5.6.5: + emoji-regex@10.6.0: resolution: { - integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==, + integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, } - dev: true - /csv@5.5.3: + emoji-regex@8.0.0: resolution: { - integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==, + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, } - engines: { node: '>= 0.1.90' } - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - dev: true - /debug@4.3.4: + end-of-stream@1.4.5: resolution: { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - /decamelize-keys@1.1.0: + enquirer@2.4.1: resolution: { - integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==, + integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==, } - engines: { node: '>=0.10.0' } - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true + engines: { node: '>=8.6' } - /decamelize@1.2.0: + entities@4.5.0: resolution: { - integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, } - engines: { node: '>=0.10.0' } - dev: true + engines: { node: '>=0.12' } - /decode-uri-component@0.2.0: + esbuild@0.28.1: resolution: { - integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==, + integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==, } - engines: { node: '>=0.10' } - dev: true + engines: { node: '>=18' } + hasBin: true - /deepmerge@4.2.2: + escalade@3.2.0: resolution: { - integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==, + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, } - engines: { node: '>=0.10.0' } - dev: true + engines: { node: '>=6' } - /defaults@1.0.3: + esprima@4.0.1: resolution: { - integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==, + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, } - dependencies: - clone: 1.0.4 - dev: true + engines: { node: '>=4' } + hasBin: true - /define-properties@1.1.4: + execa@4.1.0: resolution: { - integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==, + integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==, } - engines: { node: '>= 0.4' } - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true + engines: { node: '>=10' } - /detect-indent@6.1.0: + extendable-error@0.1.7: resolution: { - integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, + integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==, } - engines: { node: '>=8' } - dev: true - /dir-glob@3.0.1: + fast-glob@3.3.3: resolution: { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, } - engines: { node: '>=8' } - dependencies: - path-type: 4.0.0 - dev: true + engines: { node: '>=8.6.0' } - /dom-serializer@1.4.1: + fastq@1.20.1: resolution: { - integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==, + integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, } - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: true - /dom-serializer@2.0.0: + fill-range@7.1.1: resolution: { - integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, } - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.4.0 - dev: true + engines: { node: '>=8' } - /domelementtype@2.3.0: + find-up@4.1.0: resolution: { - integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, } - dev: true + engines: { node: '>=8' } - /domhandler@4.3.1: + fs-extra@11.3.4: resolution: { - integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==, + integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==, } - engines: { node: '>= 4' } - dependencies: - domelementtype: 2.3.0 - dev: true + engines: { node: '>=14.14' } - /domhandler@5.0.3: + fs-extra@7.0.1: resolution: { - integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, + integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==, } - engines: { node: '>= 4' } - dependencies: - domelementtype: 2.3.0 - dev: true + engines: { node: '>=6 <7 || >=8' } - /domutils@2.8.0: + fs-extra@8.1.0: resolution: { - integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==, + integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, } - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: true + engines: { node: '>=6 <7 || >=8' } - /domutils@3.0.1: + fs.realpath@1.0.0: resolution: { - integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==, + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, } - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: true - /electron-to-chromium@1.4.284: + fsevents@2.3.3: resolution: { - integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==, + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, } - dev: true + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] - /emoji-regex@8.0.0: + get-caller-file@2.0.5: resolution: { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, } - dev: true + engines: { node: 6.* || 8.* || >= 10.* } - /end-of-stream@1.4.4: + get-east-asian-width@1.5.0: resolution: { - integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, + integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==, } - dependencies: - once: 1.4.0 - dev: true + engines: { node: '>=18' } - /enquirer@2.3.6: + get-stream@5.2.0: resolution: { - integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, + integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==, } - engines: { node: '>=8.6' } - dependencies: - ansi-colors: 4.1.3 - dev: true + engines: { node: '>=8' } - /entities@2.2.0: + glob-parent@5.1.2: resolution: { - integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, } - dev: true + engines: { node: '>= 6' } - /entities@4.4.0: + glob@7.2.0: resolution: { - integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==, + integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==, } - engines: { node: '>=0.12' } - dev: true + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - /error-ex@1.3.2: + globby@10.0.1: resolution: { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, + integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==, } - dependencies: - is-arrayish: 0.2.1 - dev: true + engines: { node: '>=8' } - /es-abstract@1.20.1: + globby@11.1.0: resolution: { - integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==, + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.1.2 - get-symbol-description: 1.0.0 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-symbols: 1.0.3 - internal-slot: 1.0.3 - is-callable: 1.2.4 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-weakref: 1.0.2 - object-inspect: 1.12.2 - object-keys: 1.1.1 - object.assign: 4.1.2 - regexp.prototype.flags: 1.4.3 - string.prototype.trimend: 1.0.5 - string.prototype.trimstart: 1.0.5 - unbox-primitive: 1.0.2 - dev: true + engines: { node: '>=10' } - /es-module-lexer@1.1.0: + globby@13.2.2: resolution: { - integrity: sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==, + integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==, } - dev: true + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - /es-shim-unscopables@1.0.0: + graceful-fs@4.2.11: resolution: { - integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==, + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, } - dependencies: - has: 1.0.3 - dev: true - /es-to-primitive@1.2.1: + has-flag@4.0.0: resolution: { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, } - engines: { node: '>= 0.4' } - dependencies: - is-callable: 1.2.4 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true + engines: { node: '>=8' } - /esbuild-android-64@0.15.15: + he@1.2.0: resolution: { - integrity: sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==, + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, } - engines: { node: '>=12' } - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true + hasBin: true - /esbuild-android-arm64@0.15.15: + human-id@4.1.3: resolution: { - integrity: sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==, + integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==, } - engines: { node: '>=12' } - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + hasBin: true - /esbuild-darwin-64@0.15.15: + human-signals@1.1.1: resolution: { - integrity: sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==, + integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==, } - engines: { node: '>=12' } - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=8.12.0' } - /esbuild-darwin-arm64@0.15.15: + husky@8.0.3: resolution: { - integrity: sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==, + integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==, } - engines: { node: '>=12' } - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=14' } + hasBin: true - /esbuild-freebsd-64@0.15.15: + iconv-lite@0.7.2: resolution: { - integrity: sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==, + integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==, } - engines: { node: '>=12' } - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=0.10.0' } - /esbuild-freebsd-arm64@0.15.15: + ieee754@1.2.1: resolution: { - integrity: sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==, + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, } - engines: { node: '>=12' } - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-32@0.15.15: + ignore@5.3.2: resolution: { - integrity: sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==, + integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, } - engines: { node: '>=12' } - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: '>= 4' } - /esbuild-linux-64@0.15.15: + immutable@5.1.5: resolution: { - integrity: sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==, + integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==, } - engines: { node: '>=12' } - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm64@0.15.15: + inflight@1.0.6: resolution: { - integrity: sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==, + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, } - engines: { node: '>=12' } - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - /esbuild-linux-arm@0.15.15: + inherits@2.0.4: resolution: { - integrity: sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==, + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, } - engines: { node: '>=12' } - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-mips64le@0.15.15: + inquirer@9.3.8: resolution: { - integrity: sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==, + integrity: sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==, } - engines: { node: '>=12' } - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=18' } - /esbuild-linux-ppc64le@0.15.15: + is-extglob@2.1.1: resolution: { - integrity: sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==, + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, } - engines: { node: '>=12' } - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=0.10.0' } - /esbuild-linux-riscv64@0.15.15: + is-fullwidth-code-point@3.0.0: resolution: { - integrity: sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==, + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, } - engines: { node: '>=12' } - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=8' } - /esbuild-linux-s390x@0.15.15: + is-glob@4.0.3: resolution: { - integrity: sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==, + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, } - engines: { node: '>=12' } - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=0.10.0' } - /esbuild-netbsd-64@0.15.15: + is-interactive@1.0.0: resolution: { - integrity: sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==, + integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, } - engines: { node: '>=12' } - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=8' } - /esbuild-openbsd-64@0.15.15: + is-number@7.0.0: resolution: { - integrity: sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==, + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, } - engines: { node: '>=12' } - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=0.12.0' } - /esbuild-sunos-64@0.15.15: + is-plain-object@3.0.1: resolution: { - integrity: sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==, + integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==, } - engines: { node: '>=12' } - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=0.10.0' } - /esbuild-windows-32@0.15.15: + is-stream@2.0.1: resolution: { - integrity: sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==, + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, } - engines: { node: '>=12' } - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=8' } - /esbuild-windows-64@0.15.15: + is-subdir@1.2.0: resolution: { - integrity: sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==, + integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==, } - engines: { node: '>=12' } - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=4' } - /esbuild-windows-arm64@0.15.15: + is-unicode-supported@0.1.0: resolution: { - integrity: sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==, + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, } - engines: { node: '>=12' } - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=10' } - /esbuild@0.15.15: + is-windows@1.0.2: resolution: { - integrity: sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==, - } - engines: { node: '>=12' } - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.15.15 - '@esbuild/linux-loong64': 0.15.15 - esbuild-android-64: 0.15.15 - esbuild-android-arm64: 0.15.15 - esbuild-darwin-64: 0.15.15 - esbuild-darwin-arm64: 0.15.15 - esbuild-freebsd-64: 0.15.15 - esbuild-freebsd-arm64: 0.15.15 - esbuild-linux-32: 0.15.15 - esbuild-linux-64: 0.15.15 - esbuild-linux-arm: 0.15.15 - esbuild-linux-arm64: 0.15.15 - esbuild-linux-mips64le: 0.15.15 - esbuild-linux-ppc64le: 0.15.15 - esbuild-linux-riscv64: 0.15.15 - esbuild-linux-s390x: 0.15.15 - esbuild-netbsd-64: 0.15.15 - esbuild-openbsd-64: 0.15.15 - esbuild-sunos-64: 0.15.15 - esbuild-windows-32: 0.15.15 - esbuild-windows-64: 0.15.15 - esbuild-windows-arm64: 0.15.15 - dev: true - - /esbuild@0.18.20: - resolution: - { - integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==, - } - engines: { node: '>=12' } - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - dev: true - - /escalade@3.1.1: - resolution: - { - integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, + integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, } - engines: { node: '>=6' } - dev: true + engines: { node: '>=0.10.0' } - /escape-string-regexp@1.0.5: + isexe@2.0.0: resolution: { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, } - engines: { node: '>=0.8.0' } - dev: true - /escape-string-regexp@5.0.0: + js-yaml@3.14.2: resolution: { - integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, + integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==, } - engines: { node: '>=12' } - dev: true + hasBin: true - /esprima@4.0.1: + js-yaml@4.1.1: resolution: { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, } - engines: { node: '>=4' } hasBin: true - dev: true - /estree-walker@2.0.2: + jsonfile@4.0.0: resolution: { - integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, } - dev: true - /eventemitter3@4.0.7: + jsonfile@6.2.0: resolution: { - integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, + integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==, } - dev: true - /execa@4.1.0: + jsqr@1.4.0: resolution: { - integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==, + integrity: sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==, } - engines: { node: '>=10' } - dependencies: - cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - /extendable-error@0.1.7: + locate-path@5.0.0: resolution: { - integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==, + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, } - dev: true + engines: { node: '>=8' } - /external-editor@3.1.0: + lodash-es@4.17.23: resolution: { - integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==, + integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==, } - engines: { node: '>=4' } - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - /fast-glob@3.3.2: + lodash.startcase@4.4.0: resolution: { - integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, + integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, } - engines: { node: '>=8.6.0' } - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - /fastq@1.13.0: + log-symbols@4.1.0: resolution: { - integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==, + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, } - dependencies: - reusify: 1.0.4 - dev: true + engines: { node: '>=10' } - /figures@5.0.0: + merge-stream@2.0.0: resolution: { - integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==, + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, } - engines: { node: '>=14' } - dependencies: - escape-string-regexp: 5.0.0 - is-unicode-supported: 1.3.0 - dev: true - /fill-range@7.0.1: + merge2@1.4.1: resolution: { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, } - engines: { node: '>=8' } - dependencies: - to-regex-range: 5.0.1 - dev: true + engines: { node: '>= 8' } - /filter-obj@1.1.0: + micromatch@4.0.8: resolution: { - integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==, + integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, } - engines: { node: '>=0.10.0' } - dev: true + engines: { node: '>=8.6' } - /find-up@4.1.0: + mimic-fn@2.1.0: resolution: { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, } - engines: { node: '>=8' } - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true + engines: { node: '>=6' } - /find-up@5.0.0: + minimatch@10.2.4: resolution: { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==, } - engines: { node: '>=10' } - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true + engines: { node: 18 || 20 || >=22 } - /find-yarn-workspace-root2@1.2.16: + minimatch@3.1.5: resolution: { - integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==, + integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==, } - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - dev: true - /fs-extra@10.1.0: + mri@1.2.0: resolution: { - integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, + integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, } - engines: { node: '>=12' } - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true + engines: { node: '>=4' } - /fs-extra@11.2.0: + mute-stream@1.0.0: resolution: { - integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==, + integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==, } - engines: { node: '>=14.14' } - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - /fs-extra@7.0.1: + node-addon-api@7.1.1: resolution: { - integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==, + integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==, } - engines: { node: '>=6 <7 || >=8' } - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs-extra@8.1.0: + node-html-parser@7.1.0: resolution: { - integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, + integrity: sha512-iJo8b2uYGT40Y8BTyy5ufL6IVbN8rbm/1QK2xffXU/1a/v3AAa0d1YAoqBNYqaS4R/HajkWIpIfdE6KcyFh1AQ==, } - engines: { node: '>=6 <7 || >=8' } - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - - /fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } - dev: true - /fsevents@2.3.3: + npm-run-path@4.0.1: resolution: { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] - requiresBuild: true - dev: true - optional: true + engines: { node: '>=8' } - /function-bind@1.1.1: + nth-check@2.1.1: resolution: { - integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, } - dev: true - /function.prototype.name@1.1.5: + once@1.4.0: resolution: { - integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==, + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.1 - functions-have-names: 1.2.3 - dev: true - /functions-have-names@1.2.3: + onetime@5.1.2: resolution: { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, } - dev: true + engines: { node: '>=6' } - /get-caller-file@2.0.5: + ora@5.4.1: resolution: { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, } - engines: { node: 6.* || 8.* || >= 10.* } - dev: true + engines: { node: '>=10' } - /get-intrinsic@1.1.2: + outdent@0.5.0: resolution: { - integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==, + integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==, } - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: true - /get-stream@5.2.0: + p-filter@2.1.0: resolution: { - integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==, + integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, } engines: { node: '>=8' } - dependencies: - pump: 3.0.0 - dev: true - - /get-symbol-description@1.0.0: - resolution: - { - integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, - } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.2 - dev: true - /get-tsconfig@4.7.2: + p-limit@2.3.0: resolution: { - integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==, - } - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - - /glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: '>= 6' } - dependencies: - is-glob: 4.0.3 - dev: true - - /glob@8.0.3: - resolution: - { - integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==, + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, } - engines: { node: '>=12' } - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.0 - once: 1.4.0 - dev: true + engines: { node: '>=6' } - /globby@11.1.0: + p-locate@4.1.0: resolution: { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, } - engines: { node: '>=10' } - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 3.0.0 - dev: true + engines: { node: '>=8' } - /globby@13.2.2: + p-map@2.1.0: resolution: { - integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==, + integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 4.0.0 - dev: true + engines: { node: '>=6' } - /graceful-fs@4.2.10: + p-try@2.2.0: resolution: { - integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, } - dev: true + engines: { node: '>=6' } - /grapheme-splitter@1.0.4: + package-manager-detector@0.2.11: resolution: { - integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, + integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==, } - dev: true - /hard-rejection@2.1.0: + parse-ms@4.0.0: resolution: { - integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==, + integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==, } - engines: { node: '>=6' } - dev: true + engines: { node: '>=18' } - /has-bigints@1.0.2: + path-exists@4.0.0: resolution: { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, } - dev: true + engines: { node: '>=8' } - /has-flag@3.0.0: + path-is-absolute@1.0.1: resolution: { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, } - engines: { node: '>=4' } - dev: true + engines: { node: '>=0.10.0' } - /has-flag@4.0.0: + path-key@3.1.1: resolution: { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, } engines: { node: '>=8' } - dev: true - /has-property-descriptors@1.0.0: + path-type@4.0.0: resolution: { - integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, } - dependencies: - get-intrinsic: 1.1.2 - dev: true + engines: { node: '>=8' } - /has-symbols@1.0.3: + picocolors@1.1.1: resolution: { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, } - engines: { node: '>= 0.4' } - dev: true - /has-tostringtag@1.0.0: + picomatch@2.3.1: resolution: { - integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, } - engines: { node: '>= 0.4' } - dependencies: - has-symbols: 1.0.3 - dev: true + engines: { node: '>=8.6' } - /has@1.0.3: + picomatch@3.0.1: resolution: { - integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, + integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==, } - engines: { node: '>= 0.4.0' } - dependencies: - function-bind: 1.1.1 - dev: true + engines: { node: '>=10' } - /he@1.2.0: + picomatch@4.0.5: resolution: { - integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, + integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==, } - hasBin: true - dev: true + engines: { node: '>=12' } - /hosted-git-info@2.8.9: + pify@4.0.1: resolution: { - integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, + integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, } - dev: true + engines: { node: '>=6' } - /human-id@1.0.2: + prettier@2.8.8: resolution: { - integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==, + integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, } - dev: true + engines: { node: '>=10.13.0' } + hasBin: true - /human-signals@1.1.1: + pretty-ms@9.3.0: resolution: { - integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==, + integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==, } - engines: { node: '>=8.12.0' } - dev: true + engines: { node: '>=18' } - /husky@8.0.3: + pretty-quick@3.3.1: resolution: { - integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==, + integrity: sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg==, } - engines: { node: '>=14' } + engines: { node: '>=10.13' } hasBin: true - dev: true - - /iconv-lite@0.4.24: - resolution: - { - integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, - } - engines: { node: '>=0.10.0' } - dependencies: - safer-buffer: 2.1.2 - dev: true + peerDependencies: + prettier: ^2.0.0 - /icss-utils@5.1.0(postcss@8.4.14): + pump@3.0.4: resolution: { - integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==, + integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==, } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.14 - dev: true - /ieee754@1.2.1: + quansync@0.2.11: resolution: { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==, } - dev: true - /ignore@5.2.0: + queue-microtask@1.2.3: resolution: { - integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==, + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, } - engines: { node: '>= 4' } - dev: true - /ignore@5.3.0: + read-yaml-file@1.1.0: resolution: { - integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==, + integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==, } - engines: { node: '>= 4' } - dev: true + engines: { node: '>=6' } - /immutable@4.1.0: + readable-stream@3.6.2: resolution: { - integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==, + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, } - dev: true + engines: { node: '>= 6' } - /import-fresh@3.3.0: + readdirp@4.1.2: resolution: { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, + integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==, } - engines: { node: '>=6' } - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true + engines: { node: '>= 14.18.0' } - /indent-string@4.0.0: + resolve-from@5.0.0: resolution: { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, } engines: { node: '>=8' } - dev: true - /inflight@1.0.6: + restore-cursor@3.1.0: resolution: { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, } - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true + engines: { node: '>=8' } - /inherits@2.0.4: + reusify@1.1.0: resolution: { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, } - dev: true + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } - /inquirer@9.2.12: + rolldown@1.2.0: resolution: { - integrity: sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==, + integrity: sha512-u7tgm5l4Yw1iTqUL4EcYOAt7fFvCgQMLeidrnD4GALlC6aOznCjezYajgxeyKw27u0Q5N7fwgCzjVyPIWzwuBA==, } - engines: { node: '>=14.18.0' } - dependencies: - '@ljharb/through': 2.3.11 - ansi-escapes: 4.3.2 - chalk: 5.3.0 - cli-cursor: 3.1.0 - cli-width: 4.1.0 - external-editor: 3.1.0 - figures: 5.0.0 - lodash: 4.17.21 - mute-stream: 1.0.0 - ora: 5.4.1 - run-async: 3.0.0 - rxjs: 7.8.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true + engines: { node: ^20.19.0 || >=22.12.0 } + hasBin: true - /internal-slot@1.0.3: + rollup-plugin-copy@3.5.0: resolution: { - integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==, + integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==, } - engines: { node: '>= 0.4' } - dependencies: - get-intrinsic: 1.1.2 - has: 1.0.3 - side-channel: 1.0.4 - dev: true + engines: { node: '>=8.3' } - /is-arrayish@0.2.1: + run-async@3.0.0: resolution: { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==, } - dev: true + engines: { node: '>=0.12.0' } - /is-bigint@1.0.4: + run-parallel@1.2.0: resolution: { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, } - dependencies: - has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: + rxjs@7.8.2: resolution: { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, } - engines: { node: '>=8' } - dependencies: - binary-extensions: 2.2.0 - dev: true - /is-boolean-object@1.1.2: + safe-buffer@5.2.1: resolution: { - integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - /is-builtin-module@3.2.0: + safer-buffer@2.1.2: resolution: { - integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==, + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, } - engines: { node: '>=6' } - dependencies: - builtin-modules: 3.3.0 - dev: true - /is-callable@1.2.4: + sass@1.97.3: resolution: { - integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==, + integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==, } - engines: { node: '>= 0.4' } - dev: true + engines: { node: '>=14.0.0' } + hasBin: true - /is-core-module@2.9.0: + semver@7.7.4: resolution: { - integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==, + integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, } - dependencies: - has: 1.0.3 - dev: true + engines: { node: '>=10' } + hasBin: true - /is-date-object@1.0.5: + shebang-command@2.0.0: resolution: { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, } - engines: { node: '>= 0.4' } - dependencies: - has-tostringtag: 1.0.0 - dev: true + engines: { node: '>=8' } - /is-extglob@2.1.1: + shebang-regex@3.0.0: resolution: { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, } - engines: { node: '>=0.10.0' } - dev: true + engines: { node: '>=8' } - /is-fullwidth-code-point@3.0.0: + signal-exit@3.0.7: resolution: { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, } - engines: { node: '>=8' } - dev: true - /is-glob@4.0.3: + signal-exit@4.1.0: resolution: { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, } - engines: { node: '>=0.10.0' } - dependencies: - is-extglob: 2.1.1 - dev: true + engines: { node: '>=14' } - /is-interactive@1.0.0: + slash@3.0.0: resolution: { - integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, } engines: { node: '>=8' } - dev: true - /is-module@1.0.0: + slash@4.0.0: resolution: { - integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==, + integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==, } - dev: true + engines: { node: '>=12' } - /is-negative-zero@2.0.2: + slash@5.1.0: resolution: { - integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, + integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, } - engines: { node: '>= 0.4' } - dev: true + engines: { node: '>=14.16' } - /is-number-object@1.0.7: + source-map-js@1.2.1: resolution: { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, + integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, } - engines: { node: '>= 0.4' } - dependencies: - has-tostringtag: 1.0.0 - dev: true + engines: { node: '>=0.10.0' } - /is-number@7.0.0: + spawndamnit@3.0.1: resolution: { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==, } - engines: { node: '>=0.12.0' } - dev: true - /is-plain-obj@1.1.0: + sprintf-js@1.0.3: resolution: { - integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, } - engines: { node: '>=0.10.0' } - dev: true - /is-reference@1.2.1: + string-width@4.2.3: resolution: { - integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==, + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, } - dependencies: - '@types/estree': 1.0.0 - dev: true + engines: { node: '>=8' } - /is-regex@1.1.4: + string-width@7.2.0: resolution: { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, + integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + engines: { node: '>=18' } - /is-shared-array-buffer@1.0.2: + string_decoder@1.3.0: resolution: { - integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, } - dependencies: - call-bind: 1.0.2 - dev: true - /is-stream@2.0.1: + strip-ansi@6.0.1: resolution: { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, } engines: { node: '>=8' } - dev: true - /is-string@1.0.7: + strip-ansi@7.2.0: resolution: { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, + integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==, } - engines: { node: '>= 0.4' } - dependencies: - has-tostringtag: 1.0.0 - dev: true + engines: { node: '>=12' } - /is-subdir@1.2.0: + strip-bom@3.0.0: resolution: { - integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==, + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, } engines: { node: '>=4' } - dependencies: - better-path-resolve: 1.0.0 - dev: true - /is-symbol@1.0.4: + strip-final-newline@2.0.0: resolution: { - integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, } - engines: { node: '>= 0.4' } - dependencies: - has-symbols: 1.0.3 - dev: true + engines: { node: '>=6' } - /is-unicode-supported@0.1.0: + supports-color@7.2.0: resolution: { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, } - engines: { node: '>=10' } - dev: true + engines: { node: '>=8' } - /is-unicode-supported@1.3.0: + term-size@2.2.1: resolution: { - integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, + integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, } - engines: { node: '>=12' } - dev: true + engines: { node: '>=8' } - /is-weakref@1.0.2: + to-regex-range@5.0.1: resolution: { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, } - dependencies: - call-bind: 1.0.2 - dev: true + engines: { node: '>=8.0' } - /is-windows@1.0.2: + toggle-selection@1.0.6: resolution: { - integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, + integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==, } - engines: { node: '>=0.10.0' } - dev: true - /isexe@2.0.0: + tslib@2.8.1: resolution: { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, } - dev: true - /joycon@3.1.1: + tsx@4.23.1: resolution: { - integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, + integrity: sha512-GQHnkIfxyx1wYCOS/wonik5MVRZU9hi1TEZmzGZSCJB1y9YgoZ8H6itNE/u4suE+yLmOzuE4E5S4TZ/ZX2wcWQ==, } - engines: { node: '>=10' } - dev: true + engines: { node: '>=18.0.0' } + hasBin: true - /js-tokens@4.0.0: + type-fest@0.21.3: resolution: { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, } - dev: true + engines: { node: '>=10' } - /js-yaml@3.14.1: + typescript@5.9.3: resolution: { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, + integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, } + engines: { node: '>=14.17' } hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } - dev: true - /jsonc-parser@3.2.0: + undici-types@7.18.2: resolution: { - integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, + integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==, } - dev: true - /jsonfile@4.0.0: + universalify@0.1.2: resolution: { - integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, + integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, } - optionalDependencies: - graceful-fs: 4.2.10 - dev: true + engines: { node: '>= 4.0.0' } - /jsonfile@6.1.0: + universalify@2.0.1: resolution: { - integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, + integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, } - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.10 - dev: true + engines: { node: '>= 10.0.0' } - /kind-of@6.0.3: + util-deprecate@1.0.2: resolution: { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, } - engines: { node: '>=0.10.0' } - dev: true - /kleur@4.1.5: + wcwidth@1.0.1: resolution: { - integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, } - engines: { node: '>=6' } - dev: true - /lilconfig@2.0.6: + which@2.0.2: resolution: { - integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==, + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, } - engines: { node: '>=10' } - dev: true + engines: { node: '>= 8' } + hasBin: true - /lines-and-columns@1.2.4: + wrap-ansi@6.2.0: resolution: { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, } - dev: true + engines: { node: '>=8' } - /load-yaml-file@0.2.0: + wrap-ansi@9.0.2: resolution: { - integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==, + integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==, } - engines: { node: '>=6' } - dependencies: - graceful-fs: 4.2.10 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true + engines: { node: '>=18' } - /locate-path@5.0.0: + wrappy@1.0.2: resolution: { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, } - engines: { node: '>=8' } - dependencies: - p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: + y18n@5.0.8: resolution: { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, } engines: { node: '>=10' } - dependencies: - p-locate: 5.0.0 - dev: true - /lodash-es@4.17.21: + yargs-parser@22.0.0: resolution: { - integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, + integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==, } - dev: false + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } - /lodash.memoize@4.1.2: + yargs@18.0.0: resolution: { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, + integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==, } - dev: true + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } - /lodash.startcase@4.4.0: + yoctocolors-cjs@2.1.3: resolution: { - integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, + integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==, } - dev: true + engines: { node: '>=18' } - /lodash.uniq@4.5.0: - resolution: - { - integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, - } - dev: true +snapshots: + '@babel/runtime@7.28.6': {} - /lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } - dev: true + '@changesets/apply-release-plan@7.1.0': + dependencies: + '@changesets/config': 3.1.3 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.7.4 - /log-symbols@4.1.0: - resolution: - { - integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, - } - engines: { node: '>=10' } + '@changesets/assemble-release-plan@6.0.9': dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.7.4 - /lru-cache@4.1.5: - resolution: - { - integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==, - } + '@changesets/changelog-git@0.2.1': dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true + '@changesets/types': 6.1.0 - /lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, - } - engines: { node: '>=10' } + '@changesets/cli@2.30.0(@types/node@25.3.3)': dependencies: - yallist: 4.0.0 - dev: true + '@changesets/apply-release-plan': 7.1.0 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.15 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@25.3.3) + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + enquirer: 2.4.1 + fs-extra: 7.0.1 + mri: 1.2.0 + package-manager-detector: 0.2.11 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.7.4 + spawndamnit: 3.0.1 + term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' - /magic-string@0.26.7: - resolution: - { - integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==, - } - engines: { node: '>=12' } + '@changesets/config@3.1.3': dependencies: - sourcemap-codec: 1.4.8 - dev: true + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 - /map-obj@1.0.1: - resolution: - { - integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==, - } - engines: { node: '>=0.10.0' } - dev: true + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 - /map-obj@4.3.0: - resolution: - { - integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, - } - engines: { node: '>=8' } - dev: true + '@changesets/get-dependents-graph@2.1.3': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.7.4 - /mdn-data@2.0.14: - resolution: - { - integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, - } - dev: true + '@changesets/get-release-plan@4.0.15': + dependencies: + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/config': 3.1.3 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 - /meow@6.1.1: - resolution: - { - integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==, - } - engines: { node: '>=8' } + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.4': dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 - /merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } - dev: true + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.1 - /merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: '>= 8' } - dev: true + '@changesets/parse@0.4.3': + dependencies: + '@changesets/types': 6.1.0 + js-yaml: 4.1.1 - /micromatch@4.0.5: - resolution: - { - integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, - } - engines: { node: '>=8.6' } + '@changesets/pre@2.0.2': dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 - /mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, - } - engines: { node: '>= 0.6' } - dev: true + '@changesets/read@0.6.7': + dependencies: + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.3 + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 - /mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: '>= 0.6' } + '@changesets/should-skip-package@0.1.2': dependencies: - mime-db: 1.52.0 - dev: true + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 - /mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: '>=6' } - dev: true + '@changesets/types@4.1.0': {} - /min-indent@1.0.1: - resolution: - { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, - } - engines: { node: '>=4' } - dev: true + '@changesets/types@6.1.0': {} - /mini-svg-data-uri@1.4.4: - resolution: - { - integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==, - } - hasBin: true - dev: true + '@changesets/write@0.4.0': + dependencies: + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + human-id: 4.1.3 + prettier: 2.8.8 - /minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } + '@emnapi/core@1.11.2': dependencies: - brace-expansion: 1.1.11 - dev: true + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true - /minimatch@5.1.0: - resolution: - { - integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==, - } - engines: { node: '>=10' } + '@emnapi/runtime@1.11.2': dependencies: - brace-expansion: 2.0.1 - dev: true + tslib: 2.8.1 + optional: true - /minimist-options@4.1.0: - resolution: - { - integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==, - } - engines: { node: '>= 6' } + '@emnapi/wasi-threads@1.2.2': dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true + tslib: 2.8.1 + optional: true - /mixme@0.5.4: - resolution: - { - integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==, - } - engines: { node: '>= 8.0.0' } - dev: true + '@esbuild/aix-ppc64@0.28.1': + optional: true - /mri@1.2.0: - resolution: - { - integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, - } - engines: { node: '>=4' } - dev: true + '@esbuild/android-arm64@0.28.1': + optional: true - /ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } - dev: true + '@esbuild/android-arm@0.28.1': + optional: true - /multimatch@4.0.0: - resolution: - { - integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==, - } - engines: { node: '>=8' } - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.2 - dev: true + '@esbuild/android-x64@0.28.1': + optional: true - /mute-stream@1.0.0: - resolution: - { - integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - dev: true + '@esbuild/darwin-arm64@0.28.1': + optional: true - /nanoid@3.3.4: - resolution: - { - integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - dev: true + '@esbuild/darwin-x64@0.28.1': + optional: true - /node-html-parser@6.1.4: - resolution: - { - integrity: sha512-3muP9Uy/Pz7bQa9TNYVQzWJhNZMqyCx7xJle8kz2/y1UgzAUyXXShc1IcPaJy6u07CE3K5rQcRwlvHzmlySRjg==, - } - dependencies: - css-select: 5.1.0 - he: 1.2.0 - dev: true + '@esbuild/freebsd-arm64@0.28.1': + optional: true - /node-releases@2.0.6: - resolution: - { - integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==, - } - dev: true + '@esbuild/freebsd-x64@0.28.1': + optional: true - /normalize-package-data@2.5.0: - resolution: - { - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, - } - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.1 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - dev: true + '@esbuild/linux-arm64@0.28.1': + optional: true - /normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: '>=0.10.0' } - dev: true + '@esbuild/linux-arm@0.28.1': + optional: true - /normalize-url@6.1.0: - resolution: - { - integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==, - } - engines: { node: '>=10' } - dev: true + '@esbuild/linux-ia32@0.28.1': + optional: true - /npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: '>=8' } - dependencies: - path-key: 3.1.1 - dev: true + '@esbuild/linux-loong64@0.28.1': + optional: true - /nth-check@2.1.1: - resolution: - { - integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, - } - dependencies: - boolbase: 1.0.0 - dev: true + '@esbuild/linux-mips64el@0.28.1': + optional: true - /object-inspect@1.12.2: - resolution: - { - integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==, - } - dev: true + '@esbuild/linux-ppc64@0.28.1': + optional: true - /object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: '>= 0.4' } - dev: true + '@esbuild/linux-riscv64@0.28.1': + optional: true - /object.assign@4.1.2: - resolution: - { - integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==, - } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true + '@esbuild/linux-s390x@0.28.1': + optional: true - /once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } - dependencies: - wrappy: 1.0.2 - dev: true + '@esbuild/linux-x64@0.28.1': + optional: true - /onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: '>=6' } - dependencies: - mimic-fn: 2.1.0 - dev: true + '@esbuild/netbsd-arm64@0.28.1': + optional: true - /ora@5.4.1: - resolution: - { - integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, - } - engines: { node: '>=10' } - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.6.1 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true + '@esbuild/netbsd-x64@0.28.1': + optional: true - /os-tmpdir@1.0.2: - resolution: - { - integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==, - } - engines: { node: '>=0.10.0' } - dev: true + '@esbuild/openbsd-arm64@0.28.1': + optional: true - /outdent@0.5.0: - resolution: - { - integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==, - } - dev: true + '@esbuild/openbsd-x64@0.28.1': + optional: true - /p-filter@2.1.0: - resolution: - { - integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, - } - engines: { node: '>=8' } + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@inquirer/external-editor@1.0.3(@types/node@25.3.3)': dependencies: - p-map: 2.1.0 - dev: true + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 25.3.3 - /p-finally@1.0.0: - resolution: - { - integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==, - } - engines: { node: '>=4' } - dev: true + '@inquirer/figures@1.0.15': {} - /p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: '>=6' } + '@manypkg/find-root@1.1.0': dependencies: - p-try: 2.2.0 - dev: true + '@babel/runtime': 7.28.6 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 - /p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: '>=10' } + '@manypkg/get-packages@1.1.3': dependencies: - yocto-queue: 0.1.0 - dev: true + '@babel/runtime': 7.28.6 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 - /p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: '>=8' } + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': dependencies: - p-limit: 2.3.0 - dev: true + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true - /p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: '>=10' } + '@nodelib/fs.scandir@2.1.5': dependencies: - p-limit: 3.1.0 - dev: true + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 - /p-map@2.1.0: - resolution: - { - integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, - } - engines: { node: '>=6' } - dev: true + '@nodelib/fs.stat@2.0.5': {} - /p-queue@6.6.2: - resolution: - { - integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==, - } - engines: { node: '>=8' } + '@nodelib/fs.walk@1.2.8': dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - dev: true + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 - /p-timeout@3.2.0: - resolution: - { - integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==, - } - engines: { node: '>=8' } - dependencies: - p-finally: 1.0.0 - dev: true + '@oxc-project/types@0.140.0': {} - /p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: '>=6' } - dev: true + '@parcel/watcher-android-arm64@2.5.6': + optional: true - /parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: '>=6' } - dependencies: - callsites: 3.1.0 - dev: true + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true - /parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: '>=8' } - dependencies: - '@babel/code-frame': 7.18.6 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true + '@parcel/watcher-darwin-x64@2.5.6': + optional: true - /parse-ms@3.0.0: - resolution: - { - integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==, - } - engines: { node: '>=12' } - dev: true + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true - /path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: '>=8' } - dev: true + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true - /path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: '>=8' } - dev: true + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true - /path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } - dev: true + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true - /path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, - } - engines: { node: '>=8' } - dev: true + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true - /picocolors@1.0.0: - resolution: - { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, - } - dev: true + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true - /picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: '>=8.6' } - dev: true + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true - /pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: '>=6' } - dev: true + '@parcel/watcher-win32-arm64@2.5.6': + optional: true - /pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: '>=8' } - dependencies: - find-up: 4.1.0 - dev: true + '@parcel/watcher-win32-ia32@2.5.6': + optional: true - /postcss-calc@8.2.4(postcss@8.4.14): - resolution: - { - integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==, - } - peerDependencies: - postcss: ^8.2.2 + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': dependencies: - postcss: 8.4.14 - postcss-selector-parser: 6.0.10 - postcss-value-parser: 4.2.0 - dev: true + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.5 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true - /postcss-colormin@5.3.0(postcss@8.4.14): - resolution: - { - integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@rolldown/binding-android-arm64@1.2.0': + optional: true + + '@rolldown/binding-darwin-arm64@1.2.0': + optional: true + + '@rolldown/binding-darwin-x64@1.2.0': + optional: true + + '@rolldown/binding-freebsd-x64@1.2.0': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.2.0': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.0': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.0': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.0': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.0': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.0': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.0': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.0': + optional: true + + '@rolldown/binding-wasm32-wasi@1.2.0': dependencies: - browserslist: 4.21.4 - caniuse-api: 3.0.0 - colord: 2.9.2 - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true - /postcss-convert-values@5.1.3(postcss@8.4.14): - resolution: - { - integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@rolldown/binding-win32-arm64-msvc@1.2.0': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.0': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@tybys/wasm-util@0.10.3': dependencies: - browserslist: 4.21.4 - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + tslib: 2.8.1 + optional: true - /postcss-discard-comments@5.1.2(postcss@8.4.14): - resolution: - { - integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/fs-extra@11.0.4': dependencies: - postcss: 8.4.14 - dev: true + '@types/jsonfile': 6.1.4 + '@types/node': 25.3.3 - /postcss-discard-duplicates@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/fs-extra@8.1.5': dependencies: - postcss: 8.4.14 - dev: true + '@types/node': 25.3.3 - /postcss-discard-empty@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/glob@7.2.0': dependencies: - postcss: 8.4.14 - dev: true + '@types/minimatch': 6.0.0 + '@types/node': 25.3.3 - /postcss-discard-overridden@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/inquirer@9.0.10': dependencies: - postcss: 8.4.14 - dev: true + '@types/through': 0.0.33 + rxjs: 7.8.2 - /postcss-merge-longhand@5.1.7(postcss@8.4.14): - resolution: - { - integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/jquery@3.5.34': dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.14) - dev: true + '@types/sizzle': 2.3.10 - /postcss-merge-rules@5.1.3(postcss@8.4.14): - resolution: - { - integrity: sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/jsonfile@6.1.4': dependencies: - browserslist: 4.21.4 - caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.14) - postcss: 8.4.14 - postcss-selector-parser: 6.0.10 - dev: true + '@types/node': 25.3.3 - /postcss-minify-font-values@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/lodash-es@4.17.12': dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + '@types/lodash': 4.17.24 - /postcss-minify-gradients@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/lodash@4.17.24': {} + + '@types/minimatch@6.0.0': dependencies: - colord: 2.9.2 - cssnano-utils: 3.1.0(postcss@8.4.14) - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + minimatch: 10.2.4 - /postcss-minify-params@5.1.4(postcss@8.4.14): - resolution: - { - integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/node@12.20.55': {} + + '@types/node@25.3.3': dependencies: - browserslist: 4.21.4 - cssnano-utils: 3.1.0(postcss@8.4.14) - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + undici-types: 7.18.2 - /postcss-minify-selectors@5.2.1(postcss@8.4.14): - resolution: - { - integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + '@types/sizzle@2.3.10': {} + + '@types/through@0.0.33': dependencies: - postcss: 8.4.14 - postcss-selector-parser: 6.0.10 - dev: true + '@types/node': 25.3.3 - /postcss-modules-extract-imports@3.0.0(postcss@8.4.14): - resolution: - { - integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==, - } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: dependencies: - postcss: 8.4.14 - dev: true + type-fest: 0.21.3 - /postcss-modules-local-by-default@4.0.0(postcss@8.4.14): - resolution: - { - integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==, - } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: dependencies: - icss-utils: 5.1.0(postcss@8.4.14) - postcss: 8.4.14 - postcss-selector-parser: 6.0.10 - postcss-value-parser: 4.2.0 - dev: true + color-convert: 2.0.1 - /postcss-modules-scope@3.0.0(postcss@8.4.14): - resolution: - { - integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==, - } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 + ansi-styles@6.2.3: {} + + argparse@1.0.10: dependencies: - postcss: 8.4.14 - postcss-selector-parser: 6.0.10 - dev: true + sprintf-js: 1.0.3 - /postcss-modules-values@4.0.0(postcss@8.4.14): - resolution: - { - integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==, - } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 + argparse@2.0.1: {} + + array-union@2.1.0: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base64-js@1.5.1: {} + + better-path-resolve@1.0.0: dependencies: - icss-utils: 5.1.0(postcss@8.4.14) - postcss: 8.4.14 - dev: true + is-windows: 1.0.2 - /postcss-normalize-charset@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + bl@4.1.0: dependencies: - postcss: 8.4.14 - dev: true + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 - /postcss-normalize-display-values@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + bocchi@2.1.0: dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + chalk: 5.6.2 + fs-extra: 11.3.4 + node-html-parser: 7.1.0 + pretty-ms: 9.3.0 + rolldown: 1.2.0 + rollup-plugin-copy: 3.5.0 + sass: 1.97.3 + slash: 5.1.0 + yargs: 18.0.0 - /postcss-normalize-positions@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + boolbase@1.0.0: {} + + brace-expansion@1.1.16: dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + balanced-match: 1.0.2 + concat-map: 0.0.1 - /postcss-normalize-repeat-style@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + brace-expansion@5.0.4: dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + balanced-match: 4.0.4 - /postcss-normalize-string@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + braces@3.0.3: dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + fill-range: 7.1.1 - /postcss-normalize-timing-functions@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + buffer@5.7.1: dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + base64-js: 1.5.1 + ieee754: 1.2.1 - /postcss-normalize-unicode@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + chalk@4.1.2: dependencies: - browserslist: 4.21.4 - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + ansi-styles: 4.3.0 + supports-color: 7.2.0 - /postcss-normalize-url@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + chalk@5.6.2: {} + + chardet@2.1.1: {} + + chokidar@4.0.3: dependencies: - normalize-url: 6.1.0 - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + readdirp: 4.1.2 - /postcss-normalize-whitespace@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + cli-cursor@3.1.0: dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + restore-cursor: 3.1.0 - /postcss-ordered-values@5.1.3(postcss@8.4.14): - resolution: - { - integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + cli-spinners@2.9.2: {} + + cli-width@4.1.0: {} + + cliui@9.0.1: dependencies: - cssnano-utils: 3.1.0(postcss@8.4.14) - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 - /postcss-reduce-initial@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + clone@1.0.4: {} + + color-convert@2.0.1: dependencies: - browserslist: 4.21.4 - caniuse-api: 3.0.0 - postcss: 8.4.14 - dev: true + color-name: 1.1.4 - /postcss-reduce-transforms@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + color-name@1.1.4: {} + + colorette@1.4.0: {} + + concat-map@0.0.1: {} + + copy-to-clipboard@3.3.3: dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true + toggle-selection: 1.0.6 - /postcss-selector-parser@6.0.10: - resolution: - { - integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==, - } - engines: { node: '>=4' } + cross-spawn@7.0.6: dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - /postcss-svgo@5.1.0(postcss@8.4.14): - resolution: - { - integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + css-select@5.2.2: dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - svgo: 2.8.0 - dev: true + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 - /postcss-unique-selectors@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + css-what@6.2.2: {} + + defaults@1.0.4: dependencies: - postcss: 8.4.14 - postcss-selector-parser: 6.0.10 - dev: true + clone: 1.0.4 - /postcss-value-parser@4.2.0: - resolution: - { - integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, - } - dev: true + detect-indent@6.1.0: {} - /postcss@8.4.14: - resolution: - { - integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==, - } - engines: { node: ^10 || ^12 || >=14 } + detect-libc@2.1.2: + optional: true + + dir-glob@3.0.1: dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true + path-type: 4.0.0 - /preferred-pm@3.0.3: - resolution: - { - integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==, - } - engines: { node: '>=10' } + dom-serializer@2.0.0: dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - dev: true + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 - /prettier@2.7.1: - resolution: - { - integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==, - } - engines: { node: '>=10.13.0' } - hasBin: true - dev: true + domelementtype@2.3.0: {} - /pretty-ms@8.0.0: - resolution: - { - integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==, - } - engines: { node: '>=14.16' } + domhandler@5.0.3: dependencies: - parse-ms: 3.0.0 - dev: true + domelementtype: 2.3.0 - /pretty-quick@3.1.3(prettier@2.7.1): - resolution: - { - integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==, - } - engines: { node: '>=10.13' } - hasBin: true - peerDependencies: - prettier: '>=2.0.0' + domutils@3.2.2: dependencies: - chalk: 3.0.0 - execa: 4.1.0 - find-up: 4.1.0 - ignore: 5.2.0 - mri: 1.2.0 - multimatch: 4.0.0 - prettier: 2.7.1 - dev: true + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 - /pseudomap@1.0.2: - resolution: - { - integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==, - } - dev: true + emoji-regex@10.6.0: {} - /pump@3.0.0: - resolution: - { - integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, - } + emoji-regex@8.0.0: {} + + end-of-stream@1.4.5: dependencies: - end-of-stream: 1.4.4 once: 1.4.0 - dev: true - /query-string@7.1.1: - resolution: - { - integrity: sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==, - } - engines: { node: '>=6' } + enquirer@2.4.1: dependencies: - decode-uri-component: 0.2.0 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - dev: true + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 - /queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } - dev: true + entities@4.5.0: {} - /quick-lru@4.0.1: - resolution: - { - integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, - } - engines: { node: '>=8' } - dev: true + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + esprima@4.0.1: {} + + execa@4.1.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 - /read-pkg-up@7.0.1: - resolution: - { - integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, - } - engines: { node: '>=8' } + extendable-error@0.1.7: {} + + fast-glob@3.3.3: dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 - /read-pkg@5.2.0: - resolution: - { - integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, - } - engines: { node: '>=8' } + fastq@1.20.1: dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true + reusify: 1.1.0 - /read-yaml-file@1.1.0: - resolution: - { - integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==, - } - engines: { node: '>=6' } + fill-range@7.1.1: dependencies: - graceful-fs: 4.2.10 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true + to-regex-range: 5.0.1 - /readable-stream@3.6.0: - resolution: - { - integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==, - } - engines: { node: '>= 6' } + find-up@4.1.0: dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true + locate-path: 5.0.0 + path-exists: 4.0.0 - /readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: '>=8.10.0' } + fs-extra@11.3.4: dependencies: - picomatch: 2.3.1 - dev: true + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 - /redent@3.0.0: - resolution: - { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, - } - engines: { node: '>=8' } + fs-extra@7.0.1: dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 - /regenerator-runtime@0.14.0: - resolution: - { - integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==, - } - dev: true + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 - /regexp.prototype.flags@1.4.3: - resolution: - { - integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==, - } - engines: { node: '>= 0.4' } + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.5.0: {} + + get-stream@5.2.0: dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - functions-have-names: 1.2.3 - dev: true + pump: 3.0.4 - /require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: '>=0.10.0' } - dev: true + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 - /require-main-filename@2.0.0: - resolution: - { - integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, - } - dev: true + glob@7.2.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 - /resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: '>=4' } - dev: true + globby@10.0.1: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + glob: 7.2.0 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 - /resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: '>=8' } - dev: true + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} - /resolve-pkg-maps@1.0.0: - resolution: - { - integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, - } - dev: true + he@1.2.0: {} - /resolve.exports@1.1.0: - resolution: - { - integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==, - } - engines: { node: '>=10' } - dev: true + human-id@4.1.3: {} - /resolve@1.22.1: - resolution: - { - integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==, - } - hasBin: true + human-signals@1.1.1: {} + + husky@8.0.3: {} + + iconv-lite@0.7.2: dependencies: - is-core-module: 2.9.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true + safer-buffer: 2.1.2 - /restore-cursor@3.1.0: - resolution: - { - integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, - } - engines: { node: '>=8' } + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + immutable@5.1.5: {} + + inflight@1.0.6: dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true + once: 1.4.0 + wrappy: 1.0.2 - /reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, - } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } - dev: true + inherits@2.0.4: {} - /rollup-plugin-esbuild@5.0.0(esbuild@0.15.15)(rollup@3.4.0): - resolution: - { - integrity: sha512-1cRIOHAPh8WQgdQQyyvFdeOdxuiyk+zB5zJ5+YOwrZP4cJ0MT3Fs48pQxrZeyZHcn+klFherytILVfE4aYrneg==, - } - engines: { node: '>=14.18.0', npm: '>=8.0.0' } - peerDependencies: - esbuild: '>=0.10.1' - rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.4.0) - debug: 4.3.4 - es-module-lexer: 1.1.0 - esbuild: 0.15.15 - joycon: 3.1.1 - jsonc-parser: 3.2.0 - rollup: 3.4.0 + inquirer@9.3.8(@types/node@25.3.3): + dependencies: + '@inquirer/external-editor': 1.0.3(@types/node@25.3.3) + '@inquirer/figures': 1.0.15 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 transitivePeerDependencies: - - supports-color - dev: true + - '@types/node' - /rollup@3.4.0: - resolution: - { - integrity: sha512-4g8ZrEFK7UbDvy3JF+d5bLiC8UKkS3n/27/cnVeESwB1LVPl6MoPL32/6+SCQ1vHTp6Mvp2veIHtwELhi+uXEw==, - } - engines: { node: '>=14.18.0', npm: '>=8.0.0' } - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true + is-extglob@2.1.1: {} - /run-async@3.0.0: - resolution: - { - integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==, - } - engines: { node: '>=0.12.0' } - dev: true + is-fullwidth-code-point@3.0.0: {} - /run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } + is-glob@4.0.3: dependencies: - queue-microtask: 1.2.3 - dev: true + is-extglob: 2.1.1 - /rxjs@7.5.7: - resolution: - { - integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==, - } - dependencies: - tslib: 2.4.0 - dev: true + is-interactive@1.0.0: {} - /rxjs@7.8.1: - resolution: - { - integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==, - } - dependencies: - tslib: 2.4.0 - dev: true + is-number@7.0.0: {} - /safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } - dev: true + is-plain-object@3.0.1: {} - /safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } - dev: true + is-stream@2.0.1: {} - /sass@1.56.1: - resolution: - { - integrity: sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==, - } - engines: { node: '>=12.0.0' } - hasBin: true + is-subdir@1.2.0: dependencies: - chokidar: 3.5.3 - immutable: 4.1.0 - source-map-js: 1.0.2 - dev: true + better-path-resolve: 1.0.0 - /semver@5.7.1: - resolution: - { - integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, - } - hasBin: true - dev: true + is-unicode-supported@0.1.0: {} - /semver@7.5.4: - resolution: - { - integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, - } - engines: { node: '>=10' } - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true + is-windows@1.0.2: {} - /set-blocking@2.0.0: - resolution: - { - integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, - } - dev: true + isexe@2.0.0: {} - /shebang-command@1.2.0: - resolution: - { - integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==, - } - engines: { node: '>=0.10.0' } + js-yaml@3.14.2: dependencies: - shebang-regex: 1.0.0 - dev: true + argparse: 1.0.10 + esprima: 4.0.1 - /shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: '>=8' } + js-yaml@4.1.1: dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@1.0.0: - resolution: - { - integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==, - } - engines: { node: '>=0.10.0' } - dev: true + argparse: 2.0.1 - /shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: '>=8' } - dev: true + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 - /side-channel@1.0.4: - resolution: - { - integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, - } + jsonfile@6.2.0: dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.2 - object-inspect: 1.12.2 - dev: true + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 - /signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } - dev: true + jsqr@1.4.0: {} - /slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: '>=8' } - dev: true + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 - /slash@4.0.0: - resolution: - { - integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==, - } - engines: { node: '>=12' } - dev: true + lodash-es@4.17.23: {} - /slash@5.1.0: - resolution: - { - integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, - } - engines: { node: '>=14.16' } - dev: true + lodash.startcase@4.4.0: {} - /smartwrap@2.0.2: - resolution: - { - integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==, - } - engines: { node: '>=6' } - hasBin: true + log-symbols@4.1.0: dependencies: - array.prototype.flat: 1.3.0 - breakword: 1.0.5 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - dev: true + chalk: 4.1.2 + is-unicode-supported: 0.1.0 - /source-map-js@1.0.2: - resolution: - { - integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, - } - engines: { node: '>=0.10.0' } - dev: true + merge-stream@2.0.0: {} - /source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: '>=0.10.0' } - dev: true + merge2@1.4.1: {} - /sourcemap-codec@1.4.8: - resolution: - { - integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, - } - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 - /spawndamnit@2.0.0: - resolution: - { - integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==, - } + mimic-fn@2.1.0: {} + + minimatch@10.2.4: dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 - dev: true + brace-expansion: 5.0.4 - /spdx-correct@3.1.1: - resolution: - { - integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==, - } + minimatch@3.1.5: dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.11 - dev: true + brace-expansion: 1.1.16 - /spdx-exceptions@2.3.0: - resolution: - { - integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==, - } - dev: true + mri@1.2.0: {} - /spdx-expression-parse@3.0.1: - resolution: - { - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, - } - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.11 - dev: true + mute-stream@1.0.0: {} - /spdx-license-ids@3.0.11: - resolution: - { - integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==, - } - dev: true + node-addon-api@7.1.1: + optional: true - /split-on-first@1.1.0: - resolution: - { - integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==, - } - engines: { node: '>=6' } - dev: true + node-html-parser@7.1.0: + dependencies: + css-select: 5.2.2 + he: 1.2.0 - /sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } - dev: true + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 - /stable@0.1.8: - resolution: - { - integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==, - } - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - dev: true + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 - /stream-transform@2.1.3: - resolution: - { - integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==, - } + once@1.4.0: dependencies: - mixme: 0.5.4 - dev: true + wrappy: 1.0.2 - /strict-uri-encode@2.0.0: - resolution: - { - integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==, - } - engines: { node: '>=4' } - dev: true + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 - /string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: '>=8' } + ora@5.4.1: dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 strip-ansi: 6.0.1 - dev: true + wcwidth: 1.0.1 - /string.prototype.trimend@1.0.5: - resolution: - { - integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==, - } + outdent@0.5.0: {} + + p-filter@2.1.0: dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.1 - dev: true + p-map: 2.1.0 - /string.prototype.trimstart@1.0.5: - resolution: - { - integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==, - } + p-limit@2.3.0: dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.1 - dev: true + p-try: 2.2.0 - /string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } + p-locate@4.1.0: dependencies: - safe-buffer: 5.2.1 - dev: true + p-limit: 2.3.0 - /strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: '>=8' } + p-map@2.1.0: {} + + p-try@2.2.0: {} + + package-manager-detector@0.2.11: dependencies: - ansi-regex: 5.0.1 - dev: true + quansync: 0.2.11 + + parse-ms@4.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@3.0.1: {} + + picomatch@4.0.5: + optional: true - /strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: '>=4' } - dev: true + pify@4.0.1: {} - /strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: '>=6' } - dev: true + prettier@2.8.8: {} - /strip-indent@3.0.0: - resolution: - { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, - } - engines: { node: '>=8' } + pretty-ms@9.3.0: dependencies: - min-indent: 1.0.1 - dev: true + parse-ms: 4.0.0 - /stylehacks@5.1.1(postcss@8.4.14): - resolution: - { - integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + pretty-quick@3.3.1(prettier@2.8.8): dependencies: - browserslist: 4.21.4 - postcss: 8.4.14 - postcss-selector-parser: 6.0.10 - dev: true + execa: 4.1.0 + find-up: 4.1.0 + ignore: 5.3.2 + mri: 1.2.0 + picocolors: 1.1.1 + picomatch: 3.0.1 + prettier: 2.8.8 + tslib: 2.8.1 - /supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: '>=4' } + pump@3.0.4: dependencies: - has-flag: 3.0.0 - dev: true + end-of-stream: 1.4.5 + once: 1.4.0 - /supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: '>=8' } + quansync@0.2.11: {} + + queue-microtask@1.2.3: {} + + read-yaml-file@1.1.0: dependencies: - has-flag: 4.0.0 - dev: true + graceful-fs: 4.2.11 + js-yaml: 3.14.2 + pify: 4.0.1 + strip-bom: 3.0.0 - /supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: '>= 0.4' } - dev: true + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 - /svgo@2.8.0: - resolution: - { - integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==, - } - engines: { node: '>=10.13.0' } - hasBin: true + readdirp@4.1.2: {} + + resolve-from@5.0.0: {} + + restore-cursor@3.1.0: dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.0 - stable: 0.1.8 - dev: true + onetime: 5.1.2 + signal-exit: 3.0.7 - /term-size@2.2.1: - resolution: - { - integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, - } - engines: { node: '>=8' } - dev: true + reusify@1.1.0: {} - /tmp@0.0.33: - resolution: - { - integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, - } - engines: { node: '>=0.6.0' } + rolldown@1.2.0: dependencies: - os-tmpdir: 1.0.2 - dev: true + '@oxc-project/types': 0.140.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.2.0 + '@rolldown/binding-darwin-arm64': 1.2.0 + '@rolldown/binding-darwin-x64': 1.2.0 + '@rolldown/binding-freebsd-x64': 1.2.0 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.0 + '@rolldown/binding-linux-arm64-gnu': 1.2.0 + '@rolldown/binding-linux-arm64-musl': 1.2.0 + '@rolldown/binding-linux-ppc64-gnu': 1.2.0 + '@rolldown/binding-linux-s390x-gnu': 1.2.0 + '@rolldown/binding-linux-x64-gnu': 1.2.0 + '@rolldown/binding-linux-x64-musl': 1.2.0 + '@rolldown/binding-openharmony-arm64': 1.2.0 + '@rolldown/binding-wasm32-wasi': 1.2.0 + '@rolldown/binding-win32-arm64-msvc': 1.2.0 + '@rolldown/binding-win32-x64-msvc': 1.2.0 + + rollup-plugin-copy@3.5.0: + dependencies: + '@types/fs-extra': 8.1.5 + colorette: 1.4.0 + fs-extra: 8.1.0 + globby: 10.0.1 + is-plain-object: 3.0.1 - /to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: '>=8.0' } + run-async@3.0.0: {} + + run-parallel@1.2.0: dependencies: - is-number: 7.0.0 - dev: true + queue-microtask: 1.2.3 - /toggle-selection@1.0.6: - resolution: - { - integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==, - } - dev: false + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 - /trim-newlines@3.0.1: - resolution: - { - integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, - } - engines: { node: '>=8' } - dev: true + safe-buffer@5.2.1: {} - /tslib@2.4.0: - resolution: - { - integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==, - } - dev: true + safer-buffer@2.1.2: {} - /tsx@4.6.2: - resolution: - { - integrity: sha512-QPpBdJo+ZDtqZgAnq86iY/PD2KYCUPSUGIunHdGwyII99GKH+f3z3FZ8XNFLSGQIA4I365ui8wnQpl8OKLqcsg==, - } - engines: { node: '>=18.0.0' } - hasBin: true + sass@1.97.3: dependencies: - esbuild: 0.18.20 - get-tsconfig: 4.7.2 + chokidar: 4.0.3 + immutable: 5.1.5 + source-map-js: 1.2.1 optionalDependencies: - fsevents: 2.3.3 - dev: true + '@parcel/watcher': 2.5.6 - /tty-table@4.1.6: - resolution: - { - integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==, - } - engines: { node: '>=8.0.0' } - hasBin: true - dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.6.2 - dev: true + semver@7.7.4: {} - /type-fest@0.13.1: - resolution: - { - integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==, - } - engines: { node: '>=10' } - dev: true + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 - /type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: '>=10' } - dev: true + shebang-regex@3.0.0: {} - /type-fest@0.6.0: - resolution: - { - integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, - } - engines: { node: '>=8' } - dev: true + signal-exit@3.0.7: {} - /type-fest@0.8.1: - resolution: - { - integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, - } - engines: { node: '>=8' } - dev: true + signal-exit@4.1.0: {} - /typescript@5.3.2: - resolution: - { - integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==, - } - engines: { node: '>=14.17' } - hasBin: true - dev: true + slash@3.0.0: {} - /unbox-primitive@1.0.2: - resolution: - { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, - } - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true + slash@4.0.0: {} - /universalify@0.1.2: - resolution: - { - integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, - } - engines: { node: '>= 4.0.0' } - dev: true + slash@5.1.0: {} - /universalify@2.0.0: - resolution: - { - integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, - } - engines: { node: '>= 10.0.0' } - dev: true + source-map-js@1.2.1: {} - /update-browserslist-db@1.0.10(browserslist@4.21.4): - resolution: - { - integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==, - } - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + spawndamnit@3.0.1: dependencies: - browserslist: 4.21.4 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true + cross-spawn: 7.0.6 + signal-exit: 4.1.0 - /util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } - dev: true + sprintf-js@1.0.3: {} - /validate-npm-package-license@3.0.4: - resolution: - { - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, - } + string-width@4.2.3: dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 - dev: true + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 - /wcwidth@1.0.1: - resolution: - { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, - } + string-width@7.2.0: dependencies: - defaults: 1.0.3 - dev: true + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 - /which-boxed-primitive@1.0.2: - resolution: - { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, - } + string_decoder@1.3.0: dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-module@2.0.0: - resolution: - { - integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==, - } - dev: true + safe-buffer: 5.2.1 - /which-pm@2.0.0: - resolution: - { - integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==, - } - engines: { node: '>=8.15' } + strip-ansi@6.0.1: dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - dev: true + ansi-regex: 5.0.1 - /which@1.3.1: - resolution: - { - integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, - } - hasBin: true + strip-ansi@7.2.0: dependencies: - isexe: 2.0.0 - dev: true + ansi-regex: 6.2.2 - /which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: '>= 8' } - hasBin: true + strip-bom@3.0.0: {} + + strip-final-newline@2.0.0: {} + + supports-color@7.2.0: dependencies: - isexe: 2.0.0 - dev: true + has-flag: 4.0.0 - /wrap-ansi@6.2.0: - resolution: - { - integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, - } - engines: { node: '>=8' } + term-size@2.2.1: {} + + to-regex-range@5.0.1: dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true + is-number: 7.0.0 - /wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: '>=10' } + toggle-selection@1.0.6: {} + + tslib@2.8.1: {} + + tsx@4.23.1: dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 - /wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - dev: true + type-fest@0.21.3: {} - /y18n@4.0.3: - resolution: - { - integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, - } - dev: true + typescript@5.9.3: {} - /y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: '>=10' } - dev: true + undici-types@7.18.2: {} - /yallist@2.1.2: - resolution: - { - integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==, - } - dev: true + universalify@0.1.2: {} - /yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, - } - dev: true + universalify@2.0.1: {} - /yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: '>= 6' } - dev: true + util-deprecate@1.0.2: {} - /yargs-parser@18.1.3: - resolution: - { - integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, - } - engines: { node: '>=6' } + wcwidth@1.0.1: dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true + defaults: 1.0.4 - /yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: '>=12' } - dev: true + which@2.0.2: + dependencies: + isexe: 2.0.0 - /yargs@15.4.1: - resolution: - { - integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, - } - engines: { node: '>=8' } + wrap-ansi@6.2.0: dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 + ansi-styles: 4.3.0 string-width: 4.2.3 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true + strip-ansi: 6.0.1 - /yargs@17.6.2: - resolution: - { - integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==, - } - engines: { node: '>=12' } + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + y18n@5.0.8: {} + + yargs-parser@22.0.0: {} + + yargs@18.0.0: dependencies: - cliui: 8.0.1 - escalade: 3.1.1 + cliui: 9.0.1 + escalade: 3.2.0 get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 + string-width: 7.2.0 y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true + yargs-parser: 22.0.0 - /yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: '>=10' } - dev: true + yoctocolors-cjs@2.1.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 18ec407..4076e93 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,5 @@ packages: - 'packages/*' +allowBuilds: + '@parcel/watcher': false + esbuild: false